시작시 자동으로 라즈베리 파이 시작 프로그램


22

센서가있는 두 개의 Raspberry Pi (runnnig Raspbian)와 데이터를 수집하는 기지국 Raspberry Pi로 구성된 무선 센서 네트워크를 구축했습니다.

시스템을 실행할 때마다 각 센서 장치에 로그인하고 두 개의 루핑 파이썬 프로그램을 실행해야합니다. 하나는 센서 데이터 수집 용이고 다른 하나는 기지국으로 전송하기위한 것입니다.

이 장치는 인터넷에 액세스 할 수없는 어색한 위치로 이동하므로 모니터, 키보드 및 마우스를 가지고 다니는 것이 쉽지 않습니다. 시작할 때 자동으로 로그인하고 프로그램 1을 실행 한 다음 프로그램 2를 자동으로 실행하도록 설정할 수있는 방법이 있습니까?

답변:


15

이 2 개의 프로그램을 rc.local 파일에 추가 할 수 있습니다. 시작시 실행됩니다. 자세한 정보는 http://www.raspberrypi.org/documentation/linux/usage/rc-local.md 에서 찾을 수 있습니다 .


3
없는 사람들을 여행하는 것이 문서의 점은 : 사용하지 마십시오 sudo에서 rc.local자체. 부팅시 루트 권한으로 실행됩니다. &프로그램이 빠르게 무언가를 수행하고 종료하지 않는 한 사용에 대해주의를 기울여야합니다 .
goldilocks

네트워크가 가동 된 후 프로그램을 실행 /path/to/somescript.sh &하려면 rc.localwhile ! ping -c 1 -W 1 8.8.8.8; do sleep 1; done;프로그램을 시작하기 전에 스크립트를 추가 하십시오.
Tor Klingberg

+ goldilocks 문제는 rc.localsudo를 미리 실행하지 않고는 쓰기 권한을 얻을 수 없다는 것 입니다. 당신은 무엇을 제안합니까?
Rincewind

15

Xer0FyT의 대답은 아마도 PI에서 프로그램을 자동으로 시작하는 가장 간단한 방법 일 것입니다. 그러나 프로세스 모니터링이 없기 때문에 다시 시작되지 않기 때문에 시작된 프로그램이 어떤 이유로 충돌하면 문제가 발생합니다. 개인적으로 daemontools를 대신 사용하는 것이 좋습니다 . 설정이 매우 간단하며 Raspbian에 포함되어 있습니다. 기본적으로 run프로그램을 시작 하는 쉘 스크립트가 포함 된 서비스 디렉토리를 작성합니다 . 그러면 daemontools는 어떤 이유로 든 충돌이 발생하면 프로그램이 시작되고 다시 시작되는지 확인합니다.

daemontools를 설정하는 것은 매우 간단합니다. 다만

apt-get install daemontools daemontools-run

그런 다음 실행 가능한 실행 스크립트가 포함 된 서비스 디렉토리를 작성하십시오.

# create the service directory
mkdir -p /service/my-service

# create the run script
cat > /service/my-service/run <<EOF
#!/bin/sh
echo "I'm an example service executed by daemontools"
sleep 1
# Replace those 2 lines with a real call to your program like this:
# exec /my/program.py --arguments
EOF

# make it executable
chmod 755 /service/my-service/run

보고 /service/my-service/run편집하여 실행하는 대신 자신의 프로그램을 시작하십시오 echo. 완료되면 해당 디렉토리를 symlink에 연결 /etc/service하여 daemontools가 자동으로 (다시) 시작하십시오.

cd /etc/service
ln -s /service/my-service .

약 5 초 후에 프로그램이 실행됩니다. 사용하여 시작 / 중지 할 수 있습니다

# stop it
$ svc -d /service/my-service

# start it
$ svc -u /service/my-service

syslog에 로그인하는 것도 가능합니다. 따라서 프로그램의 출력이 손실되지 않습니다. 나는 이것에 대해 더 완전한 블로그 게시물을 썼습니다 : https://info-beamer.com/blog/running-info-beamer-in-production


9
  1. Raspian에서 메뉴, 환경 설정, 주 메뉴 편집기를 클릭하십시오.
  2. 환경 설정을 클릭하고 LXSession의 기본 애플리케이션을 확인하십시오.
  3. 확인을 클릭하고 주 메뉴 편집기를 닫으십시오
  4. 이제 메뉴를 클릭하고 환경 설정에서 LXSession의 기본 애플리케이션을 클릭하십시오.
  5. LXSession 구성이 열립니다
  6. 자동 시작을 클릭하십시오
  7. 수동 자동 시작 응용 프로그램에서 java 명령 줄에 붙여 넣습니다.
  8. 추가 클릭
  9. LXSession 구성 애플리케이션을 닫고 파이를 재부팅하십시오.

    재부팅 후 자바 앱이 실행되어야합니다.


여기서 조금 더 자세한 내용이 필요하다고 생각합니다
Darth Vader

나를 위해 잘 작동했습니다!
jbyrnes

감사합니다 @Palmeta! 자동 시작에 하나의 프로그램이 있었지만 실제로 설정 한 위치를 잊었습니다. 나는 모든 곳을 보았다. 구성 도구를 사용하여 마지막으로 다시 찾아서 비활성화 할 수 있다고 설명했습니다. 100 포인트
파스칼 라머

2

cronPI의 일부 하우스 키핑 작업을 위해 이미 설치 했을 것입니다 .

를 검색 man 5 crontab하십시오 @reboot.


0

당신은 연구하고 싶을 수도 있습니다 service. 시스템의 init의 일부인 init 스크립트를 작성하여 적절한 실행 레벨에 둘 수 있습니다.

를 실행하십시오 man service.

다음은 초기화 스크립트 작성에 대한 안내서입니다. http://www.novell.com/coolsolutions/feature/15380.html


2
안타깝게도 systemdRaspbian을 포함한 대부분의 Linux 배포판을 향한 급진적 인 돌풍으로 OP가 시스템을 업데이트하여 sysV에서 인계받을 경우이 답변을 업데이트해야합니다 init... 8- (
SlySven

0

링크를 따르십시오 .

데스크탑에 test.txt가 있다고 가정하면 예를 들면 다음과 같습니다.

sudo nano /etc/xdg/lxsession/LXDE-pi/autostart
@leafpad /home/pi/Desktop/test.txt

그리고 작동합니다!

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.