• ベストアンサー
  • すぐに回答を!

cronでwgetツールを自動化したい

大学でvine Linuxを利用しています。 5つのサイトのソースファイルを毎日自動収集するようなシェルスクリプトを組みたいと思っています。 (/home/name/bin/の下に日付のディレクトリを作成してその中に5つを保存します。) 本や色々なサイトを参考にして、 #!/bin/sh d=`date +%m%d` * 7 * * * wget -P /home/name/bin/${d}/ http://A * 7 * * * wget -P /home/name/bin/${d}/ http://B * 7 * * * wget -P /home/name/bin/${d}/ http://C * 7 * * * wget -P /home/name/bin/${d}/ http://D * 7 * * * wget -P /home/name/bin/${d}/ http://E これをファイル.shとして保存して、 crontab /home/name/bin/ファイル.sh でcronに読み込ませたらいけるかと思ったんですがダメでした。 (crontab -eだとvimエディタになる設定のようなのでファイルを作成してから登録したいです) 初めてのシェルスクリプトで色々試しても上手くいかなくて困っています。 どなたか御指導よろしくお願いします。

共感・応援の気持ちを伝えよう!

  • Linux系OS
  • 回答数2
  • 閲覧数1472
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
  • 回答No.1
noname#136147
noname#136147

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

共感・感謝の気持ちを伝えよう!

質問者からの補足

御世話になります。 wget用スクリプトファイルの実行は問題無く行えました。 1102という名前のファイルの中に保存されました。 次に、*/2 * * * * /home/name/bin/sample.sh > /dev/null 2>&1 のファイルを新しく作り、登録しましたがこちらは動作が確認できませんでした。 crontab -lコマンドで登録出来ていることは確認できました。 "> /dev/null 2>&1"の部分は何をさせているのか理解できませんがそのまま写してます。問題ないですよね?

その他の回答 (1)

  • 回答No.2
noname#136147
noname#136147

#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を使うと動作はうまくいかないままです。 何か他に問題になりそうなところがありますでしょうか?

関連するQ&A

  • CRON で シェル を動かしたい

    Fedora Core で バックアップを取るため夜にJOBを実行させたく思っています。調べた所crontabでスケジュールできるとの事なのでテストをしているのですがうまくいきません。 1. mkdir /home/postgres/BKUP/test このコマンドをcrontab -e に直接書くと狙った時間にtestフォルダが作成されます。 2. バックアップを取る際はもう少し色々やることになると思うのでシェルにして実行させました。ここではテストなので先ほどと同じ分をシェルに書いてcrontab -eでスケジュールしますが作成されません。 ***シェルの内容*** #!/bin/sh mkdir /home/postgres/BKUP/test *********************************** ・/var/log には履歴がかかれていました。 ・シェルには全ての権限をつけました。(777) 何がいけないのでしょうか?教えてください。

  • cronでGPGが使えない

    次のようなデータベースをバックアップするシェルスクリプトを作成しました。 #! /bin/sh BACKUP_DIR=/home/backup FILE_NAME=testdb`date +%Y%m%d`.sql mysqldump -udumpuser -pパスワード testdb > ${BACKUP_DIR}/${FILE_NAME} gpg -r ○○@○○ -e ${BACKUP_DIR}/${FILE_NAME} rm -rf ${BACKUP_DIR}/${FILE_NAME} sqlbackup.shと名前を付けてrootで実行してみたところ問題なくバックアップできました。 しかし、/etc/crontabに 0 0 * * * root /bin/sqlbackup.sh と記述して実行してみたところ gpg: ○○@○○: skipped: public key not found となってしまいました。 rootで「gpg --import」で○○@○○の公開鍵をインポートし、「gpg --edit-key」で信頼度をI trust ultimatelyにしています。 どのような原因が考えられますでしょうか。 よろしくお願いいたします。

  • cronで定期的にWGETしたい

    今、cronで定期的に、圧縮したバックアップファイルをDLしたいと考えています。 ユーザーはルートで # crontab -e * 20 * * * wget http://URL/backup_dbserver.tar.gz のように書き、毎日20時にDLさせたいのですが、どうやらこれだけ動いていないようです。 何か書き方が間違っているのでしょうか?ご存知の方ご教授お願いします

  • IP自動更新スクリプトがうまく動作しません

    環境 FreeBSD9 IP自動更新スクリプトを作成したのですが、うまく動作しません。メールでwget not foundが10分間隔で送られてきます。 wgetコマンドが見つからないと言ってるようです。/usr/local/bin/にwgetコマンドがあります。 また、コマンドラインでもwgetを使用してダウンロードできます。 vi /usr/local/bin/ddo.sh に以下のスクリプトを作成して、実行権限を与えました。 #!/bin/sh wget -O - "http://free.ddo.jp/dnsupdate.php?dn=hogehoge&pw=hogehoge1234" >> /var/log/result.log コマンドプロンプトでddo.shを実行すると、正常にIP更新がされログにその更新内容が記載されます。 スクリプトをcrontab -eに登録しました。 */10 * * * * /usr/local/bin/ddo.sh 10分間隔で実行はされるのですが、wget not found がメールに届き、ログに更新内容の記載がありません。 何がいけないのでしょうか? よろしくお願いします。

  • ◆wgetをcronで動かす場合

    いつもお世話になっています(何回目だろう。。。) wgetの挙動についてです。 オプションとしてhtmlファイルを全て取得しています。1件目は成功しますが、2件名以降はindex.htmlしか取得しません。 そこで、 export LANG=C export LC_ALL=C を追加することで、全件がオプション通りに取得できました。 --------------get_url.sh--------------ここから--------- #!/bin/bash export LANG=C export LC_ALL=C wget -nc -r -A html http://aaa.hoge.jp/ wget -nc -r -A html http://bbb.hoge.jp/ wget -nc -r -A html http://ccc.hoge.jp/ --------------get_url.sh--------------ここまで--------- しかし、これをcronで実行させた場合、再び2件目以降はinde.htmlだけしか取得しません。 どなたかお気づきの点があればご教授下さい。 ちなみに、crontag -eは以下です。 52 12 * * * /get_url.sh

  • cronでとても困っています どなたかご教授いただけないでしょうか

    cronの設定でpersonユーザーで動くように設定したいのですが、動いてくれません なにか設定がおかしいのでしょうか ↓crontabの内容です # DO NOT EDIT THIS FILE - edit the master and reinstall. # (/tmp/crontab.4208 installed on Thu Jan 25 12:14:20 2007) # (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ 15 12 * * * person /home/test/bin/test.sh rootに送られてくるエラーメッセージです /bin/bash: line 1: person : command not found ご教授いただけたら幸いです 何卒宜しくお願いいたします

  • cronのシェルスクリプトで特定のファイルを時間差で実行したい

    現在、下記内容を記述したシェルスクリプトを使っています。 #!/bin/sh cd /virtual/web/ wget test1.php -O result wget test2.php -O result wget test3.php -O result exit test1.php、test2.php、test3.phpを10分の間隔をあけて実行したいのですが、cron側で設定する以外にシェルスクリプト側で設定することは可能でしょうか? あと基本的なことなのですが、test.phpを実行したい(叩きたい)だけの場合、wgetではなく他のコマンドではできないでしょうか?このような場合はどんなコマンドが適切なのでしょうか?

  • クーロンについて

    Fedora6を使ってます(V)o¥o(V) /home/ap01/bin/seiton.sh(自作のAPを動かすスクリプト) GNOME端末からsuコマンドで、 ap01というユーザでログインして、 #crontab -e 50 10 * * * /home/ap01/bin/seiton.sh で登録してます・・・・ スクリプトがうごきません(~_~メ) ちなみに/home/ap01/bin/seiton.shと入力すると、 スクリプトが動きます・・・・ 調べたのですが、わからないので、 どうかご教授くださいませませ(:_;)

  • シェルスクリプトの自動化で動作が変なのですが・・・

    いつも大変お世話になります。 シェルスクリプトでtarコマンドを書き、このファイルをcrontabで自動化しております。 設定した時間になるとcrontabが実行され、ファイルが生成されるのですが、ファイル容量が少なく、tarコマンドがきちんと実行されていない様なのです。 あるディレクトリをまるごと圧縮しているのですが、容量は1GB程あり、これを tar czvf /directory_name1/file_name1.tar.gz /directory_name2/ というコマンドで圧縮しております。 直接このコマンドを実行するとちゃんと圧縮され、約940MBの容量になります。しかし、crontabでシェルスクリプトを実行すると45バイトのファイルが生成されて終ってしまいます。 なぜなのか、さっぱり原因が分かりません。 どなたかご教授の程、何卒、宜しくお願い致します。

  • さくらVPSでcron指定はsh? php?

    これまで別のレンタルサーバで動作していたcronをさくらVPSでも動作させたいのですがうまくいきません。 ■これまで(レンタルサーバ) 1.cronにshファイルを指定 2.shファイル cd /var/www/★★ /usr/local/bin/php -d include_path='.:./●●.php ■今回(さくらVPS) /etc/crontab/ 05 7 * * * root /usr/bin/php /var/www/■■.sh ・どうしたら動作するでしょうか? ・/etc/crontab/の指定先は「phpファイル」「shファイル」の何れを指定するのでしょうか?