web-dev-qa-db-ja.com

このシェフのレシピのcronはどこにありますか?

このレシピを使用してインスタンスを追加し、正常にセットアップしてデプロイしました。

cron "haproxy_log" do command "logrotate /etc/logrotate.d/haproxy" minute '15' end

しかし、/etc/crontabを見ると、そこにあることがわかりません。 cronシェフはcronジョブをどこに置きますか?

Sudo crontab -u root -lを行うと、自分の仕事が表示されます。しかし、どうして/etc/crontabでそれを見ることができないのですか?

Cronは実行されませんが、次の手順を実行してコマンドを手動で実行できます。Sudo logrotate /etc/logrotate.d/haproxy-なぜそれが発生するのですか?

1
Hommer Smith

Sudo crontab -u root -lで表示されるcrontabは通常のユーザーですユーザーのcrontabroot、次の場所にあります。

  • /var/spool/cron/crontabs/root(Debian、Ubuntu、HP-UX、SGI IRIX)
  • /var/spool/cron/root(CentOS、RedHat、RHEL、Fedora、IBM AIXおよび会社)
  • /var/cron/tabs/root(FreeBSD、OpenBSD、NetBSD)
  • /usr/lib/cron/tabs/root(Mac OS X)

これらのファイルは直接編集しないでください。ただし、常にcrontabコマンドを使用して編集してください。

root's crontabのコマンドも常にrootとして実行されます。つまり、.

  • それらは通常のm h dom mon dow command構文を持っています
  • system-wide/etc/crontabおよび/etc/cron.d/*では、ユーザーも指定する必要があります。

    # /etc/crontab: system-wide crontab
    # Unlike any other crontab you don't have to run the `crontab'
    # command to install the new version when you edit this file
    # and files in /etc/cron.d. These files also have username fields,
    # that none of the other crontabs do.
    
    # m h dom mon dow user  command
    

これに関するヒントは、Chef's Cookbook Referenceにも隠されています Resource cron

cronリソースには、crontabプログラム(通常はcron)へのアクセスが必要です。

警告:cronリソースは、crontabファイルのエントリを変更するためにのみ使用する必要があります。 cookbook_fileまたはtemplateリソースを使用して、crontabファイルをcron.dディレクトリに追加します。 cron_d軽量リソース( cron クックブックにあります)は、crontabファイルを管理するためのもう1つのオプションです。

2
Esa Jokinen

AIXとSolarisを除くUnixプラットフォームでは、Chefは一般的なcrontab構文を使用して一時ファイルを作成し、それを/usr/bin/crontabコマンド( ソース )にフィードします。

OS /ディストリビューションに応じて、場所はcronの実装によって異なります。たとえばDebian/Ubuntuの場合(man 8 cron):

cronは、スプール領域(/ var/pool/cron/crontabs)でcrontabファイル(/ etc/passwdのアカウントにちなんで名付けられています)を検索します。見つかったcrontabはメモリにロードされます。このディレクトリ内のcrontabに直接アクセスしないでください。これらにアクセスして更新するには、crontabコマンドを使用する必要があります。

cronは/ etc/crontabも読み取りますが、これはわずかに異なる形式です(crontab(5)を参照)。 Debianでは、/ etc/crontabのコンテンツは、/ etc/cron.hourly、/ etc/cron.daily、/ etc/cron.weekly、および/etc/cron.monthlyの下でプログラムを実行するように事前定義されています。この構成はDebianに固有です。以下のDEBIANSPECIFICの注記を参照してください。

さらに、Debianでは、cronは/etc/cron.dディレクトリ内のファイルを読み取ります。 cronは、/ etc /cron.d内のファイルを/ etc/crontabファイルと同じように扱います(ファイルの特殊な形式に従います。つまり、ユーザーフィールドが含まれます)。ただし、これらは/ etc/crontabから独立しています。たとえば、環境変数の設定を継承しません。この変更はDebianに固有のものであり、以下のDEBIANSPECIFICの注記を参照してください。

/ etc/crontabと同様に、/ etc /cron.dディレクトリ内のファイルの変更が監視されます。一般に、システム管理者は/etc/cron.d/を使用するのではなく、標準のシステムcrontab/etc/crontabを使用する必要があります。

短編小説:

  1. 宛先は、シェフではなくcrontabによって管理されます
  2. 2017年の最近のDebian/Ubuntucronの一般的なデフォルトは/etc/cron.d/<filename>です。
1
Roland