在后台启动 Linux 进程

在后台启动 Linux 进程

我正在尝试创建一个启动一些程序的脚本

启动文件

knetworkmanager
emesene
keepassx

问题是,当我运行脚本时,它只会启动 knetworkmanager。这是因为它会启动它,然后等待它完成。我怎样才能在不等待它的情况下启动程序?我不认为我可以在每个命令后添加“&”,因为脚本完成后所有进程仍将被终止。

答案1

当运行脚本的 shell 退出时,它会向您启动的进程发送 HUP 信号。如果这些进程没有捕获该信号,它们将终止。因此,仅使用 & 是否足够取决于应用程序。为了安全起见,请像这样使用 nohup:

nohup your-program >>/dev/null 2>>/dev/null &

请参阅 nohup 和 kill 的手册页以了解更多详细信息,或阅读维基百科关于 nohup 的文章

答案2

不,如果你使用,脚本执行完成后进程不应该被终止&。试试看。

knetworkmanager &
emesene &
keepassx &

答案3

根据您提供的示例程序,您似乎试图在 KDE 启动时启动某些程序。如果是这样,请查看 KDE 的自动启动功能。本文讨论更多内容并给出有关如何将程序添加到自动启动的说明。

答案4

在每个命令后添加“&”肯定有效。这意味着这些脚本或程序即使在 startup.sh 完成后仍会继续运行。

相关内容