【问题标题】:To check whether nohup service is running or not using shell script?使用 shell 脚本检查 nohup 服务是否正在运行?
【发布时间】: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 -vxset +vx 关闭)查看代码执行时 $PIDS 使用的值。祝你好运。

标签: shell nohup


【解决方案1】:

我哪里出错了?

使用ps -aux | grep sample.phpgrep 在它自己的进程命令行grep sample.php 中找到sample.php,同样由ps 输出。这可以通过修改 grep 命令使其不包含 sample.php 字面意思来避免,例如。 G。 grep 'sample\.php'(顺便说一句,它避免了匹配另一个字符而不是 . 的风险)。您可能还需要来自ps 的宽输出才能不截断命令,因此将上述管道更改为ps waux | grep 'sample\.php'

【讨论】:

    猜你喜欢
    • 2015-02-05
    • 1970-01-01
    • 1970-01-01
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多