cron でうまく動作しないプログラム

テストでターミナルから実行すると動くが、定期実行したくて cron に設定するとうまく動作しないプログラムが有り、その対処を行った

結果としては cron の設定で先頭部分にパスなど環境変数の設定があるが、その部分に設定を追加してやる

SHELL=/bin/bash PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus */5 * * * * $HOME/bin/notify.sh

具体的には 1, 2 行目設定は既に済んでいて、5 行目以降の定期実行するプログラムの登録も済んでいるだろうから、修正/追記するのは 3, 4 行目

ただし設定する値は、環境によって異なるので、次の要領で調べてやる必要がある

$ env | grep -E '^(DBUS_SESSION_BUS_ADDRESS|DISPLAY)'

参考までに私が使っているツールで、対策なしでうまく動作しなかったのは

  • お知らせをポップアップする notify-send
  • Gnome/Keyring (gnome-keyring) を利用するツール
    • より具体的には、メール受信に使用している getmail でパスワードの管理として Gnome/Keyring を用いている