linux杂记(五)正确关机方法(shutdown,reboot,init,halt)

前言:由于在linux底下,每个程序(或者说是服务)都是在背景下运行的,因此,在你看不到的屏幕背后其实可能有相当多人同时在你的主机上面工作,如果 你直接按下电源开关来关机,则可能导致其他人的数据就此中断。此外最大的问题是,若是不正常关机,由于来不及把数据回写到档案中,从而可能造成档案系统的 损毁。因此,正确的linux系统关机姿势是非常重要的。

正常情况下,要关机时需要注意底下几件事:

  • 观察系统的使用状态:如果要看目前有谁在线,可以用who指令;如果要看网络的联机状态,可以用netstat -a这个指令;要看背景执行的程序可以用ps -aux这个指令。
  • 通知在线使用者关机的时刻:要关机前给在线的使用者一些时间来结束他们的工作,这个时候可以使用shutdown的特别指令来达到这一功能。
  • 正确的关机指令使用:例如shutdown与reboot。
  • 将数据同步写入硬盘中的指令:sync
  • 惯用的关机指令:shutdown
  • 重启,关机:reboot,halt,poweroff
  • 数据同步写入磁盘:sync

在linux系统中,为了加快数据的读取速度,所以,在预设的情况下,某些数据将不会直接被写入硬盘,而是先暂存在内存中。不过如此一来也就造成了万一当你重新开机,或者是关机,或者是不正常的断电的情况下,由于数据尚未被写入硬盘当中,而导致的数据更新不正常。这个时候就需要sync这个指令来进行数据的写入动作。直接在文字接口下输入sync,那么在内存中尚未被更新的数据,就会被写入硬盘中。(注:这个指令只有root可以执行)

  • 惯用的关机指令:shutdown

由于关机有种种的限制因子在,所以只有root有权力关机。我们较常用的是shutdown这个指令,这个指令会通知系统内的各个程序(processes),并且将通知系统中的run-level内的一些服务来关闭。

[root@linux ~]# shutdown [-t时间] [-arkhncfF] [时间] [警告信息]
参数:
-t sec :-t 后面加秒数,即【过几秒后关机】的意思
-k      :不是真的关机,只是发送警告信息出去
-r       :在将系统的服务停掉之后就重新开机
-h      :将系统的服务停掉后,立即关机
-n      :不经过init程序,直接以shutdown功能来关机
-f      :关机并开机之后,强制略过fsck的磁盘检查
-F     :系统重新开机之后,强制进行fsck的磁盘检查
-c     :取消已经在进行的shutdown指令内容 

此外,需要注意的是,时间参数请务必加入,否则会自动跳到run-level1(就是单人维护的登入情况)

[root@linux ~]# shutdown -h now
立刻关机
[root@linux ~]# shutdown -h :
系统在今天的20:25会关机
[root@linux ~]# shutdown -h +
系统再过十分钟后自动关机
[root@linux ~]# shutdown -r now
系统立刻重启
[root@linux ~]#shutdown -r + 'The system will reboot'
再过三十分钟系统会重启,并显示后面的讯息
[root@linux ~]# shutdown -k now 'This system will reboot'
仅发出警告信息
  • 重启,关机:reboot,halt,poweroff

这三个指令差不多,用途上有点不同而已。reboot与shutdown -r now几乎相同。不过建议在关机前还是用sync将数据回填的指令下达一次再说。

  • 开机过程的问题排解

扇区错乱的问题

  • 如果根目录没有损毁:假设发生错误的磁盘扇区块在/dev/hda7,那么在开机的时候屏幕应该会告诉你:press root pass word or ctrl+D: 这个时候请输入root的密码登入系统:
  1. 在光标处输入root密码登入系统,进行单人单机的维护工作;
  2. 输入fsck /dev/hda7 (fsck为指令,/dev/hda7为错误的磁盘区块,请根据情况下达参数),这时屏幕会显示开始修理硬盘的信息,如果发现有任何错误时,会显示clear[Y/N]?的询问信息,就直接输入Y。
  3. 修理完成,以reboot重新开机。
  • 如果根目录损毁:一般初学者喜欢将自己的硬盘只划分为一个大区块,即只有根目录。那硬盘区块错乱一定是根目录的问题。这时可以将硬盘拔掉,接到另一台linux系统的计算机上,并且不要挂载(mount)该硬盘,然后以root的身份执行fsck /dev/hdb1(/dev/hdb1指硬盘装置的名称,根据实际情况来设定)。
  • 如果整个硬盘坏掉:实在坏的离谱就换一颗,如果不愿意换硬盘,就重灌linux,并且在重灌的时候于format项目中,选取[error check]项目,如此一来format会很慢,并且何时会再坏掉也不确定。最好还是换一颗。
上一篇:[课程设计]Scrum 3.3 多鱼点餐系统开发进度(下单详细信息页面设计)


下一篇:Java并发包中Lock的实现原理