当我输入此命令时
nohup CloudCompute.command &
它产生了结果
[1] 782
这正是我想要的。(顺便说一下,这是 PID 号)
因此,当我在可执行文件 ( .command
) 中运行相同的命令并尝试将输出附加到文件时,它不起作用。它只打印CloudCompute.command
输出的内容,而不是运行时显示的实际 PID。我确信它在同一目录中。
为什么会发生这种情况?我该怎么做才能使可执行文件产生与手动输入相同的输出?
谢谢
答案1
为什么会发生这种情况?
该输出:
[1] 782
不是来自可执行文件。bash
当您在后台执行某些操作时,它会写入终端。它是作业编号[1]
和进程的 PID 782
。稍后当进程完成时,您将看到类似以下内容:
[1]+ Done command
这也是从bash
注意到作业编号为 1 的进程已经完成而来的。
在后台运行命令时,PID 存储在变量中$!
:
$ sleep 10 &
[1] 1234
$ echo $!
1234
我该怎么做才能让可执行文件产生与手动输入相同的输出?
因此,你的可执行文件是产生相同的输出。