2016-04-18 14 views
0

私は上記のウェブサイトに関するデータを取得するためにウェブサイトをpingする単純なシェルコマンドを持っています。出力のcrontabに追加するより良い方法

ping -R -c 120 blar.org.cn >> pingdata.txt 
ping -R -c 120 another.net >> pingdata.txt 

をしかし、その後、私のcrontabファイルは、次のようになります:

は、例えば、私のpinging.shの一つは、このようになります

7 * * * ./pinging.sh >> pingdata.log 

pingdata.logは出力しません。 crontabやスクリプトを使って行うのが最善でしょうか?私は、スクリプトを複数回書く必要がなく、スクリプト全体をカバーするので、crontabのほうが良いと思っていました。

答えて

0

スクリプトのフルパスと、それを実行しているバイナリとをcronジョブで指定する必要があります。例えば

7 * * * * /bin/sh /home/you/pinging.sh >> /home/you/pingdata.log 

も注意してください、あなたはちょうどあなたが、少なくとも5を必要とするのに対し、cronジョブに4パラメータを追加している:

+---------------- minute (0 - 59) 
| +------------- hour (0 - 23) 
| | +---------- day of month (1 - 31) 
| | | +------- month (1 - 12) 
| | | | +---- day of week (0 - 6) (Sunday=0 or 7) 
| | | | | 
* * * * * command to be executed 

あなたは(Crontab guruであなたのcronの構文をテストすることができます - →http://crontab.guru/)。

+0

答えをありがとう、フルパスはどの位置からでなければなりませんか?私はそれがpingdata.txtに出力するので、.shを実行することを知っていますので、/home/you/pingdata.logと何か関係があります。私はちょうどcrontabが私がスクリプトを作ったのと同じディレクトリにあると仮定しましたか? – Hidden

+0

@Hidden no、cronjobsは非常に小さい環境で動作します。そのため、完全なパスを明示的にする必要があります。 – fedorqui

+0

さて、私はそれをしなければならない、ありがとう。 .shを実行するのはなぜですか?私がパス全体を提供していない場合は? – Hidden

0

まず、実行ファイルはcronでフルパスで指定する必要があります。 例:

7 * * * * /bin/bash /path/to/pinging.sh 

第二に、pinging.shのラッパースクリプトを作成>>をpingdata.logとのcrontabにそれを追加します。

第3に、あなたのcrontabエントリが間違っています。あなたは4つのフィールドを持っている必要があります(おそらくそれはタイプミスですか?)

+0

答えをありがとう、私はパスに/ bin/bashがあることがわかりました。私のpinging.shファイルには、#!bin/shがあります。 – Hidden

+0

あなたはあなたが話しているこれらのラッパースクリプトへの参照を知っていますか? – Hidden

+0

私は、スペース関連の問題を減らすために別のスクリプトにコマンドを置くことを意味しました。 – kintuparantu

関連する問題