0 0 * * 1 root hostname >> /tmp/hostname.txt
上記のcronエントリは月曜日の深夜0時に実行され、コマンドの出力を含むファイルを/tmp
生成する必要があります。ただし、空のファイルのみが生成されます。なぜ?hostname.txt
hostname
ベストアンサー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 -e
crontabエントリがそのエントリを作成したユーザーにすでに割り当てられているため、重複しているため、これは不要です。
したがって、行を次のように変更します。
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