zoukankan      html  css  js  c++  java
  • Linux命令(十七) 关机命令

    在 Linux 系统下一些常用的关机/重启命令有 shutdown、halt、reboot以及init,他们都可以达到重启系统的目的,但每个命令的内部工作过程不同。

    一、使用 shutdown 关机或重启

    1. shutdown 命令介绍

    shutdown 命令安全地将系统关机,在系统关机前使用 shutdown 命令,系统管理员会通知所有登录的用户系统将要关闭,并且 login 指令会被冻结,即新的用户不能再登录。直接关机或是延时一段时间关机都是可以的,也可以进行重启。

    shutdown 执行的工作是送信号给 init 程序,要求它改变 runlevel。 runlevel 0 被用来停机, runlevel 6 用来程序激活系统。 而 runlevel 1 则是被用来让系统进入管理工作可以进行的状态。 如果想要了解在停机或重新开机过程中做了哪些动作,可以在 /etc/inittab 里看到关于这些 runlevel 的 信息。

    2. shutdown 参数说明

    -t 在改变到其它 runlevel 之前,告诉 init 多久以后关机
    
    -r 重启计算机
    
    -k 并不是真正关机,只是送警告信号给每位登陆者
    
    -h 关机后关闭电源
    
    -n 不用 init,而是自己来关机
    
    -c 取消目前正在执行的关机程序
    
    -f 在重启计算机时忽略 fsck
    
    -F 在重启计算机时强迫 fsck
    
    -time 设关机前的时间
    

    二、最简单的关机指令 halt

    halt 就是调用 shutdown -h。 halt 执行时,会杀死应用进程,执行 sync 系统调用,文件系统写操作完成后就会停止内核,与 reboot 不同之处在于 halt 用来关机,而 reboot 用来重启系统。

    三、使用 reboot 重启系统

    reboot 命令用来重启系统,用法比较简单,在终端命令行以 root 用户执行该命令即可进行系统的重启。

    reboot 命令常用参数如下:

    -n 在重启之前不执行磁盘刷新
    
    -w 做一次重启模拟,并不会真的重新启动
    
    -d 不把记录写到 /var/log/wtmp 档案里( -n 参数包含了 -d)
    
    -f 强制重开机
    
    -i 在重开机之前先把所有网络相关的装置停止
    

    四、使用 poweroff 终止系统运行

    poweroff 就是 halt 或 reboot 命令的软链接。而执行 halt 调用 shutdown -h 。具体如下所示:

    [hk@localhost ~]$ which poweroff
    /usr/sbin/poweroff
    [hk@localhost ~]$ ls -l /sbin/poweroff 
    lrwxrwxrwx. 1 root root 16 Nov 14 21:00 /sbin/poweroff -> ../bin/systemctl
    [hk@localhost ~]$ ls -lhtr /sbin/halt 
    lrwxrwxrwx. 1 root root 16 Nov 14 21:00 /sbin/halt -> ../bin/systemctl
    [hk@localhost ~]$ 
    

    五、使用 init 命令改变系统运行级别

    init 是所有进程的祖先,其进程号始终为 1 ,所以发送 TERM 信号给 init 会终止所有的用户进程、守护进程等。 shutdown 使用的就是这种机制。

    init 定义了 7 个运行级别,每个运行级别定义如下:

    0 停机
    
    1 单用户模式
    
    2 多用户
    
    3 完全多用户模式
    
    4 没有用到
    
    5 X11(X Window)
    
    6 重新启动
    

    这些级别在 /etc/inittab 里指定。这个文件是 init 程序寻找的主要文件,最先运行的服务是放在 /etc/rc.d 目录下的文件。 在大多数的Linux发行版中,启动脚本都是位于 /etc/rc.d/init.d 中的。这些脚本被用 ln 命令链接到 /etc/rc.d/rcN.d 目录,这里的 N 就是运行级别 0 -6.因此使用 init 命令可以关机或重新启动。

  • 相关阅读:
    Reddit 转载 Drunk Post: Things I've learned as a Sr Engineer
    算法28 30 二叉树非递归遍历(前中后)
    C++ 子类构造函数初始化列表与基类关系
    算法31 leetcode102 二叉树的层序遍历
    C++由数组构建二叉树指针
    windows下编译源代码安装软件
    算法27 leetcode101 对称二叉树
    算法31 88. 合并两个有序数组
    c++:const修饰指针
    c++ 正则实现 千分位分割
  • 原文地址:https://www.cnblogs.com/ay-a/p/8411397.html
Copyright © 2011-2022 走看看