ゾンビプロセス状態の処理

ゾンビプロセス状態の処理

私はスクリプトが初めてです。プロセスが終了したり、ゾンビになったり、休止状態になるなどの状況をキャプチャするようになっているプロセス状態モニタスクリプトを作成中です。これが本当に良いスクリプトかどうかはわかりません。より良い選択肢があれば提案してください。

私が直面している問題について、以下のスクリプトは実行中、スリープ中、停止などの状態をキャプチャします。ただし、ゾンビプロセスの場合、コマンドには2つのPIDが表示されますpidof zombie。これはエラーと見なされ、スクリプトはステータスをキャプチャできません。

誰もがプロセスのゾンビ状態をキャプチャする方法を提案できますか?

ちなみに、私はシェルで時々状態がゾンビと見なされるゾンビプロセスを作成しました。

#!/bin/bash

do_start() {
    # List of process names to be monitored for its termination/killing.
    declare -a PROCESS_LIST
    PROCESS_LIST=("process_1" "process_2" "zombie")
    for process in "${PROCESS_LIST[@]}"; do
        echo "checking for $process"
        pid=$(pidof $process)
        echo "its pid is $pid"
        if [ $pid ]; then
            pid_status=`head /proc/$pid/status | grep "State:*"`
            echo $pid_status
            if [[ "$pid_status" =~ .*"sleeping"*. ]] || [[ "$pid_status" =~ .*"stopped"*. ]] || [[ "$pid_status" =~ .*"running"*. ]]; then
                echo "process:$process with pid $pid is having status $pid_status"
            elif [[ "$pid_status" =~ .*"zombie"*. ]]; then
                echo "process:$process with pid $pid is having status $pid_status"
            fi
        else
            echo "pid not present" > /dev/null
        fi
    done
}

while :
do
    do_start
    sleep 2
done

出力:

process_1
のpidが12668であることを確認してください
。ステータス:S(スリープ)
プロセス:pid 12668 process_1のステータスステータス:S(スリープ)
ゾンビのpidが12818 12817であることを確認してください。
./process_monitor.sh: line 13: [: 12818: 単項演算子の予測

process_1
の pid が 12668 の
状態であることを確認する: R (実行中)
プロセス: pid 12668 process_1 の状態状態: R (実行中)
ゾンビの pid が 12818
12817演算子の期待

$ps ux 出力

xolo    12668 95.3  0.0   4164   360 pts/4    R    15:32   0:07 ./process_1  
xolo    12817  0.0  0.0   4160   360 pts/4    S    15:32   0:00 ./zombie  
xolo    12818  0.0  0.0      0     0 pts/4    Z    15:32   0:00 [zombie]<defunct>   

ベストアンサー1

これはゾンビの状態とは関係がなく、むしろpidof指定されたプログラムを実行しているすべてのプロセスのpidを返すことに関連しています。プログラムの子プロセスzombieも呼び出されるため、zombie両方のPIDが印刷されます。

pidof-spidだけを返すように指示するオプションがあります。または、返されたPIDを列挙し、各PIDを順番に確認することもできます。

おすすめ記事