qq_35666186 2016-07-21 06:03 采纳率: 0%
浏览 2164

linux 中,执行sh脚本时,如何先杀掉当前运行的程序,在重新打开程序

比如我想定时重启 a.jar ,那我就会做一个 SH 脚本,然后做任务计划,定时执行SH脚本;

但是最近发现这样一个问题, a.jar 会卡死,当他卡死的之后,任务计划在执行 SH 时,就没反应了

现在是想,在执行 SH 时,先判断 a.jar 是否运行,没运行,就启动;如果在运行,就杀掉进程,在重新启动。

在线等,该脚本该如何写呢。

  • 写回答

1条回答 默认 最新

  • Valtava 2016-07-21 19:01
    关注

    假设你的a.jar的进程名叫做 ajar

     #!/usr/bin/env bash
    
    records=$(ps -eo pid,fname | grep -w ajar)
    
    for record in $records
    do
        if [[ $record != *[!0-9]* ]];  then
            kill ${record}
        fi
    done
    

    这样可以检测到名为ajar的进程(grep 的-w 开关为精确匹配,防止误杀,进程名最长8位字符,超过8位请抛弃该开关),然后杀掉

    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型