请参阅通过运行脚本运行的作业(Unix)

请参阅通过运行脚本运行的作业(Unix),unix,sed,sh,jobs,Unix,Sed,Sh,Jobs,我在任何地方都找不到这个问题,尽管它是如此简单。有没有一种方法可以通过阅读脚本来查看作业的运行 用于: jobs告诉我哪些任务正在运行,哪些任务已完成。当我使用sed动态创建命令并使用sh运行它们时,这不起作用 例如: sed 's/\(.*\)\t\(.*\)/ echo "\1" >> Families6\/\2 \& /g ' myfile.txt | sh jobs 不要像这样使用sed。只需在当前shell中使用以下内容启动孩子 while IFS=$'\t'

我在任何地方都找不到这个问题,尽管它是如此简单。有没有一种方法可以通过阅读脚本来查看作业的运行

用于:

jobs告诉我哪些任务正在运行,哪些任务已完成。当我使用sed动态创建命令并使用sh运行它们时,这不起作用

例如:

sed 's/\(.*\)\t\(.*\)/ echo "\1" >> Families6\/\2 \& /g ' myfile.txt | sh

jobs

不要像这样使用
sed
。只需在当前shell中使用以下内容启动孩子

while IFS=$'\t' read -r str outfile; do
    echo "$str" >> Families6/"$outfile" &
done < myfile.txt

您需要从
作业
中获得哪些确切信息?您可以使用
ps
命令查看所有活动进程,这是否提供了足够的信息?嘿。我想知道到底还有多少任务要完成,哪些已经完成。这是jobs命令的“job”,但在我的例子中它没有给出任何信息。如果您知道生成它们的进程/shell的
pid
,您可以使用
ps
(使用您喜欢的任何格式)并应用父pid过滤器
--ppid
。感谢您的评论。我用echo编写了一个示例,但实际上我使用了一个特定于生物学的自定义函数(seq_extract),因此需要sed(或者您指定的while循环)。这是100份工作,其中一些需要10分钟,而另一些需要2小时。我知道,如果我复制这个sed命令的结果并将它们粘贴到shell中,那么jobs在编写时会给出预期的输出。我想这是一个典型的例子。您想解决一个您认为需要
sed
的问题,因此您可以询问
sed
解决方案,而不是询问实际问题。
while IFS=$'\t' read -r str outfile; do
    echo "$str" >> Families6/"$outfile" &
done < myfile.txt
awk -F $'\t' '{print $1 >> Families6/$2}' myfile.txt