答案1
虽然评论答案确实提出了一个很好的观点,即在处理此类问题时应该把精力集中在哪里(调试并尝试确定为什么它会挂起?),但你的问题的一个可能的解决方案可能是设置一个systemd-定时器它会以您想要检查该文件的任何时间间隔触发,并运行执行测试和操作的脚本。可能类似于(如果您使用 1 小时作为间隔):
计时器
[~]# cat /etc/systemd/system/checkhung.timer
[Unit]
Description=Check if file not modified in a while and restart service
[Timer]
OnActiveSec=60min
OnUnitActiveSec=60min
服务
[~]# cat /etc/systemd/system/checkhung.service
[Unit]
Description=Check if file not modified in a while and restart service
[Service]
Type=oneshot
ExecStart=/usr/local/bin/checker.sh
脚本
[~]# cat /usr/local/bin/checker.sh
#!/bin/bash
if [[ $(find /path/to/the/file.txt -mmin +60) ]]
then
/usr/bin/systemctl restart my-service.service
fi
请注意,我还没有测试过这一点,因此可能需要进行一些调整。