systemctl 사용자 정의 서비스는 부팅 시 시작되지 않지만 수동으로 시작할 수 있습니다.

systemctl 사용자 정의 서비스는 부팅 시 시작되지 않지만 수동으로 시작할 수 있습니다.

RPI에 데비안 확장이 있습니다. 부팅 시 사용자 정의 서비스를 시작해야 합니다.

/lib/systemd/system/lora-packet-forwarder.service

서비스가 활성화되었지만 비활성화된 것으로 나타납니다.

lora-packet-forwarder.service - LoRa Packet Forwarder
   Loaded: loaded (/lib/systemd/system/lora-packet-forwarder.service; enabled; vendor preset: enabled)
   Active: inactive (dead)

조사하다:

sudo journalctl -f -u lora-packet-forwarder.service 

--아무것도 표시되지 않습니다.

콘솔에서 수동으로 시작하면 정상적으로 작동합니다.

sudo systemctl start lora-packet-forwarder.service

lora-packet-forwarder.service - LoRa Packet Forwarder
   Loaded: loaded (/lib/systemd/system/lora-packet-forwarder.service; enabled; vendor preset: enabled)
   Active: active (running) since Fri 2019-07-05 15:01:48 BST; 3s ago
  Process: 554 ExecStartPre=/home/pi/lora_gateway/reset_lgw.sh start (code=exited, status=0/SUCCESS)
 Main PID: 570 (lora_pkt_fwd)
   Memory: 568.0K
   CGroup: /system.slice/lora-packet-forwarder.service
           └─570 /home/pi/packet_forwarder/lora_pkt_fwd/lora_pkt_fwd

Jul 05 15:01:47 raspberrypi systemd[1]: Starting LoRa Packet Forwarder...
Jul 05 15:01:47 raspberrypi reset_lgw.sh[554]: Accessing concentrator reset pin through GPIO25...
Jul 05 15:01:48 raspberrypi systemd[1]: Started LoRa Packet Forwarder.

서비스 파일의 내용은 다음과 같습니다.

[Unit]
Description=LoRa Packet Forwarder

[Service]
WorkingDirectory=/home/pi/packet_forwarder/lora_pkt_fwd
ExecStartPre=/home/pi/packet_forwarder/lora_pkt_fwd/reset_lgw.sh start
ExecStart=/home/pi/packet_forwarder/lora_pkt_fwd/lora_pkt_fwd


[Install]
WantedBy=multi-user.target

lora_pkt_fwd를 시작하기 전에 GPIO 핀을 재설정하는 작은 쉘 스크립트가 있습니다. 다음은 이 두 파일의 권한입니다.

-rwxr-xr-x 1 pi pi  1485 Jul  3 21:38 reset_lgw.sh
-rwxr-xr-x 1 pi pi 144680 Jul  3 20:17 lora_pkt_fwd

설정과 관련하여 다음을 시도했습니다.

  1. 쉘 스크립트로서의 "bash" -ExecStartPre=bash /home/pi/packet_forwarder/lora_pkt_fwd/reset_lgw.sh start
  2. [Unit] 섹션에서 After=network.target, Before=network-online.target, Wants=network-online.target을 결합해 보세요.
  3. Type=simple을 시도하고 [Service] 섹션에서 분기하십시오.
  4. 만약을 대비해 서비스를 비활성화/활성화하고 데몬을 다시 로드해 보십시오.

cron 작업 등을 통해 이 작업을 수행할 수 있지만 제대로 수행하고 싶습니다.

답변1

여기에서 올바른 문서를 찾는 사람이 바로 내 일입니다.

[Unit]  
Description=Packet forwarder for LORA-Helium  
After=network.target  
StartLimitIntervalSec=0  

[Service]  
Type=simple  
Restart=always  
RestartSec=1  
StartLimitAction=reboot  
User=pi  
WorkingDirectory=/home/pi/sx1302_hal/packet_forwarder/  
ExecStartPre=bash /home/pi/sx1302_hal/packet_forwarder/reset_lgw.sh start  
ExecStart=/home/pi/sx1302_hal/packet_forwarder/lora_pkt_fwd -c  /home/pi/sx1302_hal/packet_forwarder/global_conf.json  

[Install]  
WantedBy=multi-user.target  

관련 정보