如何将作业带到前台并允许用户从终端输入

如何将作业带到前台并允许用户从终端输入

如同这个问题但在一个重要方面有所不同:我需要从脚本启动一组作业,并在后台运行它们。然后,为了管理它们或检查它们的进度,我需要将它们带到前台并允许用户输入。

我目前正在做的事情是:

  1. 循环启动一组作业,例如

    for ip in $(cat ip-list.txt); do run-job.sh $ip &; done
    
  2. 将单个作业带到前台,例如

    fg 1 
    

这会将作业带到前台,但是有两个问题:我无法提供用户输入——进程没有响应,好像接收我输入的进程是启动作业的脚本,而不是作业本身;变量 $ip 也未计算,即完全显示为“$ip”而不是“192.168.1.34”。但是,当我输入“jobs”时,我会看到所有 10 个作业被单独列出(但它们看起来完全相同:“run-job.sh $ip”。我必须使用 ps 来查看哪个作业正在使用哪个 ip 值。)

我希望得到的行为与我通过逐个输入这些作业来启动它们,然后按 Control-Z 将它们置于后台时得到的行为相同。如果我这样做,当我使用 fg 将它们带到前台时,它们允许用户直接输入到进程中,并且变量 $ip 的计算结果显示为“192.168.1.34”。但是,对于数十或数十个作业,手动输入作业是不可行的。

相关内容