Systemd 서비스는 시작 시 네트워크에서 데이터를 가져오는 데 사용됩니다.

Systemd 서비스는 시작 시 네트워크에서 데이터를 가져오는 데 사용됩니다.

/usr/share/wallpapers랩톱을 다시 시작할 때마다 unsplash에서 임의의 사진을 얻고 싶습니다 .

이 서비스를 작성하려는 첫 번째 시도는 다음과 같습니다.

[Unit]
Description=Fetch random picture from unsplash
After=network-online.target

[Service]
User=root
Type=idle
ExecStart=/home/nicolas/.local/bin/fetch_unsplash_1920x1080

[Install]
WantedBy=network-online.target

활성화하고 재부팅했는데 다음과 같은 이유로 실패했습니다.

déc. 19 13:21:24 localhost.localdomain systemd[1]: Started Fetch random picture from unsplash.
déc. 19 13:21:24 localhost.localdomain systemd[1728]: fetch_unsplash.service: Failed to execute command: Permission denied
déc. 19 13:21:24 localhost.localdomain systemd[1728]: fetch_unsplash.service: Failed at step EXEC spawning /home/nicolas/.local/bin/fetch_unsplash_1920x1080: Permission denied
déc. 19 13:21:24 localhost.localdomain systemd[1]: fetch_unsplash.service: Main process exited, code=exited, status=203/EXEC
déc. 19 13:21:24 localhost.localdomain systemd[1]: fetch_unsplash.service: Failed with result 'exit-code'.
~

스크립트 경로가 정확하고 실행 권한이 있습니다.

코드(및 향후 개선을 위한 기반)는 다음과 같습니다.

#!/usr/bin/bash

location="$1"
if [ -z "$location" ]
then
    location="/usr/share/wallpapers"
fi
name="random_unsplash_1920x1080.jpg"
wget -q "https://picsum.photos/1920/1080/?random" --output-document "$location/$name"

그렇다면 작동하지 않는 것은 무엇입니까?

이는 또한 두 가지 질문을 불러일으킵니다. 서비스에 쓰기 권한을 어떻게 부여합니까 /usr/share/wallpapers? 노트북이 실제로 인터넷에 연결되어 있을 때만 서비스를 시작하려면 어떻게 해야 하나요?(이렇게 하는 것이 맞나요?)

관련 정보