0 0 * * 1 ルートホスト名>>/tmp/hostname.txtがcrontabとして機能しないのはなぜですか?

0 0 * * 1 ルートホスト名>>/tmp/hostname.txtがcrontabとして機能しないのはなぜですか?
0 0 * * 1 root hostname >> /tmp/hostname.txt

上記のcronエントリは月曜日の深夜0時に実行され、コマンドの出力を含むファイルを/tmp生成する必要があります。ただし、空のファイルのみが生成されます。なぜ?hostname.txthostname

ベストアンサー1

crontabエントリを処理するときは、通常、次のいずれかの場所にあるシステム全体のクローンを区別することが重要です。

  • /etc/crontab
  • /etc/cron.d/*
  • /etc/cron.daily/*
  • /etc/cron.weekly/*
  • など。

または、そのディレクトリに保存されている実際のユーザーレベルの変更は次のとおりです/var/spool/cron

$ sudo ls -l /var/spool/cron/
total 0
-rw------- 1 saml root 0 Jun  6 06:43 saml

crontab -e特定のユーザーとしてコマンドを使用してこれらの項目にアクセスできます。ルートにもこれらの項目がある可能性があります。

あなたの問題

含まれる例は、システムレベルタイプを作成したときに指定した行タイプのものですcron。唯一の違いは、コマンドを実行するユーザーです。一部の種類のエントリを作成するときは、crontab -ecrontabエントリがそのエントリを作成したユーザーにすでに割り当てられているため、重複しているため、これは不要です。

したがって、行を次のように変更します。

0 0 * * 1 hostname >> /tmp/hostname.txt

問題を解決してください。

毎日と毎週のクローンはどのように機能しますか?

通常、/etc/crontab基本ファイルには次の項目が表示されます。

01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

そのディレクトリのスクリプトが実行されるタイミングを制御します。したがって、毎日の時間は現地時間で、毎日午前4時20分です。

したがって、そのコマンドを毎日実行するには、hostname >> /tmp/hostname.txtそのコマンドをスクリプトに入れて実行可能にし、スクリプトファイルをディレクトリにcron.daily配置します。

/etc/cron.daily/catchhostname.bash

#!/bin/bash

hostname >> /tmp/hostname.txt

デイリープランナー

# ls -l |grep catch
-rwxr-xr-x 1 root root  118 Feb 28  2013 catchhostname.bash

おすすめ記事