RPi에서 두 프로그램을 동시에 실행하는 방법

RPi에서 두 프로그램을 동시에 실행하는 방법

두 개의 활성 라즈베리 파이가 있습니다. 그들은 모두 스크립트를 가지고 있습니다:adxl345test.py

이 스크립트는 가속도계에서 데이터를 수집합니다. 나는 일반적으로 하나의 RPi에서 스크립트를 시작한 다음 다른 RPi에서 스크립트를 시작합니다. 하지만 이제는 스크립트를 동시에 시작하고 싶습니다. 그래서...

  • 하나의 RPi에서 두 개의 RPi의 스크립트를 실행할 수 있습니까?

이러한 방식으로 하나의 RPi는 자체 스크립트와 다른 RPi의 외부 스크립트를 실행하기 시작합니다.

sudo python adxl345test.py콘솔에 글을 쓰고 Enter를 눌러 각 RPi에서 스크립트를 트리거합니다. 시계는 PTPd와 동기화됩니다. 내가 찾고 있는 것은 RPi 콘솔에 단일 명령을 작성하여 스크립트를 트리거하는 것입니다. 현재 정확도는 그다지 중요하지 않습니다.

RPi가 인터넷에 연결되어 있습니다.


하나의 명령으로 두 스크립트를 모두 실행하는 방법을 찾았습니다. 여기있어:

pi@Sensor1:~ $ sudo python adxl345test.py & ssh pi@ip sudo python adxl345test.py

그러나 저는 ssh를 사용하고 있기 때문에 두 번째 RPi에서는 스크립트를 실행하기 전에 비밀번호가 필요합니다. 그래서...

  • 비밀번호를 건너뛸 수 있는 방법이 있나요?
  • 위 명령어에 비밀번호를 직접 쓸 수 있나요?

sshpass( sudo apt-get install sshpass)를 사용하여 명령에 직접 비밀번호를 입력했습니다. 명령은 다음과 같습니다:

pi@Sensor1:~ $ sudo python adxl345test.py & sshpass -p 'password' ssh pi@ip sudo python adxl345test.py

이제 단 하나의 명령으로 데이터 수집을 시작할 수 있지만 여전히 동시에 시작되지 않습니다(약 1초 간격).

  • 시간적으로 더 가깝게(0.1초 이하) 시작하게 할 수 있나요?
  • 또한 데이터 로깅을 중지하는 방법은 무엇입니까? 일반적으로 Ctrl+c를 사용하지만 이는 하나의 RPi에서 단일 스크립트를 실행할 때만 작동합니다.

답변1

두 RPi가 서로 통신할 수 있는 경우 RPi 중 하나에 작은 셸 스크립트를 작성하고 SSH 명령을 사용하여 원격 스크립트를 시작한 다음 로컬 스크립트를 시작합니다.

이를 위한 특정 SSH 설정이 있는 경우 RPi에 민감한 개인 키를 남겨두면 위험할 수 있으므로 이 목적을 위해 SSH 키 쌍을 생성하십시오.

관련 정보