首頁  >  問答  >  主體

linux - 如何用Shell脚本判断一个进程是否在运行?

PHP中文网PHP中文网2741 天前673

全部回覆(4)我來回復

  • 巴扎黑

    巴扎黑2017-04-17 16:35:28

    可以串一個| grep -v grep把grep去掉

    警告: 用ps+grep找進程其實是不可擴展的,如果將來有多個匹配的進程.. 安全的方法是啟動時把pid寫到文件,要殺掉時從pidfile讀。或交給supervisor管理。

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 16:35:28

    linux下面,對進程進行管理的通用的做法是在進程啟動時,將進程號寫到檔案裡面,可以去/var/run/目錄裡面看看,裡面有各種.pid檔。管理的時候,讀取這個檔案獲得進程號。

    回覆
    0
  • 天蓬老师

    天蓬老师2017-04-17 16:35:28

    舉例:ps -ef|grep [j]ava

    回覆
    0
  • 阿神

    阿神2017-04-17 16:35:28

    [root@nginx conf.d]# ps -aux | grep  "nginx" | grep -v "grep" 
    root       1950  0.0  0.4  47904  2232 ?        Ss   03:43   0:00 nginx: master process nginx
    nginx     13545  0.0  0.5  48336  2504 ?        S    22:27   0:00 nginx: worker process
    [root@nginx conf.d]# ps -aux | grep  "nginx" | grep -v "grep" > /dev/null
    [root@nginx conf.d]# echo $?
    0
    

    需要依照實際情況做修改

    補充一個

    [root@nginx ~]# ps -C nginx
       PID TTY          TIME CMD
      1950 ?        00:00:00 nginx
     13545 ?        00:00:00 nginx
    [root@nginx ~]# 
    

    回覆
    0
  • 取消回覆