打印
[ZLG-ARM]

Linux操作系统关机有技巧

[复制链接]
1396|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
reeper|  楼主 | 2009-4-6 13:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在Linux系统中,其关机命令就多达六种。分别有shutdown、reboot、halt、poweroff、telinit、init等命令。虽然有些命令相互之间是父子的关系,但是至少可以说明Linux系统关机也有一番学问。这些命令都可以达到关机或者重新启动系统的目的,但是他们每一个命令的工作流程都不一样,可以起到不同的目的。笔者接下去要介绍的就是这些关机命令的特点以及在什么情况下应该采用什么命令。

  一、这六个关机命令之间的关系。

  在这六个命令中,有些命令之间是父子关系。如halt与poweroff两个之间就是父子关系。在halt命令中,如果加入-p参数的话,则其起到的作用就跟poweroff是相同的。如果系统管理员要知道某个关机命令是否是其他关键命令的连接(即与其它关机命令是否有父子关系),可以利用下图所示的命令进行查询。

  上面第一条记录,表示poweroff命令是halt命令的连接。即poweroff命令是halt命令的子程序。而第二条记录则表示halt命令不是其他命令的连接。即halt关机命令是最顶级的命令。所以系统管理员如果不了解这些关机命令的相互关系,则可以利用如上的命令进行查询。以上这六个关机命令它们都是由软件包sysvinit产生,系统管理员可以从网上下载它的源码来分析各个命令的流程。作为系统管理员,有必要了解这些命令的相同点以及差异,并根据自己的需要选择合适的关机命令。而不是一味的采用poweroff命令来进行关机。

  二、Halt关机命令解析。

  Halt关机命令可以说是这六个关机命令中的老大。在这个命令中跟上不同的参数,可以实现不同的目的。在这个关机命令中,主要有如下七个参数。

  如-n参数,它主要用来防止sync系统调用。Linux系统中有的时候会了提高效率,会把欲写入硬盘的资料先写到 filesystem buffer 中。这个 buffer 是一块内存中的空间。如果欲写入硬盘的资料存于这个buffer中,而系统又突然断电的话,那么资料就会丢失。sync指令会将存于buffer 中的资料强制写入硬盘中。这个功能就好像数据库中的高速缓存一样。可以先把更改的数据写入到内存的一个高速缓存中。然后等到某个特定的时候再把它写入到硬盘中。这种方式可以提高系统性能。不过有的时候管理员需要禁止系统采取sync指令。如系统管理员用fsck命令修补分区之后,为了防止内核用老版本的超级块覆盖修补过的超级块,在关机时就要采用halt –n这个形式来关机。如此的话,在关机的时候不会用老版本的超级块覆盖修补过的超级块。

  如果在halt命令中带了-w参数的话,则并不是真正的重启或者关机。而只是把这个事件记入到wtmp日志文件中。大家都知道,在系统登录时,login登录程序会将一些内容写入到utmp文件中,同时也将其添写到wtmp日志文件中。注销时,init进程将utmp文件中相应的记录擦除,每个字节都填以0。并将一个新的记录添写到wtmp文件中。在系统重新启动时,以及更改系统时间和日期的前后,都在wtmp文件中添写特殊的记录项。也就是说,wtmp日志文件跟踪各个登录和注销事件,以及其他一些特殊的更改。如果系统管理员并不是要真正的关机,而只是想把某个标记写入到wtmp日志文件中,则可以利用这个halt –w命令来完成这个需求。另外,-d是跟-w相反的参数。如果在关机时加入这个参数的话,则关机时不会往wtmp日志文件中加入内容。


相关帖子

沙发
zcying| | 2009-4-6 16:16 | 只看该作者

我经常用poweroff命令

使用特权

评论回复
板凳
zcying| | 2009-4-6 16:16 | 只看该作者

没有想到还有那么多

使用特权

评论回复
地板
胡刚| | 2009-4-6 16:18 | 只看该作者

我也是用poweroff

使用特权

评论回复
5
msleep| | 2009-4-8 10:00 | 只看该作者

复位用reboot

使用特权

评论回复
6
msleep| | 2009-4-8 10:01 | 只看该作者

重启reboot

使用特权

评论回复
7
xwj| | 2009-4-8 10:15 | 只看该作者

呵呵,试着把/sbin/halt删掉看看

欧以前玩Novell习惯了用shutdown,结果发现老是不关电源,后来才改用poweroff:-)

再后来看了shutdown的参数,原来要带 /h
^_^

平时就reboot用的多点,当然嵌入式板的话大多是直接断电:-)

使用特权

评论回复
8
xwj| | 2009-4-8 10:18 | 只看该作者

而且,shutdown在Windows下页很好用:-)

使用特权

评论回复
9
qingfengyishi| | 2009-4-8 10:19 | 只看该作者

看看

看看

使用特权

评论回复
10
reeper|  楼主 | 2009-4-8 10:24 | 只看该作者

嵌入式板要重启的话也可以reboot,前提是板子上要有系统

使用特权

评论回复
11
computer00| | 2009-4-8 10:40 | 只看该作者

恩,俺经常在windows下用shutdown定时关机~~~

使用特权

评论回复
12
reeper|  楼主 | 2009-4-10 09:18 | 只看该作者

windows下也可以啊?怎么弄呢?

使用特权

评论回复
13
computer00| | 2009-4-10 10:04 | 只看该作者

按下WIN键+R键打开运行对话框,或者从开始菜单中打开运行

然后输入 shutdown -s -t 2000
确定,那么系统将在2000秒以后自动关机。
再输入 shutdown -a
确定,将放弃关机。

输入 shutdown -i 还可以出现对话框界面。
使用-l参数将注销系统,详细的用法参考shutdown的帮助~~~~

用法: shutdown [-i | -l | -s | -r | -a] [-f] [-m computername] [-t xx] [-c "co
mment"] [-d up:xx:yy]

        没有参数                显示此消息(与 ? 相同)
        -i                      显示 GUI 界面,必须是第一个选项
        -l                      注销(不能与选项 -m 一起使用)
        -s                      关闭此计算机
        -r                      关闭并重启动此计算机
        -a                      放弃系统关机
        -m computername       远程计算机关机/重启动/放弃
        -t xx                   设置关闭的超时为 xx 秒
        -c "comment"            关闭注释(最大 127 个字符)
        -f                      强制运行的应用程序关闭而没有警告
        -d [p]:xx:yy         关闭原因代码
                                u 是用户代码
                                p 是一个计划的关闭代码
                                xx 是一个主要原因代码(小于 256 的正整数)
                                yy 是一个次要原因代码(小于 65536 的正整数)

使用特权

评论回复
14
zcying| | 2009-4-14 10:50 | 只看该作者

shutdown

使用特权

评论回复
15
胡刚| | 2009-4-14 15:44 | 只看该作者

方法还不少啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

139

主题

185

帖子

0

粉丝