Apagada automàtica amb cron

Si treballeu amb pàgines web i mai he necessitat que un arxiu s'executi automàticament de forma previsible, segurament ja haureu sentit a parlar del cron. Per als que no, és un servei disponible en màquines (basades en) Unix, que s'utilitza per executar comandes a la shell o bé cada determinats intervals de temps, o cada dia i hora triada (per exemple, pots fer que de dilluns a divendres a les 7 el matí s'executi la comanda «ferCafé» :P).

Ja havia fet ús anteriorment d'aquest servei per un projecte web (gracies a un proveïdor alemany molt recomanable, que n'ofereix de gratuït), però no hi havia tingut contact directe fins fa unes setmanes. Resulta que l'ordinador que faig servir es connecta a Internet a través d'un altre (el del meu pare) que fa de proxy, i ha passat més d'una vegada que al anar a dormir m'he oblidat d'apagar-lo, així que he decidit fer alguna cosa per solucionar-ho (i està clar que amb Linux és possible aconseguir-ho).

Després de mirar-me per sobre el manual de cron ($ man cron) i amb uns mínims coneixements de bash, he pogut arribar a una fàcil solució per evitar que es quedi tota la nit encès. Simplement he escrit un petit script (disponible aquí) que quan és executat va fent pings al meu PC fins que aquest deixa de respondre, i llavors apaga el PC; per a això fas ús de l'utilitat fping, disenyada per a ser utilitzada per scripts (per instaŀlar-la n'hi ha prou amb fer «sudo apt-get install fping»). L'executable també contempla el cas de que algú vulgui continuar treballant en la màquina, i per això n'hi ha prou amb crear l'arxiu /usr/local/etc/cron_poweroff.lock per tal de desactivar el script.

L'instaŀlació de tot plegat és fàcil. Simplement s'ha de descarregar el script que he preparat, editar-lo per configurar-hi la IP correcta, moure'l al directori /usr/local/bin i donar-li permís d'execució ($ sudo chmod +x /usr/local/bin/cron_poweroff). Finalment, obrir l'arxiu /etc/crontab (sudo gedit /etc/crontab) i afegir-hi, després de les entrades ja existents, aquesta: «0 1 * * * root /usr/local/bin/cron_poweroff», que fara que s'executi cada dia a la 1 (de la matinada) en punt (si es vol que sigui en una altre hora, es canvia l'u pel nombre que sigui i ja està).

Per desactivar el script quan faci falta, com ja he dit abans, n'hi ha prou amb un «sudo touch /usr/local/etc/cron_poweroff.lock». Però s'ha de recordar d'esborrar-lo abans d'apagar el PC, o seguirà desactivat. O bé també es podria fer que aquests s'esborres sempre que s'apaga l'ordinador (si existeix), però això ja seria un altre article… 🙂

Bé, crec que ja us he avorrit prou amb això, aquí acaba l'article. Simplement és perquè no m'oblidi com ho he fet si em cal repetir-ho mai, i per si a algú altre també li serveix…

[@more@]



Aquesta entrada ha esta publicada en General. Afegeix a les adreces d'interès l'enllaç permanent.