【发布时间】:2017-08-11 21:00:12
【问题描述】:
我在 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,当我执行这个文件时,我会收到相同的邮件“因为服务正在运行”,但它是错误的,所以任何人都可以指导我哪里出错了?
【问题讨论】:
-
你应该使用正确的"init script"。
-
else 使用 shell 调试/跟踪
set -vx(set +vx关闭)查看代码执行时$PIDS使用的值。祝你好运。