运行脚本是一个过程吗?

运行脚本是一个过程吗?

我奔跑./install.sh,我努力背景它能够关闭 ssh 会话。

但运行后bg该进程再次输出到终端。

此外,我没有看到任何内容jobs

top显示了几个实例,cc1plus所以我甚至不确定运行脚本是否真的算作一个进程?也许它在处理过程中启动了几个进程……

答案1

当您运行 Shell/Bash 脚本时,脚本的执行就是一个进程。当脚本运行其他程序时,这些程序也是进程。如果您从脚本运行其他脚本,则根据您运行它们的方式,它们也可能是自己的进程。

例如,如果你运行./install.sh并且内容是:

#!/bin/bash
...
...
...

然后你将有一个bash进程运行你的脚本。例如:

ps -ef
joe 345   1   /bin/bash install.sh

345代表PID(进程ID),1代表父进程的PID。

如果你的install.sh脚本运行,那么touch /tmp/myfile你将得到:

ps -ef
joe 345   1   /bin/bash install.sh
joe 346  345  touch /tmp/myfile

至于输出,问题评论中链接的超级用户帖子对此进行了很好的解释,因此我不会尝试重新解释它。但是脚本/程序的输出与 stdout 绑定,因此输出在 stdout 上。如果是控制台,那就这样吧。如果是文件,那就太好了。理论上,如果进程在后台运行,并且您断开与控制台的连接,并且 stdout 是控制台,那应该不是问题,但您将无法获得任何输出以供以后查看。

相关内容