アップグレードしてから、ユーザーのcrontabは削除されました。これは今年これが起こったのは初めてではなく、毎回それを回復するのは苦痛です。
ユーザーのcrontabをバックアップできるようにしたいのですが、そのためにはどこに保存されているかを知る必要があります。
cron
パッケージを更新することの副作用だと思いますが、私は同意します-それは起こるべきことではありません。
アップグレードしてから、ユーザーのcrontabは削除されました。これは今年これが起こったのは初めてではなく、毎回それを回復するのは苦痛です。
ユーザーのcrontabをバックアップできるようにしたいのですが、そのためにはどこに保存されているかを知る必要があります。
cron
パッケージを更新することの副作用だと思いますが、私は同意します-それは起こるべきことではありません。
回答:
実際、これらのファイルを手作業で処理することはお勧めできません。crontab
manページごと:
各ユーザーは独自のcrontabを持つこと
ができますが/var/spool/cron/crontabs
、これらはのファイルですが、
直接編集することを意図したものではありません。
下のファイル/var/spool
は一時的/作業中と見なされます。そのため、おそらくアップグレード中に削除されますが、cron
パッケージのアップグレードスクリプトを詳しく見ると、この点が明らかになります。
とにかく、cronエントリをバックアップするか、ホームディレクトリのファイルに保存することをお勧めします。
crontab -e
crontabファイルをその場で作成するために使用していると思います。その場合、を実行してcrontabファイルの「コピー」を取得できますcrontab -l
。それをファイルにパイプして「バックアップ」を取得します。
crontab -l > my-crontab
次に、そのmy-crontabファイルを編集してエントリを追加または変更し、それをcrontabに渡すことで「インストール」できます。
crontab my-crontab
これは、と同じ構文チェックを行いcrontab -e
ます。
crontab -l
/var/spool/cron/crontabs/$USER
主にそのファイルに対する奇妙な許可のために通過するよりも簡単です。
iptables-save
cronのの。ニース...
/var/spool/cron/crontabs
複数のユーザーからのcrontabをキュレートしたり調べたりしたい場合は、突破するのが便利です。
sudo grep -rHin "$string" /etc/cron*
(文字列がコマンドであるかもしれない場所のようなdocker
、lftp
、iptables
、などまた、ユーザーのcrontabファイルを確認することをお勧めしますつまり、このQ&Aに私を導くものだ。。sudo grep -rHin "$string" /etc/cron* /var/spool/cron*
/var/spool/cron/crontabs
ユーザー名の下に保存されたフォルダー内。
crontabとPostfixのインストールがブート後に壊れ続ける理由をようやく発見しました。それは本当に愚かな理由ですが...
RAMドライブ/var/spool
としてマウントしていましたtmpfs
。
ばかげているように聞こえますが、古いSSDの調整方法の1つに従って、SSDの寿命を延ばしました。そうすることで、私は盲目的に取り付けられた/tmp
、/var/tmp
と/var/spool
のようにtmpfs
影響のことを考えずに。またはの/var/spool
ようなもので、セッションの期間中にのみ有用だと思いました。私は明らかに間違っていました。/proc/
/run/
/tmp
tmpfsとしてマウントしても安全ですが、/var/tmp
orではありません/var/spool
。 /tmp
再起動時に失われる可能性のある一時ストレージに使用されます。 /var/tmp
再起動後に残る一時ストレージに使用されます。そして、あなたが発見したように、/var/spool
データを処理するためのものであり、再起動後もデータは残ります。
システム内のすべてのユーザーからのすべてのcronジョブをリストするには:
for user in $(cut -f1 -d: /etc/passwd)
do
echo $user
crontab -u $user -l
done
あなたの問題に代わる方法は、それらをcron.dフォルダーに置き、例のようにcronごとに適切なユーザーを指定することです:
00 01 * * * user /home/user/user-script.sh
crontab -u
、現在のシステムから実行されているため、これは機能しません。
while read user
ユーザー名にスペースが含まれる場合を処理するために、ループに変換しようとしていましたが、明らかにそれは問題ではありません。ユーザー名文字の非常に限られたセット。