我正在使用一些使用 Yocto 构建的嵌入式 Linux 发行版。我需要检查 sh 脚本是否正在运行某个应用程序。当应用程序运行时 if
语句会被执行,但如果应用程序没有运行,则 else
语句不会被执行并且屏幕上不会显示任何内容。我在PC上测试了这段代码,它工作正常。你知道为什么这段代码在我的嵌入式 Linux 发行版上不起作用吗?我能看到的唯一区别是在我的嵌入式 Linux 上
echo $SHELL
显示 /bin/sh
,在 PC 上显示 /bin/bash
但它是非常简单的代码,它应该适用于 bash
和 sh
。
我的代码:
#!/bin/sh
check_status()
{
pid=`pidof -x my_app`
if [ -n "$pid" ]; then
echo "My_app is running."
else
echo "My_app is stopped."
fi
}
check_status
非常感谢您提供任何帮助。
编辑:
pidof
在我的嵌入式 Linux 上可用。/bin/bash
而不是 /bin/sh
并重新启动系统。#!/usr/bin/env bash
。第二个和第三个解决方案都没有解决我的问题。