linux系統用戶下的crontab任務不執行問題處理


需求:需要每一天對數據庫做一個備份,oracle數據庫,linux系統。

備份命令采用最簡單的導出\導入。

首先確認服務器是否開啟任務計划服務,只有root用戶才能對crond服務進行開啟和關閉

[root@enfo124 ~]# service crond status
crond (pid  1758) is running...
[root@enfo124 ~]# service crond stop
Stopping crond:                                            [  OK  ]
[root@enfo124 ~]# su - cognos
[cognos@enfo124 ~]$ service crond status
crond is stopped
[cognos@enfo124 ~]$ su - root
[root@enfo124 ~]# service crond start
Starting crond:                                            [  OK  ]
[root@enfo124 ~]# service crond status
crond (pid  2805) is running...
[root@enfo124 ~]# su - cognos
[cognos@enfo124 ~]$ service crond status
crond (pid  2805) is running...
最初sh文件內容為

------------------------------------------------------------

#!/bin/bash
expdp username/password@enforc directory=kettledb dumpfile=enforc_$(date +%Y%m%d%H%M).dmp logfile=enforc_$(date +%Y%m%d%H%M).log

-----------------------------------------------------------

文件名字與路徑

 /home/oracle/bin/export_enforc.sh

部署開始,切換至oralce用戶,查看oracle用戶的crontab 計划(crontab -l)。進入任務計划的編輯模式(crontab -e)

添加入以下行:

30 18 * * * /home/oracle/bin/export_enforc.sh

每天18:30分執行export_enforc.sh文件,結果不執行,手工賦值執行/home/oracle/bin/export_enforc.sh是可以的。

於是看了前輩寫的sh后說執行的環境不對於是加入以下幾行:

#!/bin/bash
if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi
expdp username/password@enforc directory=kettledb dumpfile=enforc_$(date +%Y%m%d%H%M).dmp logfile=enforc_$(date +%Y%m%d%H%M).log

執行命令:

[oracle@enfo212 ~]$ cd ~/
[oracle@enfo212 ~]$ pwd
/home/username

----------可以看出來~/代表用戶家目錄/home/username。

. 文件= bash 文件 (執行shell文件)

由此可以看出-f查找如果目錄存在這個系統環境文件則執行,建造一個shell環境,每個用戶都有自己的.bash_profile

再次部署到crontab里面可以看到:

隨便部署一個將要發生的時間點,任務被執行,這樣就每天在這個時間點就對數據庫enforc坐了導出的工作

具體為什么加入哪些代碼?可以參考 /home/username/.bash_profile 文件

PS:總結crontab任務不執行可以從這些方面入手

1:請確保手工可以執行該文件(給sh文件增加X權限看文件格式是否為unix→ set ff? →set ff=unix)

2:確認開始crond服務(service crond status/start/stop

3: 確認給sh文件制定bash環境

if [ -f ~/.bash_profile ];
then
  . ~/.bash_profile
fi

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM