• ベストアンサー

crontab でスクリプトが動かない

一応環境ですが、 CentOS5 PostgreSQL8 crontabでDBのバックアップを取ろうと思っていますがうまく動作しません。 以下のスクリプトファイルを作成し、crontabで毎日実行しようと考えています。 /home/hogehoge/Maintenance.sh/pg_dumpall.sh (内容)-------------------------------------------------------- #!/bin/sh cd /home/hogehoge/Maintenance.sh pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump chmod 600 pg_dumpall.dump -------------------------------------------------------- crontab (内容)-------------------------------------------------- 0 4 * * * /home/hogehoge/Maintenance.sh/pg_dumpall.sh -------------------------------------------------------- しかし、時間になってもpg_dumpall.dump ファイルが作成されません。 crontab自体は動作しています。(ファイル作成だけをしたらちゃんとできてました) 0-59/2 * * * * /bin/date > /home/sweets/Maintenance.sh/hoge pg_dumpall.sh の内容を1行ずつ実行しても正常にできます。 cd /home/hogehoge/Maintenance.sh pg_dumpall -h localhost -U postgres -c > pg_dumpall.dump chmod 600 pg_dumpall.dump なにかほかにも設定しなくてはいけないことがあるのでしょうか?

noname#64280
noname#64280

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

cron が独自の PATH を設定している可能性は?

noname#64280
質問者

お礼

問題はサーバの時計がずれていたため、何度テストしても動いていなかったのでありました。 ご回答ありがとうございました。

その他の回答 (2)

  • astronaut
  • ベストアンサー率58% (303/516)
回答No.3

> pg_dumpall.sh の内容を1行ずつ実行しても正常にできます。 pg_dumpall.sh自体を実行できますか? ひょっとすると、実行フラグがたっていないのかも。 また、すでに指摘のあるとおり、pg_dumpallコマンドにパスが通っていないということもありがちです。 スクリプト内のpg_dumpallをフルパスに書き換えて、chmod +x pg_dumpall.sh とかやったら動くんじゃないかな。

noname#64280
質問者

お礼

問題はサーバの時計がずれていたため、何度テストしても動いていなかったのでありました。 ご回答ありがとうございました。

  • junkUser
  • ベストアンサー率56% (218/384)
回答No.2

service crond status chkconfig crond --list はどうなっていますか? デフォルトでは動くようになっていると思いますが・・・

noname#64280
質問者

お礼

すいません。確認方法がちょっとわからなかったのですが、 問題は解決しました。 問題はサーバの時計がずれていたため、何度テストしても動いていなかったのでありました。 ご回答ありがとうございました。

関連するQ&A

  • LinuxでpostreSQLを毎日バックアップしたく、crontab

    LinuxでpostreSQLを毎日バックアップしたく、crontabに設定して 定時にpostgres.shファイルを実行させようとしています。 ファイルの中に、 if [ -x /usr/local/pgsql/bin/pg_dump ]; then とあるのですが、これは、 /usr/local/pgsql/bin/pg_dumpが存在する場合 という意味で合っていますでしょうか? よろしくお願いします。

  • crontabをshellで実行するには?

    Linux(Centos 6.2)でユーザを追加する際に、 そのユーザ権限で定期的に実行するプログラム(getmail)を設定したいと思っています。 で、shellでユーザを追加しようと思って #!/bin/sh # $1 = user $2 = pass $USRDIR = ユーザのホームディレクトリ useradd -d $USRDIR $1 echo "$1:$2\n" | chpasswd chown -R $1 $USRDIR chmod -R 770 $USRDIR echo "*/1 * * * * $1 /usr/bin/getmail 2>/dev/null\n" >> /etc/crontab としようと思ったのですが、 色々なサイトで、「crontabの設定ファイルを直接書くのは良くない、crontabコマンドを使え」と言われており、 crontabで設定したいのですが、crontab -u $1 -e とすると、viが起動してしまい、 どうしたら良いかわかりません。。。 どうしたら良いのでしょうか? お願いします。

  • Linux環境下(CentOS)でPostgreSQL8.1の自動バックアップを取りたいのですが、四苦八苦しています。

    Linux環境下(CentOS)でPostgreSQL8.1の自動バックアップを取りたいのですが、四苦八苦しています。 rootユーザにてcrontab -eで【10 0 * * * pg_dump -U postgres hogeraradb > /home/backupuser/backup.sql】と入力し保存しました。 しかし実際にバックアップが取れているのかなど確認の方法もわからず困っています。 思いつく範囲ではpg_dumpの設定も必要なのかも知れないのですが、どの画面で何を入力すればいいのかもわかりません。 何かアドバイスをよろしくお願いします。

  • CRON で シェル を動かしたい

    Fedora Core で バックアップを取るため夜にJOBを実行させたく思っています。調べた所crontabでスケジュールできるとの事なのでテストをしているのですがうまくいきません。 1. mkdir /home/postgres/BKUP/test このコマンドをcrontab -e に直接書くと狙った時間にtestフォルダが作成されます。 2. バックアップを取る際はもう少し色々やることになると思うのでシェルにして実行させました。ここではテストなので先ほどと同じ分をシェルに書いてcrontab -eでスケジュールしますが作成されません。 ***シェルの内容*** #!/bin/sh mkdir /home/postgres/BKUP/test *********************************** ・/var/log には履歴がかかれていました。 ・シェルには全ての権限をつけました。(777) 何がいけないのでしょうか?教えてください。

  • cronでpg_dumpの実行

    こんにちわ。 Linuxでcronを設定しPHPからexecで「pg_dump」を実行しようとしています。 エラーになり実行ができません。 設定は /var/spool/cron ディレクトリに 『crontab -e -u postgres』でコマンドを実行し SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO='' HOME=/ 08 19 * * * postgres /usr/bin/php /home/var/b_dump.php とcrontabに記載しています。 コマンドの実行はrootユーザで 権限は777 にしています。 メールを届くようにしているのですが、届くメールは 『postgres does not know where to find the server configuration file. You must specify the --config-file or -D invocation option or set the PGDATA environment variable.』 と届きます。 googleで検索したのですが、解決方法がわかりません…。 読みにくい文章で申し訳ないのですが、解決方法のご教授を お願いします。

  • crontabでDBのバックアップについて

    OS:Redhat ES 2.1 DB:PostgreSQL7.2 という環境のパソコンを2台(A,B)を用意し、 日常業務ではAを更新していき、 深夜にAの内容をBにバックアップする。 といった処理を構築しております。 backup.shというシェルで、 BからAにssh接続し、PostgreSQL内のDBの ダンプを書き出し、 rsyncでダンプファイルをBへコピーし、 B内でリストアするという処理です。 シェルファイルを直接実行した場合は、 問題なく動作するのですが、 crontabに登録して実行させると、 rsyncまでは動作しているのですが、 データベースへのリストアで処理が止まってしまい、 うまくリストアできません。 /etc/crontabファイル内のPathに、 /usr/local/pgsql/binとPostgreSQLのパスも 追加しているのですが、うまく動作せず、 なにが原因かよくわかりません。 ご教授願います。

  • crontabでPHPスクリプトが実行出来ない

    crontabで毎分PHPのスクリプトを起動する記述をしましたが、すべて下記エラーが出て実行されません。 phpスクリプトの先頭で「#!bin/usr/php」を書く方法と、crontabで「* * * * * /usr/bin/php test.php > dev/null」とする方法を試してみましたが両方ともダメでした。 解決索があればご教示下さい。 【エラー内容】 test.php: line 1: ?php: No such file or directory

    • ベストアンサー
    • PHP
  • Fedora11 crontab 設定エラー

    Fedora11「crontab -l」が「コマンドが見つかりません」になる。 (Q1) Fedora11で、cron を利用したく動作テストしています。 crontab は、/etc内にあります。 [root@betasei etc]# ls -l crontab* -rwxrwxrwx. 1 root root 420 2011-05-18 10:36 crontab テスト用スクリプトです。 [root@betasei etc]# cat test.sh echo xxxxxxxx gedit crontab で次のように編集しました。 [root@betasei etc]# cat crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin/:/etc/ MAILTO=root HOME=/ # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR #sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * command to be executed 1 1 * * * /etc/test.sh 設定確認すると、次のようにエラーになります。 [root@betasei etc]# ./crontab -l ./crontab: line 13: 1: コマンドが見つかりません [root@betasei etc]# 1 1 * * * /etc/test.sh ここのところを ./test.sh にしてみたりしてもダメです。 どうしたらよいのでしょうか。 (Q2) ところで、crontabの編集は、ターミナルやろうとして、 crontab -e と実行すると、viか何かの空白編集画面が出ます。 上記 gedit crontab の画面のように初期値が出ません。 gedit crontabで編集してもよいのですね。 (Q3) /etc/crontab は、テキストファイルですね。 でも、このcrontabは実行ファイルですね。 ./crontab -l どうなってるですか。 初歩的な質問ですみません。

  • crontabの設定ができない(編集画面が出ない)

    CentOS5.2を使っています。 crontabの設定を行おうと、 # chkconfig --list crond crond 0:off 1:off 2:on 3:on 4:on 5:on 6:off で確認後、$ crontab -e  としましたが、 no crontab for aaabbb - using an empty one と出て、編集ファイルが表示されません。 $ crontab -l  とすると no crontab for aaabbb と出、 # crontab -l  も    no crontab for root  となります。   念のため # chmod 777 /etc/crontab としてみましたが、結果は同じです。 $ less /etc/crontab でファイルを開くと ------------------------ SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # run-parts 01 * * * * root run-parts /etc/cron.hourly 02 4 * * * root run-parts /etc/cron.daily 22 4 * * 0 root run-parts /etc/cron.weekly 42 4 1 * * root run-parts /etc/cron.monthly /etc/crontab (END) ---------------------- となっています。 Webで設定例を検索すると、no crontab for aaabbb - using an empty one の下に crontab: installing new crontab と出ると記載されているのですが、 私の場合、このような表示や動きは出ませんが、どのようにして crontab を設定していくのでしょうか。どうか宜しくお願いします。

  • IP自動更新スクリプトがうまく動作しません

    環境 FreeBSD9 IP自動更新スクリプトを作成したのですが、うまく動作しません。メールでwget not foundが10分間隔で送られてきます。 wgetコマンドが見つからないと言ってるようです。/usr/local/bin/にwgetコマンドがあります。 また、コマンドラインでもwgetを使用してダウンロードできます。 vi /usr/local/bin/ddo.sh に以下のスクリプトを作成して、実行権限を与えました。 #!/bin/sh wget -O - "http://free.ddo.jp/dnsupdate.php?dn=hogehoge&pw=hogehoge1234" >> /var/log/result.log コマンドプロンプトでddo.shを実行すると、正常にIP更新がされログにその更新内容が記載されます。 スクリプトをcrontab -eに登録しました。 */10 * * * * /usr/local/bin/ddo.sh 10分間隔で実行はされるのですが、wget not found がメールに届き、ログに更新内容の記載がありません。 何がいけないのでしょうか? よろしくお願いします。