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



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

我的file.txt看起来像 -

10414
10491
10632
10636
10623
10639

我想通过行读取文件,并检查该特定的PID是否活动,如果不活动,则仅从文件中删除该PID。

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

尝试此

#!/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

最新更新