linux程式守護程序(shell)

2021-07-05 23:44:01 字數 2231 閱讀 5606

使用shell每秒檢測一次程式是否在執行,如果沒有執行則自動啟動程式

#!/bin/bash

#配置檔案路徑

configfile="$1/config/settings.ini"

slash="="

restartlog=" daemon"

shopt -s expand_aliases

alias datetime='date "+%y-%m-%d %h:%m:%s"'

process="traceprobe"

rnckey="enablerncs"

traceprobe="/opt/traceprobe/traceprobe/traceprobe"

dstatus=0

#判斷配置檔案是否存在

if [ ! -f $configfile ]; then

echo "`datetime`$restartlog::error: $configfile do not exist!"

exit

fi#讀取配置檔案資訊

readconfig()

'`currvalue=`echo $myline | awk -f '=' ''`

#匹配配置檔案中的內容,判斷是否要啟動被守護的程序

if [ $currkey == $rnckey ]; then

if [ -n "$currvalue" ]; then

if [ -f "$traceprobe" ]; then

cd "$1"

source "$1/scripts/utils"

getenvfromosenv "$1"

#設定display的值

if [ "$vdis" == -1 ]; then

dis=`who|grep $user|grep tty`

dis=$

dis=$

if [ -z "$dis" ]; then

dis=:0.0

fielse

dis=$vdis

fiexport display="$dis" && traceprobe &

if [ "`ps -el | grep -w "$process" | awk ''`" == "$process" ]; then

echo "`datetime`$restartlog::info: some rncs need to be run!"

echo -e "`datetime`$restartlog::info: dis = $dis\n"

echo -e "`datetime`$restartlog::info: restart $traceprobe successfully!\n"

dstatus=0

else

if [ $dstatus -eq 0];then

echo "`datetime`$restartlog::info: some rncs need to be run!"

echo -e "`datetime`$restartlog::info: dis = $dis\n"

echo -e "`datetime`$restartlog::info: restart $traceprobe unsuccessfully!\n"

dstatus=1

fifi

fifi

fidone < $configfile

}#判斷守護程序是否已存在,如果存在則結束本程序,如果不存在則本程序作為守護程序

if [ `ps aux | grep -v grep | grep bash | awk '' | grep "traceprobe_daemon" | wc -l` -le 2 ];then

echo "*************************"

echo -e "`datetime`$restartlog::info: traceprobe_daemon start!\n"

while true

do# only in bash,擷取系統中需要守護的程序的名稱,如果無此程序currprocesses為空

currprocesses=`ps -el | grep -w "$process" | awk ''`

#exist, exit

if [ "$currprocesses" != "$process" ]; then

readconfig "$1"

fisleep 1

done

fi

Linux守護程序

linux下守護程序一般分為5步,但是實際上只有前兩步是關鍵。第一步 建立子程序,關閉父程序。使用fork 建立,父程序exit 退出。關鍵第二步 建立新的會話id,setsid 作用是使子程序擺脫原有的會話 程序組 終端的控制,其實,linux下每個程序都是由一號程序建立而來的,每個程序都是1號程...

Linux 守護程序

守護程序daemon,是生存期較長的一種程序,名字一般以字母d結尾。它們常常在系統自舉時啟動,僅在系統關閉時才終止。因為它們沒有控制終端,所以說它們是在後台執行的。linux系統有很多守護程序,它們執行日常事務活動。自舉只有兩個功能 加電自檢和磁碟引導。加電自檢 當我們按下計算機電源開關時,頭幾秒鐘...

Linux守護程序

程式設計級別 一 守護程序的概念 守護程序是一種生存期比較長的程序,常常在系統自舉時啟動,在系統關閉時退出。因為他們沒有控制終端,因此是在後台執行的。二 守護程序的程式設計規則 1清除檔案模式建立遮蔽字 2成為乙個新的會話首程序 3略hup訊號。然後再次fork 4改變當前工作路徑 5關閉所有的檔案...