Estoy usando crontab por primera vez. Desea escribir algunas tareas cron de prueba muy simples y ejecutarlas.
$crontab * * * * * echo "Hi"
no produce nada
crontab */1 * * * * echo "hi"
dice */1: No such file or directory
.
Además, ¿cómo enumero las tareas cron que se están ejecutando actualmente (no solo las que poseo, sino también las iniciadas por otros usuarios, como root).
¿Y cómo elimino una tarea cron particular?
cron
administration
xyz
fuente
fuente
Respuestas:
No puedes usar
crontab
así. Useman crontab
para leer sobre la forma correcta de llamar a esta utilidad.Deberá utilizar
crontab -e
para editar las entradas cron del usuario actual (puede agregar / modificar / eliminar líneas). Usecrontab -l
para ver la lista actual de tareas configuradas.En cuanto a ver crontabs de otros usuarios, eso no es posible sin ser root en las instalaciones predeterminadas. Consulte Cómo enumero todos los trabajos cron para todos los usuarios para ver algunas formas de enumerar todo (como root).
Nota: tenga mucho cuidado cuando utilice caracteres de globo de shell en la línea de comando (
*
y?
especialmente).*
se expandirá a la lista de archivos en el directorio actual, lo que puede tener efectos inesperados. Si desea pasar*
como argumento a algo, cítelo ('*'
).fuente
mail
de la línea de comandos debe tener acceso a su buzón de correo local, si está configurado.) Para ver la 'hola' en entorno gráfico, puede configurar la tarea como:* * * * * export DISPLAY=:0; xmessage 'hi'
.Hay dos formas de editar uno
crontab
:interactivamente, usando
crontab -e
, que abrirácrontab
en el editor especificado por$VISUAL
o$EDITOR
, ode forma no interactiva, usando
crontab crontab.txt
, lo que simplemente importará lascrontab
entradas del archivocrontab.txt
, reemplazando el crontab activo existente para el usuario actual.El problema que tiene es que simplemente está usando el
crontab
comando incorrectamente.Lo siguiente se refiere a la manipulación de crontab no interactiva:
Entonces, para eliminar tareas particulares mediante programación, podrías hacer algo como
donde
PATTERN
es una expresión regular que coincidirá con las tareas que desea eliminar. Aquí,crontab -l
te daremos tu actualcrontab
.O, si tiene entradas en un archivo llamado
crontab-fragment.txt
que desea eliminar del crontab activo,Esto lee el crontab actual y filtra (elimina) cualquier línea que también ocurra en el archivo
crontab-fragment.txt
en el directorio actual (usando una comparación de cadena de línea completa). El resultado se guardacrontab.txt
y luego se carga desde allí para reemplazar el crontab actual.Para agregar una o varias tareas , haga algo como
Esto supone que el archivo
crontab-fragment.txt
contiene las entradas que desea agregar. Lee el crontab actual, agrega las entradas decrontab-fragment.txt
a esto y creacrontab.txt
. Elcrontab.txt
archivo luego reemplaza el crontab actual.fuente
Si desea modificar el crontab de forma interactiva, ejecute el comando
crontab -e
, sin otra opción. Esto iniciará un editor en una copia del crontab; Cuando salga del editor , la copia editada se convertirá en el nuevo crontab. Puede controlar qué editor se inicia a través de lasVISUAL
yEDITOR
variables de entorno . Para enumerar su crontab, ejecutecrontab -l
.Si desea modificar el crontab en una secuencia de comandos, configure
VISUAL
yEDITOR
la ruta a una secuencia de comandos o un fragmento de shell que modifique el archivo suministrado en su lugar. El editored
es una posibilidad aquí, osed -i
si su implementación desed
tiene esta opción. Si desea agregar una línea incondicionalmente, puede usarlaecho … >>
. Tenga cuidado con las citas; en caso de duda, escriba un guión y pase el nombre del guión comoEDITOR
.fuente
Esto es un poco tarde, pero para otros que buscan aquí. Hay formas más fáciles que manipular las secuencias de entrada / salida con
VISUAL
yEDITOR
.Simplemente puede escribir su cronograma en un archivo, 1 trabajo por línea, y usar el comando
crontab [filename]
para que pueda realizarcat
sus trabajosfilename
como parte de su script y, finalmente, llamar a crontab al final si lo desea.de hecho, este es el uso más común como
man crontab
pistas al enumerarlo primerofuente
Si desea agregar entradas a la
crontab
automatización o desde la línea de comandos, puede hacerlo (estableciendo los tiempos que desea tener)Luego:
para recargar las crontabs.
fuente
/var/spool/cron
. Una mejor manera sería a través delcrontab(1)
comando.Pruébalo con este comando:
luego agregue su trabajo cron:
en ese archivo
fuente
Me gustaría resaltar la forma en que describo a continuación, aunque se ha mencionado anteriormente en otro comentario. Lo encontré extremadamente útil al agregar las entradas a un archivo y luego agregar el archivo a crontab. Ese archivo contendría las dos entradas a continuación y el nombre del archivo sería
hello-world-crontab.txt
.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
Luego, ejecuté el siguiente comando para agregar estas entradas al crontab.
$ crontab hello-world-crontab.txt
El siguiente paso es verificar que se hayan agregado estas entradas.
$ crontab -l
Una breve explicación de lo que hace cada entrada:
/home/user/greeting.txt
todos los días a las 9 a.m.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt
0 09 * * * python /home/user/greeting.py
fuente