解決思路如下:
1,首先,寫個簡單指令碼放crontab執行沒有問題。(確定不是crontab問題)
2,絕對路徑執行指令碼沒有問題(指令碼在當前終端下執行正常,排除許可權問題)
3,除錯在crontab執行後的指令碼
#!/bin/bash
#define variable file home and log home
file_home=/archivelog
log_home=/archivelog
log_file=rm_archivelog.txt
總結:問題原因是終端和系統終端的字元顯示格式不同列導致,我用的是securecrt(字符集utf8),rhel5.7(字符集zh_cn.utf-8) ,在crt終端下執行 指令碼取$8正常,rhel5.7系統取$9列正常,也就是說linux系統比crt終端多顯示一列,所以以後大家要除錯指令碼最好在本機除錯,或將系統語言 格式顯示一致再除錯。
下面我將crt和linux本機系統終端顯示格式分別取出來:
securecrt終端下顯示格式:
[root@db ~]# ls -lt /archivelog/ | grep .dbf | tail -n 2 | awk ''
-rw-r----- 1 oracle oinstall 486631936 05-16 15:08 1_397_782866649.dbf
-rw-r----- 1 oracle oinstall 486640128 05-16 15:08 1_396_782866649.dbf
linux本機終端下顯示格式:
[root@db ~]# ls -lt /archivelog/ | grep .dbf | tail -n 2 | awk ''
-rw-r----- 1 oracle oinstall 486631936 may 16 15:08 1_397_782866649.dbf #看到吧,英文顯示將 05-16拆成兩列
crontab 執行失敗原因
1.cron 服務沒有啟動 使用 etc init.d crond status 如沒有啟動,啟動該服務 etc init.d crond start 2.crontab 指令碼中使用了相對路徑引用可執行檔案,導致找不到可執行檔案 3.crontab 使用者對crontab 指令碼中呼叫的可執行程式...
CRONTAB 任務執行失敗
問題背景 每天資料庫自動備份並自動發出郵件。手動執行指令碼沒有任何問題,但放在crontab 則無法執行。排查過程 查詢日誌,發現系統日誌裡面沒有crontab的日誌。1.開啟日誌,我這裡為ubuntu系統 vi etc rsyslog.d 50 default.conf cron.var log ...
crontab執行失敗的幾種場景
一般能使用crontab e編輯任務的機器crond服務都開啟了,但會存在某些時刻內容修改之後新增的任務不啟動的問題。比較典型的場景是舊的定時任務還在執行,新的定時任務沒有啟動。service crond restart指令碼沒有執行許可權,可以使用chmod命令對指定檔案增加執行許可權,然後可以正...