저는 RPi3에서 Raspbian Jessie Lite를 실행하고 있습니다. 다음 위치에 파일을 만들었습니다 /etc/systemd/system/autostart.service
.
[Unit]
Description=Application
[Service]
User=root
ExecStart=/home/pi/autostart.sh
[Install]
WantedBy=multi-user.target
서비스가 올바르게 활성화되고 실제로 실행됩니다. 내 시작 스크립트의 소스는 다음과 같습니다.
#!/bin/sh
aplay -c2 -r48000 -fS16_LE < /dev/zero &
chmod 1777 /tmp
hciconfig hci0 up
/home/pi/bin/./app
내 앱이 실행되었지만 이상한 동작이 발생했지만 루트 콘솔에서 실행하면 /home/pi/bin/./app
문제가 발생하지 않습니다. 또한, 물론 autostart.sh
내 애플리케이션이 종료될 때까지 스크립트는 계속 실행됩니다.
두 가지 문제를 모두 해결하기 위해 백그라운드에서 실행해 보고 &
마지막에 추가했습니다. 아니면 출력을 파일 추가로 리디렉션하려고 했습니다 &> /home/pi/log.txt
. 두 경우 모두 내 응용 프로그램이 더 이상 실행되지 않습니다!
내가 무엇을 놓치고 있나요?
답변1
다음 사항이 누락되었을 수 있습니다.
Type=oneshot
[서비스] 섹션에 추가하세요 . 백그라운드로 설정할 필요가 없으며 출력을 파일로 리디렉션해도 구성 파일에서는 작동하지 않습니다. 출력은 이미 캡처되어StandardOutput
키를 사용하여 리디렉션되며, 기본적으로 시스템 저널로 전송됩니다.또한 단순히 파일을 생성한다고 해서 실행되는 것이 아니기 때문에 활성화시켜야 합니다. 달리다
systemctl enable autostart
또한 루트로 실행하게 되므로 /home/pi/bin/app
보안을 위해 원하는 것이 아닐 수도 있습니다. 루트로 실행할 필요가 없다면 앱을 다른 사용자로 실행하는 것을 고려해 보세요.