linux - 通过类似守护进程的 bash 运行程序

标签 linux bash

通常我只在终端中运行 GUI 程序(如 libreoffice),但这意味着运行应用程序时必须打开终端。

如何让GUI程序在关闭终端的情况下继续运行?

最佳答案

您需要 bash 命令 nohup,该命令会断开进程与终端的连接,以便即使终端关闭,进程也能继续运行。使用它来运行“nautilus”,如下所示:

nohup nautilus

正如您将看到的,它警告来自 nautilus 的任何标准输出都保存在名为 nohup.out 的文件中。如果您不关心 GUI 应用程序的标准输出,并且不想创建这些 nohup.out 文件,则可以将标准输出重定向到/dev/null。如果这样做,nohup 会保存 stderr。所以你需要重定向两者:

nohup nautilus >/dev/null 2>&1

此外,由于我不明白的原因,这现在是一个阻塞调用(即您没有收到终端提示符。)因此您需要在后台运行它:

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

我在 .bashrc 中创建了一个 Bash 函数,这样我就不需要输入以上所有内容:

nh () 
{ 
    nohup "$@" > /dev/null 2>&1 &
}

那我可以走了:

nh nautilus

关于linux - 通过类似守护进程的 bash 运行程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52967895/

相关文章:

bash - 如何使用 BASH 从文件名中删除特定字符

.net - 使用 Visual Studio 2017 调试已经运行的 Docker Linux .NET Core 容器

linux - Enctype ="multipart/form-data"在 linux 环境下不工作?

python - 如何在 Django 中显示 Iftop

linux - bash 空变量命令替换导致单引号

bash - 如何通过 bash 中的另一个脚本找出名为 ("sourced"的脚本的名称?

python - 使用 Python 测试 vi 编辑器功能?

linux - 如何在以文本模式运行的 Linux 服务器中通过 ssh 启动 vlc-nox?

bash - 在 bash 脚本中,如何获取字符串的显示宽度

android - ndkbuild 命令无法识别