作者 主題: cron的問題  (閱讀 2662 次)

0 會員 與 1 訪客 正在閱讀本文。

coffeefish

  • 鑽研的研究生
  • *****
  • 文章數: 572
    • 檢視個人資料
cron的問題
« 於: 2003-05-19 08:40 »
請問各位學長:

        在看過站上所有討論 cron 的問題,試過了很多遍都無效,麻煩學長們解答一下,謝謝!

        狀況:informix資料庫欲做定時之備份,必須以informix身份執行

        處理情形:

             1.以informix 身份寫排程 crontab -e 去執/home/informix/backr6  程式
                17 18 * * * /tmp/backr6  

                /tmp/backr6內容
              #!/bin/bash
          ##
          ##
          dbaccess dbserver /tmp/backr6.sql

          結果:
              From informix  Fri May 16 17:31:01 2003
           Date: Fri, 16 May 2003 17:31:01 +0800
           From: root@dbserver (Cron Daemon)
           To: informix@dbserver
           Subject: Cron <informix@dbserver> /tmp/backr6
           X-Cron-Env: <SHELL=/bin/sh>
           X-Cron-Env: <HOME=/home/informix>
           X-Cron-Env: <PATH=/usr/bin:/bin>
           X-Cron-Env: <LOGNAME=informix>

              2.在 /etc/crontab裡增加一行排程
              29 18 * * * informix /tmp/backr6
          指定以informix身份執行一樣會有上述的錯誤訊息。
             

             是否為SHELL 環境的不同
             X-Cron-Env: <SHELL=/bin/sh>

          在/etc/passwd裡,informix 的設定是
             informix:*&%*$&:500:500::/home/informix:/bin/bash

           P.S 1.該檔案的屬性為777。
                      2.如果單下指令 /tmp/backr6 是可以執行的。

           麻煩學長們幫幫忙,謝謝!

paulso

  • 俺是博士!
  • *****
  • 文章數: 1966
    • 檢視個人資料
cron的問題
« 回覆 #1 於: 2003-05-19 09:36 »
是否要這樣
17 18 * * * root run-parts /tmp/backr6
引述: "coffeefish"
1.以informix 身份寫排程 crontab -e 去執/home/informix/backr6 程式
17 18 * * * /tmp/backr6

/tmp/backr6內容
#!/bin/bash
##
##
dbaccess dbserver /tmp/backr6.sql

有點兒矛盾, 要執行 /home/informix/backr6 為何 crontab -e 是 /tmp/backr6呢?

又或者請以
#/tmp/backr6             or
#/home/informix/backr6
試一試是那 script 的問題, 還是 cron 的問題
若這樣執行有問題的話便是 script 的問題了

netman

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 17464
    • 檢視個人資料
    • http://www.study-area.org
cron的問題
« 回覆 #2 於: 2003-05-19 11:15 »
還有:
用 dbaccess 的 full path 如何?

twu2

  • 管理員
  • 俺是博士!
  • *****
  • 文章數: 5394
  • 性別: 男
    • 檢視個人資料
    • http://blog.teatime.com.tw/1
cron的問題
« 回覆 #3 於: 2003-05-19 12:02 »
你可以試著在該 script 的一開頭把所有的環境變數寫到一個檔案.
然後看看直接執行和透過 cron 來執行時有什麼差異.

coffeefish

  • 鑽研的研究生
  • *****
  • 文章數: 572
    • 檢視個人資料
cron的問題
« 回覆 #4 於: 2003-05-21 15:04 »
感謝各位學長的教導,問題已經決了!在此感謝!另外我也順道將處理過程說明一下,以便有相同問題的人可以參考!但是,不知道怎樣寫會比較正確煩請學長們指教!

.以informix 身份寫排程 crontab -e 去執/home/informix/backr6 程式
17 18 * * * /home/informix/backr6

/home/informix/backr6 內容
#!/bin/bash
##
##
dbaccess db@dbserver /tmp/backr6.sql
會出現下列的message
From informix  Mon May 19 18:18:00 2003
Date: Mon, 19 May 2003 18:18:00 +0800
From: root@dbserver (Cron Daemon)
To: informix@dbserver
Subject: Cron <informix@dbserver> /home/informix/backr6
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/informix>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=informix>

/home/informix/backr6: dbaccess: command not found

經學長們指點後對於/home/informix/backr6所做的更改為
/opt/informix/bin/dbaccess db@dbserver /home/informix/backr6.sql
後所得的message如下:
From informix  Wed May 21 11:22:00 2003
Date: Wed, 21 May 2003 11:22:00 +0800
From: root@dbserver (Cron Daemon)
To: informix@dbserver
Subject: Cron <informix@dbserver> /home/informix/backr6
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <HOME=/home/informix>
X-Cron-Env: <PATH=/usr/bin:/bin>
X-Cron-Env: <LOGNAME=informix>

-23101 Unable to load locale categories.

後將script的檔案改寫如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin$:
/opt/informix/bin:
export  SUPPORTED=zh_TW.Big5:zh_TW:zh:en_US:en
export INFORMIXDIR=/opt/informix
export INFORMIXSERVER=ol_dbserver
export DB_LOCALE=zh_TW.Big5
export CLIENT_LOCALE=zh_TW.Big5

/opt/informix/bin/dbaccess db@dbserver /home/informix/backr6.sql

這樣就可以執行了!但是好像在環境變數的設定有一些錯誤的地方(這是自己參照informix 環境所寫的)或許還有值的檢討的地方(script的寫法不知道正確與否)!
不過,有各位學長們的指教,我相信會進步的更快。謝謝!