crontab -e・環境の違い・システム vs ユーザー crontab
作業は通常 crontab -e で編集します。このコマンドは現在のユーザー専用の crontab を開き、保存すると構文を検査したうえで反映します。一覧は crontab -l、全体の削除は crontab -r ですが、-r は確認なしで消すので注意が必要です。
cron が作業を実行する環境は、あなたがログインしたシェルとは異なります。cron は最小限の環境しか提供せず、PATH も通常 /usr/bin:/bin のように短いです。そのため、ログインシェルでは動いていたコマンドが cron では「コマンドが見つからない」で失敗しがちです。コマンドを絶対パスで書くのが安全です。
crontab ファイルの先頭で環境変数を宣言できます。よく使うのは PATH=/usr/local/bin:/usr/bin:/bin、SHELL=/bin/bash、MAILTO="you@example.com"、そしてタイムゾーンを固定する CRON_TZ=Asia/Seoul です。値に空白が入る場合は引用符で囲みましょう。
ユーザー crontab とシステム crontab は形式が異なります。crontab -e で作ったユーザー crontab は標準の5フィールド(分 時 日 月 曜日)です。一方 /etc/crontab と /etc/cron.d/* のシステム項目は、曜日の次に実行ユーザーフィールドが追加された6フィールド(分 時 日 月 曜日 user コマンド)です。このツールは標準の5フィールドを解釈するので、システム crontab を検査するときはユーザーフィールドを除いた先頭5フィールドだけを入力してください。
細かい時刻ではなく「毎日・毎時間」程度でよければ、/etc/cron.daily、/etc/cron.hourly のようなドロップインディレクトリにスクリプトを置く方法もあります。式なしで決められた周期に実行されます。特定の分・時刻が必要なときだけ、このツールで作った式を crontab に入れれば管理がすっきりします。