方式一
/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中不在有运行级别概念,但是这里权当这么理解。