linux添加开机启动项
Linux系统启动时加载的配置文件有:/etc/profile、/root/.bash_profile、/etc/bashrc、/root/.bashrc、/etc/profile.d/*.sh、/etc/profile.d/lang.sh、/etc/sysconfig/i18n、/etc/rc.local(/etc/rc.d/rc.local)
添加自定义开机启动项的方式有:
修改开机启动文件/etc/rc.local(或者/etc/rc.d/rc.local)
在文件末尾(exit 0之前)加上开机需要启动的程序或执行的命令。执行的程序需要写绝对路径,除非已经添加到了环境变量,比如:
1 | /usr/demo & |
自己写一个shell脚本
将写好的脚本(.sh文件)放到目录/etc/profile.d/下,系统启动后会自动执行该目录下的所有shell脚本。
1 | cd /etc/profile.d/ |
添加启动命令:
1 | #!/bin/sh |
通过chkconfig命令设置
将启动文件demo拷贝到/etc/init.d或者/etc/rc.d/init.d/(前者是后者的软链接)下,编辑启动文件,
1 | cd /etc/init.d/ |
在文件最前面添加以下三行,否则会提示chkconfig不支持:
1 | #!/bin/sh 告诉系统使用的shell,shell脚本都是这样 |
关闭编辑,执行以下命令,就添加了:
1 | chkconfig --add |
Systemctl管理的自定义服务文件
自定义服务文件,添加到系统服务,然后通过Systemctl管理
自定义一个服务文件,可参考nginx.service、redis.service、supervisord.service等:
1
2
3
4
5
6
7
8
9
10
11
12
13
14[Unit]:服务的说明
Description:描述服务
After:描述服务类别
[Service]服务运行参数的设置
Type=forking 是后台运行的形式
ExecStart 为服务的具体运行命令
ExecReload 为服务的重启命令
ExecStop 为服务的停止命令
PrivateTmp=True 表示给服务分配独立的临时空间
注意:启动、重启、停止命令全部要求使用绝对路径
[Install] 服务安装的相关设置,可设置为多用户
WantedBy=multi-user.target将文件保存到目录/usr/lib/systemd/system下,以754权限。
设置开机自启动,
systemctl daemon-reload
.其他可能用到的命令有:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18systemctl enable nginx.service # 设置开机启动
systemctl disable nginx.service # 关闭开机启动
systemctl is-enabled nginx
启动nginx服务
systemctl start nginx.service
停止nginx服务
systemctl start nginx.service
重启nginx服务
systemctl restart nginx.service
查看nginx服务当前状态
systemctl status nginx.service
查看所有已启动的服务
systemctl list-units --type=service举例,nginx.service服务文件
1
2
3
4
5
6
7
8
9
10
11
12[Unit]
Description=nginx - high performance web server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
ExecStart=/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf
ExecReload=/usr/local/nginx/sbin/nginx -s reload
ExecStop=/usr/local/nginx/sbin/nginx -s stop
[Install]
WantedBy=multi-user.target