Inicio de trabajo de Crontab +1 min después de @reboot
44
Necesita un script ejecutado en cada reinicio en +1 minuto. Puse un registro @rebootpero es demasiado pronto para mi guión. ¿Cómo ejecutarlo en algún momento después del reinicio?
¿Por qué es muy temprano ? ¿Quizás una secuencia de comandos de inicio sería más adecuada (en relación con las dependencias, por ejemplo, esta secuencia de comandos necesita la configuración de red primero )?
sr_
mi script debe ejecutarse después de todos los demás, el último en pocas palabras
Yurij73
dado que su trabajo debe ejecutarse después de todo y dado que el concepto de todo es bastante variable (la adición de una nueva aplicación autostart @ reboot no es tan poco común), creo que depende de usted colocar su trabajo en los scripts rc en manera que sirve a su propósito. Poner su tarea en la parte inferior de las tareas especificadas en /etc/rc.local generalmente es lo que desea, pero dependiendo de la configuración de inicio de su sistema, esto podría no ser cierto todo el tiempo. Por lo tanto, pruébelo y vea si funciona para usted.
MelBurslan
¿Suena como un caso para Upstart?
nafg
Respuestas:
68
¿El script solo tiene la intención de ejecutarse un minuto después del arranque, o también se puede usar en otros momentos? En el primer caso, puede agregarlo sleep 60al comienzo de su script, o en el último caso, agregarlo al archivo crontab:
@reboot sleep 60 && my_script.sh
Sin embargo, como ha señalado sr_, tal vez esté abordando esto de manera incorrecta, y un script init.d o rc.d adecuado sería una solución más sólida.
O use una opción de línea de comando para ajustar el retraso (por ejemplo, script -s Xque se traduciría al sleep Xinterior del script).
Peter
¿Puedo aplicar esto al archivo taskrunner en /etc/init.d/?
Andres Angel
@AndresAngel - Lo siento, no lo sé. Yo uso FreeBSD que no tiene taskrunner, ni, para el caso,/etc/init.d
D_Bye
en mi rhel7 el sueño no funciona, duerme para siempre y nunca regresa.
Inder R Singh
15
Si necesita ejecutar algo después de reiniciar cuando la red esté disponible, por ejemplo, puede escribir la unidad systemd que se ejecutará en el momento requerido (por supuesto, esto solo funcionará en sistemas con systemd).
Para hacerlo, cree un archivo /etc/systemd/system/my_script.servicecon los siguientes contenidos:
@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.
... con la advertencia adicional mencionada de que si lo que realmente desea es ejecutarlo después de todas las demás cosas, debe verificar cómo hacerlo en el init que está usando su sistema operativo.
Respuestas:
¿El script solo tiene la intención de ejecutarse un minuto después del arranque, o también se puede usar en otros momentos? En el primer caso, puede agregarlo
sleep 60
al comienzo de su script, o en el último caso, agregarlo al archivo crontab:Sin embargo, como ha señalado sr_, tal vez esté abordando esto de manera incorrecta, y un script init.d o rc.d adecuado sería una solución más sólida.
fuente
script -s X
que se traduciría alsleep X
interior del script).taskrunner
, ni, para el caso,/etc/init.d
Si necesita ejecutar algo después de reiniciar cuando la red esté disponible, por ejemplo, puede escribir la unidad systemd que se ejecutará en el momento requerido (por supuesto, esto solo funcionará en sistemas con systemd).
Para hacerlo, cree un archivo
/etc/systemd/system/my_script.service
con los siguientes contenidos:Luego ejecuta:
Ya terminaste!
fuente
Me gustaría utilizar
at
. Como en:... con la advertencia adicional mencionada de que si lo que realmente desea es ejecutarlo después de todas las demás cosas, debe verificar cómo hacerlo en el init que está usando su sistema operativo.
fuente