¿Cómo puedo programar un reinicio en Linux?

38

Soy nuevo en Linux y quiero programar un reinicio a medianoche. ¿Cómo debería hacerlo?

Ediciones:

  • Lo siento, no puse los detalles completos. Quiero reiniciar cada 3er sábado del mes a las 23:30.

  • No sé qué está mal, pero no puedo encontrar crontab. Lo que tengo es cron.d; cron.daily; cron.weekly; cron.monthly;

Lo siento por la pregunta novata. Por favor, ayúdame. Gracias.

klauriens
fuente
2
La verdadera pregunta es por qué querrías hacer esto regularmente, ¿tienes una aplicación con fugas o algo así? Si está programando reinicios regulares para resolver un problema, entonces probablemente tenga un problema mayor ...
JamesHannah
1
¿Quieres que se reinicie todas las noches?
Matt Simmons
44
No voy a rechazar, porque es una decisión de política (y creo que los reinicios nocturnos son un poco excesivos), pero programar regularmente reinicios en una infraestructura es una forma decente de garantizar que las máquinas tengan núcleos actualizados y todos los servicios en funcionamiento están parcheados He oído que un límite de tiempo de actividad de 3 meses es un buen término medio.
Matt Simmons
Si esto fuera un comentario sobre la pregunta, en lugar de una respuesta, lo votaría. En realidad, cambiaría de opinión, porque la pregunta era ambigua sobre si esto era algo único o regular. :)
intuido
3
/etc/crontabla entrada como 30 23 15-21 * 6 /sbin/shutdown -r nowse reiniciará a las 23:30 el tercer sábado de cada mes.
Chris S

Respuestas:

45

Escriba shutdown -r 0:00y se reiniciará a medianoche.

Si desea reiniciar cada noche, agregue una entrada cron usando crontab -e como root para ejecutar shutdown -r cada medianoche

@midnight shutdown -r now
radio
fuente
3
Un argumento de tiempo es obligatorio, puedes usarlo now.
Tobu
No ... si quiere un comando de una sola vez y quiere escribir el comando ahora, ¡debe agregar el tiempo!
radio
3
@No, necesita un argumento de tiempo como nowen la línea crontab.
Pausado hasta nuevo aviso.
Oups sí, lo siento, leí mal el comentario de Tobu y creo que dice que 0:00 fue inútil en el primer comando ... Edité para corregir (y Massimo también responde)
radio
Me interesaría saber qué otras @{command}variables están disponibles.
Greg
16

Utilizando crontab.

http://en.wikipedia.org/wiki/Crontab

Agregar esta entrada a / etc / crontab debería hacer:

0 0 * * * /sbin/shutdown -r now
Massimo
fuente
3
shutdownnecesita un argumento de tiempo comonow
Pausado hasta nuevo aviso.
1
Esto reiniciará todas las noches. No estoy seguro de si esto es lo que quiere.
cstamas
1
La pregunta original lo hizo sonar como si quisiera que se reiniciara todas las noches. En realidad, quiere que se reinicie cada 3er sábado, lo que aún sería más fácil con un crontab
Chris S
No sé lo que está mal, pero no puedo encontrar el crontab ..? lo que tengo es el cron.d; cron.daily; cron.semanalmente; cron.monthly; Lamento la pregunta novata. Por favor, ayúdame gracias
klauriens
Depende de la distribución que esté utilizando, pero generalmente debería encontrar un archivo llamado "crontab" en el directorio / etc de su sistema. También debería poder examinar el crontab actual usando el comando "crontab -l", y editarlo usando "crontab -e".
Massimo
13

Otra opción es en comando , disponible en muchas distribuciones de Linux. Consulte la página del manual para obtener más información, pero la sintaxis general para su propósito sería:

echo "reiniciar" | a las 0000 27 de junio

Para citar la página de manual de OS X:

at : ejecuta comandos a una hora especificada

Suena como de lo que estamos hablando. ;)

Zayne S Halsall
fuente
1

Hasta donde yo sé, no puede usar cron para programar tareas para "el último viernes de cada mes" o el "tercer jueves de cada mes". Lo que puede hacer, por feo que parezca, es ejecutar un script todos los sábados a las 23:30 y luego hacer que este script determine si este sábado en particular es el tercer sábado de la semana (se puede hacer usando la fecha y tal vez los comandos cal) .

Espero que esto ayude. No he encontrado una solución elegante para este problema. Encontré este hilo, porque estaba buscando una solución para el mismo problema.

ervingsb
fuente
1
los comentarios anteriores de "30 23 15-21 * 6 / sbin / shutdown -r now" funcionarán. Básicamente solo se ejecutará en la tercera semana del mes, pero solo cuando también sea sábado
Sirex
No creo que esta línea cron funcione como crees.
ervingsb
Creé las siguientes dos líneas: "30 23 1-7 * 4 date" y "30 23 1-7 * 3 date". Recibí dos correos anoche que decían: "Mié Mar 7 23:30:02 CET 2012"
ervingsb
el último campo coincide con el día de la semana, siendo cero el domingo. el 4 cronjob no debería haber coincidido un miércoles.
Sirex
Eso es a lo que me refiero. La regla que escribiste no significa lo que crees que significa. Activará el trabajo todos los días durante una semana. No importa el día de la semana.
ervingsb
0

1) en la línea de comando, escriba 2) una vez que sepa dónde se encuentra el reinicio (generalmente / sbin / reboot) cd en uno de los directorios en /etc/cron.daily, /etc/cron.weekly, / etc / cron. por hora, etc ... es decirwhich reboot
cd /etc/cron.weekly

3) crea un archivo (usando nano o vim) llámalo zzreboot y agrega las siguientes líneas:

#! / bin / sh
/ sbin / reiniciar

La razón por la que desea llamar al archivo zzwhatever es para asegurarse de que sea el último trabajo llamado después de todos los demás trabajos. Para asegurarse, simplemente haga un ls -len el directorio y verifique que sea el último archivo.

Shawn Bakhtiar
fuente