Как остановить скрипт ROS, который запускается после перезагрузки - PullRequest
0 голосов
/ 25 апреля 2018

Я создал скрипт, который проверяет, работает ли определенный сервер, и перезапускает его в случае сбоя (скрипт выполняется бесконечно каждые 10 секунд).

Как я могу остановить / игнорировать / сломать скрипт? Я не могу выполнить какие-либо команды, и CTRL + C, CTRL + A, CTRL + Z НЕ работают.

Основная проблема также заключается в том, что сервер машины не работает, поэтому IP-адрес недоступен с MobaXterm. Я использую Ubuntu 14.04 на VirtualBox только с терминалом, без графического интерфейса!

RestartScript:

#! /bin/bash
while :
do
        COUNT="$(pgrep -f Odie | wc -l)"
        echo $'\n'
        echo "Number of Odie processes (COUNT) = $((COUNT))"
        echo "$(pgrep -fla Odie)"

        case "$(screen -ls | grep Odie | wc -l)" in
        0) echo "Restarting Odie:       $(date)" | sudo tee -a /var/log/OdieLog.txt
        bash -c "exec -a OnlyOdie ./screen_start.sh"
        ;;
        1) # all ok
        echo "Process is running:       $(date)" | sudo tee -a  /var/log/OdieLog.txt
        ;;
        2) echo "Removed double Odie:   $(date)"  | sudo tee -a /var/log/OdieLog.txt
        #kill $(pgrep -f OnlyOdie | awk '{print $1}')
        screen -ls | awk -vFS='\t|[.]' '/Odie/ {system("screen -S "$2" -X quit")}'
        ;;
        esac
sleep 10
done

screen_start.sh

#! /bin/bash
SCREEN_COUNT="$(screen -ls | grep Odie | wc -l)"

if [ "$SCREEN_COUNT" -eq 0 ]
then
        echo "SCREEN_COUNT = ZERO"
        screen -sdm ./start.sh -S Odie
fi

К сожалению, я не могу добавить содержимое файла ROS, так как не могу получить к нему доступ.

1 Ответ

0 голосов
/ 25 апреля 2018

Поскольку я не мог получить к нему доступ из других источников, я нашел способ переключаться между экранами в Linux, используя: CTRL + Alt + F1 (переходит к F6 ).

Это позволило войти в систему как пользователь и заново отредактировать файл / завершить процесс.

...