如何从终端启动命令,以便终端不是父节点?

时间:2009-05-12 16:51:14

标签: linux command-line terminal

让我们举一个命令“example-command”的例子。

  1. 我打开终端
  2. 我在终端中写example-commandexample-command执行。
  3. 现在,如果我关闭终端,example-command也会被杀死。
  4. 我现在尝试使用“example-command &”,但行为相同。
  5. 如何执行命令以便在关闭终端时命令不会终止?

8 个答案:

答案 0 :(得分:28)

有两种方式,结果相同。

  1. 启动程序时使用nohup。例如,nohup example-command。您可以正常背景和使用它;退出后它会继续运行。
  2. 或者,as @alamar noted,如果您使用bash作为shell,则可以使用disown命令。不幸的是,据我所知,disown是特定于bash的;如果您使用其他shell,例如tcsh,则您可能会被限制在上面的nohup表单中。

答案 1 :(得分:11)

请先搜索类似的问题。

除了上面列出的方法,你可以这样做:

setsid command_name

例如:

setsid xclock

由于

答案 2 :(得分:7)

在Zsh(不是bash)中你可以:

example-command &; disown {pid}

或只是

example-command &; disown

答案 3 :(得分:5)

您还可以考虑使用screen命令。

答案 4 :(得分:1)

nohup example-command

答案 5 :(得分:1)

你也可以使用'at' or 'batch' commands并给它当前时间。

答案 6 :(得分:1)

disown是一个内置的bash。您可以为命令创建包装器shellcript,例如

#!/bin/bash
$1 &
P=`which $1`
disown `pidof ${P}`

不是最强大的脚本(无论如何),但可能有助于您前进。例如:

$./launch_script.sh myProgram

如果您正在编辑它,也可以在程序源中执行此操作。

答案 7 :(得分:-2)

运行:example-command

按:Control-Z

运行:bg