Tengo un archivo de texto que contiene una fecha y hora específicas. Quiero poder ejecutar un script en el momento especificado en ese archivo. ¿Cómo lograrías eso? ¿Crear otro script que se ejecute en segundo plano (una especie de demonio) y verifique cada segundo si la hora actual coincide con la hora del archivo? ¿Hay otra manera? La máquina es un servidor Linux , Debian wheezy. Gracias por adelantado
81
Respuestas:
Mira lo siguiente:
echo "ls -l" | at 07:00
Esta línea de código ejecuta "ls -l" en un momento específico. Este es un ejemplo de ejecución de algo (un comando en mi ejemplo) en un momento específico. "at" es el comando que realmente estaba buscando. Puede leer las especificaciones aquí:
http://manpages.ubuntu.com/manpages/precise/en/man1/at.1posix.html http://manpages.ubuntu.com/manpages/xenial/man1/at.1posix.html
¡Espero eso ayude!
fuente
Can't open /var/run/atd.pid to signal atd. No atd running?
alguna pista?atd
demonio en ejecución para usarat
. En Manjaro OpenRC, puede simplemente instalarat-openrc
y agregar el servicio atd daemon con:sudo rc-update add atd
y comenzar consudo rc-service atd start
. Por lo general, elat
paquete ya había incluido un serviciosystemd
(el sistema de inicio / servicio predeterminado en varias distribuciones de Linux, incluido Ubuntu) con el que se puede iniciarsudo systemctl start atd
y habilitar el inicio automático en initsudo systemctl enable atd
.at -c
uso. ¿Para qué sirve si la forma de ejecutar un comando es canalizarlo a std in?El
at
comando existe específicamente para este propósito (a diferencia delcron
que está destinado a programar tareas recurrentes).fuente
$(< file)
Cron es bueno para algo que se ejecutará periódicamente, como todos los sábados a las 4 a. M. También está anacron , que funciona con cortes de energía, suspensiones y otras cosas. Así como en .
Pero para una solución única, que no requiere root ni nada, puede usar la fecha para calcular los segundos desde la época del tiempo objetivo, así como el tiempo actual, luego use expr para encontrar la diferencia, y duerme tantos segundos.
fuente
at
trabajo permanecerá programado incluso si la máquina se reinicia mientras tanto.Normalmente en Linux se utiliza
crontab
para este tipo de tareas programadas. Pero debe especificar la hora en la que "configura el temporizador", por lo que si desea que sea configurable en el archivo, tendrá que crear algún mecanismo para hacerlo.Pero en general, usaría por ejemplo:
Ejecutaría el script todos los viernes a la 1:30 (AM) Aquí:
30
son minutos1
es horalos siguientes 2 * son
day of month
ymonth
(en ese orden) y5
es el día de la semanafuente