我有文件“sleepdaemon”,它启动python程序作为服务 我运行这个脚本:
sudo /etc/init.d/sleepdaemon start
但是当我总是检查状态$?= 0时 这是我检查的方式
if [ "$?" -eq 0 ]; then
echo "Process is running"
fi
if [ "$?" -eq 1 ]; then
echo "Process is not running"
fi
if [ "$?" -eq 2 ]; then
echo "Process is not running"
fi
有什么问题?
答案 0 :(得分:2)
每次测试后都会重置$?
的值,因此您需要在测试前将其保存在变量中,或者使用case ... esac
语句。
答案 1 :(得分:0)
sudo
返回命令的结果,如果无法运行,则返回1。为每个命令设置?
:
if (( $? == 0 )); then
echo "Process is running"
elif (( $? == 1 )); then
echo "Process is not running" >&2
elif (( $? == 2 )); then
echo "Process is not running" >&2
else
echo "Unknown exit code $?" >&2
fi
使用(( ... ))
进行算术比较 - 它更容易,更安全。你应该总是有一个默认的长期停止,你应该向stderr报告错误,而不是stdout。
如果$?
始终为零,请查看sleepdaemon
的文档(我试过,但无法在任何地方找到返回代码)。