お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-12-16 16:02:26

管理者B
メンバ
登録日: 2010-12-15

cronの起動について

非常に初歩的な質問ですが、どうぞご教授ください。

crontabにバックアップの設定を行いました。
次のコマンドにて実行しました。「crontab -e」

時間を指定してテストを行ったのですが、動いている気配がありません。

そこで「chkconfig --list cron」を実行したのですが
0:off 1:off 2:off 3:off 4:off 5:off 6:off
となっていました。

2から5がonでないと起動しないと記述しているHPがあったのですが、設定の変更方法がわかりません。

その他に「chkconfig --level crontab」も実行してみました。
・・・
cron     off
・・・
と表示されています。

これらのことから、cronが起動していないと思われるのですが、設定方法?起動方法?等がわかりません。

大変恐縮ではありますが、どなたかご教授下さると大変助かります。
どうぞ、よろしくお願い致します。

オフライン

 

#2 2010-12-16 21:53:39

hellfire
メンバ
From: 日本/神奈川県
登録日: 2006-11-21

Re: cronの起動について

管理者B 様へ.

Ubuntu は,普通に crontab を設定するだけでうまく行くと思いますが….

Ubuntu のバージョンやエディションは何でしょうか?

また,crontab で設定したコマンドが間違っている可能性も考えられます.提示して戴けるとより適切なアドバイスができると思います.
私も以前,crontab を root 権限で実行し,ssh で作業するものが動かなかったことがあります.それは root がパスワードを持っていないために,ssh でアクセスできないというものでしたので….

オフライン

 

#3 2010-12-17 08:11:37

ry
メンバ
登録日: 2008-07-30

Re: cronの起動について

管理者B さんの投稿 (#1):

そこで「chkconfig --list cron」を実行したのですが
0:off 1:off 2:off 3:off 4:off 5:off 6:off
となっていました。

ubuntu の最近のバージョンでは、デーモンの起動方法が従前の /etc/rc?.d/ ディレクトリを使ったものから変更されてきています
現在は、/etc/rc?.d/ ディレクトリを使うデーモンと、使わないデーモンが混在していますが、今後 バージョンが進むにつれて /etc/rc?.d/ ディレクトリを使うデーモンは一掃されるだろうと思います

chkconfig コマンドは、/etc/rc?.d/ ディレクトリに起動スクリプトがあるかどうかを判定するものなので、/etc/rc?.d/ に起動スクリプトを置いていないデーモンに対しては使えません

ここで話題に挙がっている cron は、すでに /etc/rc?.d/ ディレクトリを使わなくなっています
このため、chkconfig コマンドで自動起動になっているかどうかを判定することはできません

とりあえず起動しているかどうかを知りたいだけなら、ps ax | grep cron を実行するのが簡単、確実です

オフライン

 

#4 2010-12-20 09:22:34

管理者B
メンバ
登録日: 2010-12-15

Re: cronの起動について

ご返信ありがとうございます。

当初設定当時は何もせずとも確かに正常に動作しておりましたが、突然動かなくなってしまったので調査しておりました。

crontabの設定はTEST段階のため下記のように記述しております。

0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 0-23 1-31 1-12 /usr/local/test.sh

test.shの中身は
----------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin

dir=‘date +%Y%m%D_%s‘

tar -czvf xxxx-${dir}.tar.gz /usr/local/xxxx

mv xxxx-${dir}.tar.gz /usr/local/backup/
----------
となっております。

ps ax|grep cron の結果は
---------
909  ?  Ss 0:00 cron
1781 pts/0 S+ 0:00 grep --color=auto cron 
----------
でした。


現状も同じ設定になっておりますが、やはり動作いたしません。

test.shの権限は
-rwxr-xr-x 1 root root
になっております

何かお気づきの点がありましたら、ご教授下さいますようお願い致します。

オフライン

 

#5 2010-12-20 12:39:00

favicon.ico
メンバ
登録日: 2010-09-06

Re: cronの起動について

/var/log/syslog か /var/log/auth.log に何かヒントが出てるかもしれませんよ

> 0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 0-23 1-31 1-12 /usr/local/test.sh
転記ミスかもしれませんが曜日フィールドが無いです

オフライン

 

#6 2010-12-20 13:00:41

管理者B
メンバ
登録日: 2010-12-15

Re: cronの起動について

申し訳ありません。転記ミスです。
0,3,6,9,12,15,18,21,24,27,30,33,36,39,42,45,48,51,54,57 0-23 1-31 1-12 0-6 /usr/local/test.sh
と、なっております。

オフライン

 

#7 2010-12-20 16:39:35

管理者B
メンバ
登録日: 2010-12-15

Re: cronの起動について

色々試した結果crontabを下記のように書き換えてみました
*/3 * * * * /usr/local/test.sh

test.shの内容は一部変更で(テスト用に追加した)
mkdir /usr/local/${dir}を追記しました。

tail -f /var/local/syslog
では
CMD(/usr/local/test.sh)
が表示されるので間違いなくシェルは呼ばれているようです。

かつmkdirによるディレクトリ作成はうまく機能しました
なのでtarによるディレクトリの圧縮がうまく行ってないことがわかりました。

なぜ、圧縮作業のみ起動しないのでしょうか?

どうぞ、ご協力のほどよろしくお願い致します。

オフライン

 

#8 2010-12-20 16:52:20

ry
メンバ
登録日: 2008-07-30

Re: cronの起動について

管理者B さんの投稿 (#7):

tail -f /var/local/syslog
では
CMD(/usr/local/test.sh)
が表示されるので間違いなくシェルは呼ばれているようです。

かつmkdirによるディレクトリ作成はうまく機能しました
なのでtarによるディレクトリの圧縮がうまく行ってないことがわかりました。

なぜ、圧縮作業のみ起動しないのでしょうか?

test.sh の内容が分からないので、tar コマンドの引数が間違っているとか、指定したディレクトリがないとか、色々な原因が予想できます
そもそも test.sh 単体で実行して正常に動きますか?

オフライン

 

#9 2010-12-20 17:25:24

管理者B
メンバ
登録日: 2010-12-15

Re: cronの起動について

rv様、ご返信ありがとうございます。
シェル自体の単体での起動は確認できております。問題なく圧縮されます。

ちなみに記述は下記の通りです
----------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

dir=`date +%Y%m%d_%s`
tar -czvf xxxx-${dir}.tar.gz /usr/local/xxxx
mv xxxx-${dir}.tar.gz /usr/local/backup
----------

このシェルの単体の起動では問題なく圧縮ファイルが日付つきで作成されます。

現在の状況はまた、少々変化しまして圧縮途中のファイルが

mvコマンドによってbackupディレクトリに移動されているような状態です。

よって、このmvコマンドをコメントアウトしているのですが、そうする事で何故か、tarコマンドが実行されなくなるのです。

シェルの単体起動による圧縮のみの場合とmvコマンドありでの圧縮、ファイル移動の場合とで

作成されるファイルのサイズが明らかに違います100000byteと7000000byteなので圧縮途中でファイルが移動されているのかと思い

mvをコメントアウトしたしだいです。

なにか、記述に誤りなどのお気づきの点がございましたらご指摘願いますよう、よろしくお願い致します。

オフライン

 

#10 2010-12-20 17:52:16

weyk
メンバ
登録日: 2009-04-03

Re: cronの起動について

 とりあえず、そのシェルの(cronで起動したときの)標準出力と標準エラー出力をファイルに書き出してみるのがよいかとは思います。

 また、通常のシェルからの実行の場合、(意図せずとも)環境変数が大分引き継がれているはずです。「-」無しのsuの環境で試すなど、出来る限りcronからの起動に近い環境で試さないと、なかなか動作の検証にならなかったりします。

オフライン

 

#11 2010-12-21 07:42:33

ry
メンバ
登録日: 2008-07-30

Re: cronの起動について

管理者B さんの投稿 (#9):

シェル自体の単体での起動は確認できております。問題なく圧縮されます。

ちなみに記述は下記の通りです
----------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

dir=`date +%Y%m%d_%s`
tar -czvf xxxx-${dir}.tar.gz /usr/local/xxxx
mv xxxx-${dir}.tar.gz /usr/local/backup
----------

真っ先に思いつくのは、アーカイブ ファイル xxxx-${dir}.tar.gz の作成場所 (ディレクトリ) が指定されていないことです
このスクリプトを実行するとカレント ディレクトリに xxxx-${dir}.tar.gz が作成されますが、cron からこのスクリプトが起動されたときのカレント ディレクトリがどこになるか考えてみてください

ということで、tar -czvf /tmp/xxxx-${dir}.tar.gz /usr/local/xxxx のようにディレクトリを明示的に指定してみてください
当然ですが、mv コマンドでもディレクトリの指定が要るようになります

オフライン

 

#12 2010-12-24 14:28:24

管理者B
メンバ
登録日: 2010-12-15

Re: cronの起動について

皆様貴重なご意見ありがとうございます。

本日、一応の解決をみました。
下記シェルの内容です。
----------
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

dir=`date +%Y%m%d_%s`
tar -czvf /usr/local/xxxx-${dir}.tar.gz /usr/local/xxxx
sleep 90
mv /usr/local/xxxx-${dir}.tar.gz /usr/local/backup
----------
cronの設定は
----------
*/3 * * * * /usr/local/test.sh >> test.txt
----------

上記の用にシェルの書き換えcronの書き換えを行いました。

皆様のご教授のお陰でここまでたどり着けました。誠にありがとうございます。

オフライン

 

Board footer

Powered by FluxBB