/etc/crontab
コマンドなしで手動でのみ編集できると聞きました。/etc/cron.d/*
crontab
「/etc/crontab」と「/etc/cron.d/」の下のファイルを編集するには?。
crontab -e
ユーザー固有のcrontabファイルを作成して編集するには実行する必要がありますか/var/spool/cron/crontabs/
?
crontabファイルを手動で作成して編集できますか /var/spool/cron/crontabs/t
?
手動で作成および編集することはできないユーザー固有のcrontabファイルをデーモンが認識してロードできるように、いくつかのcrontab -e
操作が行われていますか?cron
ありがとうございます。
答え1
Vixie Cronを使用するのは通常のファイルです。正しい権限だけで必要に応じて編集できます。 Cronは変更されたファイルを確認し、crontabを再ロードします(1分ごとに確認)。これらすべてが実際に録音されました。cron マンページ「説明」セクション、少なくともDebianでは。
しかし、本当にそうではありません。
まず、実際にはそうする必要はありません。 crontabでインストールしたいプログラムにファイルを渡すだけですcrontab
。これはBobのcrontabとしてインストールcrontab -u bob FILE
されます。FILE
そして標準入力が利用FILE
可能です。-
crontabの変更をスクリプト化するには、crontab -l -u bob
list crontabを使用して編集して再ロードします。たとえば、ルート保持期間が短いことを確認するために、次のように(テストされていない)操作を実行できます。
#!/bin/bash
while read -r -u 9 user; do
{
crontab -l -u "$user"
printf '%s\n' '* * * * * fortune -o | mail -s "DegradedArray event on /dev/md0" root'
} | crontab -u "$user" -
done 9< <(getent passwd | cut -d: -f1)
第二に、上記はこうしてはいけない妥当な理由を示しています。これは Debian のクローンと連携するものとして文書化されています。しかし、様々なクローンがあります。たとえば、RHELは他のものを使用します。 Archはデフォルトでsystemdタイマーを使用します(systemd crontab-to-timerブリッジを使用するかどうかわからない)、次のオプションを提供します。5つの異なる実装実際のCronが必要な場合は、選択できるものがいくつかあります。いずれにしても、crontab
crontabを使用してインストールすると、機能するか、少なくともエラーメッセージで失敗するため、機能しないことがわかります。携帯性が良いです。
答え2
また、セキュリティ上の理由から/var/spool/cron/crontabs/
名前付きパイプを介してのみ書き込みが可能であることをプロセスに通知します。root
crontab
cron
/etc/cron.d/FIFO
したがって、crontabエントリを追加または変更する場合は、変更が適用されるまで再起動するのをroot
待つ必要があります。cron
答え3
/var/spool/cron/crontabs/ 以下にユーザー固有の crontab ファイルを作成および編集するには、crontab -e を実行する必要がありますか?
いいえ
crontabファイル/var/spool/cron/crontabs/tを手動で作成して編集できますか?
はい、しかし名前を持つユーザーがいる場合にのみ該当しt
ます。その可能性はほとんどありません。
もちろん、他の人が指摘したように、「好ましい」方法はを実行することですcrontab
。ただし、たとえば、新しいイメージを作成していて、これらのコマンドが機能していることをすでに知っている場合は、これは必要ありません。ルールは次のとおりです。
- このファイルは既存のユーザーの名前で指定する必要があり、そのユーザーの代わりに実行されます。
- ファイルの所有者は
user:crontab
次のとおりです。モードは次のとおりです。600
(user
ユーザー名とファイル名はどこにありますか?)
確認が必要な場合はcrontab -e
(EDITOR
変数などを設定した後export EDITOR=emacs
)実行し、提案したコマンドを入力してください。これにより、正しい名前と権限を持つファイルが生成されます。このファイルを編集するだけです。
答え4
UBUNTUでは、rootとしてcronジョブを作成し、crontab -eを使用せずに再ロードできます。 2行だけ入力してください。
echo '@reboot /etc/esperandoroute.sh' >> /var/spool/cron/crontabs/root
crontab -u root /var/spool/cron/crontabs/root
crontab -l