非阻塞 bash 命令

非阻塞 bash 命令

假设我有一个包含以下内容的 bash 脚本:

#!/bin/sh
gedit
rm *.temp

当我使用 执行它时sh ./test.shgedit会弹出,但该rm部分直到我关闭后才会运行gedit

我希望脚本即使gedit没有关闭也能继续运行;就像gedit不会阻止 bash 执行一样。

我给出的例子只是一个例子(rm在实际情况下,第一个例子是行不通的)。

答案1

您正在寻找的术语称为“背景”工作。当您在 shell 或脚本中运行命令时,您可以在末尾添加一个标志,将其发送到后台并继续运行新命令或脚本的其余部分。在大多数 shell 中(包括 )sh,这就是该&字符。

#!/bin/sh
gedit &
rm ./*.temp

这样,shell 就不会等待 和 的终止geditrm并且gedit将同时运行。

术语“阻塞”通常与输入/输出流有关,通常与文件或设备有关。它也在编译语言中使用,其含义与您使用的含义类似,但在 bash 和类似的 shell 脚本中,术语(和函数!)相当不同。

答案2

这不会产生任何输出。它还将与终端分离,并且不会阻止任何内容:

nohup gedit >/dev/null 2>&1 &

相关内容