Quiero programar una tarea para que se ejecute regularmente y he oído que Cron es la forma de hacerlo.
¿Cómo agrego trabajos Cron en Ubuntu?
Poner un script de shell en una de estas carpetas: /etc/cron.daily
, /etc/cron.hourly
, /etc/cron.monthly
o /etc/cron.weekly
.
Si esto no es suficiente para usted, puede agregar tareas más específicas, por ejemplo, dos veces al mes o cada 5 minutos. Vaya a la terminal y escriba:
crontab -e
Esto abrirá su crontab personal (archivo de configuración cron). ¡La primera línea en ese archivo lo explica todo! En cada línea puedes definir un comando para ejecutar y su programación, y el formato es bastante simple cuando lo dominas. La estructura es:
minute hour day-of-month month day-of-week command
Para todos los números, puede usar listas, por ejemplo, 5,34,55
en el campo de minutos significará correr a las 5 pasadas, 34 pasadas y 55 pasadas cualquier hora definida.
También puedes usar intervalos. Se definen así: */20
. Este ejemplo significa cada 20, así que en la columna de minutos es equivalente a 0,20,40
.
Entonces, para ejecutar un comando todos los lunes a las 5:30 de la tarde:
30 17 * * 1 /path/to/command
o cada 15 minutos
*/15 * * * * /path/to/command
Tenga en cuenta que el día de la semana va de 0 a 6, donde 0 es domingo.
Puedes leer más aquí .
*/15 * * * * /path/to/command
, puede hacerlo@reboot /path/to/command
para ejecutar algo en el inicio.Si el trabajo que desea ejecutar se puede ejecutar con los mismos privilegios que su usuario, le recomiendo usar un crontab de usuario que puede editar ejecutando
EDITOR="gedit" crontab -e
(que usará gedit para editar el archivo crontab) o simplementecrontab -e
(que usará el editor predeterminado) en una terminalSi desea ejecutar algo cada 10 minutos, por ejemplo, agrega una línea como esta
y guarda el archivo.
Puede ver el contenido del crontab de usuario con
crontab -l
.Para agregar un trabajo cron que se ejecute como root, puede editar el crontab de root ejecutando
sudo crontab -e
.La forma más flexible es utilizar el crontab del sistema,
/etc/crontab
que solo puede editar con privilegios de root. En este archivo, el usuario debe ejecutar cada comando como se especifica, por lo que puede ejecutar sus comandos como root (en caso de que necesite ese nivel de privilegio) o cualquier otro usuario en el sistema.Por ejemplo, si desea ejecutar algo cada 10 minutos como root, agregaría una línea como esta
(observe la adición del usuario a la línea)
Puede ver el contenido del archivo crontab del sistema con
cat /etc/crontab
.Más detalles en: https://help.ubuntu.com/community/CronHowto
fuente
Si prefiere hacerlo utilizando una GUI, puede ir al Centro de software e instalar Tareas programadas (o ejecutar
sudo apt-get install gnome-schedule
). Proporcionará una interfaz gráfica de usuario potente para agregar tareas cron.Tenga en cuenta que si usa este método, las tareas de forma predeterminada se ejecutarán como su propio usuario, no como root. Esto suele ser algo bueno.
fuente
Recomiendo el Programador de tareas de KDE (
kde-config-cron
) . Acceda desde la Configuración del sistema en el módulo Programador de tareas allí.Gestiona tanto las Crontabs personales como las del sistema, y la facilidad de crear límites de tiempo me sorprendió mucho (ver la captura de pantalla a continuación). Creo que esta parte está realmente subestimada.
fuente
El programador de tareas de KDE no funcionará en Ubuntu normal. Solo funciona en sistemas KDE como KUbuntu. Para un sistema que no sea KDE, preferirá utilizar gnome-schedule
La aplicación es Tareas programadas en el Tablero.
fuente
I can't install gnome schedule on Ubuntu 16.04
@ askubuntu.com/questions/785657/… . Hay un paquete para descargar @ bugs.launchpad.net/ubuntu/+source/gnome-schedule/+bug/1576060/… . Solo realiza$ sudo dpkg -i gnome-schedule_2.3.0-0ubuntu16.04_amd64.deb
Quería configurar un trabajo de Cron para ejecutar un script bash, por lo que ejecutar el script agregaría un trabajo cron.
Me di cuenta de que cuando haces uso de:
Luego crea el archivo:
/var/spool/cron/crontabs/root
Donde root es el nombre del usuario que ejecuta el comando crontab. Entonces, en base a esto y al menos en 14.04, podemos ejecutar los siguientes comandos bash para crear un nuevo trabajo de Cron:
También debemos establecer la propiedad correcta del archivo:
Y establezca los permisos correctos:
Si cuando ejecuta
crontab -e
ya hay trabajos de Cron en la lista, puede agregarlos a la lista con el siguiente comando:fuente
Ejemplo de ejecutar script
test_cron.sh
por cron cada minuto en Ubuntu 18.04 usando un enlace simbólico:test_cron.sh
archivo:Si desea utilizar variables de entorno en su script, como
$USER
en las rutas, es mejor escribir una ruta precisa, bash no conocerá sus variables en el momento de la ejecución.myname
es el nombre de usuario (parte del grupo raíz, no estoy seguro de que los privilegios de raíz sean necesarios).Permita que los usuarios establezcan trabajos cron, el archivo se creará si es necesario:
El camino hacia el script es
/home/myname/shell/test_cron.sh
Cambié el propietario y lo hice ejecutable:
Agregué un enlace simbólico:
Registrado cuando
myname
agregué una nueva tarea para ejecutartest_cron
cada minuto.Para verificar si el comando en la lista:
Para verificar la ejecución
fuente