- ベストアンサー
cronでwgetツールを自動化したい
- 大学でvine Linuxを利用しています。5つのサイトのソースファイルを毎日自動収集するようなシェルスクリプトを組みたいと思っています。
- 具体的には、cronを使用してwgetツールを自動実行し、5つのサイトからソースファイルを取得します。収集したファイルは日付ごとにディレクトリに保存されます。
- しかし、初めてのシェルスクリプトで試してもうまくいかず困っています。どなたかご指導いただけないでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
crontab用のファイルと wget用のスクリプトファイルを別に用意してください。 ・wget用スクリプトファイル例 ===== /home/name/bin/sample.sh ===== #!/bin/sh d=`date +%m%d` wget -P /home/name/bin/${d}/ http://A wget -P /home/name/bin/${d}/ http://B wget -P /home/name/bin/${d}/ http://C wget -P /home/name/bin/${d}/ http://D wget -P /home/name/bin/${d}/ http://E ==================================== この時点でスクリプトが単独で実行できることを確認してください。 ・crontab用ファイル例 ===== /home/name/bin/cron.txt ====== * 7 * * * /home/name/bin/sample.sh > /dev/null 2>&1 ==================================== 最後にcrontabに登録します。 $ crontab /home/name/bin/cron.txt
その他の回答 (1)
#1 です。 "> /dev/null 2>&1" の部分ですが、 スクリプトの標準出力とエラー出力を/dev/nullに捨てるようにしています。 実行するスクリプトが標準出力等に文字列を出力すると crontabは実行ユーザにその内容をメールで送信するので破棄するようにしました。 上記の方法だと実行エラー等の情報を受けとることができなくなるので、 スクリプト内でwget -qとしてwgetの出力を抑制し、 リダイレクト(> /dev/null 2>&1)の部分は書かない方がいいと思います。
お礼
出来ました! エラーが出ていた原因はcron.txtの * 7 * * * /home/name/bin/sample.sh > /dev/null 2>&1 の最後に改行を入れ忘れていたという御粗末なものでした。 これを足掛かりにもう少し勉強して難しいものにも挑戦しようと思います。 bcoffeeさん、おつきあい下さりありがとうございました。
補足
なるほど。そういえば本に書いてありました。。 でも、結局cronを使うと動作はうまくいかないままです。 何か他に問題になりそうなところがありますでしょうか?
補足
御世話になります。 wget用スクリプトファイルの実行は問題無く行えました。 1102という名前のファイルの中に保存されました。 次に、*/2 * * * * /home/name/bin/sample.sh > /dev/null 2>&1 のファイルを新しく作り、登録しましたがこちらは動作が確認できませんでした。 crontab -lコマンドで登録出来ていることは確認できました。 "> /dev/null 2>&1"の部分は何をさせているのか理解できませんがそのまま写してます。問題ないですよね?