检查远程进程是否正在运行(linux)

时间:2016-07-29 19:38:49

标签: linux ssh process

我有以下代码来检查脚本(名为my_script.sh)是否正在运行:

ps cax | grep my_script.sh > /dev/null
if [ $? -eq 0 ]
then
    echo "Process is running."
else
    echo "Process is not running."
fi

但是,我想修改它以检查进程是否在另一台计算机上运行,​​而没有直接使用ssh,因为如果我运行它,这会让我失去当前脚本在循环中。

从本质上讲,我想这样做:

ssh otherMachine
ps cax | grep my_script.sh > /dev/null
if [ $? -eq 0 ]
then
    echo "Process is running."
else
    echo "Process is not running."
fi
ssh originalMachine

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:4)

我不确定这是你在找什么,但是你可以在ssh调用中直接执行远程机器中的check命令。返回值应对应于远程计算机中调用的命令的返回值。

当然,您需要启用无密码身份验证方法(例如,ssh密钥)。

ssh otherMachine "ps cax | grep my_script.sh > /dev/null"
if [ $? -eq 0 ]
then
    echo "Process is running."
else
    echo "Process is not running."
fi

答案 1 :(得分:0)

这是检查程序是否在远程位置运行的简单解决方案。

ssh root@192.168.22.12 -p 22 -t "pgrep -fl while.sh"

if [ $? -eq 0 ]; then echo "Process is running."; else   echo "Process is not running."; fi