![可执行文件无法像常规一样工作](https://linux22.com/image/1052893/%E5%8F%AF%E6%89%A7%E8%A1%8C%E6%96%87%E4%BB%B6%E6%97%A0%E6%B3%95%E5%83%8F%E5%B8%B8%E8%A7%84%E4%B8%80%E6%A0%B7%E5%B7%A5%E4%BD%9C.png)
当我输入此命令时
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
我该怎么做才能让可执行文件产生与手动输入相同的输出?
因此,你的可执行文件是产生相同的输出。