安全关闭 Linux 的方式

安全关闭 Linux 的方式

关机命令

$ sudo sync # 把内存中的数据缓存写入硬盘
$ sudo shutdown now # 立刻关机

为什么要运行 sync,这是《鸟哥的 Linux 私房菜》中的一段话

在Linux系统中,为了加快数据的读取速度,在默认的情况中, 某些已经加载内存中的数据不会直接被写回硬盘,而是先缓存在内存当中,如此一来, 如果一个数据被你重复的改写,那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来, 在速度上一定是快上相当多的!

不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机 (例如停电或者是不小心踢到power)时,由于数据尚未被写入硬盘当中,就会造成数据的不正常啦! 那要怎么办呢?这个时候就需要 sync 这个命令来进行数据的写入动作啦! 直接在文字接口下输入sync,那么在内存中尚未被升级的数据,就会被写入硬盘中!所以,这个命令在系统关机或重新启动之前, 很重要喔!最好多运行几次!

但是,shutdown 命令应该会考虑到刷新数据缓存的了吧?


按电源按钮关机

  1. 按一下,这时,操作系统收到关机请求,还是按正常流程关机,和在启动菜单里选择“开始”->“关机”本质上是完全一样的。

  2. 长按电源按钮关机,这种情况下电脑主板收到关机请求,跳过操作系统关机程序,强制切断电源。这种方式是直接断电,电脑没能保存数据,造成数据损坏的可能性很大。

  3. 短按电源按钮,发送到是什么信号?

  4. win10可以设置按下电源按钮时的行为,.

  5. 直接断电,对电脑有危害,具体是哪些?

会造成数据不完成,如果是系统关键数据,有可能导致开机失败吗?
有损坏机械硬盘的隐患,磁盘在正常关机时,会先将磁头退到位,而直接断电时,磁头会停留在磁盘表面,稍有碰撞,就会对磁头及盘片造成损坏。固态盘就没事喽?其它硬件有类似的情况吗?

和关机有关的命令

Linux关机相关的命令有:

早期的命令:shutdown,halt,reboot,poweroff。init命令也能关机。
systemd流行之后,systemctl 也包揽了电源管理(关机)的任务。

这些命令的选项里和关机有关的那些选项

可以用 man 手册查询这些命令的详细用法。
halt、reboot、poweroff的命令参数完全一样,

选项 作用
–halt 停机
–poweroff,-P 停机并关闭电源
–reboot 重启

这三个命令都有一个调用shutdown函数(不是shutdown命令)的步骤。
也有区别,不指定这些选项时,halt 默认停机,poweroff 默认停机并断电,reboot 默认重启系统。
CentOS 5.3 上,halt、reboot、poweroff 的选项不是这些。使用前最好查询 man 手册。

shutdown同样接受上面三个关机参数,第一个区别是短格式,都是小写的,不像 halt、reboot、poweroff 那样,

选项 作用
–halt,-h 停机
–poweroff,-p 停机并关闭电源
–reboot, -r 重启

shutdown [time] [msg]会在指定的时间点关机,关机前会给每个进程发送SIGTERM 信号,这样这些进程就可以干净地退出。
如果省略 time,shutdonw不会关机,而是转到单用户模式(运行级别1),单用户模式下没有网络连接,这时候只能从主机控制台直接登陆。

3. 用切换运行级别的方式也能关机

还可以用 init 0 命令关机。

  1. 模糊觉得切换到init 0 应该是完整关机流程中的一个步骤。
  2. 同样,systemctl 也能切换运行级别,从而关机

4. 辩白

学习《鸟哥的 Linux 私房菜》,有些是已经知道的,有些则是掌握不牢的,所以赶紧复述一遍,加深记忆。同时对于关机过程,仍然有许多不明白的地方,有许多空白,所以写的很混乱。