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
crontabasí. Useman crontabpara leer sobre la forma correcta de llamar a esta utilidad.Deberá utilizar
crontab -epara editar las entradas cron del usuario actual (puede agregar / modificar / eliminar líneas). Usecrontab -lpara 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
mailde 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ácrontaben el editor especificado por$VISUALo$EDITOR, ode forma no interactiva, usando
crontab crontab.txt, lo que simplemente importará lascrontabentradas del archivocrontab.txt, reemplazando el crontab activo existente para el usuario actual.El problema que tiene es que simplemente está usando el
crontabcomando 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
PATTERNes una expresión regular que coincidirá con las tareas que desea eliminar. Aquí,crontab -lte daremos tu actualcrontab.O, si tiene entradas en un archivo llamado
crontab-fragment.txtque 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.txten el directorio actual (usando una comparación de cadena de línea completa). El resultado se guardacrontab.txty 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.txtcontiene las entradas que desea agregar. Lee el crontab actual, agrega las entradas decrontab-fragment.txta esto y creacrontab.txt. Elcrontab.txtarchivo 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 lasVISUALyEDITORvariables de entorno . Para enumerar su crontab, ejecutecrontab -l.Si desea modificar el crontab en una secuencia de comandos, configure
VISUALyEDITORla ruta a una secuencia de comandos o un fragmento de shell que modifique el archivo suministrado en su lugar. El editoredes una posibilidad aquí, osed -isi su implementación desedtiene 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
VISUALyEDITOR.Simplemente puede escribir su cronograma en un archivo, 1 trabajo por línea, y usar el comando
crontab [filename]para que pueda realizarcatsus trabajosfilenamecomo 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 crontabpistas al enumerarlo primerofuente
Si desea agregar entradas a la
crontabautomatizació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.txt0 09 * * * python /home/user/greeting.pyLuego, ejecuté el siguiente comando para agregar estas entradas al crontab.
$ crontab hello-world-crontab.txtEl siguiente paso es verificar que se hayan agregado estas entradas.
$ crontab -lUna breve explicación de lo que hace cada entrada:
/home/user/greeting.txttodos los días a las 9 a.m.0 09 * * * echo "Hello world!" >> /home/user/greeting.txt0 09 * * * python /home/user/greeting.pyfuente