Redhat

為什麼我的日期命令發生了變化以及如何恢復預設命令?

  • April 9, 2015

嘗試安裝 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

不過感謝您的幫助。

引用自:https://serverfault.com/questions/680731