¿Cómo puedo programar un reinicio nocturno?

81

Tengo algunos problemas periódicos al ejecutar una aplicación en particular, XBMC. Si uso XBMC regularmente, parece que no tengo ningún problema, pero si lo dejo desatendido durante más de aproximadamente 12 horas, necesito reiniciar para que vuelva a funcionar.

Sé que un reinicio programado NO es la respuesta, pero hasta que pueda resolver el problema, necesito programar un reinicio cada mañana para que mi esposa pueda usarlo si estoy fuera y no se tira por la ventana :)

¿Ningún arrendatario?

Braiam
fuente

Respuestas:

133

Usaría cron (ya debería estar instalado):

Editar crontab:

sudo crontab -e

La primera vez que tenga que elegir su editor preferido (como nano)

Inserte una línea como

0 4   *   *   *    /sbin/shutdown -r +5

en el fondo. Explicación:

m      h    dom        mon   dow       command
minute hour dayOfMonth Month dayOfWeek commandToRun

entonces la línea

  0 4   *   *   *    /sbin/shutdown -r +5

reiniciaría su sistema todos los días a las 4:05 am. (4:00 am + 5 minutos)

Ctrl+ X, Y, EnterDeberían sacar de crontab (si se utiliza nano)

Nota: es posible que crontab -edeba ejecutar como root, porque el apagado necesita root. crontab -eabre un archivo en / tmp en lugar del crontab real para que pueda verificar su nuevo crontab en busca de errores. Si no hay errores, se actualizará su crontab real.

sBlatt
fuente
1
Gracias por la info. Lo único que tuve que hacer fue cambiar el comando a / sbin / shutdown para que funcione para mí.
1
Esto no funcionó para mí. usando ambos crontab -ey sudo crontab -eguarda el archivo en una ubicación temporal cuando sale (p. ej. /tmp/crontab.Y88XQl/crontab) y la tarea no se ejecuta. me vi obligado a editar / etc / crontab directamente
wal
@wal "crontab -e abre un archivo en / tmp en lugar del crontab real para que pueda verificar su nuevo crontab en busca de errores y evitar que sobrescriba su crontab real con esos errores. Si no hay errores, entonces su crontab real lo hará estar actualizado." unix.stackexchange.com/questions/197504/…
Christh
14

Agregar esto a /etc/cron.daily/zz-rebootdebería funcionar:

#!/bin/sh
shutdown -r now

Y sudo chmod a+x /etc/cron.daily/zz-reboot. El prefijo "zz" lo obligará a ejecutarse al final de todos los otros scripts en ese directorio. Verifique /etc/crontaba qué hora del día sucederá realmente:

grep daily /etc/crontab | awk '{print $2 ":" $1}'

Si eso no funciona, entonces una entrada cron "regular" también puede funcionar, a través de sudo crontab -e

MINUTE HOUR * * * shutdown -r now

Y, por último, si solo desea reiniciar por única vez, puede usar at:

echo "shutdown -r now" | sudo at 04:30
Kees Cook
fuente
por lo que yo sé que esto va a reiniciar el sistema al mismo tiempo que ha creado este archivo todos los días, por favor, corríjanme si me equivoco
sBlatt
1
No del todo: se reiniciará una vez al día a cualquier hora que cron.daily se ejecute, lo cual es un poco impredecible. Si no lo ha anacroninstalado, son las 06:25 hora local, lo que podría estar bien (o podría ser horrible si es un madrugador). Si lo hace, lo cual creo que es lo predeterminado, bien podrían pasar 10 minutos después de que la máquina se encienda por primera vez cada día, lo que sería irritante. En cualquier caso, cron.dailyno es una buena opción para esto.
Poolie
cron.daily ejecuta todas las noches a las 6:25 en mi sistema. Esto generalmente se establece en un minuto aleatorio entre las 06:00 y las 06:59. Vea su / etc / crontab para ver la hora en su sistema
elzapp
1
El mayor problema con el uso de cron.daily para esto es que podría interferir con otros trabajos en cron.daily.
elzapp
1

Debería crear un script utilizando las instrucciones dadas por Kees Cook ...

Puede copiar y pegar la información a continuación en cualquier editor de texto y crear el zz-rebootarchivo en el directorio sugerido.

Después de eso, solo recuerde hacer clic derecho en el archivo y asignarle permiso de ejecución. Si tiene ganas de usar el terminal solo:

sudo chmod +x /etc/cron.daily/zz-reboot

Para comprender mejor lo que está haciendo, recuerde que en la /etccarpeta generalmente encuentra archivos de configuración y allí puede encontrar cron.hourly, cron.dailyy otras carpetas cron. Cron se encarga de ejecutar aplicaciones y scripts en un momento determinado.

Si desea ser estricto sobre el tiempo de reinicio solo digite

sudo crontab -e

para que pueda editar el crontabpara el usuario root.

Si se siente mejor haciéndolo gráficamente, puede instalarlo desde el Centro de software gnome-schedule. Si desea modificar el gnome-scheduleusuario para root, asegúrese de ejecutarlo desde la terminal:

gksudo gnome-schedule

Diviértete jugando! :)

ps: gran punto sBlatt! Me preguntaba si hay alguna forma de forzar el cron.dailytiempo de ejecución manualmente.

Pitto
fuente
En / etc / crontab hay una entrada para ajustar el tiempo, pero que yo sepa, si el ordenador está inactivo en este momento, ejecutará algunos minutos después de que el equipo comenzó
sBlatt
1

He estado trabajando con cronjobs durante aproximadamente un mes en mi trabajo y programando el apagado y reinicio. Es muy sencillo. Sé que esto se le preguntó hace aproximadamente 5 años, pero si alguien todavía tiene problemas, puede usar este método y estará listo.

abrir la terminal (ctrl + T)

sudo nano /etc/crontab

desplácese hasta el final e ingrese el siguiente comando

00 6 * * * root reboot 

Esto está configurado para reiniciar a las 6am todos los días, y presione enter

Si desea programar el apagado a las 11 p.m. todos los días, puede ingresar

00 23 * * * root poweroff

Todavía necesito descubrir cómo encender una máquina usando cronjob cuando está inactiva. Editaré esta respuesta una vez que la resuelva.

PD: esta es mi primera respuesta publicada en cualquier formulario; Espero que ayude a alguien !! :RE

techfashionista
fuente
3
Hay una respuesta con el mismo contenido de hace 5 años con más detalles y verificación automática de sintaxis (a través crontab -e).
David Foerster
1
No olvides reiniciar cron:sudo /etc/init.d/cron restart
brcebn