ユーザーの仕様に基づいてcronジョブを追加するスクリプトを作成しましたが、毎回cronを更新する必要があるため機能しません。 crontabにジョブを追加します。プロセスを強制終了せずにcronを更新する方法はありますか?

回答

スクリプトはcrontabを使用してユーザーのジョブ仕様を追加および削除します。cronデーモンを再起動する必要はありません。

AIX 7.1 cronマニュアルページにはと記載されています:

変更を加える場合crontabコマンドを使用してcrontabファイルに送信すると、変更を示すメッセージがcronデーモンに送信されます。

crontabマニュアルも参照してください。

スクリプトが実行するアクションの一般的なフローテイク:

  1. <を使用してユーザーのcrontabをテキストファイルに取得しますdiv id = "4ff2606c6f">

  • ジョブの仕様を追加、削除、または変更して、テキストファイルを操作します。
  • を使用して、ユーザーのcrontabに新しい仕様を読み込みます。 crontab crontab.txt
  • 最初と最後のステップのコマンドは、ユーザーとして実行する必要があります(最初のステップは

    as egルート)。

    これは、cronを使用するすべてのUnixで機能します。

    コメント

    • 既存の仕事がある場合はどうなりますか?最初に同じテキストファイルに入れてから、crontabにロードする前に新しいジョブを追加する必要がありますか?
    • @Shan前述したように、ユーザーの現在のcrontabを取得してから、それを変更します。再度ロードする前に。そうです、crontab -lによって生成されたファイルに新しいジョブを追加します。

    回答

    AIX 7.1 cronのマニュアルページにはと書かれています:

    cronデーモンは、アクティブ化されたとき、およびハングアップ信号を受信したときに構成ファイルを読み取ります。

    つまり、kill -HUP cron_pid実行する必要があります。

    コメント

    • これはすでに試しましたが、プロセスを強制終了せずに構成を更新したいと思います
    • @Shan killコマンドはプロセスにシグナルを送信します。一般に、プロセスは、シグナルを受信することによって強制終了できます。つまり、実際に停止します。ただし、cronプロセスの場合、シグナルを処理し、停止せず、構成を再読み取りします。
    • 引用したmanページの部分は次のとおりです。 crontabファイル自体ではなく、cron 'の構成ファイル/etc/cronlog.confを参照します。
    • これをこの質問の回答にすることはできません。 crontabファイルとHUPcronを手動で編集すると、新しいcronジョブが実行されません。
    • @JeffSchallerは正しいので、-9 cron_pidを強制終了するか、Kusalanandaの提案に従ってcrontabファイルでcrontabを使用する必要があります。 crontabをリロードする他の回答で。

    コメントを残す

    メールアドレスが公開されることはありません。 * が付いている欄は必須項目です