我有一个脚本文件 (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 的第二个实例从未启动。第一个从未完成,因此第二个可以启动。
我希望这能澄清一些事情。