
Ubuntu日本語フォーラム

ログインしていません。
非常に初歩的な質問ですが、どうぞご教授ください。
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が起動していないと思われるのですが、設定方法?起動方法?等がわかりません。
大変恐縮ではありますが、どなたかご教授下さると大変助かります。
どうぞ、よろしくお願い致します。
オフライン
管理者B 様へ.
Ubuntu は,普通に crontab を設定するだけでうまく行くと思いますが….
Ubuntu のバージョンやエディションは何でしょうか?
また,crontab で設定したコマンドが間違っている可能性も考えられます.提示して戴けるとより適切なアドバイスができると思います.
私も以前,crontab を root 権限で実行し,ssh で作業するものが動かなかったことがあります.それは root がパスワードを持っていないために,ssh でアクセスできないというものでしたので….
オフライン
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 を実行するのが簡単、確実です
オフライン
ご返信ありがとうございます。
当初設定当時は何もせずとも確かに正常に動作しておりましたが、突然動かなくなってしまったので調査しておりました。
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
になっております
何かお気づきの点がありましたら、ご教授下さいますようお願い致します。
オフライン
/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
転記ミスかもしれませんが曜日フィールドが無いです
オフライン
申し訳ありません。転記ミスです。
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
と、なっております。
オフライン
色々試した結果crontabを下記のように書き換えてみました
*/3 * * * * /usr/local/test.sh
test.shの内容は一部変更で(テスト用に追加した)
mkdir /usr/local/${dir}を追記しました。
tail -f /var/local/syslog
では
CMD(/usr/local/test.sh)
が表示されるので間違いなくシェルは呼ばれているようです。
かつmkdirによるディレクトリ作成はうまく機能しました
なのでtarによるディレクトリの圧縮がうまく行ってないことがわかりました。
なぜ、圧縮作業のみ起動しないのでしょうか?
どうぞ、ご協力のほどよろしくお願い致します。
オフライン
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をコメントアウトしたしだいです。
なにか、記述に誤りなどのお気づきの点がございましたらご指摘願いますよう、よろしくお願い致します。
オフライン
とりあえず、そのシェルの(cronで起動したときの)標準出力と標準エラー出力をファイルに書き出してみるのがよいかとは思います。
また、通常のシェルからの実行の場合、(意図せずとも)環境変数が大分引き継がれているはずです。「-」無しのsuの環境で試すなど、出来る限りcronからの起動に近い環境で試さないと、なかなか動作の検証にならなかったりします。
オフライン
真っ先に思いつくのは、アーカイブ ファイル xxxx-${dir}.tar.gz の作成場所 (ディレクトリ) が指定されていないことです
このスクリプトを実行するとカレント ディレクトリに xxxx-${dir}.tar.gz が作成されますが、cron からこのスクリプトが起動されたときのカレント ディレクトリがどこになるか考えてみてください
ということで、tar -czvf /tmp/xxxx-${dir}.tar.gz /usr/local/xxxx のようにディレクトリを明示的に指定してみてください
当然ですが、mv コマンドでもディレクトリの指定が要るようになります
オフライン
皆様貴重なご意見ありがとうございます。
本日、一応の解決をみました。
下記シェルの内容です。
----------
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の書き換えを行いました。
皆様のご教授のお陰でここまでたどり着けました。誠にありがとうございます。
オフライン