chkconfig命令用于检查,设置系统的各种服务。
需求
1、将node_exporter设置开机自启动
2、/etc/resolv.conf加一下重启自动配置为“nameserver 172.20.10.1”
脚本
- 如果需要想chkconfig管理,必须首先要在/etc/rc.d/init.d/下面有相应的脚本。
所以编写需求脚本,放到/etc/rc.d/init.d/下,并添加可执行权限。
[root@ops-basic service_autostart]# cat mysevice.sh
#!/bin/bash # 选择shell环境
#chkconfig:2345 80 90 # 本脚本优先级
#decription:autostart # 本脚本描述文字
# 自启动node_exporter
nohup /root/node_exporter-1.3.1.linux-amd64/node_exporter --web.listen-address="0.0.0.0:9105" &
# /etc/resolv.conf开机重新配置
sed -i '/nameserver/c nameserver 172.20.10.1' /etc/resolv.conf
注意 :脚本的前三行注释仅帮助理解,实际脚本中是不能出现的,否则报错(重启服务不会自启)
踩过坑!!!!!
-
添加服务
chkconfig --add name 增加一项新的服务
chkconfig name on 开启新的服务 -
此时服务会被在/etc/rc.d/rcN.d中赋予K/S入口了,我们实际生产环境一般是在运行级别3下面我们看一下
[root@ops-basic rc3.d]# ll /etc/rc.d/rc3.d
total 0
lrwxrwxrwx 1 root root 21 Apr 2 22:19 K30mysql-proxy -> ../init.d/mysql-proxy
lrwxrwxrwx. 1 root root 20 Feb 8 2022 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 Feb 8 2022 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 21 Aug 22 11:13 S80mysevice.sh -> ../init.d/mysevice.sh
You have mail in /var/spool/mail/root
- 批量部署
[root@ops-basic service_autostart]# cat deploy_myservice.sh
#!/bin/bash
for i in $(cat all_ip.txt)
do
scp mysevice.sh root@$i:/etc/init.d/
ssh root@$i "cd /etc/init.d/ && chmod +x mysevice.sh && chkconfig --add mysevice.sh && chkconfig mysevice.sh on"
echo $i
done
其他方式,可参考:
prometheus、node_exporter设置开机自启动