如何从包含PID列表的文件中检查Process是否处于活动状态?

时间:2018-02-20 09:37:40

标签: linux bash shell

所以我有一个.txt文件,其中包含一个PID列表,我想写一个shell脚本来检查哪些PID是活动的。

我的File.txt看起来像 -

10414
10491
10632
10636
10623
10639

我想逐行读取文件并检查该特定PID是否处于活动状态,如果没有,则只从文件中删除该PID。

2 个答案:

答案 0 :(得分:1)

此处inputFile是包含pids

的源文件
awk 'NR==FNR{p[$1]=$1;next} $2 in p{print $2}' inputFile <(ps -eaf) >inputFile.tmp && mv inputFile.tmp inputFile

详细说明:

以下将打印当前正在运行的进程的ps结果,该结果也存在于您的文件中。

awk 'NR==FNR{p[$1]=$1;next} $2 in p' inputFile <(ps -eaf)

以下将创建一个tmp存储并使用仅运行的pid创建所需的文件。

>inputFile.tmp && mv inputFile.tmp inputFile

答案 1 :(得分:0)

试试这个

#!/bin/bash

for pid in $( ps -e | grep -v 'PID' | cut -f 2 -d ' ' );
do
    for _pid in $( cat $1 );
    do
        if [ $_pid = $pid ];
        then
            echo $pid
        fi
    done
done

用法:./check_if_is_active.sh list_of_pid_to_check.txt