用于检查进程是否正在运行的 shell 脚本

2023-12-27

发生了一些奇怪的行为,让我觉得可能发生了一些事情......

所以我有一个由 cron 执行的 shell 脚本。基本上它是为了检查 Node.js 是否正在运行。如果是这样,请记录日期...如果不是,则不记录任何内容!在我构建它时,我测试了它并看到它在节点脚本运行时记录,而在它停止运行时没有记录......

最近我知道 Node 宕机了,并认为这是检查脚本是否完成其应做的事情的绝佳机会。它didnt!还有它does not... :(

这是脚本:

#!/bin/bash

if ps -Al | grep -v grep | grep -q node 
then
        date > /etc/nodeCheck.log 
else
        date > /dev/null 
fi

该 .sh 的权限正确,使用的路径存在,正在运行

$ps -A | grep -v grep | grep -q node

不返回任何内容并且

$echo $?
1

那么它不应该去 else 块吗? Node是开机后启动的进程。无论是由 cron 运行还是由我通过 SSH 运行时,shell 脚本都无法正常工作。

我在这里错过了一些基本的东西吗?

TIA

Niko


除非你在跑步BSD ps,你应该能够使用-C旗帜或pgrep

-C cmdlist      Select by command name. This selects the processes whose executable 
                name is given in cmdlist.

例如,

if ps -C node > /dev/null
then
        date > /etc/nodeCheck.log 
else
        date > /dev/null 
fi

or

if pgrep node > /dev/null
then
        date > /etc/nodeCheck.log 
else
        date > /dev/null 
fi
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于检查进程是否正在运行的 shell 脚本 的相关文章

随机推荐