假设我有一个包含以下内容的 bash 脚本:
#!/bin/sh
gedit
rm *.temp
当我使用 执行它时sh ./test.sh
,gedit
会弹出,但该rm
部分直到我关闭后才会运行gedit
。
我希望脚本即使gedit
没有关闭也能继续运行;就像gedit
不会阻止 bash 执行一样。
我给出的例子只是一个例子(rm
在实际情况下,第一个例子是行不通的)。
答案1
您正在寻找的术语称为“背景”工作。当您在 shell 或脚本中运行命令时,您可以在末尾添加一个标志,将其发送到后台并继续运行新命令或脚本的其余部分。在大多数 shell 中(包括 )sh
,这就是该&
字符。
#!/bin/sh
gedit &
rm ./*.temp
这样,shell 就不会等待 和 的终止gedit
,rm
并且gedit
将同时运行。
术语“阻塞”通常与输入/输出流有关,通常与文件或设备有关。它也在编译语言中使用,其含义与您使用的含义类似,但在 bash 和类似的 shell 脚本中,术语(和函数!)相当不同。
答案2
这不会产生任何输出。它还将与终端分离,并且不会阻止任何内容:
nohup gedit >/dev/null 2>&1 &