中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

php腳本執行進程30分鐘內不退出的話,就kill掉這些php的腳本進程

發布時間:2020-07-02 13:34:40 來源:網絡 閱讀:287 作者:wjw555 欄目:系統運維

線上腳本內容如下:
[root@localhost ~]# cat /data/scripts/check_php.sh

#!/bin/bash
Date=`date "+%Y-%m-%d %H:%M:%S"`
Num=$(ps -ef|egrep  "countjs_syc_site*|countjs_syc_plan*|countjs_syc.php|countjs_syc_img*|setcache*"|grep -v grep |wc -l)
Pid=$(/bin/ps -ef|egrep  "countjs_syc_site*|countjs_syc_plan*|countjs_syc.php|countjs_syc_img*|setcache*"|grep -v grep| awk '{print $2}')

if [ $Num -eq 0 ];then
  echo "$Date No Process" >> /data/scripts/check_php.log
else
  for i in $Pid
    do
        echo "$Date Running Process $i"   >> /data/scripts/check_php.log 
##define Get Seconds var
Sec=$(ps -p $i  h -o etime|tail -1|awk 'BEGIN { FS = ":" }{if (NF == 2) {print $1*60 + $2 } else if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print ((a[1]*24+a[2])*60 + $2) * 60 + $3; } else {print ($1*60 + $2) * 60 + $3;}}}')

        if [ $Sec -ge 1800 ];then
            echo $Date >> /data/scripts/check_php.log
            ps -ef | grep $i | grep -v grep  >> /data/scripts/check_php.log
            kill -9 $i
            echo "$Date $i The process runs for more than 30 minutes,The process has been killed." >> /data/scripts/check_php.log
        else
            echo "$Date $i The process runs in less than 30 minutes" >> /data/scripts/check_php.log
        fi

    done
fi
echo '===========================' >> /data/scripts/check_php.log

另外一種腳本形式如下:
cat /root/scripts.awk

#!/usr/bin/awk -f  
BEGIN { FS = ":" }
{
  if (NF == 2) {
    print $1*60 + $2
  } else if (NF == 3) {
    split($1, a, "-");
    if (a[2] != "" ) {
      print ((a[1]*24+a[2])*60 + $2) * 60 + $3;
    } else {
      print ($1*60 + $2) * 60 + $3;
    }
  }
}

腳本分析如下:

ps -ef|grep    18020 |grep -v grep|awk '{print $2}'; ps -p  18020  h -o etime|tail -1|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print ((a[1]*24+a[2])*60 + $2) * 60 + $3; } else {print ($1*60 + $2) * 60 + $3;}}}'

echo "   03:19:15"|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($0, a, ":");if (a[1] != "" ){print a[1],a[2] }}}'

echo "   03:19:15"|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($0, a, ":");if (a[1] != "" ){print a[1],a[3] }}}'

ps -p 18020  -o etime|tail -1|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($0, a, ":");if (a[2] != "" ) {print a[1],a[2],a[3] };{print ($1*60 + $2) * 60 + $3;}}}'
   03 54 06
14046

awk 字符串處理函數,split

split(s,a,fs)    以fs為分割符 將s字符串分成序列a
split可以實現對字符串進行數組類型的分割,下面用例子來說明下。
[root@localhost ~]# echo 'abcd'?| awk '{len=split($0,a,"");for(i=1;i<=len;i++)print "a["i"]="a[i];print "length="len}'
a[1]=a
a[2]=b
a[3]=c
a[4]=d
a[5]=?
length=5

解析說明:首先把abcd換為一個數組,并且數組的分隔符為沒有符號,len=split($0,a,"")為獲取了整個數組的長度,之后進行輸出。在awk中如果是當做字符串輸出的字符,全部用雙引號來引起來。

查看php腳本運行的時間:

[root@localhost ~]# ps -p 5493  h -o etime
 1-01:35:00
運行了1天1小時35分00秒
根據進程號過濾出具體的運行腳本名稱:
[root@localhost ~]# ps -ef|grep 5493|grep -v grep
root      5493  5490  0 9月18 ?       00:00:00 /bin/bash /data/cron/chksh/setcache.sh
root      5506  5493  0 9月18 ?       00:00:00 /usr/bin/php /data/cron/ptask/setcache.php

[root@localhost ~]#  ps -p 5493  h -o etime|tail -1
 1-01:40:58

[root@localhost ~]#  ps -p 5493  h -o etime|tail -1|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print a[1],a[2],a[3]}}}'
 1 01

計算進程運行的分鐘數:

[root@localhost ~]# ps -p 5493  h -o etime|tail -1
 1-01:47:56

[root@localhost ~]# ps -p 5493  h -o etime|tail -1|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print ((a[1]*24+a[2])*60 + $2)}}}'
1547
計算進程運行的秒數:
[root@localhost ~]# ps -p 5493  h -o etime|tail -1|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print ((a[1]*24+a[2])*60 + $2)*60 + $3}}}'
93036

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

[root@localhost ~]# ps -p33920 h -o etime
   04:31:49

[root@localhost ~]# ps -p33920 h -o etime|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print a[1]}}}'
[root@localhost ~]# ps -p33920 h -o etime|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print a[2]}}}'
[root@localhost ~]# ps -p33920 h -o etime|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print $2 }}}'
[root@localhost ~]# ps -p33920 h -o etime|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print $3 }}}'

此時數值都為空

所以此時采用下面的公式計算秒數也為空:

 ps -p33920 h -o etime|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print ((a[1]*24+a[2])*60 + $2)*60 + $3}}}'

然而采用下面的公式來計算是正確的:

[root@localhost ~]# ps -p33920 h -o etime|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print ((a[1]*24+a[2])*60 + $2)*60 + $3} else {print ($1*60 + $2) * 60 + $3;}}}'
16908
[root@localhost ~]# ps -p33920 h -o etime && ps -p33920 h -o etime|awk 'BEGIN { FS = ":" }{if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print ((a[1]*24+a[2])*60 + $2)*60 + $3} else {print ($1*60 + $2) * 60 + $3;}}}'
   04:44:18  實際時間格式
17058     一共秒數
ps -p 33573  h -o etime|tail -1|awk 'BEGIN { FS = ":" }{if (NF == 2) {print $1*60 + $2 } else if (NF == 3) {split($1, a, "-");if (a[2] != "" ) {print ((a[1]*24+a[2])*60 + $2) * 60 + $3; } else {print ($1*60 + $2) * 60 + $3;}}}
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

伊宁市| 潼关县| 岱山县| 鄂伦春自治旗| 迁安市| 通辽市| 林西县| 北碚区| 溆浦县| 吴川市| 新沂市| 江华| 渑池县| 伊金霍洛旗| 永昌县| 达拉特旗| 虹口区| 铁岭市| 汉寿县| 安龙县| 汶川县| 收藏| 邵阳县| 柏乡县| 平湖市| 蓝山县| 南雄市| 兴仁县| 锡林浩特市| 宁明县| 邵东县| 南阳市| 都昌县| 稷山县| 若羌县| 安宁市| 黄冈市| 济南市| 综艺| 衡山县| 会宁县|