久久精品人人爽,华人av在线,亚洲性视频网站,欧美专区一二三

linux守護進程實例代碼分析

197次閱讀
沒有評論

共計 1745 個字符,預計需要花費 5 分鐘才能閱讀完成。

今天丸趣 TV 小編給大家分享一下 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
  done
else
# 這里是在存在 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
  fi
fi

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

我用這個 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}即可。

以上就是“linux 守護進程實例代碼分析”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,丸趣 TV 小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注丸趣 TV 行業資訊頻道。

正文完
 
丸趣
版權聲明:本站原創文章,由 丸趣 2023-07-15發表,共計1745字。
轉載說明:除特殊說明外本站除技術相關以外文章皆由網絡搜集發布,轉載請注明出處。
評論(沒有評論)
主站蜘蛛池模板: 句容市| 长乐市| 彝良县| 新河县| 华安县| 汽车| 高台县| 兖州市| 沛县| 昭觉县| 长汀县| 阿图什市| 镇原县| 嘉黎县| 广河县| 乌海市| 铜山县| 翼城县| 葫芦岛市| 铜鼓县| 新田县| 长春市| 新安县| 龙陵县| 伊金霍洛旗| 崇州市| 余江县| 巴楚县| 西昌市| 阆中市| 沂源县| 綦江县| 新乡县| 东阳市| 界首市| 延川县| 清远市| 将乐县| 三明市| 阳信县| 加查县|