






在部署 SOP服务程序(对应 ssc-management.jar)时,执行其重启脚本 restart-withlog.sh 遇到多个异常,且开机自启配置存在重复项,导致服务无法稳定运行。本流程旨在标准化解决此类问题,适用于所有 SOP 系列服务的维护操作。
$'\r': command not found 及 sleep: invalid time interval '2\r'/usr/local/ssc/logs/management.log)kill: Operation not permittedroot 启动,当前普通用户无权终止。crontab 中出现多条完全相同的开机启动项\r)sed -i 's/\r$//' restart-withlog.sh
也可使用
dos2unix restart-withlog.sh(若已安装)。
sudo mkdir -p /usr/local/ssc/logs
sudo chown <部署用户>:<部署用户> /usr/local/ssc/logs # 替换为实际用户名
确保 SOP 服务程序有权写入该目录。
chmod +x /usr/local/ssc/ssc-management/restart.sh
由于旧进程可能归属 root,普通用户无法强制终止,建议将开机自启任务提升至 root 用户执行。
inspur)crontab 中的自启项crontab -l | grep -v 'restart.sh' | crontab -
验证:
crontab -l | grep restart # 应无输出
root 的 crontab(sudo crontab -l 2>/dev/null; echo "@reboot /usr/local/ssc/ssc-management/restart.sh") | sudo crontab -
查看当前 root 的 crontab 自启项:
sudo crontab -l | grep restart
若发现重复行(例如两行完全相同的 /usr/local/ssc/ssc-management/restart.sh),执行去重:
sudo crontab -l | awk '!seen[$0]++' | sudo crontab -
最终应确保每个服务只有一条 @reboot 记录。
完成上述操作后,可通过以下方式确认 SOP 服务是否正常启动:
ps -ef | grep ssc-management.jar | grep -v grep
# 或
pgrep -f ssc-management.jar
netstat -tlnp | grep :8080
# 或
ss -tlnp | grep :8080
tail -f /usr/local/ssc/logs/management.log
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 在系统启动时执行,若脚本依赖网络、数据库等外部服务,应在脚本中添加适当延迟或健康检查逻辑。systemd 服务单元,便于统一管理启动、停止、状态和日志。crontab 后无需重启系统,cron 守护进程会自动检测文件变更。通过本 SOP 流程,我们依次:
root,消除了 kill 权限不足的障碍;现在,系统重启后 SOP 服务程序 将以 root 身份自动启动,日志完整可查,维护工作更加可靠高效。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。