所以我有一个.txt文件,其中包含一个PID列表,我想写一个shell脚本来检查哪些PID是活动的。
我的File.txt看起来像 -
10414
10491
10632
10636
10623
10639
我想逐行读取文件并检查该特定PID是否处于活动状态,如果没有,则只从文件中删除该PID。
答案 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