麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

linux下的守護進程

2019-11-15 01:56:21
字體:
來源:轉載
供稿:網友
linux下的守護進程

Linux下的常駐進程的作用不可忽略,但這里面的問題也不能忽略,怎么啟動進程,怎么結束進程,怎么在進程掛掉之后重啟進程都要設計的合理。下面看一個shell控制的php常駐進程的例子。

不廢話,直接撈干貨,上代碼,通過代碼來講解更容易理解:

#!/bin/sh
#filename test.sh#絕對定位該文件的位置,不隨執行目錄而變化cd $(cd "$(dirname "$0")";pwd)readonly path=$(pwd)/file=$1;RunFile="${path}data/${file}.run"DieFile="${path}data/${file}.die"readonly file="${path}${file}.php"if [ ! -f "$file" ]; then    echo "please select a exists file"elif [ ! -f "$RunFile" ]; then
#這里進行判斷如果RunFile文件不存在,則表示該進程不存在,下面啟動進程
    echo $$>${RunFile}    while true        do            if [ ! -f $DieFile ]; then
            #這里如果DieFile文件不存在,則表示程序繼續執行,否則進入else,執行退出操作                /usr/bin/php -f ${file}                touch $RunFile                sleep 1            else
            #如果DieFile文件存在清除RunFile和DieFile退出                if rm -rf $RunFile && rm -rf $DieFile ; then                    exit                fi            fi        doneelse#這里是在存在RunFile的情況下試圖啟動該進程
    oldpid=`cat $RunFile`    newpid=`ps aux | grep "PRocess.sh $1" | grep -v grep | grep "$oldpid" | awk '{print $2}'`    if [[ $oldpid -eq $newpid ]]; then
    #如果RunFile中的進程號和正在運行的目標進程號一致,表明一切安好^_^        echo "the process is runing now"        exit    else
    #如果用RunFile中的進程號匹配不到正在運行的目標進程,則表示進程有問題,直接刪除RunFile并結束運行的進程        echo "error situation,kill the run process and delete the run file"        ps aux | grep "process.sh $1" | grep -v 'grep' | awk '{print $2}' | grep -v $$ | xargs --no-run-if-empty kill        if [ $? -eq 0 ]; then            rm -f $RunFile        else            echo $?>${path}/data/error        fi    fifi

只里面有幾個要強調的地方:

  • 我用這個shell去調用php程序,這個沒有局限性,這里要說明的是這種運行常駐進程的方法
  • 在RunFile存在,但進程號對不上殺進程時(也就是紅色額else所執行的地方),一定要 `grep -v $$`,作用是過濾掉當前運行的進程,要不然都被殺掉了,將后面的就不執行了
  • 還有一個要注意的地方就是關于自動重啟了

自動重啟可以放在crontab中,每隔一段時間執行一次,具體情況具體對待。

crontab -e#打開當前用戶日程表,添加模式#日程表中有5個星號,f1,f2,f3,f4,f5,
#其中f1表示分,f2表示時,f3表示日,f4表示月,f5表示一個星期第幾天   
#*表示每分/時/日/月/周天,*/n表示每n分/時/......執行一次*/2 * * * * /root/test.sh#沒2分鐘執行一次

這樣一個完整的常駐進程功能就完成了,想要終止進程是只需要在對應的目錄下進行touch ${DieFile}即可。

send me~


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 亚洲一区二区观看播放 | 黄色网址入口 | 色播视频在线播放 | 国产资源在线观看 | 国产成人在线网址 | 羞羞网站入口 | 日韩视频在线免费 | 久久艳片| 毛片在线视频观看 | 日美黄色片 | 日韩av片在线播放 | 国产精品免费一区二区三区都可以 | 美国av片在线观看 | 自拍亚洲伦理 | 亚洲欧美国产精品va在线观看 | 九九热国产在线 | 污黄视频在线观看 | 日本xxxx色视频在线观看免费, | 精品久久久久久久久久久久久久 | 亚洲日本欧美 | 爽爽视频免费看 | av一道本| 宅男噜噜噜66一区二区 | 国产一级毛片网站 | 精品一区二区三区免费看 | 久久男人视频 | 精品久久久久久久久久中文字幕 | 毛片一级免费看 | 激情宗合| 久久久国产精品网站 | 海角在线观看91一区二区 | 色网站综合 | 91色一区二区三区 | 色的综合 | 91伊人久久 | 日本一区免费看 | 极品xxxx欧美一区二区 | 中文欧美日韩 | 在线看免费观看av | 国产精品久久久av | 欧美 亚洲 激情 |