Centos7 设置系统关机时执行写入文件
时间: 2024-04-28 17:25:39 浏览: 162
您可以通过编辑`/etc/systemd/system/shutdown.target`文件,在其中添加一个ExecStart行来实现在CentOS7系统关机时执行写入文件。具体操作步骤如下:
1. 打开终端并使用root用户登录系统。
2. 进入`/etc/systemd/system`目录。
3. 使用文本编辑器(如vi或nano)打开文件`shutdown.target`。
4. 在文件中找到`[Unit]`部分,然后在其下方添加一行`ExecStart=/path/to/your/script.sh`,其中`/path/to/your/script.sh`是您要执行的脚本的完整路径。
5. 保存并关闭文件。
6. 运行`systemctl daemon-reload`命令以重新加载systemd配置文件。
7. 测试一下,执行`shutdown -h now`命令,观察是否执行了您的脚本。
这样,当您在系统上执行关机操作时,systemd将运行您指定的脚本并执行其中的命令。
相关问题
如Centos 7 如何捕获关机时的系统运行级别
在 CentOS 7 中,可以通过 systemd 服务管理器来捕获系统运行级别。systemd 提供了一个名为 systemd-halt.service 的服务,它会在系统关机时执行。
为了捕获系统运行级别,可以在 systemd-halt.service 的 ExecStop 部分添加以下命令:
```
systemctl status --no-pager | grep "Main PID" | awk '{print $3}' > /var/run/shutdown.pid
```
这个命令会查询系统当前运行的服务,并将包含 "Main PID" 的行的第三个字段(即 systemd 进程的 PID)写入 /var/run/shutdown.pid 文件中。
当系统关机时,systemd-halt.service 将会执行这个命令,并将当前 systemd 进程的 PID 写入到 /var/run/shutdown.pid 文件中。这个文件可以在系统启动时被读取,以确定系统关机时的运行级别。
在启动脚本中,可以通过读取 /var/run/shutdown.pid 文件来获取系统关机时的运行级别。例如,可以使用以下命令来读取 /var/run/shutdown.pid 文件:
```
if [ -f /var/run/shutdown.pid ]; then
shutdown_pid=$(cat /var/run/shutdown.pid)
# Do something with the shutdown PID
fi
```
这个命令会检查 /var/run/shutdown.pid 文件是否存在,并将其中的 PID 赋值给变量 shutdown_pid。然后,可以根据 shutdown_pid 变量的值来确定系统关机时的运行级别。
Centos7 修改systemd-halt.service 捕获关机系统运行级别输出到指定文件下
如果你想将运行级别的信息记录到指定的文件中,而不是系统日志中,可以在 `ExecStart` 行中添加重定向操作符 `>>`,例如:
```
ExecStart=/usr/bin/logger -t "systemd-halt" "System is powering off, current runlevel: $(runlevel)" >> /var/log/shutdown.log
```
这将把运行级别的信息输出到 `/var/log/shutdown.log` 文件中。
然后,你需要创建该文件并确保它可以被系统用户写入。你可以使用以下命令创建文件并设置权限:
```
sudo touch /var/log/shutdown.log
sudo chmod 666 /var/log/shutdown.log
```
这将创建一个空文件并设置权限,使得系统用户可以写入该文件。
完成以上步骤后,重新加载 systemd 配置并测试一下关机是否能够正常记录运行级别到指定的日志文件中:
```
sudo systemctl daemon-reload
sudo systemctl halt
```
之后你可以通过查看 `/var/log/shutdown.log` 文件来查看运行级别的信息。
阅读全文