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

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

  1. 关闭终端不会关闭程序
  2. 打开,使用或关闭时,程序不会向终端输出任何内容
  3. 终端可以免费用于其他事情
  4. 命令简短而甜蜜
  5. 没有输出文件需要担心

man nohup

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

回答:

 nohup program-name & 

我认为这将是最完整的方式:

 program-name /dev/null & disown %% 

取消后台进程意味着shell将不再跟踪它。 它不会告诉你什么时候完成。 它不会阻止您关闭shell。 %%表示“最近的后台工作”。

如果要隐藏所有细节,请在.bashrc中添加这样的函数

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

然后

 launch_and_forget program args "args args" ... 

给出一个对你有意义的名字。

你可以非常简单地使用setsid : –

 NAME setsid - run a program in a new session SYNOPSIS setsid program [arg...] DESCRIPTION setsid runs a program in a new session. 

请尝试以下命令: –

 setsid  

示例: – setsid geditsetsid nautilus ~/Downloads/ etc.

使用tmux

首先启动tmux ,然后运行你想要的任何命令。 您可以关闭tmux窗口,或通过快捷键CTRL-B D后退。 事实上,您甚至可以通过tmux attach重新tmux attach

我建议使用tmux ,如Siyuan Ren建议的那样,或GNU Screen 。 这样,您就可以获得一个新的终端。 你可以分开并忘记它,但如果你改变主意你可以回来。

我拿起,继续使用……

 (nohup program-name 2>/dev/null &)