![启动和分离终端程序的最有效方法?](https://linux22.com/image/1125751/%E5%90%AF%E5%8A%A8%E5%92%8C%E5%88%86%E7%A6%BB%E7%BB%88%E7%AB%AF%E7%A8%8B%E5%BA%8F%E7%9A%84%E6%9C%80%E6%9C%89%E6%95%88%E6%96%B9%E6%B3%95%EF%BC%9F.png)
我正在尝试从终端启动一个程序,以便发生以下情况:
- 关闭终端不会关闭程序
- 在打开、使用或关闭时,程序未向终端输出任何内容
- 终端可免费用于其他用途
- 命令简短而明确
- 无需担心输出文件
答案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 gedit
,setsid nautilus ~/Downloads/
等等。