Centos7 如何设置.service 在所有服务退出后再执行
时间: 2024-02-27 12:55:36 浏览: 62
你可以使用systemd的shutdown.target来实现在所有服务退出后再执行某个命令或服务。具体操作步骤如下:
1. 创建一个新的服务文件,例如 /etc/systemd/system/my-shutdown.service ,并在其中添加以下内容:
```
[Unit]
Description=My Shutdown Service
DefaultDependencies=no
Before=shutdown.target
[Service]
Type=oneshot
ExecStart=/usr/bin/sleep 5 ; /bin/bash /usr/local/scripts/cleanup.sh
[Install]
WantedBy=multi-user.target
```
2. 在上面的代码中,我们使用了sleep命令来延迟5秒执行 /usr/local/scripts/cleanup.sh 脚本,你可以根据需要进行修改。
3. 保存并退出文件。
4. 启用新的服务文件并重新加载systemd配置:
```
systemctl enable my-shutdown.service
systemctl daemon-reload
```
5. 现在,当你执行shutdown命令时,systemd将会启动my-shutdown.service服务,并且在所有其他服务停止后,等待5秒后执行 /usr/local/scripts/cleanup.sh 脚本。
需要注意的是,如果你使用了一些特殊的服务(例如网络服务),它们可能会在shutdown.target之前退出。在这种情况下,你需要将my-shutdown.service的Before选项更改为对应服务的名称,以确保my-shutdown.service在该服务退出之前执行。
阅读全文