GNU/Linux >> Linux Esercitazione >  >> Linux

Come posso eseguire un comando dopo l'avvio?

Dipende dalle distribuzioni.

Se utilizzi distribuzioni derivate da Debian, ci sono almeno due posti appropriati, /etc/rc.local e crontab. Puoi invocare crontab come root,

   crontab -e

e poi inserisci questa riga

   @reboot /home/my_name/bin/my_command

dove my_command è un file eseguibile (chmod 755 my_command ).

In alternativa, puoi inserire una linea come questa

   /home/my_name/bin/my_command

in /etc/rc.local, e questo verrà eseguito per ultimo. In ogni caso, ricorda che stai usando l'ambiente root, non il tuo. Anche per questo motivo è preferibile utilizzare percorsi assoluti.

Se sei su un systemd distro (Arch Linux, Fedora 19,...) la prima opzione (crontab) è ancora valida, mentre la seconda (/etc/rc.local) non esiste più. In questo caso, dovresti imparare come avviare un servizio che deve essere eseguito da systemctl , ma questo potrebbe essere più di quanto ti aspettassi con la tua semplice domanda.


Se il tuo sistema esegue una versione di cron che lo supporta (in particolare Vixie cron), puoi usare @reboot in un cron job.

Questa è una delle 8 stringhe speciali che supporta.

Citando il crontab(5) pagina man (dal mio sistema Ubuntu 12.04):

Invece dei primi cinque campi, può apparire una delle otto stringhe speciali:

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

Tieni presente che l'avvio, fino a @reboot è interessato, è il momento in cui cron(8) avvio del demone. In particolare, potrebbe essere prima che alcuni demoni di sistema, o altre funzioni, fossero avviati. Ciò è dovuto alla sequenza dell'ordine di avvio della macchina.

Questo è ben lungi dall'essere l'unico modo per eseguire qualcosa all'avvio, ma è un'alternativa.


Praticamente tutte le varianti di Linux (che risalgono a molto, molto tempo fa) hanno un file /etc/rc.local che viene eseguito all'avvio:puoi semplicemente aggiungere il comando.

Detto questo, non è nemmeno necessario farlo. Il modo "corretto" sarebbe modificare/aggiungere la riga kernel.sysrq =1 in /etc/sysctl.conf


Linux
  1. Come eseguire un comando memorizzato in una variabile?

  2. Come integrare il comando Mv dopo il comando Trova?

  3. Come posso eseguire automaticamente gli script all'avvio in Centos 7?

  4. Come posso eseguire correttamente gli script della riga di comando Perl one liner?

  5. Come posso eseguire una funzione da uno script nella riga di comando?

Come eseguire il comando / script della shell di Linux in background

Come eseguire il comando Sudo senza password

Come eseguire i comandi Linux in background

Come avviare la riga di comando di Linux

Come eseguire periodicamente un comando in Linux usando Watch

Come utilizzare nohup per continuare a eseguire un comando dopo il logout dell'utente?