我奔跑./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 是控制台,那应该不是问题,但您将无法获得任何输出以供以后查看。