让我们以一个命令 "example-command" 为例。
- 我打开终端
- 在终端中输入
example-command
,然后example-command
被执行。 - 现在如果我关闭终端,
example-command
也会被终止。 - 我现在尝试使用 "
example-command &
",但是行为相同。
如何执行一个命令,以便在关闭终端时该命令不会被终止?
让我们以一个命令 "example-command" 为例。
example-command
,然后 example-command
被执行。example-command
也会被终止。example-command &
",但是行为相同。如何执行一个命令,以便在关闭终端时该命令不会被终止?
有两种方法,结果相同。
nohup
命令。例如:nohup example-command
。您可以将其后台运行并像平常一样工作,即使您退出也会继续运行。disown
命令。不幸的是,据我所知,disown
是特定于 bash 的;如果您使用另一个 shell,例如 tcsh
,则可能会受到上面使用 nohup
形式的限制。请先搜索类似的问题。
除了上面列出的方法,你可以尝试:
setsid command_name
例如:setsid xclock
谢谢
example-command &; disown {pid}
example-command &; disown
disown是bash内置命令。您可以为您的命令创建一个包装器shell脚本,例如
#!/bin/bash
$1 &
P=`which $1`
disown `pidof ${P}`
这不是最健壮的脚本(绝非如此),但可能有助于您开始。例如:
$./launch_script.sh myProgram
如果您正在编辑程序源代码,也可以在其中执行此操作。
nohup 示例命令
运行:example-command
按下:Control-Z
运行:bg
example-command &
相同,但并没有起作用。example-command
仍然作为子进程运行。 - Christian Mann
nohup
! - Vikrant Chaudharysetsid
会在新会话中启动命令。尝试运行ps -o cmd= $(ps -o ppid= $(pidof example-command))
来获取父进程名称。 - Ricardo Stuven