很多用户会使用直接按电源键的方式来关闭linux服务器,这是不对的。linux服务器与windows服务器有很大的不同,它的后台运行着许多进程,强制关机会导致进程的数据丢失,使得系统不稳定,甚至会损坏硬件。
2、工作中,shutdown命令的使用时常会跟一些参数。其中:[-r] 重启计算器,执行完之后,网口识别完了还能登录到这台服务器上;
[-k]
带这个参数其实并不真正关机﹐只是送警告信号给每位登录者;[-h]
在关闭服务器后再闭电源,执行过后就不能登录服务器了,除非把服务器的电源键按下,使其启动。
3、halt命令,可以说是最简单的关机命令。halt命令说白了其实是调用shutdown -h。halt在执行的时候,杀死应用进程,并在文件系统写 *** 作完成之后就会停止内核的运行。
4、halt命令在实际使用的时候,也有一些常用的参数项。其中:[-f] 在不调用shutdown的情况下强制关机或重启;[-i] 关机前,先关闭掉所有的网络接口;[-p] 为缺省选项,其实就是关机时调用poweroff。
5、reboot命令,reboot的工作过程跟halt基本上一样,只不过它是引发主机重启,而halt是关机不再启动,在执行halt命令后不要惊讶怎么服务器登不上了。它的参数与halt也类似。
6、init命令,init是所有进程的鼻祖,其进程号为1。它可以发送信号终止所有的用户进程,守护进程等。shutdown命令其实也就是使用这种机制。init定义了8个运行级别(runlevel),init 0为关机,而init1为重启。
Linux有三个常用的关机命令,下面是它们的区别:
shutdown以一种安全的方式关闭系统。所有登陆用户都可以看到关机信息提示,并且 login 将被阻塞。可以指定立刻关机,也可以指定系统在一定的延时后关机。所有进程都将接收到 SIGTERM 信号。这可以使 vi 等程序有时间将处于编辑状态的文件进行存储,邮件和新闻程序进程则可以将所有缓冲池内的数据进行适当的清除等等。 shutdown 通过通知 init 进程,要求它改换运行级别来实现。运行级别 0 用来关闭系统,运行级别 6 用来重启系统,运行级别 1 用来使系统进入执行系统管理任务状态,如果没有给出 -h 或 -r 标志时,这是 shutdown 命令的默认工作状态。
halt是最简单的关机命令。其实halt就是调用shutdown -h。halt执行时会杀死应用进程,执行sync系统调用,文件系统写 *** 作完成后就会停止内核。
poweroff在关闭计算机 *** 作系统之后,最后还会发送ACPI指令,通知电源,最后切断电源供应,当然路由器等嵌入系统不支持ACPI的,所以这个无效。
关于三者的区别可以根据三者本身的定义来进行区分:
shutdown命令,可以安全的关闭或者重启Linux系统。众所周知Linux系统是不同于Windows系统的,当系统后台运行着好多程序时我们强制关机对于Windows系统可能没有太大的伤害,但是Linux系统是万万不可以的,如果强制关闭系统很有可能使数据丢失,使系统处于一种不稳定的状态。所以我们如果需要强制关机的时候,可以选择使用shutdown命令,这一命令会使系统管理员自动的通知所有已经登录的用户系统将要关闭请提前做好备份,当然这时的新用户也是不可以在登录的。
halt命令,相对于shutdown命令而言是一项比较简单的命令,换句话说这是一项最简单的关机命令。halt在执行时直接强制关闭应用程序,然后执行执行sync系统调用。这款命令,相对而言比较简单。
poweroff命令,它与以上两者最明显的区别就是直接切断电源,然后关闭整个计算机系统,但是由于现在一些嵌入式系统存在漏洞,所以poweroff命令并不能完全适应和应用于所有的嵌入式系统。
除了以上三大关闭系统的命令之外还有两个命令也是用来表示关闭系统的命令:reboot和init
reboot命令,其实reboot的工作命令和halt的工作命令差不多的,唯一的区别就是halt告诉系统关闭。而reboot引发系统重启。
init命令,几乎是所有进程的祖先﹐它的进程号始终为1﹐所以发送TERM信号给init会终止所有的用户进程、命令系统守护进程等。
备注:shutdown比较重要的几个参数说明:
[-t] 在改变到其它runlevel之前﹐告诉init多久以后关机。
[-r] 重启计算器。
[-time] 设定关机〔shutdown〕前的时间
[-f] 在重启计算器〔reboot〕时忽略fsck。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)