【问题标题】:How do I spawn a new process while another process is running?如何在另一个进程运行时生成一个新进程?
【发布时间】:2012-06-30 17:33:32
【问题描述】:

我正在编写一个执行 2 个任务的 shell 脚本。一项任务将启动一个必须持续运行的程序。在同一脚本中,将启动第二个任务,该任务将启动另一个程序。但是当第一个连续运行时,我如何在同一个脚本中启动另一个?

提前致谢。

【问题讨论】:

  • 我将启动一个 MongoDB 服务器。在第一个任务中。
  • 检查例如Bash manual,尤其是关于“Coprocesses”和“Job control”的部分

标签: linux shell spawning


【解决方案1】:

在命令后添加 & 符号:

~$我的程序&

它会将运行的程序置于后台。

【讨论】:

  • 这是我最初的想法。但是脚本可以远程执行(通过 Putty)。在那种情况下会起作用吗?
  • 是的,没问题。如果您通过 putty(或任何其他 SSH 客户端)登录,操作系统将在该(虚拟)终端上运行任何命令(包括脚本及其生成的内容)。
  • 谢谢!!现在就试试!!
【解决方案2】:

您可能正在寻找背景一项任务。通常,您会这样做:

sleep 30 &
sleep 30 &
jobs
echo 'Waiting for all jobs to complete.'
wait

背景由行尾的 & 符号处理。

另见

【讨论】:

  • 但是如果脚本是通过 Putty 远程执行的,这会起作用吗?
  • 只要您已连接。如果您希望它在您注销后继续运行,请参阅nohup。
  • 好的,谢谢!!试试看!!
  • @Cygnus:注意:nohup 是不够的。您必须确保脚本(以及任何命令)的所有输入/输出都与 shell 无关(因此您需要将输出/错误/输入重定向到文件(/dev/null 对此很有用)。
猜你喜欢
  • 1970-01-01
  • 2010-09-06
  • 1970-01-01
  • 1970-01-01
  • 2016-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多