Linux系统关机过程 原

最常用的Linux关机命令用init、shutdown、halt和reboot等。这些命令都可以达到关机重启的目的,但是每个命令的内部工作过程是不同的。下面就详细了解Linux安全关机的过程。

1.shutdown命令

  使用shutdown命令可以安全地关闭Linux系统,有些Linux初学者会使用直接关闭电源的方式来关闭Linux,真是十分危险的,因为Linux与Windows不同,在Linux后台运行着很多进程,这些进程控制着Linux对系统的各种操作,如果强制关机,可能会造成进程的混乱以致丢失数据。如果在系统工作负荷很高的情况下突然断电,不但会丢失数据,甚至会损坏硬件设备。

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

  (1)shutdown命令的详细语法如下:

shutdown [-fFhknc(参数名称)] [-t秒数] 时间 [警告信息]

 各参数含义如下。

  • -f:重启系统时不执行fsck。
  • -F:重启时执行fsck。
  • -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两种模式。hh:mm格式表示在几点几分执行shutdown命令。例如“shutdown 16:50”表示将在16:50执行shutdown,+m表示m分钟后执行shutdown。比较特别的用法是以now表示立即执行shutdown。值得注意的是这部分参数不能省略。
  • [警告信息]:要传送给所有登录用户的信息。

  (2)应用举例

要立即关机重启:shutdown -r now

要立即关机: shutdown -h now

设定5分钟后关机,同时发出警告信息给登录用户:shutdown +5 "System will shutdown after 5 minutes"

2.halt命令

halt是最简单的关机命令,相当于“shutdown -h”组合。halt 执行时,将杀死所有应用程序,然后调用系统指令sync。sync将所有内存信息通过文件系统写入硬盘,然后停止内核。

halt语法格式如下:

halt [-finp]

halt指令在执行时,会首先检测系统的运行级别,如果运行级为0或6,则立即关闭系统,否则调用shutdown来关闭系统。参数含义如下:

  • [-f]:不管当前系统处于何种运行级别,不调用shutdown而强制关机。
  • [-i]:关机之前,关掉所有的网络接口。
  • [-n]:halt执行时,不调用系统指令sync。
  • [-p]:关机时调用poweroff,也就是关机时同时关闭电源。此选项为缺省选项。

3.reboot命令

    reboot命令的执行过程与halt基本类似,不同的是halt是用于关机,而reboot是关机后引发系统重启。

4.init命令

  init进程是所有进程的鼻祖,其进程号始终为1。init程序主要用于系统不用运行级之间的切换,切换的工作室立即完成的。

例如,init 0就是将系统运行级切换到0,也就是关机;init 6命令用于将系统运行级切换到6,也就是重启系统。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Seebug漏洞平台

GitLab 任意文件读取漏洞 (CVE-2016-9086) 和任意用户 token 泄露漏洞

Author:dawu,LG(知道创宇404安全实验室) Data:2016-10-09 0x00 漏洞概述 1.漏洞简介 GitLab 是一个利用Ruby o...

4017
来自专栏程序员同行者

gitlab备份及迁移

1261
来自专栏IT笔记

JavaWeb项目架构之NFS文件服务器

当用户A通过互联网上传文件时,经过负载均衡,随机或者定向分配到某个节点。但是当用户B去下载这个文件的时候,并不确定会向哪个节点发送请求,这样会导致用户存在一定几...

5299
来自专栏云计算教程系列

如何在CentOS 7上设置Node.js生产应用程序

Node.js是一个开源的Javascript运行时环境,用于轻松构建服务器端和网络应用程序。该平台在Linux,OS X,FreeBSD和Windows上运行...

900
来自专栏北京马哥教育

Linux系统中三类重要文件的作用与区别

Linux系统中,有三种文件类型出现的非常频繁,那就是profile、bash_profile、bashrc文件。 因为名称的缘故,很多人会把这三类文件的作用记...

3285
来自专栏Python自动化测试

Appium之环境搭建(一)

本文章这里详细的介绍appium的环境搭建,关于它的设计哲学,可以到http://appium.io/documentation.html地址去看,...

1254
来自专栏Seebug漏洞平台

Sparkjava Framework 文件遍历漏洞(CVE-2016-9177)分析与探究

Author:dawu(知道创宇404实验室) Date:2016-11-16 0x00 漏洞概述 1.漏洞简介 Sparkjava是一款小型的web框架,它...

3245
来自专栏jouypub

Linux之ACL权限控制

ACL权限控制主要目的是提供传统的owner,group,other的read,wirte,execute权限之外的具体权限设置,可以针对单一用户或组来设置特定...

1273
来自专栏Java学习123

Linux NFS服务器的安装与配置

4437
来自专栏Java后端生活

JavaWeb(三)第一个 WEB 应用程序

1357

扫码关注云+社区