当failed.log文件中发生更改时,我需要停止服务。我正在查看watch命令以执行以下操作:watch -d -g -t 'ls -l /home/username/*failed.log' --此命令将检查来自ls的输出是否已更改。如果有,我想让它停止CUPS服务。
我在研究inotify-tools,但这对我来说有点太复杂了。有什么建议吗?
发布于 2018-09-06 08:21:16
用&&连接这两个命令怎么样?这将确保在执行第二部分之前,使用代码0 (在bash中等于true )成功地退出第一个命令。如果是这样,则执行第二部分并停止cups服务。
watch -d -g -t ls -l /home/username/*failed.log && service cups stop
发布于 2018-09-06 09:07:09
根据日志文件的内容,我有类似的使用场景,可能会对您有所帮助。
我有一台OpenVPN服务器在工作。当我需要重新启动来应用更新,但我有当前的用户会话时,我设置了一个while循环来检查一个特定的grep模式("vpnip,username,wanip,time戳“)。如果找到了该模式,我将等待一段时间;否则,如果找不到该模式(非零退出代码),我将重新启动。
这对我的服务器非常具体,但是您可以调整grep语句以满足您的需要。
while [ 1 ] ; do
if egrep '10.8.0.[0-9]+,[a-zA-Z\-]+,[0-9\.]{7,15}:[0-9]+,(Mon|Tue|Wed|Thu|Fri|Sat|Sun) (Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec) +[0-9]{1,2} [0-9:]{8} [0-9]{4}' /ramdisk/openvpn-status.log ; then
echo someone still connected ;
sleep 30s ;
else
echo reboot now ;
fi ;
done上面的例子有echo reboot now,因为我现在不想重新启动,但是您知道了。

https://askubuntu.com/questions/1072672
复制相似问题