我在putty中使用下面的命令创建了一个nohup服务。
nohup php /var/www/html/XYZ/sample.php &
此命令在后台执行sample.php文件。
现在我需要的是我想要一个shell脚本来检查这个服务是否正在运行。如果服务没有运行,我想让shell脚本自己创建一个服务。下面是我试过的代码。
#!/bin/bash
email_to="xyz@gmail.com";
export DISPLAY=:0.0
PIDS=`ps -aux | grep sample.php|awk '{print $2}'`
if [ -z "$PIDS" ]; then
echo "$(date) - The service is not running. Sending email to :$email_to" >> /var/www/html/XYZ/sample.php;
echo "SERVICE is not running - $(date)" | mail -s "service is not running - $(date)" $email_to
echo "" >> /var/www/html/XYZ/sample.php;
exit 1
else
echo "$(date) - Service already running. Sending email to : $email_to" >> /var/www/html/XYZ/sample.php;
echo "SERVICE is running - $(date)" | mail -s "SERVICE is running - $(date)" $email_to
fi
当我执行文件时,我收到邮件,因为服务正在运行,一旦我杀死了sample.php,当我执行这个文件时,我收到相同的邮件"当服务正在运行"但它错了,所以有人可以指导我哪里出错了吗?
答案 0 :(得分:0)
我哪里出错了?
ps -aux | grep sample.php
grep
在其自己的流程命令行sample.php
中找到grep sample.php
,也由ps
输出。这可以通过修改grep命令来避免,这样它就不会包含sample.php
字面意思,例如e。 G。 grep 'sample\.php'
(这样可以避免匹配另一个字符而不是.
)的风险。您可能还需要ps
的宽输出才能截断命令,因此请将上述管道更改为ps waux | grep 'sample\.php'
。