2016-07-29 2 views
1

У меня есть следующий код, который будет проверять, если скрипт (названный my_script.sh) работает:Проверьте, если удаленный процесс запущен (Linux)

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

Однако, я хотел бы изменить это, чтобы проверить, процесс выполняется на другой машине, без ssh'ing напрямую, так как это нарушает меня из текущего скрипта, если я запускаю его в цикле.

В сущности, я хотел бы сделать это:

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 

Любая помощь будет оценена. Благодаря!

+0

Скопируйте скрипт в 'otherMachine' и запустить его как' SSH otherMachine check_script.sh' – Jakuje

+0

@Jakuje Я хотел бы сохранить скрипт на 'originalMachine', поскольку в конечном итоге план для выполнения дополнительных скриптов в 'originalMachine' процесс не выполняется на' otherMachine'. – CdSdw

+0

Что вы имеете в виду именно «это вырывает меня из текущего скрипта, если я запускаю его в цикле»? Вы имеете в виду, что удаленное соединение ssh не заканчивается? – nephtes

ответ

1

Я не уверен, что это то, что вы ищете, но вы можете выполнить команду проверки в удаленном компьютере непосредственно внутри вызова ssh. Возвращаемое значение должно соответствовать возвращаемому значению команды, вызываемой на удаленном компьютере.

Конечно, вам необходимо включить метод аутентификации без пароля (например, 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 
0

Это простое решение проверить работу программы или нет на удаленном месте.

ssh [email protected] -p 22 -t "pgrep -fl while.sh"

if [ $? -eq 0 ]; then echo "Process is running."; else echo "Process is not running."; fi 
Смежные вопросы