我正在使用一个小的bash脚本来计算具有特定名称的脚本运行的频率.
ps -ef | grep -v grep | grep scrape_data.php | wc -l
Run Code Online (Sandbox Code Playgroud)
是我使用的代码,通过ssh输出scrape_data.php运行的次数.目前输出为3例如.所以这很好.
现在我正在尝试制作一个小小的脚本,当计数小于1时会做一些事情.
#!/bin/sh
if [ ps -ef | grep -v grep | grep scrape_data.php | wc -l ] -lt 1; then
exit 0
#HERE PUT CODE TO START NEW PROCESS
else
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
上面的脚本是我到目前为止,但它不起作用.我收到这个错误:
[root@s1 crons]# ./check_data.sh
./check_data.sh: line 4: [: missing `]'
wc: invalid option -- e
Run Code Online (Sandbox Code Playgroud)
我在if语句中做错了什么?
您的测试语法不正确,lt应该在测试括号内:
if [ $(ps -ef | grep -v grep | grep scrape_data.php | wc -l) -lt 1 ]; then
echo launch
else
echo no launch
exit 0
fi
Run Code Online (Sandbox Code Playgroud)
或者您可以测试以下的返回值pgrep:
pgrep scrape_data.php &> /dev/null
if [ $? ]; then
echo no launch
fi
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11568 次 |
| 最近记录: |