Consulte unix.stackexchange.com/questions/8690/… para ver la distinción: los comandos pueden comportarse de manera diferente según el sistema operativo (pero generalmente hacen lo mismo en Linux).
favor
Como se señala a continuación y se explica en detalle en unix.stackexchange.com/a/196014/5132 , la premisa de esta pregunta es falsa en los sistemas operativos Linux systemd. Estos no son binarios diferentes en tales sistemas.
JdeBP
Respuestas:
15
No necesariamente los necesitamos a ambos, pero los tenemos a ambos debido a la historia de Unix y su multiplicidad de versiones.
De sus respectivas páginas man:
La utilidad de apagado apareció en 4.0BSD.
Una utilidad de reinicio apareció en la Versión 6 AT&T UNIX.
el apagado es más general y más potente, mientras que el reinicio es más amigable y fácil de recordar.
shutdown le permite especificar un argumento temporal (para reiniciar en 5 minutos, por ejemplo) y le permite hacer muchas cosas además del reinicio, que incluyen:
simplemente puede iniciar usuarios y no cerrar realmente
puedes poner el sistema en suspensión en lugar de apagar
simplemente puede apagar sin reiniciar (como el comando detener)
puede incluir un mensaje de advertencia personalizado para los usuarios en el sistema
Sin embargo, si solo desea reiniciar el sistema ahora, es más fácil escribir rebootque shutdown -r now.
Dato curioso: algunas versiones de shutdownuso ahora son las predeterminadas. No intente obtener ayuda para el apagado shutdown -hnunca, especialmente en un servidor en algún lugar de un centro de datos.
Residuo
6
Los dos comandos hacen algo diferente, sin embargo, pueden terminar llamándose unos a otros, ¡por eso parecen hacer lo mismo!
rebootinvocará el núcleo para que realmente active un reinicio de hardware. Sin embargo, solo hará esto si el sistema está listo para apagarse: todos los demonios y procesos de usuario deben detenerse, los sistemas de archivos desmontados, etc. Por lo tanto, verifica el nivel de ejecución del sistema, y si no es 0 o 6, entonces invocará El shutdowncomando para ti.
shutdownhace que se cambie el nivel de ejecución del sistema. El cambio de nivel de ejecución (a 0 para detener o 6 para reiniciar) ejecuta muchos scripts en /etc/rc0.d o rc6.d que cierran demonios, desmontan sistemas de archivos, etc. Finalmente, estos scripts invocan halto reboot- esta vez el sistema está en el nivel de ejecución correcto e indican al núcleo que se reinicie (o detenga).
Además de lo que escribió iconoclasta, hay una distinción importante entre los dos programas: shutdownestá dentro /sbin, mientras rebootestá dentro /usr/bin.
¿Por qué importa esto, preguntas? Te lo diré.
Las cosas debajo /usrson aquellas que no tienen que estar disponibles hasta que el sistema se inicie lo suficiente como para que el sistema sea mínimamente funcional. Directorios de nivel superior que tradicionalmente nunca se montan en sistemas de archivos separados - /bin, /etc, /sbin, etc - se espera que esté disponible mientras el sistema está llegando a este estado mínimamente útil. Hay varias implicaciones de este diseño; por ejemplo, es un mal estilo escribir la cláusula "stop" de un script de inicio SysV que usa programas en /usr/binsi hay una alternativa en /bino /sbin.
shutdownes la utilidad clave, la que siempre está disponible. rebootes solo una utilidad de conveniencia.
rebootestá en /sbinDebian (con SysVinit) y Ubuntu (con upstart).
Gilles 'SO- deja de ser malvado'
Bien, entonces meta-respuesta: conoce tu sistema. :) Yo uso CentOS más a menudo.
Warren Young
Lo mismo para Arch (systemd), ambos en / sbin
daisy
De hecho, en los sistemas operativos Linux de systemd tampoco es la utilidad clave, ya que con systemd todos estos comandos son (como lo dice systemd doco) comandos de "compatibilidad". De hecho, la premisa de la pregunta es falsa. No están en binarios diferentes. Para obtener detalles, consulte unix.stackexchange.com/a/196014/5132 .
Respuestas:
No necesariamente los necesitamos a ambos, pero los tenemos a ambos debido a la historia de Unix y su multiplicidad de versiones.
De sus respectivas páginas man:
el apagado es más general y más potente, mientras que el reinicio es más amigable y fácil de recordar.
shutdown le permite especificar un argumento temporal (para reiniciar en 5 minutos, por ejemplo) y le permite hacer muchas cosas además del reinicio, que incluyen:
Sin embargo, si solo desea reiniciar el sistema ahora, es más fácil escribir
reboot
queshutdown -r now
.fuente
shutdown
uso ahora son las predeterminadas. No intente obtener ayuda para el apagadoshutdown -h
nunca, especialmente en un servidor en algún lugar de un centro de datos.Los dos comandos hacen algo diferente, sin embargo, pueden terminar llamándose unos a otros, ¡por eso parecen hacer lo mismo!
reboot
invocará el núcleo para que realmente active un reinicio de hardware. Sin embargo, solo hará esto si el sistema está listo para apagarse: todos los demonios y procesos de usuario deben detenerse, los sistemas de archivos desmontados, etc. Por lo tanto, verifica el nivel de ejecución del sistema, y si no es 0 o 6, entonces invocará Elshutdown
comando para ti.shutdown
hace que se cambie el nivel de ejecución del sistema. El cambio de nivel de ejecución (a 0 para detener o 6 para reiniciar) ejecuta muchos scripts en /etc/rc0.d o rc6.d que cierran demonios, desmontan sistemas de archivos, etc. Finalmente, estos scripts invocanhalt
oreboot
- esta vez el sistema está en el nivel de ejecución correcto e indican al núcleo que se reinicie (o detenga).fuente
Además de lo que escribió iconoclasta, hay una distinción importante entre los dos programas:
shutdown
está dentro/sbin
, mientrasreboot
está dentro/usr/bin
.¿Por qué importa esto, preguntas? Te lo diré.
Las cosas debajo
/usr
son aquellas que no tienen que estar disponibles hasta que el sistema se inicie lo suficiente como para que el sistema sea mínimamente funcional. Directorios de nivel superior que tradicionalmente nunca se montan en sistemas de archivos separados -/bin
,/etc
,/sbin
, etc - se espera que esté disponible mientras el sistema está llegando a este estado mínimamente útil. Hay varias implicaciones de este diseño; por ejemplo, es un mal estilo escribir la cláusula "stop" de un script de inicio SysV que usa programas en/usr/bin
si hay una alternativa en/bin
o/sbin
.shutdown
es la utilidad clave, la que siempre está disponible.reboot
es solo una utilidad de conveniencia.fuente
reboot
está en/sbin
Debian (con SysVinit) y Ubuntu (con upstart).