Bash Script all'avvio? (Linux)


12

Esiste un modo per creare / eseguire uno script bash al riavvio (come ad esempio in Debian / Ubuntu, dato che è quello che hanno i miei 2 box a casa)

Inoltre, qualche guida raccomandata per fare lavori cron? Sono completamente nuovo per loro (ma saranno di grande utilità)

Risposte:


21

Su Ubuntu / Debian / Centos è possibile impostare un processo cron per eseguire @reboot. Questo viene eseguito una volta all'avvio del sistema. Utilizzare crontab -e per modificare il crontab e aggiungere una riga come nell'esempio seguente, ad es

@reboot /path/to/some/script 

Ci sono molte risorse per cron se le cerchi. Questo sito ha molti buoni esempi.


7

Un altro modo tipico di avviare qualcosa all'avvio su molte piattaforme * nix è (o era, penso che questo potrebbe iniziare a perdere il favore - vedi alternative ) per mettere gli script in una directory che, a seconda del particolare sistema operativo / distribuzione, potrebbe essere qualcosa di simile /etc/rc2.d, /etc/rc3.d, /etc/rc/rc3.d, o simili (distribuzioni differenti utilizzano diversi "livelli di esecuzione", che è dove il numero proviene - vedi link in basso). Spesso, questi sono anche linkati in o da file da /etc/init.d, per una più facile esecuzione a mano, e prendono un argomento "start" e / o "stop" nella maggior parte delle piattaforme * nix, e anche "status", "restart", ecc. su molte piattaforme Linux. Su tali sistemi, questi sono generalmente eseguiti da init,inittab. Sui sistemi * BSD, esiste un diverso stile di un concetto simile e, come linkato sopra, ci sono un sacco di variazioni.

Nello stile sopra, gli script, ad esempio, /etc/rc2.d(per un sistema con un runlevel predefinito di 2) in genere iniziano con la lettera So K, quindi con un numero di due cifre. Gli script che iniziano con S vengono eseguiti in ordine lessicografico (che si traduce, generalmente, in ordine numerico) all'avvio, al livello 2, con un argomento "start". Allo spegnimento, gli script con il prefisso K vengono eseguiti in modo simile, con l'argomento "stop".

I file in /etc/init.d(o talvolta /etc/rc/init.d, o altre varianti) sono denominati senza i prefissi S e K, né i numeri numerici. In genere, i file nelle varie directory /etc/rc?.d si collegano ai file reali, a cui spesso si fa riferimento tramite il prefisso del percorso relativo ../init.d/.

Esistono varie utilità su vari sistemi per gestirle, accendendo e spegnendo le cose, ecc. Su IRIX (poiché IRIX 4, almeno, se la mia memoria serve), era uno strumento chiamato chkconfig, che non manipolava i collegamenti, ma che verrebbero controllati dagli script per vedere se dovrebbero essere eseguiti o meno. Penso che IRIX sia stato il primo sistema operativo ad avere qualcosa del genere. Più tardi, in alcune versioni di RedHat che avevo prima, c'era uno strumento con lo stesso nome, ma si comportava in modo leggermente diverso, gestendo effettivamente i collegamenti simbolici - vedi chkconfig(8)per quello che penso sia probabilmente la stessa (o molto simile) versione come ho usato allora.

Su un sistema Ubuntu 9.04 a cui ho accesso, sembra update-rc.dsia lo script da eseguire.

Se utilizzi un sistema che utilizza inittab, puoi anche aggiungere cose direttamente lì, il che può essere particolarmente utile per le cose che vuoi eseguire non solo una volta all'avvio, ma di aver attivamente monitorato (da init) respawnse mai crash o terminare. Vedere l'output di man inittab(se presente) sul proprio sistema per ulteriori informazioni. E / o man init, ecc. Ci sono molti gusti diversi, e non ho (attualmente) una grande familiarità con Debian o Ubuntu, quindi non sono sicuro di cosa indicarti, ma spero che questo ti dia dei punti di partenza .

la sezione @reboot in crontob è nuova per me, ma sembra anche che potrebbe essere un'opzione utile, anche se suggerirei che gli script di init siano preferibili per molte cose. Ma vedi man 5 crontabper maggiori informazioni su cosa puoi mettere nella tua configurazione cron e come può essere detto di eseguire le cose e quando (incluso, supponendo una versione Vixie / ISC di cron [vedi cronologia ] con @reboot).

Spero sia utile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.