服务器后台运行的一些服务,有的时候由于高压操作导致服务崩溃时,总是得远程登录服务器,然后重启服务。
可以写shell脚本自动检测服务是否在运行,如果崩溃了就重启。
使用nohup在后台启动服务:
nohup 服务启动命令所在脚本 > x服务日志文件.log 2>&1 &
服务启动命令写到一个shell脚本文件中,方便后续判断其是否运行。
自动检测和重启服务的脚本auto_restart.sh
# /bin/bash
# 每隔10秒,自动检查服务是否在运行,然后重启服务
RESTART_COMMAND=命令行启动命令
LOG_DIR=日志文件路径while true; do# pgrep -f 表示按照命令的完整名称去查找是否存在进程# 需要用引号括起来,命令中间经常有空格if pgrep -f "$RESTART_COMMAND" > /dev/null; thensleep 10selse# 后台运行,日志追加到当天的日志文件中nohup $RESTART_COMMAND >> "$LOG_DIR$(date +%Y-%m-%d).log" 2>&1 &# 下一次循环前等待一段时间,避免有的服务启动过慢,导致再次启动sleep 5sfi
done
后台运行该脚本
nohup ./auto_restart.sh &