脚本(.sh)不会终止

脚本(.sh)不会终止

我有一个脚本文件 (start-conky.sh)。它执行正确,但当我执行“ps -u”时,它仍然显示为 PID,我假设这意味着它仍在内存中。除非我执行“kill”,否则它只会停留在那里。它不会造成任何问题。我只是好奇如何让脚本在执行后终止。我已将脚本列在下面。我对编写程序确实不太了解,所以我肯定有错误。有人能帮忙吗?

标题:start-conky.sh“标题只是在这里列出,它不在脚本中”

#!/bin/bash

conky -c ~/Conky/scripts/config1 & conky -c ~/Conky/scripts/config2

exit

答案1

&应该做什么?使用它的方式它会conky -c ~/Conky/scripts/config1在后台发送。

答案2

运行脚本时,每行都会逐行执行,并且每行必须完成才能开始下一行。&命令后的字符会在后台启动命令,从而允许立即执行下一个语句,而无需等待上一个语句完成。

conky因此,您的脚本使用 config1 文件在后台启动一个实例,然后conky使用 config2 文件在前台启动另一个实例,然后等待该实例完成,再处理下一exit行。如果您将脚本更改为&在每个conky命令后都添加一个,如下所示...

#!/bin/bash

conky -c ~/Conky/scripts/config1 &
conky -c ~/Conky/scripts/config2 &

exit

...它不会等待它们完成后才处理exit命令。

正如 John 和 Eliah 所说,&&用于将两个命令链接在一起,只有第一个命令成功完成后才会执行第二个命令。这通常是从命令行而不是脚本完成的。这解释了为什么在您进行此更改后,conky 的第二个实例从未启动。第一个从未完成,因此第二个可以启动。

我希望这能澄清一些事情。

相关内容