从终端启动和分离程序的最有效方法?
我正试图从终端启动一个程序,以便发生以下情况:
- 关闭终端不会关闭程序
- 打开,使用或关闭时,程序不会向终端输出任何内容
- 终端可以免费用于其他事情
- 命令简短而甜蜜
- 没有输出文件需要担心
见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 gedit
, setsid nautilus ~/Downloads/
etc.
使用tmux
。
首先启动tmux
,然后运行你想要的任何命令。 您可以关闭tmux
窗口,或通过快捷键CTRL-B D
后退。 事实上,您甚至可以通过tmux attach
重新tmux attach
。
我建议使用tmux ,如Siyuan Ren建议的那样,或GNU Screen 。 这样,您就可以获得一个新的终端。 你可以分开并忘记它,但如果你改变主意你可以回来。
我拿起,继续使用……
(nohup program-name 2>/dev/null &)