简介: CSDN博客专家,专注Android/Linux系统,分享多mic语音方案、音视频、编解码等技术,与大家一起成长!
优质专栏:Audio工程师进阶系列【原创干货持续更新中……】🚀
优质专栏:多媒体系统工程师系列【原创干货持续更新中……】🚀
人生格言: 人生从来没有捷径,只有行动才是治疗恐惧和懒惰的唯一良药.
1.前言
本篇目的:XUbuntu22.04自带的reboot命令的关机和重启不好使,自己使用init命令定制一个。
2. init命令介绍
init
命令是Linux操作系统中非常重要的一个命令,其主要作用是初始化系统,并且根据配置文件来设置系统的运行级(runlevel)。运行级定义了系统的状态,例如运行级别0表示系统正在关机,运行级别6表示系统正在重启,而运行级别1到5则分别代表不同的Multi-User模式。- 在传统的Unix系统中,
init
进程是系统启动的第一个进程,它的进程ID号为1。在Linux系统中,init
进程同样承担着这样的角色,它负责启动系统中的其他进程,并确保系统按照预定的方式运行。 init
命令的执行流程通常由/etc/inittab文件控制,这个文件定义了系统运行级以及各个运行级对应的默认操作。在系统启动时,init
进程读取/etc/inittab文件,然后根据文件中的设置来执行相应的操作,如启动必要的守护进程和服务。
随着系统启动的进行,init
进程会根据运行级的变化调用不同的脚本来完成系统初始化的工作。比如,从单用户模式(运行级1)切换到多用户模式(运行级3)时,init
会执行/etc/rc.d/rc3文件,这个文件中定义了在多用户模式下需要启动的服务和进程。- 在现代的Linux系统中,许多发行版已经不再使用传统的
init
系统,而是采用了更加现代的系统初始化方案,如System V Init(SysV Init)、Upstart或者Systemd。这些系统初始化系统相较于传统的init
系统提供了更多的灵活性和效率,能够更好地管理服务和进程的启动。 - 例如,Systemd通过概念上的改进,如并行启动服务、按需启动守护进程、依赖关系管理以及系统状态快照等,提供了比传统
init
系统更加强大的功能。 - 尽管如此,
init
命令及其背后的初始化机制依然是理解Linux系统运作不可或缺的一部分,尤其是在管理复杂的Linux服务器时,深入理解init
系统对于确保系统稳定运行仍然有着重要的意义。
3.使用init命令定制关机和重启
<1>.定制脚本:reboot.sh
emacs reboot.sh
#!/bin/bash
if [ "$#" -eq 0 ]; thenecho "输入密码,重启电脑!" sudo init 6
elif [ "$#" -eq 1 ] && [ "$1" == "-p" ]; then echo "输入密码,即将关机!" sudo init 0
fi
<2>.将reboot.sh拷贝到系统,并重命名替换原来系统命令
# sudo cp reboot.sh /usr/local/bin