為什麼我的日期命令發生了變化以及如何恢復預設命令?
嘗試安裝 Perl Power Tools 後,我在 RHEL 5.3 中遇到問題。一切正常,直到我嘗試手動安裝該軟體包(伺服器無法訪問網際網路)。
起初,每個使用 awk 的 shell 腳本都會出錯,所以我刪除了 Perl Power Tools 並從伺服器中配置的本地儲存庫重新安裝了 awk,這個問題就解決了。之後,cron 作業開始給出命令日期錯誤。
當我執行“男人約會”時,就會出現:
DATE(1) User Contributed Perl Documentation DATE(1) Name: date Description: display or set date and time Author: Joshua Gross License: NAME date - display or set date and time perl v5.8.8 2014-12-18 DATE(1) (END)
但是預設的 date 命令應該給出其他輸出:
DATE(1) User Commands DATE(1) NAME date - print or set the system date and time SYNOPSIS date [OPTION]... [+FORMAT] date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] DESCRIPTION Display the current time in the given FORMAT, or set the system date. -d, --date=STRING display time described by STRING, not ‘now’ -f, --file=DATEFILE like --date once for each line of DATEFILE -r, --reference=FILE display the last modification time of FILE -R, --rfc-2822 output date and time in RFC 2822 format --rfc-3339=TIMESPEC output date and time in RFC 3339 format. TIMESPEC=‘date’, ‘seconds’, or ‘ns’ for date and time to the indicated precision. -s, --set=STRING set time described by STRING -u, --utc, --universal print or set Coordinated Universal Time --help display this help and exit
我嘗試解除安裝 date 並重新安裝 coreutils(包含 date 的包),但由於某種原因,新的 date 命令不斷返回。我不知道如何恢復舊的 date 命令。提前致謝。
乾杯,
更新1:
這是在腳本中使用日期的方式及其產生的錯誤:
date --date="1 days ago" +%Y%m Option -date not support in this version.
當我使用預設日期命令在另一台伺服器上嘗試時,它執行良好。
這是哪個日期的輸出:
[root@wrongserver ~]# which date /bin/date
更新 2:
普通伺服器中 date –version 的輸出:
[root@OKserver lib64]$ date --version date (GNU coreutils) 5.97 Copyright (C) 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the extent permitted by law. Written by David MacKenzie.
有問題的伺服器中 date –version 的輸出:
[root@wrongserver ~]# date --version date (GNU coreutils) 5.97 Copyright (C) 2006 Free Software Foundation, Inc. This is free software. You may redistribute copies of it under the terms of the GNU General Public License <http://www.gnu.org/licenses/gpl.html>. There is NO WARRANTY, to the extent permitted by law. Written by David MacKenzie.
似乎重新安裝後唯一沒有改變的是手冊頁,我實際上使用的是相同日期的二進製文件,日期也來自正確的包
[root@domstats ~]# rpm -qf /bin/date coreutils-5.97-19.el5
但是,當我使用 crontab 在腳本中執行 date 命令時,我仍然會遇到錯誤,我想我之前沒有充分注意這一點。
date --date="1 days ago" +%Y%m
只有在使用 crontab 的腳本中執行該行時,才會出現 date 命令的錯誤。如果我在提示符中執行該行,它會很好,如果我手動執行腳本,它也可以。我做了一些測試並像這樣更改順序使腳本正常執行 cron
date +%Y%m --date="1 days ago"
,當然,在我在 cron 中的腳本中更改它是一種痛苦,它應該可以正常工作,因為在其他伺服器中確實可以工作。
好的,我發現了這個小蟲子,我知道它很小,不會被注意到。事實證明,當 cron 中的腳本執行並以這種方式結束時,PATH 變數正在更改
/usr/bin:/bin
。衝突的
date
命令安裝在 /usr/bin 而不是 /bin 所以 cron 使用了錯誤的命令,我沒有註意到,因為在正常使用者會話中 PATH 變數被反轉了/bin:/usr/bin
。不過感謝您的幫助。