Como editar o ficheiro Linux Crontab para programar traballos

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:

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 " aparecerá o contrario se mostrará o ficheiro crontab (esta funcionalidade difire do sistema ao sistema, ás veces non mostra nada e outras veces aparece " non edite este ficheiro ").

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:

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.