判断端口是否存在,不存在重启对应服务

* * * * * /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 编辑器进行编辑,请确保将整个命令复制并粘贴到编辑器中。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容