linux 正确的关机方式(转自鸟哥私房菜)


OK!大概知道开机的方法,也知道基本的指令操作,而且还已经知道在线查询了,好累呦!想去休息呢!那么如何关机呢?我想,很多朋友在 DOS 的年代已经有在玩计算机了!在当时我们关掉 DOS 的系统时,常常是直接关掉电源开关,而 Windows 在你不爽的时候,按着电源开关四秒也可以关机!但是在 Linux 则相当的不建议这么做! Why?在 Windows 系统中,由于是单人假多任务的情况,所以即使你的计算机关机,对于别人应该不会有影响才对!不过呢,在 Linux 底下,由于每个程序(或者说是服务)都是在在背景下执行的,因此, 在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,例如浏览网页啦、传送信件啦以 FTP 传送档案啦等等的,如果你直接按下电源开关来关机时,则其它人的数据可能就此中断!那可就伤脑筋了!此外,最大的问题是, 若不正常关机,则可能造成档案系统的毁损(因为来不及将数据回写到档案中,所以有些服务的档案会有问题!)。正常情况下,要关机时需要注意底下几件事:
  • 观察系统的使用状态:如果要看目前有谁在在线,可以下达 who 这个指令,而如果要看网络的联机状态,可以下达 netstat -a 这个指令,而要看背景执行的程序可以执行 ps -aux 这个指令。使用这些指令可以让你稍微了解主机目前的使用状态!当然啰,就可以让你判断是否可以关机了(这些指令在后面 Linux 常用指令中会提及喔!)
  • 通知在线使用者关机的时刻:要关机前总得给在线的使用者一些时间来结束他们的工作,所以,这个时候你可以使用 shutdown 的特别指令来达到此一功能。
  • 正确的关机指令使用:例如 shutdown 与 reboot 两个指令!
所以底下我们就来谈一谈关于这个关机的正确指令用法啰!
  • 将数据同步写入硬盘中的指令: sync
  • 最正确的关机指令: shutdown
  • 重新开机: reboot
  • 关机啰: halt

  • sync
在 Linux 系统中,为了加快数据的读取速度,所以,预设的情况中,某些数据将不会直接被写入硬盘,而是先暂存在内存当中,如此一来,如果一个数据被你重复的改写, 那么由于他尚未被写入硬盘中,因此可以直接由内存当中读取出来,在速度上一定是快上相当多的!不过,如此一来也造成些许的困扰,那就是,万一当你重新开 机,或者是关机,或者是不正常的段电的情况下,由于数据尚未被写入硬盘当中,哇!所以就会造成数据的更新不正常啦!那要怎么办呢?这个时候就需要 sync 这个指令来进行数据的写入动作啦!直接在文字接口下输入 sync ,那么在内存中尚未被更新的数据,就会被写入硬盘中!所以,这个指令在系统关机或重新开机之前,很重要喔!最好多执行几次!( 注:这个指令也只有 root 可以执行喔! ) 
 
[root@test root]# sync

shutdown
  • 可以自由选择关机模式:是要关机、重新开机或进入单人操成模式均可;
  • 可以设定关机时间: 可以设定成现在立刻关机, 也可以设定某一个特定的时间才关机。
  • 可以自订关机讯息:在关机之前,可以将自己设定的讯息传送给在线 user 。
  • 可以仅发出警告信:有时有可能你要进行一些测试,而不想让其它的使用者干扰,或者是明白的告诉使用者某段时间要注意一下!这个时候可以使用 shutdown 来吓一吓使用者,但却不是真的要关机啦!
  • 可以选择是否要 fsck 检查档案系统 。

好了,由于关机有种种的限制因子在,所以只有 root 有权力关机而已喔!嗯!那么就来关机试试看吧!我们较常使用的是 shutdown 这个指令,而这个指令会通知系统内的各个行程( processes ),并且将通知系统中的 run-level 内的一些服务来关闭之( run-level 会在后面告知喔 )。shutdown 可以达成: 
   
那么 shutdown 的语法是如何呢?聪明的读者大概已经开始找『男人』了!没错,随时随地的 man 一下,是很不错的举动!好了,简单的语法规则为: 
 
[root@test root]# /sbin/shutdown [-t 秒] [-arkhncfF] [时间] [警告讯息] 
实例: 
[root@test root]# /sbin/shutdown -h 10 'This server will shutdown after 10 mins' 
告诉大家,这部机器会在十分钟后关机!并且会显示在目前登入者的屏幕前方! 
至于参数有哪些呢?以下介绍几个吧!

-t sec  : -t 后面加秒数,亦即『过几秒后关机』的意思 
-k      : 不要真的关机,只是发送警告讯息出去! 
-r      : 在将系统的服务停掉之后就重新开机 
-h      : 将系统的服务停掉后,立即关机。  
-n      : 不经过 init 程序,直接以 shutdown 的功能来关机 
-f      : 关机并开机之后,强制略过 fsck 的磁盘检查 
-F      : 系统重新开机之后,强制进行 fsck 的磁盘检查 
-c      : 取消已经在进行的 shutdown 指令内容。

 
此外,需要注意的是, 时间参数请务必加入,否则会自动跳到 run-level 1 (就是单人维护的登入情况),这样就伤脑筋了!底下提供几个例子吧! 
 
shutdown -h now    立刻关机,其中 now 相当于时间为 0 的状态  
shutdown -h 20:25  系统在今天的 20:25 分会关机  
shutdown -h +10    系统再过十分钟后自动关机  
shutdown -r now    系统立刻重新开机 
shutdown -r +30 'The system will reboot'  
                 再过三十分钟系统会重新开机,并显示后面的讯息。  
shutdown -k now 'This system will reboot'  
                 仅发出警告信件的参数!系统并不会关机啦!吓唬人!
 

reboot; halt; poweroff
这三个指令差不多,用途上有些不同而已!那个 reboot 其实与 shutdown -r now 几乎相同!不过,建议在关机之前还是将数据回填的指令下达一次再说: 
 
[root@test root]# sync; sync; sync; reboot
 
就可以啦!通常我如果忘记 shutdown 的指令,或者是怕麻烦,都是使用上面说的这一个指令来重新开机,并且在听到『逼』的一声时,立刻将 Linux 主机的总电源关闭!如此亦可达到关机的目的呀!此外, halt 与 poweroff 也具有相同的功能喔!不要担心,使用 man 去查询一下下吧! ^_^

你可能感兴趣的:(linux)