Linuxmint 18 Cinnamon 64 ビットから Linuxmint 17.3 Cinnamon 64 ビットに戻しましたが、cron ジョブを作成できなくなりました。ルート (/) とホーム (/home/my-user-name) のパーティションが別々にあり、17.3 のインストール時にホーム パーティションは変更しませんでした。
cronジョブの作成にいろいろと問題があったので、gnome-schedulerをインストールして、その方法でcronジョブを作成しようとしました。次のような警告ダイアログボックスが表示されました。
「警告: 実行されたタスクの作業ディレクトリ」
メッセージの内容は
「実行されたタスクの作業ディレクトリに関する注意: 定期的なタスクはホーム ディレクトリから実行されます。」
[OK] をクリックすると、ジョブが次のようにターミナルに表示されます。
$ crontab -l
* * * * * env DISPLAY=:0 /home/my-user-name/wallpaper_changer.sh >/dev/null 2>&1 # JOB_ID_4
私の壁紙は、本来あるべきように毎分変化しません。スクリプトはコマンド ラインから問題なく実行され、出力は生成されません。スクリプトの権限は 8 進数で 744 です。これはすべて Mint 18 で問題なく動作しましたが、スクリプトは 1 日に 1 回だけ実行するようにしました。テスト目的でのみ、毎分実行するように設定しました。
通常のcronジョブ編集方法を試すと、
$ crontab -e
Temporary crontab no longer owned by you.
Error while editing crontab
すると、コメント行でいっぱいの通常の crontab テンプレートではなく、空の nano バッファが表示されます。nano バッファをファイル /tmp/crontab.lmuwIe/crontab に書き込もうとすると、次のエラー メッセージが表示されます。
[ /tmp/lmuwIe/crontab の書き込みエラー: アクセス権が拒否されました ]
ついに、
$ ls -l /usr/bin/crontab
-rwsr-xr-x 1 root crontab 35984 Feb 9 2013 /usr/bin/crontab
再び cron ジョブを作成できるようになりますか?
$ sudo ls -la /var/spool/cron/crontabs
total 12
drwx-wx--T 2 root crontab 4096 Sep 25 03:23 .
drwxr-xr-x 5 root root 4096 Sep 23 00:05 ..
-rw------- 1 root my-user-name 188 Sep 25 03:23 my-user-name
@Gilles まあ、かなり進歩しました。cronを再インストールすることで、すべてのエラーの異常を取り除きました。今では、
$ crontab -e
を除外する何年も使ってきたスクリプトが実行されないのです。
しかし、別のスクリプトは実行されるので、困惑しています。
私が今持っているものは次のとおりです:
$ crontab -l
* * * * * env DISPLAY=:0.0 /home/my-user-name/wallpaper_changer.sh
* * * * * date >> /home/my-user-name/crontest.txt
(cron ジョブの前の 20 行ほどのコメントは含めませんでした。)
日付ジョブは期待通りに実行されますが、wallpaper_changer.sh ジョブは何も実行しません。私はこれを何年も使用してきましたが、今は機能しません。スクリプトはコマンド ラインからは正常に動作し、cron からも正常に動作していました。
$ ls -l /home/my-user-name/wallpaper_changer.sh
-rwxr-xr-x 1 my-user-name my-user-name 694 Jun 2 14:30 /home/my-user-name/wallpaper_changer.sh
$ echo $DISPLAY
:0.0
これは一体何なの?
答え1
crontab バイナリの権限を編集し、新規インストール時に元の状態に戻す必要があります。
機能しない権限:
ls -la /usr/bin/crontab
-rwsr-xr-x 1 root crontab 40264 Oct 7 2017 /usr/bin/crontab
アクションは、root として、または sudo を使用して実行します。
chmod g+s /usr/bin/crontab
chmod u-s /usr/bin/crontab
作業権限:
ls -la /usr/bin/crontab
-rwxr-sr-x 1 root crontab 40264 Oct 7 2017 /usr/bin/crontab
新規の作業インストールから取得され、作業権限はインストール中に設定されます。
後からなぜ変更されたのかは分かりません。
答え2
$ sudo ls -la /var/spool/cron/crontabs total 12 drwx-wx--T 2 root crontab 4096 Sep 25 03:23 . drwxr-xr-x 5 root root 4096 Sep 23 00:05 .. -rw------- 1 root my-user-name 188 Sep 25 03:23 my-user-name
の所有権/var/spool/cron/crontabs/my-user-name
が間違っています。あなたが所有者である必要があります。これが、cron がファイルを上書きできない理由を説明しています。また、ファイルは通常crontab
グループ内にありますが、それは問題ではないと思います。
これを修正するには、
sudo chown my-user-name /var/spool/cron/crontabs/my-user-name
何が原因なのかはわかりませんし、システムのダウングレードとどのように関連しているのかもわかりません。根本的な問題が別の問題を引き起こす可能性があります。