SOP服务程序启动脚本修复及开机自启配置标准操作流程(SOP)

https://chat.deepseek.com/share/uz78hxvuhf8xtoyozg

 

SOP服务程序启动脚本修复及开机自启配置标准操作流程(SOP)


一、问题背景

在部署 SOP服务程序(对应 ssc-management.jar)时,执行其重启脚本 restart-withlog.sh 遇到多个异常,且开机自启配置存在重复项,导致服务无法稳定运行。本流程旨在标准化解决此类问题,适用于所有 SOP 系列服务的维护操作。


二、常见故障现象

  • 脚本执行报错 $'\r': command not foundsleep: invalid time interval '2\r'
    → 脚本格式包含 Windows 换行符(CRLF)。
  • 日志路径不存在(如 /usr/local/ssc/logs/management.log
    → 缺少日志目录。
  • kill: Operation not permitted
    → 旧进程由 root 启动,当前普通用户无权终止。
  • crontab 中出现多条完全相同的开机启动项
    → 导致重启时脚本被执行多次,引发冲突。

三、操作步骤(按常规执行顺序)

阶段一:修复脚本即时运行问题

1. 转换脚本格式(去除 \r

sed -i 's/\r$//' restart-withlog.sh

也可使用 dos2unix restart-withlog.sh(若已安装)。

2. 创建日志目录并设置权限

sudo mkdir -p /usr/local/ssc/logs
sudo chown <部署用户>:<部署用户> /usr/local/ssc/logs   # 替换为实际用户名

确保 SOP 服务程序有权写入该目录。

3. 赋予脚本执行权限(为后续开机自启做准备)

chmod +x /usr/local/ssc/ssc-management/restart.sh

阶段二:解决权限问题并配置开机自启

由于旧进程可能归属 root,普通用户无法强制终止,建议将开机自启任务提升至 root 用户执行。

4. 删除当前用户(如 inspur)crontab 中的自启项

crontab -l | grep -v 'restart.sh' | crontab -

验证:

crontab -l | grep restart   # 应无输出

5. 将开机启动项添加到 root 的 crontab

(sudo crontab -l 2>/dev/null; echo "@reboot /usr/local/ssc/ssc-management/restart.sh") | sudo crontab -

6. 清理重复条目(如有)

查看当前 root 的 crontab 自启项:

sudo crontab -l | grep restart

若发现重复行(例如两行完全相同的 /usr/local/ssc/ssc-management/restart.sh),执行去重:

sudo crontab -l | awk '!seen[$0]++' | sudo crontab -

最终应确保每个服务只有一条 @reboot 记录。


阶段三:验证服务状态

完成上述操作后,可通过以下方式确认 SOP 服务是否正常启动:

1. 检查进程

ps -ef | grep ssc-management.jar | grep -v grep
# 或
pgrep -f ssc-management.jar

2. 检查端口监听(假设服务端口为 8080)

netstat -tlnp | grep :8080
# 或
ss -tlnp | grep :8080

3. 查看应用启动日志

tail -f /usr/local/ssc/logs/management.log

4. 使用 jps 命令(若 JDK 已安装)

jps -l | grep ssc-management

四、核心脚本参考(restart.shrestart-withlog.sh

#!/bin/bash
# 强制终止旧进程
ps -ef | grep 'ssc-management.jar' | grep -v grep | awk '{print $2}' | xargs kill -9

echo "请稍后……"
sleep 2

cd /usr/local/ssc/ssc-management/
nohup java -jar ssc-management.jar > /usr/local/ssc/logs/management.log 2>&1 &

日志目录必须提前存在,否则启动会失败(已在阶段一处理)。


五、注意事项

  • kill -9 为强制终止,可能导致数据丢失或资源未释放,生产环境建议改用 kill -15 配合应用自身的优雅关闭机制。
  • @reboot 在系统启动时执行,若脚本依赖网络、数据库等外部服务,应在脚本中添加适当延迟或健康检查逻辑。
  • 若需更规范的管理方式,建议将 SOP 服务封装为 systemd 服务单元,便于统一管理启动、停止、状态和日志。
  • 修改 crontab 后无需重启系统,cron 守护进程会自动检测文件变更。

六、总结

通过本 SOP 流程,我们依次:

  1. 修复了脚本格式和日志路径问题;
  2. 将开机自启权限提升至 root,消除了 kill 权限不足的障碍;
  3. 清理了重复的 crontab 条目,避免服务重复启动;
  4. 提供了完整的验证方法,确保 SOP 服务程序稳定运行。

现在,系统重启后 SOP 服务程序 将以 root 身份自动启动,日志完整可查,维护工作更加可靠高效。

posted @ 2026-08-27 09:17  lizhigang  阅读(12)  评论(0)    收藏  举报