手軽に始められる『ブログ・自作アプリetc...』の情報を発信します

【cron停止】事故を防ぐ!コメントアウトとバックアップによる作業手順

サーバーを運用しよう

システムのメンテナンス中、/etc/cron.d/ のジョブを一時的に止めたい場面はよくあります 。

手順書には「リネームする(.disabled化)」と書いてあるけれど、ファイル名を変更するだけで本当に確実に止まるのか、不安になることはありませんか?

この記事では、そうした不安を解消するため、ファイル内容を直接編集する「コメントアウト(#追記)」による、より確実で安全な停止・再開手順と、ミスを防ぐためのバックアップ方法を解説します 。

クラノスケ
クラノスケ

私自身、過去にリネーム方式で停止したつもりでいたジョブが裏で動いてしまい、冷や汗をかいた経験があります。この記事で「確実な停止方法」をマスターしましょう!

基礎知識

作業に入る前に、今回対象となる /etc/cron.d/ について簡単に整理します 。

Linuxのcron設定には、大きく分けて2つの種類があり、目的によって明確な使い分けがあります 。

設定場所の違い

メンテナンス手順書でよく見る crontab -e と、今回の /etc/cron.d/ は以下のように使い分けられています 。

設定場所主な用途編集方法特徴
/etc/cron.d/ (今回)システム・アプリ用ファイルを直接編集ユーザー指定可、コピー管理が楽
crontab -e個人ユーザー用コマンドで編集実行ユーザーは固定

今回扱う /etc/cron.d/ は、実行ユーザー(oisystem や www-data など)を明示的に指定でき、ファイルとして管理しやすいのが最大のメリットです 。

また、役割ごとにファイルを分割でき、ls コマンドで一覧を把握しやすい利点もあります 。

停止・再開手順

それでは、ジョブを「確実」に停止し、安全に再開するための手順を解説します 。

バックアップ

まず、作業前の状態を保存します 。

ここで最も重要なのは「保存する場所」です 。

同じディレクトリ(/etc/cron.d/)にバックアップを作ると、cronがそれを誤って読み込んでしまうリスクがあります 。必ず /tmp などの監視対象外へ退避させましょう 。

実行コマンド例:

安全な場所(/tmp)へ日付付きでバックアップ

以下のコマンドを実行して設定ファイルを開いてください。

sudo cp /etc/cron.d/oisystem-batch /tmp/oisystem-batch.bak.$(date +%Y%m%d)

ジョブ停止(コメントアウト)

次に、ファイルを編集してジョブを停止します 。

ファイルごと削除やリネームをするのではなく、行の先頭に #(シャープ)を付けてコメントアウトします 。

1.エディタで対象ファイルを開きます。

以下のコマンドを実行して設定ファイルを開いてください。

vi /etc/cron.d/oisystem-batch

2.実行コマンドの行頭に # を追記します。

【変更前】

0 * * * * oisystem /usr/local/bin/oisystem_batch.sh

【変更後】

#0 * * * * oisystem /usr/local/bin/oisystem_batch.sh

    ファイルを保存した瞬間から、その行はコメント(メモ書き)として扱われ、実行されなくなります 。

    ジョブ再開(リストア)

    メンテナンス作業が完了したら、ジョブを元に戻します 。

    手動で # を消しても良いのですが、最も安全なのは「バックアップファイルでの上書き(リストア)」です 。

    これにより、「戻し忘れ」や「編集ミス」といったヒューマンエラーを確実に防げます 。

    1.作成しておいたバックアップファイルで上書き
    sudo cp /tmp/oisystem-batch.bak.20251221 /etc/cron.d/oisystem-batch

    ※日付部分は実際に作成したファイル名に合わせてください 。

    リネーム方式の注意点

    参考として、よく知られている「ファイル名を変更する(リネーム)」方法についても触れておきます 29

    仕組みとリスク

    ファイル名の末尾に .disabled などを付けると、cronの仕様によりそのファイルは無視(スキップ)されます 。

    リネームによる停止例
    sudo mv /etc/cron.d/oisystem-batch /etc/cron.d/oisystem-batch.disabled


    しかし、名前の変更をシステムが検知するタイミングには環境差があり、稀に意図せず動いてしまう可能性があります 。

    そのため、確実性を最優先する場合は、本記事で紹介した「コメントアウト方式」を推奨します 。

    まとめ

    /etc/cron.d/ 配下のジョブ停止は、以下のポイントを意識することで事故を防げます 。

    • 確実性重視:リネームよりも、中身を直接 # で無効化する「コメントアウト」方式が確実 。
    • 安全なバックアップ:同じ場所ではなく、/tmp などに退避させる 。
    • ミスのない再開:バックアップファイルでの上書き(リストア)で元に戻す 。

    これらの手順を標準化して、安全なシステム運用を心がけましょう。

    コメント