方式一

/etc/rc.d/rc.local

在脚本 /etc/rc.d/rc.local (和 /etc/rc.local 是同⼀个⽂件,软链)末尾添加⾃⼰的脚本
然后,增加脚本执⾏权限

chmod +x /etc/rc.d/rc.local

方式二

/etc/rc.d/init.d/

/etc/rc.d/init.d/ ⽬录下都为可执⾏程序,他们其实是服务脚本,按照⼀定格式编写, Linux 在启动时会⾃动执⾏,类似 Windows 下的服务。

⽤root帐号登录,在 /etc/rc.d/init.d/test.sh ,其中 test.sh 为 shell ⽂件,系统默认开启⾃动将 /etc/rc.d/init.d/ 中的⽂件执⾏⼀遍,该⽅式与第⼀种⽅式类似。

方式三

把脚本注册为系统服务

/etc/init.d下新建⽰例脚本⽂件starTtest.sh,该脚本会启动/opt/test.sh,内容如下:

/etc/init.d/functions
start() {
echo "Starting my process "
cd /opt
./test.sh
} s
top() {
killall test.sh
echo "Stoped"
}

写了脚本⽂件之后事情还没有完,继续完成以下⼏个步骤:

chmod +x startTest #增加执⾏权限
chkconfig --add startTest #把startTest添加到系统服务列表
chkconfig startTest on #设定startTest的开关(on/off)
chkconfig --list startTest.sh #就可以看到已经注册了startTest的服务

方式四

chkconfig列表

简要说明一下chkconfig命令的使用方法

--list:将目前的各项服务状态栏显示出来

--level:设置某个服务在该LEVEL下启动或者关闭


单独查看某一服务是否开机启动的命令:chkconfig--list服务名

单独开启某一服务的命令:

chkconfig服务名on

单独关闭某一服务的命令:

chkconfig服务名off

查看某一服务的状态:

/etc/intd.d/服务名status

设置完成之后,重启一下即可

方式五

systemctl的使用
对软件的管理主要是同通过systemd工具中的systemctl命令,相比于之前的system V的控制方式,systemd显得更加简洁明了,对用户更加友好,拿httpd来举例:

开启httpd服务:
sudo systemctl start httpd
设置httpd服务自启动:
sudo systemctl enable httpd

至于关闭和取消自启动,大家心里应该有数了吧。
设置开机自启动
我们要为目标设置一个配置文件,其实这是可以预想到的,linux作为一个复杂的系统,开机自启动涉及到的依赖、运行级别、运行环境等等问题肯定需要用户去指定,在启动的时候系统才知道怎么正确地去运行软件。这个配置文件固定以.service作为后缀,比如我们如果要运行/home/downey目录下的test.sh脚本,我们可以添加一个配置文件test.service:

[Unit]
Description=
Documentation=
After=network.target
Wants=
Requires=

[Service]
ExecStart=/home/downey/test.sh
ExecStop=
ExecReload=/home/downey/test.sh
Type=simple

[Install]
WantedBy=multi-user.target

将文件放在/usr/lib/systemd/system 或者 /etc/systemd/system目录下,然后可以测试一下:

sudo systemctl start test.service  

然后你可以查看你的/home/downey/test.sh脚本是否已经运行,如果已经运行表示配置文件没有问题。然后可以键入:

sudo systemctl enable test.service 

设置test脚本开机启动。如果上一步没有出问题,这一步基本上也不会有什么问题,系统会打印出如下信息:

Created symlink /etc/systemd/system/multi-user.target.wants/test.service → /usr/lib/systemd/system/test.service.  

可以看到,这里在/etc/systemd/system/multi-user.target.wants/目录下创建了一个/usr/lib/systemd/system/test.service文件的软链接,到这里设置开机自启动就完成了。
配置文件的简单解析
在上面的配置文件中,为了演示起见,我将一些本测试脚本不需要但是比较重要的配置项也写了出来,其实如果不需要可以删除,但是[Unit]/[Service]/[Install]这三个标签需要保留。
我们来一个个简单介绍一下配置项:

Description:运行软件描述
Documentation:软件的文档
After:因为软件的启动通常依赖于其他软件,这里是指定在哪个服务被启动之后再启动,设置优先级
Wants:弱依赖于某个服务,目标服务的运行状态可以影响到本软件但不会决定本软件运行状态
Requires:强依赖某个服务,目标服务的状态可以决定本软件运行。
ExecStart:执行命令
ExecStop:停止执行命令
ExecReload:重启时的命令
Type:软件运行方式,默认为simple
WantedBy:这里相当于设置软件,选择运行在linux的哪个运行级别,只是在systemd中不在有运行级别概念,但是这里权当这么理解。  
最后修改:2024 年 03 月 08 日
如果觉得我的文章对你有用,请随意赞赏