IT评测·应用市场-qidao123.com

标题: Rhel Centos环境开关机自动脚本 [打印本页]

作者: 盛世宏图    时间: 2025-2-13 19:32
标题: Rhel Centos环境开关机自动脚本
1. 业务需求

一台较老的服务器上面业务比力简单,提供一个简单的网站,但已经没有业务的运维职员.
想达到的效果:
由于是非标准的apache或者nginx之类的服务,需要开机实验一个脚原来启动业务.
2. 办理方法

方法有:
为了方便测试,就写了个简单的脚本.内容如下
makeafile.sh
  1. #!/bin/bash
  2. filename=$1
  3. mkdir -p /tmp/test
  4. echo `date` > /tmp/test/${filename}
复制代码
start.sh
  1. #!/bin/bash
  2. /opt/makeafile.sh test.txt &
  3. exit $?
复制代码
stop.sh
  1. #!/bin/bash
  2. echo `date` >> /tmp/stop.txt
复制代码
固然必须给他加上可实验权限
  1. chmod +x makeafile.sh
  2. chmod +x start.sh
  3. chmod +x stop.sh
复制代码
2.1 rc.local

这个比力简单,就是将脚本添加到rc.local的末尾,但值得注意的是必须给rc.local加上实验权限.
  1. echo '/opt/start.sh' >> /etc/rc.d/rc.local
  2. chmod +x /etc/rc.d/rc.local
复制代码
但这个办法只能加开机实验,没法关机实验
2.2 rc.d

先实验以下下令确认服务器运行在哪个级别下
  1. [root@centos7 ~]# runlevel
  2. N 3
复制代码
将文件复制到对应级别的目录下
  1. cp /opt/start.sh /etc/rc3.d/S98start_makeafile
  2. cp /opt/start.sh /etc/init.d/start_makeafile
  3. cp /opt/stop.sh /etc/rc3.d/K98stop_makeafile
  4. cp /opt/stop.sh /etc/init.d/stop_makeafile
复制代码
2.3 systemd

文件位置:
/etc/systemd/system/mkfile.service
内容如下:
  1. [Unit]
  2. Description=Run mkfl script at startup
  3. After=network.target
  4. [Service]
  5. Type=oneshot
  6. ExecStart=/opt/start.sh
  7. ExecStop=/opt/stop.sh
  8. RemainAfterExit=yes
  9. [Install]
  10. WantedBy=multi-user.target
复制代码
配置后实验
  1. systemctl enable --now mkfile
复制代码
2.4 systemd附着的方法

这个方法依赖相对隐蔽,但一旦被附着的服务被disabled了,那么你的这个也失效了.
方法1:
  1. [Unit]
  2. Description=Run mkfl script at startup
  3. After=network.target
  4. [Service]
  5. Type=oneshot
  6. ExecStartPre=/opt/start2.sh
  7. ExecStart=/opt/start.sh
  8. ExecStop=/opt/stop.sh
  9. RemainAfterExit=yes
  10. [Install]
  11. WantedBy=multi-user.target
复制代码
方法2:
  1. [Unit]
  2. Description=Run mkfl script at startup
  3. After=network.target
  4. [Service]
  5. Type=oneshot
  6. ExecStart=/opt/start2.sh && /opt/start.sh
  7. ExecStop=/opt/stop.sh
  8. RemainAfterExit=yes
  9. [Install]
  10. WantedBy=multi-user.target
复制代码
2.5 tuned

使用 tuned 的插件机制,好处就是隐蔽.一般不是资深的运维很难发现,固然时间长了本身也容易忘记.(详细学习的话见rh442的内容)
创建自界说脚本
  1. mkdir -p /etc/tuned/mkfile.d
  2. vim /etc/tuned/mkfile.d/mkfile.conf
复制代码
在配置文件中添加以下内容:
  1. [main]
  2. type=script
  3. script=/opt/stop.sh
复制代码
启用自界说插件
编辑 /etc/tuned/tuned-main.conf 文件,添加你的自界说插件到 include 列表中:
  1. [main]
  2. include=virtual-host,mkfile
复制代码
重启 tuned 服务
  1. systemctl restart tuned
复制代码
3. 测试


至此实验完成.
本实验纯技能角度实现功能,别拿去干坏事.
任何读者添加恶意脚本删库与本人无关.

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/) Powered by Discuz! X3.4