Linux自动重启服务有两个稳妥方案:一是用cron定时执行systemctl重启脚本,适用于周期性维护;二是用systemd托管的守护脚本定期检测端口或服务状态,异常时自动重启,适用于高可用场景。

Linux 上自动重启服务,核心是用 systemctl 控制服务状态,并配合定时任务(cron)或条件检测逻辑实现“自动”。下面提供两个常用、稳妥的方案:一个是简单可靠的定时重启(适合周期性维护),另一个是按需检测+重启(适合服务意外挂掉的场景)。
适用于希望每天/每周固定时间重启某服务(比如 nginx、redis、docker 等),避免内存泄漏或连接堆积。
步骤:
#!/bin/bash
# 检查服务是否运行,再执行重启(更安全)
if systemctl is-active --quiet nginx; then
systemctl restart nginx
echo "$(date): nginx restarted successfully" >> /var/log/nginx-restart.log
else
echo "$(date): nginx was not running, starting instead" >> /var/log/nginx-restart.log
systemctl start nginx
fi
30 4 * * * /opt/scripts/restart-nginx.sh
适用于不能容忍长时间中断的服务(如数据库、API 后端)。脚本常驻运行,定期检查进程或端口,异常则拉起。
示例:检测 8080 端口是否响应,不响应就重启 myapp.service
本文档主要讲述的是Android服务Service_详解;服务(Service)是Android系统中4个应用程序组件之一(其他的组件详见3.2节的内容)。服务主要用于两个目的:后台运行和跨进程访问。通过启动一个服务,可以在不显示界面的前提下在后台运行指定的任务,这样可以不影响用户做其他事情。通过AIDL服务可以实现不同进程之间的通信,这也是服务的重要用途之一。希望本文档会给有需要的朋友带来帮助;感兴趣的朋友可以过来看看
0
#!/bin/bash SERVICE_NAME="myapp" CHECK_PORT=8080 <p>while true; do if ! nc -z 127.0.0.1 $CHECK_PORT 2>/dev/null; then echo "$(date): Port $CHECK_PORT down, restarting $SERVICE_NAME..." systemctl restart $SERVICE_NAME sleep 5 # 避免重启过快失败 fi sleep 30 # 每30秒检查一次 done
使用建议:
[Unit] Description=Watch and restart myapp service After=network.target <p>[Service] Type=simple User=root ExecStart=/opt/scripts/watch-myapp.sh Restart=always RestartSec=10</p><p>[Install] WantedBy=multi-user.target
避免踩坑的关键点:
基本上就这些。选方案一还是二,取决于你想要“按时重启”还是“出问题才动”。两者都轻量、可审计、易维护。
以上就是Linux 写一个自动重启服务的脚本的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号