現在/home/ユーザ名/www直下にcron.sh(権限705)をアップロードして置いてあります。
この場合、サーバーコンパネのCRONの設定の実行コマンドはどのように書けばよいでしょうか?
↓よく解らないのですが書いてみました。当然/usr/local/bin/sh: not foundなんてエラーが出てしまいます。
cd /home/ユーザ名/www/ ; /usr/local/bin/sh cron.sh???
cron.shの中身の記述は以下です。
#!/bin/sh
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin
cd /home/ユーザ名/www/
FETCH_URL=http://www.ユーザ名.com/cron/fetch_items
FETCH_ID=xxxxxxxx
WORK_DIR=/tmp
cd $WORK_DIR
/usr/local/bin/wget -q $FETCH_URL/$FETCH_ID > /dev/null 2>&1
rm $FETCH_ID
色々突っ込みどころがあるかとは思いますが
よろしくお願いします。
>rm: xxxxxxxx: No such file or directoryなんて
>言われて怒られちゃいました。。。
であれば、"cron.sh"内は走ってるんじゃないでしょうか?
共有サーバはセキュリティ上やリソースの関係など様々な都合から制限を設けてあることが一般的です。
例えば、だれもが設定する朝方4:30頃のクーロン実行を負荷軽減のために少しずつずらされたりして
一度に50ユーザとかがバッチプログラムを走らせるなどの負荷を分散したりということもあります。
クーロンが走っているのか心配であれば、
先ずは試しに、cron.shを以下のようにして確認されてみてはいかがでしょうか?
◆ファイルを作成して確認
#!/bin/sh echo "Hi, I'm running" > /home/[ユーザ名]/www/test_cron.txt
◆メールを送って確認
#!/bin/sh mail -s crontest [メールアドレス]
◆wget が機能しているかの確認(自身のユーザ領域にGet)
#!/bin/sh wget http://www.yahoo.com/ -O /home/[ユーザ名]/www/test_wget.html
あと、
>WORK_DIR=/tmp
>cd $WORK_DIR
推測で恐縮ですが・・・これは許されていないと思います。
一般にユーザホームディレクトリより上には行けないと思いますし、アクセスもできないと思います。
(ご質問者さんの場合、/home/ユーザ配下以外)
それを許せば、他のユーザさんの一時ファイルにもアクセスできちゃいますし、
それ以外にもいろいろできちゃいますよね?
動かしてないけどカレントディレクトリをwwwに変える意味がわかんない! いきなりWORK_DIRに変えていいんじゃない?
wgetもフルパスにする必要ないと思うよ!!
#!/bin/sh PATH=/bin:/usr/bin:/sbin:/usr/sbin:/usr/local/bin FETCH_URL=http://www.ユーザ名.com/cron/fetch_items FETCH_ID=xxxxxxxx WORK_DIR=/tmp cd $WORK_DIR wget -q $FETCH_URL/$FETCH_ID > /dev/null 2>&1 rm $FETCH_ID
でも、大本は、これが原因じゃないの??
http://senrioka-info.net/0_google_sitemap/cron.htm
# cron.sh のパーミッション(属性)を 700 に変更 ← 重要!忘れる人が多い
/home/ユーザ名/www/cron.sh
だけね!
>言われて怒られちゃいました。。。
どうして入れてあるのか疑問だったから残しておいたんだけど!
単純に xxxxxxxx がないからじゃないの? その行って要るの?
色々お騒がせしました。
いったんクローズします。
自分が勉強不足だということが
よく解りました。