shutdown命令是用shell编写的程序,必须由超级用户才能执行。shutdown命令执行后,会以广播的形式通知正在系统中工作的所有用户,系统将在指定的时间内关机,此时login指令被冻结,新的用户不能登录。当所有的用户从系统中注销或是指定时间已到,shutdown就发送信号给init程序,要求init程序改变系统运行级别。接着,init程序根据shutdown指令传递过来的参数,相应地改变运行级。例如,shutdown指定的参数是关机命令的话,init程序就执行init 0进行关机;如果shutdown指定的参数是要重启系统,init程序就执行init 6进行系统重启。
 
关机前,执行 sync 将数据由内存同步到硬盘中

shutdown命令详细语法 
shutdown [-fFhknrc] [-t 秒数] 时间 [警告信息]
 
-f:重新启动时不执行fsck。【fsck是Linux下一个检查和修复文件系统的程序】
-F:重新启动时执行fsck,默认为大F
-h:将系统关机,在某种功能上与halt命令相当。
-k:只是送出信息给所有用户,但并不会真正关机。
-n:不调用init程序关机,而是由shutdown自己进行(一般关机程序是由shutdown调用init来实现关机动作的),使用此参数将加快关机速度,但不建议用此方式关机。
-r:shutdown之后重新启动系统。
-c:取消前一个shutdown命令。例如,当执行一个如“shutdown -h 15:30”的命令只要按“Ctrl+C”组合键就可以终端关机的命令;而执行如“shutdown -h 15:30 &”的命令时,就将shutdown转到后台运行了,此时就需要使用“shutdown -c”将前一个shutdown命令取消。  
-t<秒数>:送出警告信息和关机信号之间要延迟多少秒。警告信息将提醒用户保存当前进行的工作。
[时间]:设置多久时间后执行shutdown命令。时间参数有hh:mm或+m两种模式。
[警告信息]:要传送给所有登录用户的信息。
 
应用举例:
shutdown -h 关机指令
shutdown -h now 立马关机
shutdown -h 20:25 系统会在今天20:25关机
shutdown -h 10  这个命令广播告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。只有自己可以取消,在其他终端无法取消。在发送关机命令的终端取消这个命令后,取消命令不会广播出去。

shutdown -r 重启指令
shutdown -r now 系统立马重启
shutdown -r 10 系统十分钟后重启

reboot 就是重启,等同于 shutdown -r now

最后总结一下,不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。
关机的命令有 shutdown -h now, halt, poweroff 和 init 0 
重启系统的命令有 shutdown -r now, reboot, init 6.