Linux 获取启动过程的PID

Linux 获取启动过程的PID,linux,shell,Linux,Shell,出于某些监控目的,对于给定的文件列表(每天更改路径),我希望在后台启动tail-f搜索特定字符串 我如何正确地获得for循环生成的tail命令的确切pid,以便稍后杀死它们 这里是我试图做的,我认为这给了我脚本的pid,而不是尾部进程 for f in $(find file...) do tail -f $f | while read line do case $line in *string_to_search*) echo " $line" | mutt -s "strin

出于某些监控目的,对于给定的文件列表(每天更改路径),我希望在后台启动tail-f搜索特定字符串 我如何正确地获得for循环生成的tail命令的确切pid,以便稍后杀死它们

这里是我试图做的,我认为这给了我脚本的pid,而不是尾部进程

for f in $(find file...)
do
tail -f $f | while read line
do case $line in
        *string_to_search*) echo " $line" | mutt -s "string detected in file : $1" mail@mail.com;
         ;;
   esac
done &
echo $! >> pids.txt
done

不过看起来不错。请看可能有助于确定它是否好,当我检查我得到的pid时,它显示的是“bash”,而不是生成的“tail-f”,它有另一个pid:
myuser 222617 1 0 17:08 pts/0 00:00:00-bash
,然后可能将for循环放入script1中,该循环将调用script2$f,其中包含您的tail/while循环(当然是在后台)。然后,您应该使用具有不同PID的不同文件调用每个script2的PID…这只是一个想法。您正在启动一个管道,并且$!返回管道中最后一个进程的pid,该进程是执行while read行循环的shell。FWIW,终止该进程也应使用断管信号终止尾部。或者看或者