UNIX操作系统在服务器领域占据着举足轻重的地位,但它的关机操作并不像我们熟悉的单用户系统那样简单直接。如果方法不当,轻则导致系统卡顿,重则损坏文件系统,造成难以挽回的数据损失。不少新手曾因此吃过亏。那么,在UNIX环境下,究竟有哪些可行的关机方法?每种方法又适用于什么场景?下面就来系统梳理五种常用的UNIX关机方案。
1. haltsys命令
这个命令非常“果断”——一经发出,系统会立刻关闭。它的优势在于响应迅速、强制性强。因此,它只适用于系统上仅有单个用户的情况,比如管理员正在本地调试的阶段。如果系统上有其他用户正在工作,切勿使用这个命令,否则这些用户会直接退出,他们未保存的进程和文件将全部丢失,后果相当严重。操作很简单:以超级用户身份登录,输入haltsys并回车,屏幕上会显示关机信息,随后即可关闭电源。
2. reboot命令
reboot命令与haltsys可以说是“孪生兄弟”。它同样由系统管理员执行停机程序,性质上基本一致,但有一个关键区别:它在正常停机关闭系统后,不会提示用户按任意键,而是立即自动引导并重启系统。因此,reboot特别适合系统管理员用来调试机器、测试新配置,让系统在瞬间完成一个完整的关机-重启循环。
3. shutdown命令(强烈推荐)
这是UNIX系统里最“绅士”的关机方式。shutdown是用shell语言编写的一个程序,驻留在/etc目录下。它的执行流程非常周到:当超级用户在前台运行此命令时,它会自动调用wall命令,向系统中所有正在工作的用户广播一条消息,通知他们“系统将在指定的时间后停机,请尽快保存工作并注销”。随后,它会耐心等待,直到所有用户都已注销,或者预定的时间到达,才会执行kill命令终止除主控台外的所有进程,最后优雅地调用haltsys命令完成正常停机。
使用格式:shutdown -g[hh:]mm -f"提示消息"。其中[hh:]mm是指定的关机时间(小时和分钟),"提示消息"是对用户发送的警告内容。在网络用户环境下,但凡有经验的系统管理员,都会优先选择shutdown命令来关机。
4. bye命令
这个命令是不少人图省事时发明的。简单来说,它是用vi编辑器手动编写的一个shell脚本,核心功能就是调用shutdown。文件内容可以写成:shutdown -y -g0(参数可根据需要调整)。刚编辑好的bye文件默认权限是-rw-r--r--,还不能直接使用。需要先用chmod u+x bye给它加上执行权限,然后bye才能发挥shutdown的功能。说到底,它就是把shutdown这个复杂的命令“打包”成了一个简洁易记的单词。
5. 创建关机用户bye
使用超级用户来关机存在一定风险。因为超级用户在系统中的权限极高,日常操作中存在不小的安全隐患。因此,建立一个专门的关机用户是更安全、更规范的做法。下面以系统管理命令sysadmsh为例,演示如何创建一个名为bye的用户。
(1)创建用户:以超级用户登录UNIX,输入sysadmsh,选择Account -> User -> Create。在Username字段中输入bye,其他选项保留默认值。
(2)授权:在Account -> User -> Examine菜单中找到bye用户,选择Privilege -> Subsystem -> Specify,输入shutdown,保存修改并退出sysadmsh。
(3)编辑配置文件:再用bye用户登录UNIX,编辑当前目录下的.profile文件。在该文件中加入一行:trap exit 2,3 /tcb/bin/asroot shutdown -y -g0。这行代码确保当用户按下某些中断键时,能够安全地执行关机。
(4)大功告成:之后,在Login:提示符下,只需直接键入bye这个用户名,系统就会自动执行上述脚本,完成安全的关机流程。一个小小的操作,既降低了管理风险,又兼顾了易用性。
