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"

それでは、うまくいかないのは何ですか?

これはまた2つの質問をもたらします。サービスに書き込み権限をどのように付与しますか/usr/share/wallpapers?ラップトップが実際にインターネットに接続されている場合にのみサービスを開始するにはどうすればよいですか?

ベストアンサー1

おすすめ記事