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

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

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

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

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

MySQL

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

Q&A

解決済

2回答

1732閲覧

shコマンドを使うと正常に動くのに、CRONからだと正常に動かないシェルスクリプト

takany

総合スコア19

cron

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

シェルスクリプト

シェルスクリプトは、UNIX系のOSもしくはコマンドラインインタプリタ向けに記述されたスクリプト。bash/zshといったシェルによって実行されるため、このように呼ばれています。バッチ処理などに使用されており、テキストファイルに書かれた命令を順に実行します。

MySQL

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

0グッド

1クリップ

投稿2019/01/15 05:59

編集2019/01/15 06:06

##やりたいこと
さくらレンタルサーバーのMySQLから、ダンプファイルを毎晩2時に取得しようと思っています。
##現状
MySQLのダンプファイルを定期的に取得するため、mysqldumpを利用したシェルスクリプトを作成しました。
毎晩バックアップを作成したいので、こちらもさくらのレンタルサーバー基本装備の「CRONの設定」からシェルスクリプトを動かすように設定しました。
そうすると、dump.sqlは生成されるのですが、中身が空の状態です。
しかし、shコマンドで直接該当のシェルスクリプトを走らせると、しっかり中身の詰まったdump.sqlが生成されます
##実際の様子
下記のようなシェルスクリプトを作成

sh

1#!bin/sh 2cd /home/takany 3rm dump.sql 4mysqldump -u ユーザー名 -pパスワード -hホスト名 DB名 > dump.sql

CRON側での呼び出し(さくらのUIから設定しているので、shコマンドのみ)

CRON

1sh /home/takany/mysqldump.sh

##行った対応
mysqldump.shに実行権限を付与しましたが、状況は変わらず…
/var/log/cron を確認したくても、レンタルサーバーの為、権限無し…

原因が不明で途方に暮れています…宜しくお願い致します。

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

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

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

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

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

azuapricot

2019/01/15 06:02

タイトルに「!」を付けるとある低評価常連質問者が思い浮かんでしまうのでおすすめしません。 特に意味がないのであれば外した方が回答は得られるかと思います。
set0gut1

2019/01/15 06:05

なんかエラー出てるんでしょうね。標準エラー出力のリダイレクトで見れる場所にファイルとして書き出すと良いかと思います。
guest

回答2

0

ベストアンサー

推測の域を出ませんが。

  1. cd /home/takanyで、CRONが当該ディレクトリに移動する権限が無い

→書き込み権限がゆるいディレクトリを作成し、そこに書き出させる
0. mysqldump -u ユーザー名 -pパスワード -hホスト名 DB名 > dump.sqlでパスが通っていないため実行できない。
→フルパスで記載する(/usr/bin/mysqldump)と解決できる場合あり

投稿2019/01/15 06:05

kazto

総合スコア7196

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

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

takany

2019/01/15 06:15

CRON側で、手元にエラーログを吐き出すように設定し、mysqldumpの呼び出しを変えてみました。 すると、kaztoさんのおっしゃるように/usr/bin/mysqldumpにしても、mysqldumpのみの状態でも、 not foundと言われました… mysqldumpはどこから呼ばれてるか、フルパスを改めて調べてみます。
takany

2019/01/15 06:20

惜しかったです、/usr/local/bin/mysqldump でした。こちらに変更したら無事解決いたしました。
guest

0

環境変数の違いではないでしょうか?
cronで実行した場合は、.bashrcなどは読まなかったと思います。

参考 https://qiita.com/foloinfo/items/01bbb102584d1983d0c8

投稿2019/01/15 06:17

YouichiSugii

総合スコア23

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

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

takany

2019/01/15 06:21

ご回答ありがとうございます。ちょうど解決いたしました。環境変数の件もしっかり勉強したいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問