Bash
Trabajos en tiempos específicos
Buscar..
Ejecutar el trabajo una vez en un momento específico
Nota: at no está instalado por defecto en la mayoría de las distribuciones modernas.
Para ejecutar un trabajo una vez en otro momento que ahora, en este ejemplo a las 5 p. M., Puede usar
echo "somecommand &" | at 5pm
Si desea capturar la salida, puede hacerlo de la manera habitual:
echo "somecommand > out.txt 2>err.txt &" | at 5pm
at
entiende muchos formatos de tiempo, por lo que también puede decir
echo "somecommand &" | at now + 2 minutes
echo "somecommand &" | at 17:00
echo "somecommand &" | at 17:00 Jul 7
echo "somecommand &" | at 4pm 12.03.17
Si no se da un año o una fecha, se supone que la próxima vez que ocurra la hora especificada. Entonces, si das una hora que ya pasó hoy, asumirá mañana, y si das un mes que ya pasó este año, asumirá el próximo año.
Esto también funciona junto con nohup como usted esperaría.
echo "nohup somecommand > out.txt 2>err.txt &" | at 5pm
Hay algunos comandos más para controlar trabajos cronometrados:
- atq enumera todos los trabajos cronometrados ( atq ueue)
- atrm elimina un trabajo cronometrado ( atr e m ove)
- el lote hace básicamente lo mismo que en, pero ejecuta trabajos solo cuando la carga del sistema es inferior a 0,8
Todos los comandos se aplican a los trabajos del usuario que inició sesión. Si ha iniciado sesión como root, los trabajos en todo el sistema se manejan, por supuesto.
Haciendo trabajos en momentos específicos repetidamente usando systemd.timer
systemd proporciona una implementación moderna de cron . Para ejecutar un script periódicamente se necesita un servicio y un archivo temporizador. Los archivos de servicio y temporizador se deben colocar en / etc / systemd / {system, user}. El archivo de servicio:
[Unit]
Description=my script or programm does the very best and this is the description
[Service]
# type is important!
Type=simple
# program|script to call. Always use absolute pathes
# and redirect STDIN and STDERR as there is no terminal while being executed
ExecStart=/absolute/path/to/someCommand >>/path/to/output 2>/path/to/STDERRoutput
#NO install section!!!! Is handled by the timer facitlities itself.
#[Install]
#WantedBy=multi-user.target
A continuación el archivo temporizador:
[Unit]
Description=my very first systemd timer
[Timer]
# Syntax for date/time specifications is Y-m-d H:M:S
# a * means "each", and a comma separated list of items can be given too
# *-*-* *,15,30,45:00 says every year, every month, every day, each hour,
# at minute 15,30,45 and zero seconds
OnCalendar=*-*-* *:01:00
# this one runs each hour at one minute zero second e.g. 13:01:00