SOP服务程序启动脚本修复及开机自启配置标准操作流程(SOP)
https://chat.deepseek.com/share/uz78hxvuhf8xtoyozg
SOP服务程序启动脚本修复及开机自启配置标准操作流程(SOP)
一、问题背景
在部署 SOP服务程序(对应 ssc-management.jar)时,执行其重启脚本 restart-withlog.sh 遇到多个异常,且开机自启配置存在重复项,导致服务无法稳定运行。本流程旨在标准化解决此类问题,适用于所有 SOP 系列服务的维护操作。
二、常见故障现象
- 脚本执行报错
$'\r': command not found及sleep: 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.sh 或 restart-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 流程,我们依次:
- 修复了脚本格式和日志路径问题;
- 将开机自启权限提升至
root,消除了kill权限不足的障碍; - 清理了重复的 crontab 条目,避免服务重复启动;
- 提供了完整的验证方法,确保 SOP 服务程序稳定运行。
现在,系统重启后 SOP 服务程序 将以 root 身份自动启动,日志完整可查,维护工作更加可靠高效。
浙公网安备 33010602011771号