Come posso eseguire lo script bash in background?
Sto imparando lo scripting bash e ho appena creato un breve progetto per avvisarmi (con invio di notifica) quando la mia batteria è scarica o carica.
Vorrei alcuni suggerimenti su come eseguire questo script senza mostrare il terminale. La mia idea è di aggiungerlo nel software "Applicazioni di avvio" per eseguirlo all'avvio del sistema, ma non voglio mostrare il terminale, solo per eseguire in background.
Risposte
Potresti configurare un servizio systemd.
Puoi creare un file (come sudo) con il tuo editor preferito (nano, vim ecc.) Come:
sudo nano /etc/systemd/system/myexecuteable.service
Dovrebbe contenere almeno quanto segue:
[Unit]
Description=start my executable after multi-user target
[Service]
Type=simple
ExecStart=/path/to/my/executable
[Install]
WantedBy=multi-user.target
Per garantire che il servizio venga avviato dopo il riavvio, eseguire: sudo systemctl enable myexecutable.service
Quel servizio verrà eseguito continuamente se bash ha una sorta di loop. Se quell'eseguibile ha qualche output (usa "logger per quello in un file bash) puoi controllarlo in qualsiasi momento usandojournalctl -u myexecutable.service
Uno script può essere eseguito in background dalla riga di comando in questo modo:
$ ./myscript.sh &
In altre parole, aggiungi &al comando.
Hai detto di voler eseguire questo script "senza mostrare il termial". Penso che ci siano due modi per farlo:
creare un
systemdservizio - come in questa rispostaavvia lo script come
cronlavoro all'avvio del sistema:
Per impostare un cronlavoro, dovrai creare una nuova crontabvoce.
Per fare ciò, apri un terminale e digita il seguente comando:
$ crontab -e
Questo aprirà il tuo crontabin un editor ( nanoè una buona scelta per l'editor). Quando sei nell'editor, aggiungi la seguente riga in fondo al file:
@reboot /home/user/myscript.sh & >> /home/user/myscript.log 2>&1
Dov'è /home/user/myscript.shil percorso completo del file di script. Qualsiasi output dallo script verrà reindirizzato al file in /home/user/myscript.log. Assicurati di controllare questo file di registro per eventuali messaggi di errore.
Salvare il file ( ^ o) se si utilizza nanoed uscire dall'editor ( ^ x).
Alcune cose da ricordare:
Assicurati che
myscript.shsia eseguibile .Se usi dei comandi in
myscript.sh, assicurati che il sistema sappia dove trovarli, ad esempio usa un percorso completo per il comando o dichiara un PATH nel tuo script.
Facci sapere se hai ulteriori domande (pubblica un commento) e cercheremo di aiutarti.