shell指令碼實現某一進程是否運行結束的監控

來源:互聯網
上載者:User
問題描述前幾天,一位朋友需要即時監控Linux系統下的某一進程,當該程式運行時則繼續監控,當該程式結束時需要向終端輸出一句話,並做後續操作。問題分析要監控某一進程,最新先到的就是ps 命令列出所有進程,然後grep自己想要的進程,這樣經過處理就可以得到該進程是否在運行還是已經結束了運行。這個方法無疑可以實現該問題的需求,但是這裡有更簡單的方法,可以利用Linux系統中的pidof命令簡單的實現對進程的監控。
pidof的使用方式為:pidof 進程名。若進程存在,則返回進程的pid號,若不存在則返回空。例如: $ pidof emacs這樣,利用pidof來得到被監控的正在啟動並執行進程的進程號,若得到的傳回值為空白則表明該進程已經結束或者被kill掉,就可以進行下一步的操作了。
shell代碼

#!/bin/shflag=1result=1while [ "$flag" -eq 1 ]do    sleep 1s    result=`pidof top`    if [ -z "$result" ]; then    echo "process is finished"    flag=0    fidone# 做相應的處理...............

代碼中的top換成要監控的進程名,sleep 1s是要睡眠1秒鐘,讓出CPU,可以根據實際的需求選擇合適的睡眠時間。另外,被監控的如果是shell指令碼的進程,則需要加上-x選項,如pidof -x 相應的指令碼。
小結pidof是一個Linux下命令,可以利用其特性寫出更簡單,效率更高的與進程相關的指令碼。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.