日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > linux >内容正文

linux

linux脚本重启进程,linux下通过脚本实现自动重启程序

發(fā)布時(shí)間:2024/10/8 linux 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 linux脚本重启进程,linux下通过脚本实现自动重启程序 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

假定需要實(shí)現(xiàn)重啟的程序名為 test ,我們這里通過(guò)判斷進(jìn)程數(shù)目來(lái)判斷程序是否正常。

ps -ef | grep "$1" | grep -v "grep" | wc –l 是獲取 $1 (本例中為 test )的進(jìn)程數(shù),腳本根據(jù)進(jìn)程數(shù)來(lái)決定下一步的操作。通過(guò)一個(gè)死循環(huán),每隔 1 秒檢查一次系統(tǒng)中的指定程序的進(jìn)程數(shù)。

grep -v "grep":作用:在結(jié)果中搜索除 grep之外的部分

-v, --invert-match

Invert the sense of matching, to select non-matching lines.? (-v is specified by POSIX.)

代碼如下:

腳本check

#!/bin/sh

#------------------------------------------------------------------------------

# 函數(shù): CheckProcess

# 功能: 檢查一個(gè)進(jìn)程是否存在

# 參數(shù): $1 --- 要檢查的進(jìn)程名稱

# 返回: 如果存在返回0, 否則返回1.

#------------------------------------------------------------------------------

CheckProcess(){

# 檢查輸入的參數(shù)是否有效

if [ "$1" = "" ];

then

return 1

fi

#$PROCESS_NUM獲取指定進(jìn)程名的數(shù)目,為1返回0,表示正常,不為1返回1,表示有錯(cuò)誤,需要重新啟動(dòng)

PROCESS_NUM=`ps -ef | grep "$1" | grep -v "grep" | wc -l`

if [ $PROCESS_NUM -eq 1 ];

then

return 0

else

return 1

fi

}

# 檢查test實(shí)例是否已經(jīng)存在

while [ 1 ] ; do

CheckProcess $1

CheckQQ_RET=$?

if [ $CheckQQ_RET -eq 1 ];

then

# 殺死所有test進(jìn)程,可換任意你需要執(zhí)行的操作

killall -9 $1

exec ./$1 &

fi

sleep 1

done

腳本start:

腳本start:

加入limit coredumpsize 102400,設(shè)置core file的大小,一旦程序Core Dump,有跡可尋。在該腳本中后臺(tái)執(zhí)行check腳本,可以省去很多麻煩,

PS:對(duì)這個(gè)腳本的功能 表示懷疑 可能達(dá)不到實(shí)際需要的效果

經(jīng)過(guò)實(shí)際驗(yàn)證后的可行的腳本如下:

#!/bin/sh

#declare -i g_processID=0

help(){

echo "Usage: $0 "

exit 0

}

# 參數(shù)范圍檢查

if [ "$#" != 1 ];

then

help

fi

#檢查進(jìn)程實(shí)例是否已經(jīng)存在

while [ 1 ]; do

DTTERM=`pgrep ${1}`

if [ -n "$DTTERM" ]

then

echo "process exit and date is: `date`"

#正確輸入信息到日志文件

else

echo "restart process: $1 and date is: `date`"

exec ./${1} &

fi

#監(jiān)控時(shí)間間隔

sleep 1

done

附grep使用方法:

中的grep命令可以在文本中搜索指定的字符串,

摘要

舉例介紹GREP的各種搜索方式,文件名,段落,正則匹配等多種方式的搜索.

假設(shè)您正在‘/usr/src/linux/Documentation’目錄下搜索帶字符串‘magic’的文件:

$ grep magic /usr/src//Documentation/*

sysrq.txt:* How do I enable the magic SysRQ key?

sysrq.txt:* How do I use the magic SysRQ key?

其中文件‘sysrp.txt’包含該字符串,討論的是 SysRQ 的功能。

默認(rèn)情況下,‘grep’只搜索當(dāng)前目錄。如果此目錄下有許多子目錄,‘grep’會(huì)以如下形式列出:

grep: sound: Is a directory

這可能會(huì)使‘’的輸出難于閱讀。這里有兩種解決的辦法:

明確要求搜索子目錄:grep -r

或忽略子目錄:grep -d skip

當(dāng)然,如果預(yù)料到有許多輸出,您可以通過(guò) 管道 將其轉(zhuǎn)到‘less’上閱讀:

$ grep magic /usr/src/linux/Documentation/* | less

這樣,您就可以更方便地閱讀。

有一點(diǎn)要注意,您必需提供一個(gè)文件過(guò)濾方式(搜索全部文件的話用 *)。如果您忘了,‘grep’會(huì)一直等著,直到該程序被中斷。如果您遇到了這樣的情況,按 ,然后再試。

下面是一些有意思的命令行參數(shù):

grep -i pattern files :不區(qū)分大小寫地搜索。默認(rèn)情況區(qū)分大小寫,

grep -l pattern files :只列出匹配的文件名,

grep -L pattern files :列出不匹配的文件名,

grep -w pattern files :只匹配整個(gè)單詞,而不是字符串的一部分(如匹配‘magic’,而不是‘magical’),

grep -C number pattern files :匹配的上下文分別顯示[number]行,

grep pattern1 | pattern2 files :顯示匹配 pattern1 或 pattern2 的行,

grep pattern1 files | grep pattern2 :顯示既匹配 pattern1 又匹配 pattern2 的行。

這里還有些用于搜索的特殊符號(hào):

\< 和 \> 分別標(biāo)注單詞的開(kāi)始與結(jié)尾。

例如:

grep man * 會(huì)匹配 ‘Batman’、‘manic’、‘man’等,

grep ‘\grep ‘\’ 只匹配‘man’,而不是‘Batman’或‘manic’等其他的字符串。

‘^’:指匹配的字符串在行首,

‘$’:指匹配的字符串在行尾,

總結(jié)

以上是生活随笔為你收集整理的linux脚本重启进程,linux下通过脚本实现自动重启程序的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。