* * * * * /bin/bash -c 'if timeout 1 bash -c "</dev/tcp/localhost/60231"; then echo "Port is open"; else systemctl restart squid.service && echo "$(date): Squid restarted" >> /root/squid_status.log; fi' >/dev/null 2>&1
在这个命令中:
timeout 1 表示执行 ping 测试的超时时间为 1 秒。
在 bash -c "" 之后的 "</dev/tcp/localhost/60231" 命令将测试本地主机上的 60231 端口是否存在。
echo "Port is open" 命令表示在端口存在的情况下输出的信息。
systemctl restart squid.service 命令表示重启 squid 服务。
$(date): Squid restarted 表示输出到 /root/squid_status.log 文件中的内容,其中 $(date) 表示当前系统时间。
>> /root/squid_status.log 表示将输出信息追加到 /root/squid_status.log 文件末尾。
>/dev/null 2>&1 表示将标准输出和标准错误输出都重定向到空设备,以避免在定时任务执行时产生不必要的消息。
注意:以上命令应该是一整行,如果使用 crontab 编辑器进行编辑,请确保将整个命令复制并粘贴到编辑器中。
网友评论