네트워크가 systemd에 연결된 후 .sh 파일을 통해 rclone 서비스를 시작합니다.

네트워크가 systemd에 연결된 후 .sh 파일을 통해 rclone 서비스를 시작합니다.

시스템 시작/재시작 시 네트워크 연결을 수신하자마자 rclone 서비스가 드라이브를 마운트하도록 하려고 합니다.

지금까지 터미널을 통해 모든 것을 올바르게 설치했습니다. 기본적으로 실행하기 위해 간단한 .sh 파일을 작성했습니다.

#!/bin/sh
! mountpoint -q /home/{user}/{location}/{location} || umount /home/{user}/{location}/{location}    

rclone mount {nameofservice}: /home/{user}/{location}/{location} --config /home/{user}/.config/rclone/rclone.conf

터미널에서 실행하면 예상대로 작동합니다.

systemd를 사용하여 네트워크 연결을 구현한 후 온라인 튜토리얼을 따라 작동하도록 하고 755 +x 권한으로 다음 파일을 만들었습니다./etc/systemd/system/{nameof.service}

[Unit]
Description=Starts {nameof.service} rclone service on startup
Wants=network-online.target
After=network-online.target
[Service]
Type=simple
User={user}
Group={group}
ExecStart=/home/{user}/{nameofsh}.sh
TimeoutStartSec=5
RemainAfterExit=yes
[Install]
WantedBy=network-online.target

특정 사용자로 실행하려면 필요합니다. 이 파일을 만든 후 나는 또한 다음을 수행했습니다.

systemctl daemon-reload
systemctl enable {nameof.service}

이 튜토리얼에서는 활성화 명령이 심볼릭 링크 생성에 대한 메시지를 반환할 것으로 예상했지만 이해하지 못했습니다. 새 줄로 크기를 조정할 뿐이지만 그게 중요하다고 생각하지 않습니다.

어쨌든 실행하면 예상한 결과가 나오지만 systemctl restart {nameof.service}시작이나 재부팅에서는 결과가 나오지 않습니다.

이 시점에서는 내가 어떻게 잘못되었는지 잘 모르겠으며 도움을 주시면 감사하겠습니다.

답변1

설정 WantedBy=default.target하고 나머지는 변경하지 않고 그대로 두면 서비스가 다음과 같이 작동합니다.기본 대상, 이는 기본 시스템 부팅 대상을 나타냅니다. 이렇게 하면 네트워크를 사용할 수 있을 때 부팅 프로세스 중에 스크립트가 실행됩니다.

또는 단순히 심볼릭 링크가 누락된 경우 다음을 사용하여 수동으로 추가할 수 있습니다.ln -s /etc/systemd/system/{nameof.service} /etc/systemd/system/multi-user.target.wants/{nameof.service}

관련 정보