Como posso executar o script bash em segundo plano?
Estou aprendendo script bash e acabei de fazer um pequeno projeto para me notificar (com notificar-enviar) quando minha bateria estiver fraca ou carregada.
Eu gostaria de algumas sugestões de como posso executar este script sem mostrar o terminal. Minha ideia é adicioná-lo no software "Startup Applications" para rodar quando eu inicializar o sistema, mas não quero mostrar o terminal, apenas rodar em background.
Respostas
Você pode configurar um serviço systemd.
Você pode criar um arquivo (como sudo) com seu editor favorito (nano, vim etc) como:
sudo nano /etc/systemd/system/myexecuteable.service
Deve conter pelo menos o seguinte:
[Unit]
Description=start my executable after multi-user target
[Service]
Type=simple
ExecStart=/path/to/my/executable
[Install]
WantedBy=multi-user.target
Para garantir que o serviço será iniciado após a reinicialização, execute: sudo systemctl enable myexecutable.service
Esse serviço será executado continuamente se o bash tiver algum tipo de loop. Se esse executável tiver alguma saída (use "logger para isso em um arquivo bash), você pode verificá-lo a qualquer momento usandojournalctl -u myexecutable.service
Um script pode ser executado em segundo plano a partir da linha de comando como este:
$ ./myscript.sh &
Em outras palavras, anexe &ao comando.
Você disse que deseja executar este script "sem mostrar o terminal". Acho que existem duas maneiras de fazer isso:
criar um
systemdserviço - como nesta respostainicie o script como um
crontrabalho quando o sistema for inicializado:
Para configurar um crontrabalho, você precisará criar uma nova crontabentrada.
Para fazer isso, abra um terminal e digite o seguinte comando:
$ crontab -e
Isso abrirá seu crontabem um editor ( nanoé uma boa escolha para editor). Quando você estiver no editor, adicione a seguinte linha ao final do arquivo:
@reboot /home/user/myscript.sh & >> /home/user/myscript.log 2>&1
Onde /home/user/myscript.shestá o caminho completo para seu arquivo de script. Qualquer saída do seu script será redirecionada para o arquivo em /home/user/myscript.log. Certifique-se de verificar se há mensagens de erro neste arquivo de log.
Salve o arquivo ( ^ o) se estiver usando nanoe saia do editor ( ^ x).
Algumas coisas para lembrar:
Certifique-se de que
myscript.shé executável .Se você usar qualquer comando no
myscript.sh, certifique-se de que o sistema saiba onde encontrá-los - ou seja, use um caminho completo para o comando ou declare um PATH em seu script.
Deixe-nos saber se você tiver mais perguntas (postar um comentário) e nós tentaremos ajudar.