Rhel Centos环境开关机自动脚本
- [1. 业务需求](#1. 业务需求)
- [2. 解决方法](#2. 解决方法)
-
- [2.1 rc.local](#2.1 rc.local)
- [2.2 rc.d](#2.2 rc.d)
- [2.3 systemd](#2.3 systemd)
- [2.4 systemd附着的方法](#2.4 systemd附着的方法)
- [2.5 tuned](#2.5 tuned)
- [3. 测试](#3. 测试)
1. 业务需求
一台较老的服务器上面业务比较简单,提供一个简单的网站,但已经没有业务的运维人员.
想达到的效果:
由于是非标准的apache或者nginx之类的服务,需要开机执行一个脚本来启动业务.
2. 解决方法
方法有:
- rc.local中添加脚本
- 将脚本添加到/etc/rcx.d/中
- 将脚本做成systemd实现开机启动
- 将脚本附着到其他systemd中随其他systemd一起启动
- 将脚本放到tuned里实现开机启动
为了方便测试,就写了个简单的脚本.内容如下
bash
#!/bin/bash
filename=$1
mkdir -p /tmp/test
echo `date` > /tmp/test/${filename}
bash
#!/bin/bash
/opt/makeafile.sh test.txt &
exit $?
bash
#!/bin/bash
echo `date` >> /tmp/stop.txt
当然必须给他加上可执行权限
bash
chmod +x makeafile.sh
chmod +x start.sh
chmod +x stop.sh
2.1 rc.local
这个比较简单,就是将脚本添加到rc.local的末尾,但值得注意的是必须给rc.local加上执行权限.
bash
echo '/opt/start.sh' >> /etc/rc.d/rc.local
chmod +x /etc/rc.d/rc.local
但这个办法只能加开机执行,没法关机执行
2.2 rc.d
先执行以下命令确认服务器运行在哪个级别下
bash
[root@centos7 ~]# runlevel
N 3
将文件复制到对应级别的目录下
bash
cp /opt/start.sh /etc/rc3.d/S98start_makeafile
cp /opt/start.sh /etc/init.d/start_makeafile
cp /opt/stop.sh /etc/rc3.d/K98stop_makeafile
cp /opt/stop.sh /etc/init.d/stop_makeafile
2.3 systemd
文件位置:
/etc/systemd/system/mkfile.service
内容如下:
bash
[Unit]
Description=Run mkfl script at startup
After=network.target
[Service]
Type=oneshot
ExecStart=/opt/start.sh
ExecStop=/opt/stop.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
配置后执行
bash
systemctl enable --now mkfile
2.4 systemd附着的方法
这个方法依赖相对隐蔽,但一旦被附着的服务被disabled了,那么你的这个也失效了.
方法1:
bash
[Unit]
Description=Run mkfl script at startup
After=network.target
[Service]
Type=oneshot
ExecStartPre=/opt/start2.sh
ExecStart=/opt/start.sh
ExecStop=/opt/stop.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
方法2:
bash
[Unit]
Description=Run mkfl script at startup
After=network.target
[Service]
Type=oneshot
ExecStart=/opt/start2.sh && /opt/start.sh
ExecStop=/opt/stop.sh
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
2.5 tuned
使用 tuned 的插件机制,好处就是隐蔽.一般不是资深的运维很难发现,当然时间长了自己也容易忘记.(详细学习的话见rh442的内容)
创建自定义脚本
bash
mkdir -p /etc/tuned/mkfile.d
vim /etc/tuned/mkfile.d/mkfile.conf
在配置文件中添加以下内容:
bash
[main]
type=script
script=/opt/stop.sh
启用自定义插件
编辑 /etc/tuned/tuned-main.conf 文件,添加你的自定义插件到 include 列表中:
bash
[main]
include=virtual-host,mkfile
重启 tuned 服务
bash
systemctl restart tuned
3. 测试
![](https://i-blog.csdnimg.cn/direct/f8411fbc1ce24aafb30a215dbb94d8e4.png)
至此实验完成.
本实验纯技术角度实现功能,别拿去干坏事.
任何读者添加恶意脚本删库与本人无关.