我正在尝试创建一个启动一些程序的脚本
启动文件
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 完成后仍会继续运行。