crontabは背景を変更するスクリプトを実行しません。

crontabは背景を変更するスクリプトを実行しません。

私のGNOMEデスクトップで壁紙とスクリーンセーバーを変更するスクリプトがあります。手動で実行するとうまくいきますが、cronに入れても実行されません。ファイルが実行可能です。

クローンタスクを追加しました。クローンタップ-e

スクリプトは次のとおりです。

#!/bin/bash

# change_background - Change desktop background and lockscreen background randomly

# Export DBUS_SESSION_BUS_ADDRESS environment variable
euid=$(id --real --user)
pid=$(pgrep --euid $euid gnome-session)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$pid/environ|cut -d= -f2-)

# Wallpapers directory
dir="/home/myuser/Pictures/Wallpapers"

# Wallpaper and screensaver files
background=$(ls $dir/* | shuf -n1)
screensaver=$(ls $dir/* | shuf -n1)

# Set the wallpaper and screensaver
gsettings set org.gnome.desktop.background picture-uri file://$background
gsettings set org.gnome.desktop.screensaver picture-uri file://$screensaver

私のスクリプトは私のbinディレクトリにあります。/ホーム/myuser/空PATH変数に追加されます。

クローンタップ-l出力:

# ┌───────────── minute (0 - 59) 
# │ ┌───────────── hour (0 - 23) 
# │ │ ┌───────────── day of month (1 - 31) 
# │ │ │ ┌───────────── month (1 - 12) 
# │ │ │ │ ┌───────────── day of week (0 - 6) (Sunday to Saturday; 
# │ │ │ │ │ 7 is also Sunday on some systems) 
# │ │ │ │ │ 
# │ │ │ │ │ 
# * * * * * command
#
# --- Change background every minute --- #
#
* * * * * change_background 
#
# --- ------------------------------ --- #

私の質問は、cronが私のスクリプトを実行しないのはなぜですか?私は何が間違っていましたか?

ベストアンサー1

質問あるようだcrontabの環境が正しく設定されていないため、PATHスクリプトが見つかりません。ユーザーのシェル初期化ファイルはcronによって実行されないため、そのファイルPATHの設定やその他の変数はcronジョブには役に立ちません。

この問題はいくつかの方法で解決できます。

PATH1つは、crontabで単に設定(および特定の値を必要とする他の変数)することです(これにより、スクリプトの変数の値も変更されます)。他のすべての職業クローンタブから):

PATH=/home/myuser/bin:$PATH

もう一つは、絶対パスを使用してスクリプトを実行することです。

* * * * * /home/myuser/bin/change_background

実行中の他のタスクでPATHスクリプト自体が使用する特定の項目に対して変数を個別に変更する必要がある場合(これは、PATHスクリプト自体で最初に設定されるか、たとえばで始まる)、env PATH=... /some/path/programより良いオプションです。

おすすめ記事