启动和分离终端程序的最有效方法?

启动和分离终端程序的最有效方法?

我正在尝试从终端启动一个程序,以便发生以下情况:

  1. 关闭终端不会关闭程序
  2. 在打开、使用或关闭时,程序未向终端输出任何内容
  3. 终端可免费用于其他用途
  4. 命令简短而明确
  5. 无需担心输出文件

答案1

man nohup

NAME
   nohup - run a command immune to hangups, with output to a non-tty

回答:

nohup program-name &

答案2

我认为这是最完整的方法:

program-name </dev/null &>/dev/null &
disown %%

放弃后台进程意味着 shell 将不再跟踪它。它不会告诉您何时完成。它不会阻止您关闭 shell。%%表示“最近在后台运行的作业”。

如果你想隐藏所有细节,可以在 .bashrc 中放置如下函数

launch_and_forget () { "$@" </dev/null &>/dev/null & disown %%; }

然后

launch_and_forget program args "args args" ...

取一个对你来说有意义的名字。

答案3

您可以非常简单地使用setsid:-

NAME
       setsid - run a program in a new session

SYNOPSIS
       setsid program [arg...]

DESCRIPTION
       setsid runs a program in a new session.

尝试以下命令:-

setsid <command>

例如:- setsid geditsetsid nautilus ~/Downloads/等等。

答案4

我会推荐tmux, 作为任思远建议,或GNU 屏幕。这样,您就会获得一个用于命令的新终端。您可以将其分离并忘记它,但如果您改变主意,您可以将其恢复。

相关内容