アップグレードしてから、ユーザーのcrontabは削除されました。これは今年これが起こったのは初めてではなく、毎回それを回復するのは苦痛です。
ユーザーのcrontabをバックアップできるようにしたいのですが、そのためにはどこに保存されているかを知る必要があります。
cronパッケージを更新することの副作用だと思いますが、私は同意します-それは起こるべきことではありません。
アップグレードしてから、ユーザーのcrontabは削除されました。これは今年これが起こったのは初めてではなく、毎回それを回復するのは苦痛です。
ユーザーのcrontabをバックアップできるようにしたいのですが、そのためにはどこに保存されているかを知る必要があります。
cronパッケージを更新することの副作用だと思いますが、私は同意します-それは起こるべきことではありません。
回答:
実際、これらのファイルを手作業で処理することはお勧めできません。crontabmanページごと:
各ユーザーは独自のcrontabを持つこと
ができますが/var/spool/cron/crontabs、これらはのファイルですが、
直接編集することを意図したものではありません。
下のファイル/var/spoolは一時的/作業中と見なされます。そのため、おそらくアップグレード中に削除されますが、cronパッケージのアップグレードスクリプトを詳しく見ると、この点が明らかになります。
とにかく、cronエントリをバックアップするか、ホームディレクトリのファイルに保存することをお勧めします。
crontab -ecrontabファイルをその場で作成するために使用していると思います。その場合、を実行してcrontabファイルの「コピー」を取得できますcrontab -l。それをファイルにパイプして「バックアップ」を取得します。
crontab -l > my-crontab
次に、そのmy-crontabファイルを編集してエントリを追加または変更し、それをcrontabに渡すことで「インストール」できます。
crontab my-crontab
これは、と同じ構文チェックを行いcrontab -eます。
crontab -l/var/spool/cron/crontabs/$USER主にそのファイルに対する奇妙な許可のために通過するよりも簡単です。
iptables-savecronのの。ニース...
/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/
/tmptmpfsとしてマウントしても安全ですが、/var/tmporではありません/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ユーザー名にスペースが含まれる場合を処理するために、ループに変換しようとしていましたが、明らかにそれは問題ではありません。ユーザー名文字の非常に限られたセット。