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?


3
¿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.


1
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:

[Unit]
Description=My script that requires network
After=network.target

[Service]
Type=oneshot
ExecStart=/full/path/to/my_script.sh

[Install]
WantedBy=multi-user.target

Luego ejecuta:

sudo systemctl daemon-reload
sudo systemctl enable my_script

Ya terminaste!


11

Me gustaría utilizar at. Como en:

@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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.