所以我有一个.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