저는 Debian Linux를 실행하는 BeagleBone Black을 사용하고 있는데 프로그램을 테스트할 때 가끔 무선 연결이 끊어집니다. 이것 자체가 반드시 문제가 되는 것은 아니지만, 로봇에서 이것을 실행하고 있기 때문에 로봇에서 실행 중인 프로그램을 중지할 수 없다면 나쁜 일이 발생할 수 있습니다. BBB(또는 일반적으로 Linux)에서 연결이 끊어졌을 때 이를 감지하고 현재 실행 중인 프로그램 내에서 응답하거나 별도의 스크립트를 실행하여 모든 것을 안전한 상태로 만들 수 있는 방법이 있습니까? 몇 가지 내용을 읽고 SIGHUP을 사용해 보았지만 실제로는 작동하지 않습니다. (로컬 SSH 프로세스를 강제 종료한 후에도 모터가 계속 실행됩니다.)
답변1
매 n(밀리초)초마다 원격 연결을 통해 신호를 보내고 신호를 수신하지 못하는 경우 조치를 취하도록 하는 일종의 감시 스크립트를 실행할 수 있습니다.
바라보다쉘 스크립트에 시간 초과를 도입하는 방법은 무엇입니까?expect
시간 초과 시 메시지를 인쇄하는 스크립트의 예입니다. 이를 변경하여 안전한 종료를 생성할 수 있습니다.
Watchdog echo(localhost) 및 Expect(로봇)는 동일한 SSH를 통해 연결되어야 합니다(예: SSH 포트 전달을 통해). 이렇게 하면 ssh 연결을 끊을 때 감시 장치도 종료되고 안전 종료 스크립트가 시작됩니다.
답변2
나는 BBB에 대해 모르지만 heemayl이 말했듯이 screen (또는 더 사용자 친화적인 tmux)을 사용할 수 있습니다.
이러한 도구를 사용하면 원격 컴퓨터에 연결하고, 원하는 작업(예: 스크립트 시작)을 수행하고, 세션을 분리하고 나중에 다시 연결할 수 있습니다. tmux의 장점은 컴퓨터에서 여러 세션을 쉽게 생성하고 이를 여러 탭으로 분할할 수 있다는 것입니다.
이것이 당신이 찾고 있는 것입니까?
답변3
mosh
신뢰할 수 없는 연결을 위해 수정된 SSH와 유사한 것이 무엇인지 조사하고 싶을 수도 있습니다 . ~에서웹사이트:
로밍을 허용하고 간헐적인 연결을 지원하며 지능형 로컬 에코 및 사용자 키 입력의 라인 편집을 제공하는 Mosh(Mobile Shell) 원격 터미널 애플리케이션입니다.
Mosh는 SSH를 대체합니다. 특히 Wi-Fi, 셀룰러 네트워크 및 장거리 링크를 통해 더욱 강력하고 반응성이 뛰어납니다.