Linux Bash函数,用于在后台自动运行命令并断开连接
我试图在我的bashrc中创建一个函数,允许我启动任何命令并自动拒绝它 e、 g.Linux Bash函数,用于在后台自动运行命令并断开连接,linux,bash,shell,Linux,Bash,Shell,我试图在我的bashrc中创建一个函数,允许我启动任何命令并自动拒绝它 e、 g.launch./myprogram或launch xdg open myfolder 我已经用过很多次了command;Ctrl+Z;bg;disown,只想创建这些步骤的快捷方式 但是,我不知道如何在bash脚本中嵌入Ctrl+Z的操作。我已经看到它的动作是SIGTSTP,但是我真的不知道如何将它合并到bash函数中。您可以直接在后台运行该命令,而不是停止它然后在后台运行它。使用和: $ cat > lau
launch./myprogram
或launch xdg open myfolder
我已经用过很多次了command;Ctrl+Z;bg;disown
,只想创建这些步骤的快捷方式
但是,我不知道如何在bash脚本中嵌入Ctrl+Z的操作。我已经看到它的动作是SIGTSTP,但是我真的不知道如何将它合并到bash函数中。您可以直接在后台运行该命令,而不是停止它然后在后台运行它。使用
和:
$ cat > launch
#! /bin/bash
"$@" & disown
Ctrl+d
对于子孙后代和其他路过的人,以下是我制作的bash功能:
launch()
{
"$@" > /dev/null 2>&1 & disown
}
- “$@”将提示中给出的每个参数作为一个参数
/dev/null 2>&1
将每个输出(stout和stderr)重定向到dev/null,dev/null将自动删除它们,这样它就不会出现在shell上
&
在后台运行该命令,这意味着它将允许您在shell中输入其他命令
disown
,顾名思义,它将使进程不再绑定到shell,您可以安全地关闭shell,而不必同时关闭进程
我有一个类似的脚本,但也将stdin/stdout/stderr重定向到/dev/null,这样它就不会试图阻止输入或将调试信息喷入我的终端。。。。我讨厌我自己。我知道&,甚至知道我必须这样做来取代bg,但没有意识到它也有效地绕过了ctrl+z的需要。谢谢。您基本上将@choroba的第二行替换为:/dev/null&disown
@root我在这段时间内已经找到了它,并在下面的回答中实现了该函数。你能确认它做同样的事情吗?或者我的脚本不完美?您不需要否认,因为从脚本启动后台进程构成了一个双叉。
launch()
{
"$@" > /dev/null 2>&1 & disown
}