![如果程序正在运行,则执行某些操作](https://linux22.com/image/1046592/%E5%A6%82%E6%9E%9C%E7%A8%8B%E5%BA%8F%E6%AD%A3%E5%9C%A8%E8%BF%90%E8%A1%8C%EF%BC%8C%E5%88%99%E6%89%A7%E8%A1%8C%E6%9F%90%E4%BA%9B%E6%93%8D%E4%BD%9C.png)
您可以在终端中输入一些东西,以便当某个程序正在运行时它会运行一个命令?例如,if <Libre office is running> then sudo pkill <Libre ofice>
。
编辑 1:所以我想要做的是在终端中创建一个 if 语句,如果程序正在运行则运行,如果程序未运行则不执行任何操作,或者执行其他操作。
答案1
“我想要做的是在终端中创建一个 if 语句,如果程序正在运行,则运行该语句,如果程序未运行,则不执行任何操作,否则执行其他操作”
要根据程序名称确定程序是否正在运行,请使用pgrep
。如果 LibreOffice 的文字处理器正在运行,请执行以下操作:
pgrep soffice.bin >/dev/null && do_something
类似地,如果 LibreOffice 的文字处理器不是跑步:
pgrep soffice.bin >/dev/null || do_something
此外,您可以结合使用这两者:
pgrep soffice.bin && do_one_thing || do_another
或者,如果事情变得更加复杂,请使用以下if
语句:
if pgrep soffice.bin
then
# command is running
do_one_thing
do_one_thing2
else
# command is not running
do_another
do_another2
fi
上述操作之所以有效pgrep
,是因为 就像 一样grep
,设置了一个有用的退出代码。如果找到进程,它将返回退出代码零(shell 将其解释为逻辑真)。如果没有找到,它将返回一(shell 将任何非零退出代码解释为假)。
要找出当前正在运行的所有程序(以及要使用什么名称作为 的参数pgrep
),请运行ps ax