2013-12-08 07:10:46 +0000 2013-12-08 07:10:46 +0000
27
27

Come posso eseguire un comando dopo l'avvio?

Vorrei eseguire il semplice comando di shell echo 1 > /proc/sys/kernel/sysrq ad ogni avvio, per abilitare i tasti sysrq. Quando nel boot questo dovrebbe essere fatto, e dove dovrei mettere uno script per farlo?

Risposte (3)

37
37
37
2013-12-08 07:37:04 +0000

Dipende dalle distro.

Se siete su distro derivate da Debian, ci sono almeno due posti adatti, /etc/rc.local e crontab. Potete invocare crontab come root,

crontab -e

e poi inserire questa linea

@reboot /home/my_name/bin/my_command

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

In alternativa, potete mettere una linea come questa

/home/my_name/bin/my_command

in /etc/rc.local, e questo verrà eseguito per ultimo. In ogni caso, ricordatevi che state usando l'ambiente di root, non il vostro. Anche per questo motivo, è meglio usare percorsi assoluti.

Se siete su una distro systemd (Arch Linux, Fedora 19,…) la prima opzione (crontab) è ancora valida, mentre la seconda (/etc/rc.local) non esiste più. In questo caso, dovreste imparare come avviare un servizio da eseguire da systemctl, ma questo potrebbe essere più di quanto vi aspettavate con la vostra semplice domanda.

19
19
19
2012-09-10 22:29:09 +0000

Se il vostro sistema ha una versione di cron che lo supporta (in particolare Vixie cron), potete usare @reboot in un cron job.

Questa è una delle 8 stringhe speciali che supporta.

Citando la pagina man di crontab(5) (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 * * * *".

Si noti che lo startup, per quanto riguarda @reboot, è il momento in cui il demone cron(8) si avvia. In particolare, può essere prima che alcuni demoni di sistema, o altre strutture, siano stati avviati. Questo è dovuto alla sequenza dell'ordine di avvio della macchina.

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

9
9
9
2013-12-08 07:32:27 +0000

Praticamente tutte le varianti di Linux (andando indietro di molto, molto tempo) hanno un file /etc/rc.local che viene eseguito all'avvio - puoi semplicemente aggiungerci il comando.

Detto questo, non hai nemmeno bisogno di farlo. Il modo “corretto” sarebbe quello di modificare / aggiungere la linea kernel.sysrq = 1 in /etc/sysctl.conf