質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

Q&A

解決済

3回答

1955閲覧

MySQLのSQLをshファイルとしてCentOSで動作させたい

HisashiSakamoto

総合スコア28

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

cron

cronは、Unix系OS上でデーモンプロセスとして動作する、スクリプトの自動実行が可能なジョブスケジューラです。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

バッチファイル

バッチファイル(Batch File)は、Windowsのコマンドラインインタープリターによって複数のコマンドを実行させる事が出来るスクリプトファイルです。

sh

shは、UNIX系OSのシェル操作の1つであり、最も基本的なシェルのことです。

0グッド

0クリップ

投稿2018/08/30 00:51

こちらCentOSでMySQLを扱っております。

毎日24:05にあるUpdateのSQLを実行したいと考えております。

そのため、shファイルを作成しました。
中は、こういう感じで書いています。

mysql -h localhost -u user -ppassword lang -e "SET SQL_SAFE_UPDATES=0;UPDATE table SET member_type = 1 WHERE id = 20;"

端末で、下記のように入力したら、ちゃんとUpdateがなされる。
コマンドライン # '/home/user/document/mysql_everyday.sh'

しかし、cronとして動作させると、Updateがうまく動作していない。
cron.confファイルの中身
5 0 * * * '/home/user/document/mysql_everyday.sh'
(その他定期的に動作させるshファイルもここに並んでおり、それらは正常に動いています)

端末にシェルファイル名を入力し、Enterを押せば、うまく動くのにCronにするとうまく動かない理由はあるのでしょうか?
すべてのshファイルがcronで動くわけではないのでしょうか?

一つ、気がかりなのは端末にシェルファイル名を入力する場合は、下記のようなWarningが出ます。

mysql: [Warning] Using a password on the command line interface can be insecure.
/home/user/document/mysql_everyday.sh: 行 4: /root: ディレクトリです

どなたか詳しい方がおられましたら、ご回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yoorwm

2018/08/30 01:05

mysqlのフルパスが記述されていませんが、どこにあるのでしょうか?
guest

回答3

0

すみません。

色々と勘違いしていました。
ログの出力、解析方法などを教えいていただき、ありがとうございます。

Crontabコマンドを使うのを忘れていたというのが、今回の問題の解決に繋がりました。

色々とお騒がせしました、すいません。

投稿2018/09/02 12:56

HisashiSakamoto

総合スコア28

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

すべてのshファイルがcronで動くわけではないのでしょうか?

人間と対話する必要の無いコマンドであればなんでもcronで動きます。

そのOSからメールが送れるように設定してあれば、cronのエラーはrootから実行ユーザへのメールで通知されます。
メールの設定をするのが難しいようであれば、
5 0 * * * /home/user/document/mysql_everyday.sh 2>/tmp/errormsg
でエラーメッセージを確認します。

コマンドラインからの実行の場合とcronからの実行で異なるのは、
・カレントディレクトリ
・環境変数
・標準入出力、エラー出力
です。多くの場合、実行の違いに影響するのは環境変数、特にPATHです。

投稿2018/08/30 14:50

otn

総合スコア84505

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

cronとして実行する場合、$PATHなど環境変数が、ログインシェルと違ってきます。

まずはきちんとログが出るようにしてcronで実行して、何が問題になっているのか検証していきましょう。

投稿2018/08/30 01:01

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問