Pages

Friday, 2 August 2024

Linux下的开机,关机命令

 Linux系统的关机/重新启动是很重大的系统运行,因此只有root才能够进行例如shutdown, reboot等命令。不过在某些distributions当中,比如CentOS系统,它允许你在本机前的tty7使用图形接口登陆时,可以用一般账号来关机或重新启动!但某些distributions则在你要关机时,他会要你输入root的密码。


数据同步写入磁盘: sync

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

不过,如此一来也造成些许的困扰,万一你的系统因为某些特殊情况造成不正常关机 (例如停电或者是不小心按到电源)时,由于数据尚未被写入硬盘当中,

所以就会造成数据的升级不正常! 那要怎么办呢?这个时候就需要sync这个命令来进行数据的写入动作! 直接在字符界面下输入sync,那么在内存中尚未被升级的数据,就会被写入硬盘中!

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

虽然目前的 shutdown/reboot/halt 等等命令均已经在关机前进行了 sync 这个工具的执行, 不过,多做几次还是比较保险。


关机命令: shutdown

shutdown可以达成如下的工作:

可以自由选择关机模式:是要关机、重新启动或进入单人操作模式均可;

可以配置关机时间: 可以配置成现在立刻关机, 也可以配置某一个特定的时间才关机。

可以自定义关机信息:在关机之前,可以将自己配置的信息传送给在线 user 。

可以仅发出警告信息:有时有可能你要进行一些测试,而不想让其他的使用者干扰, 或者是明白的告诉使用者某段时间要注意一下!这个时候可以使用 shutdown 来吓一吓使用者,但却不是真的要关机。

可以选择是否要 fsck 检查文件系统 。


shutdown的基本语法规则:

[root@lmode ~]# /sbin/shutdown [-t 秒] [-arkhncfF] 时间 [警告信息]

选项与参数: 

-t sec : -t 后面加秒数,亦即『过几秒后关机』的意思 

-k     : 不要真的关机,只是发送警告信息出去! 

-r     : 在将系统的服务停掉之后就重新启动(常用) 

-h     : 将系统的服务停掉后,立即关机。 (常用) 

-n     : 不经过 init 程序,直接以 shutdown 的功能来关机 

-f     : 关机并启动之后,强制略过 fsck 的磁盘检查 

-F     : 系统重新启动之后,强制进行 fsck 的磁盘检查 

-c     : 取消已经在进行的 shutdown 命令内容。 

时间   : 这是一定要加入的参数!指定系统关机的时间!

 

范例: 

[root@lmode~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins' 

# 告诉大家,这部机器会在十分钟后关机!并且会显示在目前登陆者的屏幕前方! 

# 至于参数有哪些呢?以下介绍几个吧!

 

[root@lmode ~]# shutdown -h now 

立刻关机,其中 now 相当于时间为 0 的状态 

 

[root@lmode ~]# shutdown -h 20:25 

系统在今天的 20:25 分会关机,若在21:25才下达此命令,则隔天才关机 

 

[root@lmode ~]# shutdown -h +10 

系统再过十分钟后自动关机 

 

[root@lmode ~]# shutdown -r now 

系统立刻重新启动 

 

[root@lmode ~]# shutdown -r +30 'The system will reboot'  

再过三十分钟系统会重新启动,并显示后面的信息给所有在在线的使用者 

 

[root@lmode ~]# shutdown -k now 'This system will reboot'  

仅发出警告信件的参数!系统并不会关机啦!吓唬人! 

还有三个命令可以进行重新启动与关机的任务,那就是reboot, halt, poweroff。在重新启动时下达如下的命令:


[root@lmode ~]# sync; sync; sync; reboot 

既然这些命令都能够关机或重新启动,那他有没有什么差异啊?基本上,在默认的情况下, 这几个命令都会完成一样的工作!(因为halt会先呼叫shutdown,而shutdown最后会呼叫halt!)。 不过,shutdown可以依据目前已启动的服务来逐次关闭各服务后才关机;至于halt却能够在不理会目前系统状况下, 进行硬件关机的特殊功能!你可以在你的主机上面使用root进行底下两个命令来关机,比较看看差异在哪里!


名称:halt 

使用权限:系统管理者 

使用方式:halt [-n] [-w] [-d] [-f] [-i] [-p] 

说明:若系统的 runlevel 为 0 或 6 ,则关闭系统,否则以 shutdown 指令(加上 -h 参数)来取代 

参数: 

-n : 在关机前不做将记忆体资料写回硬盘的动作 

-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里 

-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) -f : 强迫关机,不呼叫 shutdown 这个指令 

-i : 在关机之前先把所有网络相关的装置先停止 

-p : 当关机的时候,顺便做关闭电源(poweroff)的动作 


范例:

halt -p 关闭系统后关闭电源。

halt -d 关闭系统,但不留下纪录。

reboot的工作过程差不多跟halt一样﹐不过它是引发主机重启﹐而halt是关机。它的参数与halt相差不多。 

切换运行等级: init

其实Linux共有七种运行等级, 这里先介绍四种运行等级:

run level 0:关机

run level 3:纯文本模式

run level 5:含有图形接口模式

run level 6:重新启动

那如何切换各模式呢?可以使用init这个命令来处理喔!也就是说,如果你想要关机的话, 除了上述的shutdown -h now以及poweroff之外,你也可以使用如下的命令来关机:

[root@lmode ~]# init 0

No comments:

Post a Comment