前面的命令只能在系统启动的过程中监听,本篇介绍重启后自动监听,为了在系统重启后自动开始监听文件,你可以将监听命令设置为系统启动时自动执行。这里有几种方法可以实现这一点:
使用 systemd 服务
你可以创建一个自定义的 systemd 服务来在启动时自动监听文件。
创建一个 systemd 服务文件
1. 创建一个脚本来执行监听操作。例如,创建一个脚本 `/usr/local/bin/file_monitor.sh`:
#!/bin/bash
inotifywait -m -e open /path/to/your/file
别忘了给这个脚本执行权限:
sudo chmod +x /usr/local/bin/file_monitor.sh
2. 创建一个 systemd 服务文件,例如 /etc/systemd/system/file_monitor.service:
[Unit]
Description=File Monitor Service
After=network.target
[Service]
ExecStart=/usr/local/bin/file_monitor.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
3. 重新加载 systemd 配置并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable file_monitor.service
sudo systemctl start file_monitor.service
使用 /etc/rc.local 文件
对于较旧的Linux系统或某些特定的发行版,你可以在 /etc/rc.local 文件中添加监听命令,使其在启动时执行。
1. 编辑 /etc/rc.local 文件(如果文件不存在,可以创建一个):
sudo nano /etc/rc.local
2. 在文件中添加你的监听命令:
#!/bin/bash
inotifywait -m -e open /path/to/your/file &
exit 0
3. 确保 /etc/rc.local 文件是可执行的:
sudo chmod +x /etc/rc.local
使用 crontab
你也可以使用 crontab 来在系统启动时执行监听脚本。
1. 编辑 root 用户的 crontab 文件:
sudo crontab -e
2. 添加以下行来在系统启动时执行脚本:
@reboot /usr/local/bin/file_monitor.sh
实例
假设你想在系统启动时监听文件 /tmp/testfile 的访问,可以这样做:
1. 创建脚本 /usr/local/bin/file_monitor.sh:
#!/bin/bash
inotifywait -m -e open /tmp/testfile
2. 创建 systemd 服务文件 /etc/systemd/system/file_monitor.service:
[Unit]
Description=File Monitor Service
After=network.target
[Service]
ExecStart=/usr/local/bin/file_monitor.sh
Restart=always
User=root
[Install]
WantedBy=multi-user.target
3. 重新加载 `systemd` 配置并启用服务:
sudo systemctl daemon-reload
sudo systemctl enable file_monitor.service
sudo systemctl start file_monitor.service
通过这种方式,无论系统重启多少次,`inotifywait` 都会在启动过程中自动开始监听你指定的文件。、