특정 서버가 실행 중인지 확인하고, 충돌이 나면 다시 시작하는 스크립트를 만들었습니다. (스크립트는 10초마다 무한히 실행됩니다.)
어떤 명령도 실행할 수 없고 CTRL+C, CTRL+A, CTRL+Z가 작동하지 않습니다.
주요 문제는 또한 머신 서버가 실행되지 않아 MobaXterm이 IP에 액세스할 수 없다는 것입니다.
스크립트를 중지/무시/중단하는 또 다른 해결 방법이 있습니까?
저는 VirtualBox에서 Ubuntu 14.04를 실행하고 있습니다. 터미널만 있고 GUI는 없습니다!
도움이 된다면 여기에 스크립트가 있습니다.
재시작 스크립트:
#! /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
다른 소스에서는 액세스할 수 없기 때문에 다음을 사용하여 Linux에서 화면을 전환하는 방법을 찾았습니다. ++ CTRL(이동).AltF1F6
이를 통해 사용자로 로그인하고 파일을 다시 편집하거나 프로세스를 종료할 수 있습니다.