Cronjobは `/usr/bin/python`を実行しますが、 `usr/bin/xrdb`は実行しません。

Cronjobは `/usr/bin/python`を実行しますが、 `usr/bin/xrdb`は実行しません。

最初のクローンジョブを作成しようとしています。私もPythonを知っていますが、bashスクリプトに初めて触れました。私は次の質問について混乱しています。

これは以下を使用して作成されたcronjobファイルですcrontab -e

*/1 * * * * /home/darren/.bash_scripts/urxvt_colors.sh

コンテンツurxvt_colors.sh:

#!/bin/bash

python  ~/.Py_Scripts/xr_random_colors.py
xrdb ~/.Xresources

これが私を混乱させることです。したがって、cronジョブのPython部分はpython ~/.Py_Scripts/xr_random_colors.py毎分実行されます。このPythonスクリプトは私のファイルのカラースキームを変更します~/.Xresources。毎瞬確認しながら実際にこのようなことが起きていることを確認しました。ただし、xrdb ~/.Xresourcesファイルは更新されません。

which pythonプログラム/usr/bin/pythonwhich xrdbパフォーマンスの操作/usr/bin/xrdb。それでは、すべてサーバーで実行されますが、/usr/binなぜPythonスクリプトのみが実行されますか?

また、./urxvt_colors.sh端末でスクリプトを手動で実行すると、期待どおりに機能し、Pythonスクリプトも実行されます。xrdb ~/.Xresources

ここで何が起こっているのでしょうか?

答え1

スクリプトをこのように変更してみてください

#!/bin/bash

python  ~/.Py_Scripts/xr_random_colors.py && xrdb ~/.Xresources

ファイルのフルパスを使用することをお勧めします。

PS たぶんスクリプトを実行するときに DISPLAY 変数を定義する必要があります。

*/1 * * * * DISPLAY=:0 /home/darren/.bash_scripts/urxvt_colors.sh

関連情報