![Linux에서 재부팅 후 시작된 ROS 스크립트를 중지하는 방법 [닫기]](https://linux55.com/image/132115/Linux%EC%97%90%EC%84%9C%20%EC%9E%AC%EB%B6%80%ED%8C%85%20%ED%9B%84%20%EC%8B%9C%EC%9E%91%EB%90%9C%20ROS%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%A4%91%EC%A7%80%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
특정 서버가 실행 중인지 확인하고, 충돌이 나면 다시 시작하는 스크립트를 만들었습니다. (스크립트는 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
이를 통해 사용자로 로그인하고 파일을 다시 편집하거나 프로세스를 종료할 수 있습니다.