有人可以指导我编写shell脚本来查找进程是否处于活动状态?我必须从ps命令中排除我自己的grep进程过滤。我想将该过程作为参数传递,
脚本:(目前正在捕捉我自己的流程)
let cities: [City] = {
guard let URL = Bundle.main.url(forResource: "cities", withExtension: "plist") else {
return []
}
var cities = [City]()
let myCites = NSArray(contentsOf: URL) as! [[String : String]]
for city in myCites {
cities.append(City(icao: city["icao"], name: city["name"]))
}
return cities
}()
示例输入尝试:(虽然进程已死,但我的状态为“ok”)
#!/bin/sh
SERVICE=$1
echo $1
if ps ax | grep $SERVICE > /dev/null
then
echo "ok"
else
echo "not ok"
fi
请帮忙。
答案 0 :(得分:2)
您也可以使用pgrep
- 效率更高一点:
#!/bin/sh
service=$1
status=0
if [ ! -z "$service" ]; then
pgrep "$service" >/dev/null; status=$?
if [ "$status" -eq 0 ]; then
echo "ok"
else
echo "not ok"
fi
fi
exit "$status"
最好还有一个合适的退出值。
答案 1 :(得分:1)
您拥有的内容已接近,但您希望保存grep
命令的状态(通过$?
),然后保存该值的其他内容。
#!/bin/sh
SERVICE=$1
echo $1
ps ax | grep $SERVICE | grep -v ${0} > /dev/null
status=${?}
if [ "${status}" = "0" ]; then
echo "ok"
else
echo "not ok"
fi