【Linux】正确的关机方法

avatar
作者
筋斗云
阅读量:0

1. Linux正确的关机方式

        如何关机呢?我想,很多朋友在DOS年代已经有在玩计算机了。在当时我们关闭DOS的系统时,常常是直接关闭电源开关,而Windows 在你不爽的时候,按着电源开关四秒也可以关机,但是在Linux则不建议这么做。

        为什么?在Windows(非NT内核)系统中,由于是单人假多任务的情况,所以即使你的计算机关机,对于别人应该不会有影响才对。

        不过,在Linux下面,由于每个程序(或说是服务)都是在后台执行,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,例如浏览网页、发送邮件以及FTP传输文件等,如果你直接按下电源开关来关机时,则其他人的数据可能就此中断,那可就伤脑筋了。

        此外,最大的问题是,若不正常关机,则可能造成文件系统的毁损(因为来不及将数据回写到文件中,所以有些服务的文件会有问题)。所以正常情况下,要关机时需要注意下面几件事。

1.观察系统的使用状态

        如果要看目前有谁在线,可以执行【who】这个命令,而如果要看网络的联机状态,可以执行【 netstat -a】这个命令,而要看后台执行的程序可以执行【ps -aux】这个命令,使用这些命令可以让你稍微了解主机目前的使用状态。当然,就可以让你判断是否可以关机。

我们先看看who 

我们开启另外一个账号来看看

我们再来看看netstat -a

我们再看看ps -aux 

2.通知在线用户关机的时刻

要关机前总得给在线的用户一些时间来结束它们的工作,所以,这个时候你可以使用shutdown
 -k来达到此功能。

我们看个例子

我在bcq_113账号下执行这个关机警告命令,同一服务器下的zs_108就立刻收到了警告 

 

3.正确的关机命令使用

例如shutdown与reboot两个命令。
所以下面我们就来谈一谈几个与关机或重新启动相关的命令。

  • 将数据同步写入硬盘中的命令:sync
  • 常用的关机命令:shutdown
  • 重新启动,关机:reboot、halt、powerof

        由于Linux系统的关机或重新启动是很重大的系统操作,因此只有root才能够执行例如shutdown、reboot 等命令。

2.数据同步写入磁盘:sync

        所有的数据都得要被读入内存后才能够被CPU所处理,但是数据又常常需要由内存写回硬盘当中(例如保存的操作)。

        由于硬盘的速度太慢(相对于内存来说),如果常常让数据在内存与硬盘中来回写入或读出,系统的性能就不会太好。

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

        不过,如此一来也造成些许的困扰,那就是万一你的系统因为某些特殊情况造成不正常关机(例如停电或是不小心碰到电源)时,由于数据尚未被写入硬盘当中,所以就会造成数据的更新不正常。那要怎么办!

        这个时候就需要sync这个命令来进行数据的写入操作。直接在命令行模式下输入sync,那么在内存中尚末被更新的数据,就会被写入硬盘中。

        所以,这个命令在系统关机或重新启动之前,最好多执行几次。

        虽然目前的shutdown、reboot、halt等命令均已经在关机前进行了sync这个程序的调用,不过多做几次总是比较放心点。
 

2.关机——shutdown

我们使用Xshell来连接我们的云服务器的时候,我们不想使用了,我想很多人的做法是直接关闭Xshll的运行,但是事实上我们的linux真的关机了吗?

答案是肯定没关机啊

那我们怎么来正确的关机呢?

只有root才有关机的权利

我们用man手册查询一下 

shutdown的语法如下

shutdown [选项] 时间

 选项:

  • -k:不要真的关机,只是发送警告信息出去
  • -r:在将系统的服务器停掉之后就立刻重新启动(常用)
  • -h:将系统的服务停掉之后,立即关机(常用)
  • -c:取消已经在进行的shutdown命令内容
  • 时间 :指定系统关机的时间。如果没有填,则默认1分钟后自动进行。

我们看个例子

 执行shutdown后,系统会提醒你这台机器将在10分钟后关机,并把信息显示出来。

我们可以使用shutdown -c来取消这次的关机命令。

我们多看几个例子

shutdown -h now //立刻关机,其中now相当于时间为0的状态  shutdown -h 20:25 //在今天的20:25关机,如果在21:25执行的这条命令,则在隔天的20:25关机  shutdown -h +10 //在10分钟后关机  shutdown -r +30 'The system will reboot' //再过30分钟系统会自动重启,并显示后面的信息给在线使用者  shutdown -k now 'This system will reboot' //仅发出警告邮件的参数,系统不会关机,只是吓唬人

3.2.reboot,half,poweroff

还有3个命令可以进行重新启动和关机任务,那就是reboot,half,poweroff

这3个函数调用的函数库基本相同,所以我们使用man去查询reboot的时候,就会显示3个函数的

事实上这3个命令的本质是一样的,我们只需记住其中一个即可

我一般只记poweroff和reboot这两个命令

half //系统停止,屏幕可能会保留系统已经停止的信息  poweroff //系统关机,所以没有提供额外电力,屏幕空白

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!