• 締切済み

cronからのシェル実行と直接シェル実行で違いあり

(1)ここに、mysqldumpを実行するためのシェルがあります。 → シェルの中身抜粋:  /usr/bin/mysqldump --opt --extended-insert=false --flush-logs --single-transaction --master-data=2 -h ここにホスト -uここにユーザー -pここにパスワード --databases ここにスキーマ > abc.sql (2)crontabに、上記のシェルを実行するよう登録しています。 → 00 13 * * sun /****/***.sh [結果] クーロンから実行されるとと、シェルの全体実行自体は、正常終了していますが、mysqldumpログで「Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES' : Got an error writing communication packets (1160)」とエラーが出て、ダンプが頭のコメント部のみのファイルしかできていません。 しかし、クーロン実行ではなく、/****/***.shを直接実行すると、mysqldumpも正常出力して、全体的に正常終了できます。 どちらもroot権限で実行しました。 [質問] クーロンからの実行と、直接実行で、なにか別の設定が必要なのでしょうか??

みんなの回答

  • notnot
  • ベストアンサー率47% (4900/10361)
回答No.2

シェルからの実行だと、/etc/profileとか .profile .bashrcなどなどで、環境変数が設定されていることがほとんどです。なので、「cronからだとエラーになる」というケースのほとんどは環境変数の未定義ですね。

回答No.1

>どちらもroot権限で実行しました この表現が、とってもあいまいです。どのように実行したのかきちっと書きましょう。またmysqldumpにおいても同じです。あいまいだから、エラーの検証の仕方もわからないのでしょう。 http://search.yahoo.co.jp/search?b=1&n=10&ei=UTF-8&fr=ie8sc&p=Solaris+%22crontab%22 まずLinux系に投稿しているようですが、何のOSなんですかね。そんな基本的なことも記載されていない。とりあえず上記はSolarisです http://search.yahoo.co.jp/search?p=Linux+%22crontab%22&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt はLinuxです。コアの部分なので、だいたいは同じですが、まあトラブルはOS別なので・・・ rootユーザーで実行したのでしょうか? それともsu などを使った方法でしょうか? シェルは? どこのパス? など、いくつも、違ってくる要素がたくさんあります。 Windowsじゃあるまし、sh をつけたからって、希望のシェルで起動されません。また、プロファイルの読み込み等もあり、きちっとrootユーザーで、XXのシェルで(フルパスの指定)で、環境変数が同じで、相対パスなど使っていずに、実行されているのでしょうか? Windowsユーザーが、良く引っかかるところを君はひっかかっているような気がします。 >Couldn't execute 'FLUSH /*!40101 LOCAL */ TABLES' これがmysqldumpコマンドからでているそうなので、まずそのコマンドの仕様を確認してみました? http://search.yahoo.co.jp/search?p=Linux+%22mysqldump%22&aq=-1&oq=&ei=UTF-8&fr=ie8sc&n=10&x=wrt http://linux.die.net/man/1/mysqldump http://oku.edu.mie-u.ac.jp/~okumura/linux/?MySQL さて、あなたは何をもって同じ環境といっているのでしょうか?

関連するQ&A