私のcrontabは次のようなものです(GNOMEテーマを変更しようとしています)
crontab -l
0 5 * * * /usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adapta'
30 21 * * * /usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adapta-Nokto'
また、このファイルを作成しました
echo $USER
nikhil
cat /etc/cron.allow
nikhil
Crontabで説明されているようにコマンドを実行すると、これらの両方が機能します。
私がいくつかのステップを逃したかどうか教えてもらえますか?
編集:
スクリプトファイルを作成し、cronで実行します。
export TERM=xterm-256color
TimeHr=$(date +%H)
if ((${TimeHr}>18 || ${TimeHr}<5)); then
#if [${TimeHr} -gt 11 || ${TimeHr} -lt 5]; then
mkdir ${HOME}/Documents/TestNight
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adapta'
else
mkdir ${HOME}/Documents/TestDay
/usr/bin/gsettings set org.gnome.desktop.interface gtk-theme 'Adapta-Nokto'
fi
これはcrontabです
$ crontab -l
36 5,19,23 * * * bash /home/nikhil/GnomeThemeChange
@reboot bash /home/nikhil/GnomeThemeChange
cron
は、テストフォルダーを作成できるため機能します。しかし、cron内でgsettings
を実行するにはどうすればよいですか?
提案してくれたTomášPospíšekに感謝します。
スクリプトに次を追加します。
PID=$(pgrep gnome-session | tail -n1)
export DBUS_SESSION_BUS_ADDRESS=$(grep -z DBUS_SESSION_BUS_ADDRESS /proc/$PID/environ|cut -d= -f2-)
Cronが機能していないことを確認していますか?次のような行を追加する場合
*/1 * * * touch /tmp/foobar123
crontabに追加すると、ファイルは/tmp
に表示されますか?
そのファイルが1分ほど経っても表示されない場合は、
ps auxw | grep cron
または
Sudo service cron status
Cronが実行されていない場合は、cronで起動してみてください
Sudo service cron start
しかし、上記のコマンドの問題は、gsettings
を実行するためにcron
の環境を正しく設定する必要があることです。