早上好,
背景: 如果python脚本正在运行,我想检查每一分钟。在我的cron中,我称之为脚本。该脚本的目标是检查进程是否正在运行。
我的剧本:
#!/bin/bash
DIR="path/to/directory"
CMD="python3 -u $DIR/script.py -arg1 $DIR/arg1 -arg2 $DIR/arg2 -arg3 $DIR/arg3"
if [ ! $(ps aux | grep 'my_pattern' | grep -v 'color')]
then
echo "Success"
"$CMD" > /dev/null
fi
使用此脚本我想要grep该过程并反转grep以排除颜色过程。如果进程正在运行,命令(ps aux | grep'my_pattern'| grep -v'color')会返回一些内容,如果没有,该命令不会返回任何内容。
错误是./script.sh:line 12:[!myuser +:Untraceable command
命令的执行没有返回命令的结果,而是返回我的命令的进程号,就像我执行了我的命令的ps aux一样。
如果不清楚,请问,我很难翻译这个问题。
感谢您的回答。
编辑:我已经像这样申请了这个:
if [[ -z $(ps aux | grep 'my_pattern' | grep -v 'color') ]]
现在我没有任何错误,但它永远不会进入我的if条件。
答案 0 :(得分:0)
用
if [[ -z $(ps aux | grep 'my_pattern' | grep -v 'color') ]]
(记住klashxx所示的拼写错误)
您可以检查变量是否为空。
所以不要使用"!",我认为检查ps aux的grepping是否返回空字符串更合适和有效。
请告诉我这是否对您有所帮助。
已编辑:已更正' ['到['
再次编辑:其他用户要知道,如果您需要使用此方法检查进程是否存在,请在-z标志之前附加!
以查看它是否为空