Introdución
Existe un demo en Linux chamado cron que se usa para executar procesos a intervalos regulares.
A forma en que fai isto é verificar certas carpetas no seu sistema para executar as secuencias de comandos. Por exemplo, hai un cartafol chamado /etc/cron.hourly, /etc/cron.daily, /etc/cron.weekly e /etc/cron.monthly. Tamén hai un ficheiro chamado / etc / crontab.
De xeito predeterminado pode simplemente poñer guións nas carpetas correspondentes para que poidan executar intervalos regulares.
Por exemplo, abra unha ventá de terminal (premendo CTRL, ALT e T) e execute o seguinte comando ls :
ls / etc / cron *
Verá a lista de programas ou scripts que se executan cada hora, diariamente, semanalmente e mensualmente.
O problema con estes cartafoles é que son un pouco vagos. Por exemplo diariamente significa que o script executarase unha vez ao día pero non ten control sobre o tempo que o script executar durante ese día.
Aí é onde entra o ficheiro crontab.
Ao editar o ficheiro crontab pode obter un script ou programa para executar na data e hora exacta que desexa executar. Por exemplo quizais queres facer unha copia de seguridade dos teus ficheiros todas as noites ás 6 da noite.
Permisos
O comando crontab require que un usuario teña permisos para editar un ficheiro crontab. Existen basicamente dous ficheiros que se usan para xestionar os permisos de crontab:
- /etc/cron.allow
- /etc/cron.deny
Se o ficheiro /etc/cron.allow existe, o usuario que desexe editar o ficheiro crontab debe estar nese ficheiro. Se o ficheiro cron.allow non existe pero hai un ficheiro /etc/cron.deny, entón o usuario non debe existir nese ficheiro.
Se ambos os ficheiros existen, entón o /etc/cron.allow anula o ficheiro /etc/cron.deny.
Se ningún ficheiro existe, entón depende da configuración do sistema se un usuario pode editar a crontab.
O usuario raíz sempre pode editar o ficheiro crontab. Pode usar o comando su para cambiar ao usuario raíz ou o comando sudo para executar o comando crontab.
Editar o ficheiro de crontab
Cada usuario que ten permisos pode crear o seu propio ficheiro crontab. O comando cron basicamente busca a existencia de varios arquivos crontab e execútase a través de todos eles.
Para comprobar se ten un ficheiro crontab, execute o seguinte comando:
crontab -l
Se non ten un ficheiro crontab, a mensaxe "sen crontab para
Para crear ou editar un ficheiro crontab, execute o seguinte comando:
crontab -e
De xeito predeterminado, se non hai ningún editor predeterminado seleccionado, preguntaráselle a seleccionar un editor predeterminado para usar. Personalmente quero usar nano porque é moi sinxelo de usar e funciona desde o terminal.
O ficheiro que se abre ten moita información, pero a parte clave é o exemplo xusto antes do final da sección de comentarios (os comentarios están indicados por liñas que comezan con #).
comando # mh dom mon dow
0 5 * * 1 tar -zcf /var/backups/home.tgz / home /
Hai 6 pezas de información para caber en cada liña do ficheiro crontab:
- O minuto do día o comando é correr (m)
- A hora do día en que se executará o comando (h)
- O día do mes o comando se executará (Dom)
- O mes en que se executará o comando (mon)
- O día da semana o comando se executará (dow)
- O comando
Para cada elemento (excepto o comando) pode especificar un carácter comodín. Mire o seguinte exemplo: crontab line:
30 18 * * * tar -zcf /var/backups/home.tgz / home /
O que di o comando anterior está a 30 minutos, 18 horas e calquera día, mes e día da semana executar un comando para comprimir e cargar o cartafol persoal no cartafol / var / backups.
Para que un comando se execute a 30 minutos cada hora, podo executar o seguinte comando:
Comando 30 * * * *
Para que un comando se execute cada minuto despois das 6 da tarde, podo executar o seguinte comando:
* 18 * * * comando
Polo tanto, debes ter coidado coa configuración dos teus comandos crontab.
Por exemplo:
Comando * * * 1 *
O comando anterior executábase cada minuto de cada hora de cada día de cada semana en xaneiro. Dubido que iso sexa o que quere.
Para executar un comando ás 5 da mañá o 1 de xaneiro fará o seguinte comando no ficheiro crontab:
Comando 0 5 1 1 *
Como eliminar un ficheiro de crontab
Na maioría das veces non quererá eliminar o ficheiro crontab, pero pode querer eliminar algunhas fileiras do ficheiro crontab.
No entanto, se quere eliminar o ficheiro crontab do usuario, execute o seguinte comando:
crontab -r
Unha forma máis segura de facelo é executar o seguinte comando:
crontab -i
Isto fai a pregunta "Estás seguro?" antes de eliminar o ficheiro crontab.