3

这是命令:

 # ls >log 2>&1 &
 [1] 24274

现在我希望这一行[1] 24274重定向另一个文件。有任何想法吗?

4

2 回答 2

5

使用$!

ls >log 2>&1 &
echo ls: pid=$!
于 2012-07-10T08:48:17.077 回答
2

除非您想获取工作编号,否则最简单的方法是使用$! ,这将为您提供最近的后台作业的 PID。例如:

$ sleep 30 & bg_pid=$!; echo $bg_pid
[2] 10100
10100

如果您真的想从存储的 PID 中取回作业编号,也许是使用 Bash 的作业控制而不是使用kill向进程发送信号,您可以这样做:

jobs -l | fgrep $! | perl -ne 'print "$1\n" if /\[(\d+)\]/'
于 2012-07-10T09:00:45.137 回答