Linux 如何从终端启动命令,使终端不是父级?

Linux 如何从终端启动命令,使终端不是父级?,linux,command-line,terminal,Linux,Command Line,Terminal,让我们以命令“示例命令”为例 我打开终端 我在终端中写入示例命令,然后执行示例命令 现在,如果我关闭终端,示例命令也会被杀死 我现在尝试使用“示例命令&”,但行为相同 如何执行命令,以便在关闭终端时,命令不会终止?在Zsh(非bash)中,您可以: 或者只是 example-command &; disown 有两种方法,结果相同 启动程序时请使用nohup。例如,nohup示例命令。你可以在后台正常使用它;它将在您退出后继续运行 或者,如果使用bash作为shell,则可以使用dis

让我们以命令“示例命令”为例

  • 我打开终端
  • 我在终端中写入
    示例命令
    ,然后执行
    示例命令
  • 现在,如果我关闭终端,
    示例命令
    也会被杀死
  • 我现在尝试使用“
    示例命令&
    ”,但行为相同
  • 如何执行命令,以便在关闭终端时,命令不会终止?

    在Zsh(非bash)中,您可以:

    或者只是

    example-command &; disown
    

    有两种方法,结果相同

  • 启动程序时请使用
    nohup
    。例如,
    nohup示例命令
    。你可以在后台正常使用它;它将在您退出后继续运行
  • 或者,如果使用bash作为shell,则可以使用
    disown
    命令。不幸的是,据我所知,
    disown
    是bash特有的;如果您使用另一个shell,例如
    tcsh
    ,您可能会被限制使用上面的
    nohup
    表单

  • nohup示例命令

    您还可以使用并为其指定当前时间

    不承认是一种自相矛盾的行为。您可以为命令创建一个包装shellscript,例如

    #!/bin/bash
    $1 &
    P=`which $1`
    disown `pidof ${P}`
    
    虽然不是最健壮的脚本(无论如何),但可能会帮助您继续。例如:

    $./launch_script.sh myProgram
    
    setsid xclock
    

    你也可以在程序的源程序中编辑它。

    你也可以考虑使用命令。

    < P>请先搜索类似的问题。

    除上述方法外,您还可以执行以下操作:

    setsid command_name
    
    例如:

    $./launch_script.sh myProgram
    
    setsid xclock
    
    谢谢

    运行:示例命令

    按:Control-Z


    运行:bg

    zsh也支持disown。哦,现在我记得了,我以前用过
    nohup
    !从bash手册页上看,似乎需要“-h”选项来忽略SIGHUP--“disown-h”。这两个选项都解决了杀戮问题,但父进程仍然是shell。另一方面,
    setsid
    在新会话中启动命令。尝试运行
    ps-o cmd=$(ps-o ppid=$(pidof示例命令))
    以获取父进程名称。>>请先搜索类似问题。是的。先生,您的示例不处理参数(使用“$@”)。您可以使用“$!”作为最后一个后台作业的PID。但不需要PID。您应该忽略SIGHUP,所以使用“nohup”或“disown-h”。感谢NVRAM,我已经有一段时间没有编写任何shell脚本了:)我喜欢这个,但很少使用它。为了简化,只需使用“at now”(无需计算日期/时间)。符号和后的分号是一个语法错误。在bash中,PID是可选的,并且需要“-h”。所以这应该是:“example command&disown-h”,但这不会重定向stdin/stdout/stderr;disown在zsh中对我来说很好。如果bash不支持其中任何一个(;after&或disown,无参数),那么:不要告诉我你不知道它很糟糕。我同意@NVRAM。我更新了答案,说它可以在Zsh中工作,但不能在bash中工作。这与运行
    example命令&
    相同,但不起作用<代码>示例命令仍然作为子进程运行。我建议您使用screen。screen vi Control+a d[将解除连接]screen-r[将重新连接]您可以关闭终端,几天后再回来,与该用户一起执行screen-r。您可以有多个屏幕会话。或者它的现代替代方案,
    tmux