ubuntu - manualmente - reiniciar crontab
¿Cómo escribir un cron que ejecutará un script todos los días a la medianoche? (5)
He oído que crontab es una buena opción, pero ¿cómo escribo la línea y dónde la pongo en el servidor?
Algunas veces necesitará especificar PATH y GEM_PATH usando crontab con rvm.
Me gusta esto:
# top of crontab file
PATH=/home/user_name/.rvm/gems/ruby-2.2.0/bin:/home/user_name/.rvm/gems/ruby-2.2.0@global/bin:/home/user_name/.rvm/rubies/ruby-2.2.$
GEM_PATH=/home/user_name/.rvm/gems/ruby-2.2.0:/home/user_name/.rvm/gems/ruby-2.2.0@global
# jobs
00 00 * * * ruby path/to/your/script.rb
00 */4 * * * ruby path/to/your/script2.rb
00 8,12,22 * * * ruby path/to/your/script3.rb
Puede ejecutar el script de shell de dos maneras, ya sea mediante el uso de cron job o escribiendo un script de shell
Supongamos que el nombre de su script es "yourscript.sh"
Primero compruebe el permiso de usuario de la secuencia de comandos. use el comando below para verificar el permiso de usuario de la secuencia de comandos
ll script.sh
Si el script está en la raíz, entonces use el comando debajo
sudo crontab -e
En segundo lugar, si el script mantiene al usuario "ubuntu", entonces use el comando below
crontab -e
Agregue la siguiente línea en su crontab: -
55 23 * * * /path/to/yourscript.sh
Otra forma de hacer esto es escribir un script y ejecutarlo en el backgroud
Aquí está el guión donde debe poner el nombre de su guión (p. Ej .: - youscript.sh) que se ejecutará a las 23:55 p.m.
#!/bin/bash while true do /home/modassir/yourscript.sh sleep 1d done
guárdalo en un archivo (digámoslo "every-day.sh")
sleep 1d - significa que espera un día y luego se ejecuta nuevamente.
ahora da el permiso a tu secuencia de comandos. use below command:
chmod + x every-day.sh
ahora, ejecute este script de shell en segundo plano usando "nohup". Esto seguirá ejecutando el script incluso después de que salga de su sesión.
use el comando below para ejecutar el script.
nohup ./every-day.sh &
Nota: - para ejecutar "yourscript.sh" a las 23:55 p. M. Todos los días, debe ejecutar el script "every-day.sh" exactamente a las 23:55 p. M.
de la página de manual
linux$ man -S 5 crontab
cron(8) examines cron entries once every minute.
The time and date fields are:
field allowed values
----- --------------
minute 0-59
hour 0-23
day of month 1-31
month 1-12 (or names, see below)
day of week 0-7 (0 or 7 is Sun, or use names)
...
# run five minutes after midnight, every day
5 0 * * * $HOME/bin/daily.job >> $HOME/tmp/out 2>&1
...
Es bueno tener en cuenta los "apodos" especiales que se pueden utilizar (documentados en la página de manual), particularmente "@reboot" que no tiene alternativa de fecha y hora.
# Run once after reboot.
@reboot /usr/local/sbin/run_only_once_after_reboot.sh
También puede usar este truco para ejecutar su trabajo cron varias veces por minuto.
# Run every minute at 0, 20, and 40 second intervals
* * * * * sleep 00; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 20; /usr/local/sbin/run_3times_per_minute.sh
* * * * * sleep 40; /usr/local/sbin/run_3times_per_minute.sh
Para agregar un trabajo cron, puede hacer una de estas tres cosas:
agregue un comando al crontab de un usuario, como se muestra arriba (y desde el crontab, sección 5, página man).
- edite el crontab de un usuario como root con
crontab -e -u <username>
- o edita el crontab del usuario actual con solo
crontab -e
- Puede configurar el editor con la
EDITOR
entornoEDITOR
-
env EDITOR=nano crontab -e -u <username>
- o establece el valor de EDITOR para toda tu sesión de shell
-
export EDITOR=vim
-
crontab -e
-
-
- Hacer scripts ejecutables con
chmod a+x <file>
- edite el crontab de un usuario como root con
crear un script / programa como un trabajo cron y agregarlo a los directorios anacron
/etc/cron.*ly
anacron- anacron /etc/cron.*ly directorios:
- /etc/cron.daily
- /etc/cron.hourly
- /etc/cron.monthly
- /etc/cron.weekly
- como en:
- /etc/cron.daily/script_runs_daily.sh
-
chmod a+x /etc/cron.daily/script_runs_daily.sh
-chmod a+x /etc/cron.daily/script_runs_daily.sh
ejecutable
- Ver también la página del
man anacron
:man anacron
- Hacer scripts ejecutables con
chmod a+x <file>
- ¿Cuándo se ejecuta este script cron. * Ly?
- Para RHEL / CentOS 5.x, están configurados en
/etc/crontab
o/etc/anacrontab
para ejecutarse en un tiempo determinado - RHEL / CentOS 6.x + y Fedora 17+ los sistemas Linux solo definen esto en
/etc/anacrontab
, y definen cron.hourly en/etc/cron.d/0hourly
- Para RHEL / CentOS 5.x, están configurados en
- anacron /etc/cron.*ly directorios:
O bien, uno puede crear crontables del sistema en
/etc/cron.d
.- La sintaxis crontab descrita anteriormente (con la adición adicional de un usuario para ejecutar cada tarea como) se coloca en un archivo y el archivo se coloca en el directorio /etc/cron.d.
- Estos son fáciles de administrar en el empaquetado del sistema (por ejemplo, paquetes RPM), por lo que generalmente pueden ser específicos de la aplicación.
- La diferencia de sintaxis es que se debe especificar un usuario para el trabajo cron después de los campos de hora / fecha y antes del comando para ejecutar.
- Los archivos agregados a
/etc/cron.d
no necesitan ser ejecutables. - Aquí hay un trabajo de ejemplo que se ejecuta como el usuario
someuser
, y el uso de/bin/bash
medida que el shell se fuerza.
File: /etc/cron.d/myapp-cron
# use /bin/bash to run commands, no matter what /etc/passwd says
SHELL=/bin/bash
# Execute a nightly (11:00pm) cron job to scrub application records
00 23 * * * someuser /opt/myapp/bin/scrubrecords.php
Aquí hay un buen tutorial sobre qué es crontab y cómo usarlo en Ubuntu. Su línea crontab se verá más o menos así:
00 00 * * * ruby path/to/your/script.rb
( 00 00
indica medianoche - 0 minutos y 0 horas - y el *
s significa todos los días de cada mes).
Syntax: mm hh dd mt wd command mm minute 0-59 hh hour 0-23 dd day of month 1-31 mt month 1-12 wd day of week 0-7 (Sunday = 0 or 7) command: what you want to run all numeric values can be replaced by * which means all
Guía rápida para configurar un trabajo cron
Crea un nuevo archivo de texto, por ejemplo: mycronjobs.txt
Para cada trabajo diario (00:00, 03:45), guarde las líneas de programación en mycronjobs.txt
00 00 * * * ruby path/to/your/script.rb
45 03 * * * path/to/your/script2.sh
Envíe los trabajos a cron (cada vez que ejecuta esto, cron elimina lo que se ha almacenado y las actualizaciones con la nueva información en mycronjobs.txt )
crontab mycronjobs.txt
Información útil adicional
Ver trabajos cron actuales
crontab -l
Eliminar todos los trabajos de cron
crontab -r