Назад | Перейти на главную страницу

Почему моя команда даты изменилась и как восстановить значение по умолчанию?

У меня возникла проблема с RHEL 5.3 после попытки установить Perl Power Tools. Все работало нормально, пока я не попытался установить этот пакет вручную (у сервера нет доступа к Интернету).

Сначала каждый сценарий оболочки, использующий awk, выдавал ошибки, поэтому я удалил 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(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 

Я попытался удалить дату и переустановить coreutils (пакет, содержащий дату), но по какой-то причине команда new date продолжает возвращаться. Я не знаю, как восстановить старую команду даты. Заранее спасибо.

Привет,

ОБНОВЛЕНИЕ1:

Вот как дата используется внутри скриптов и выдает ошибку:

date --date="1 days ago" +%Y%m
Option -date not support in this version.

Когда я пробую это на другом сервере с командой даты по умолчанию, он работает нормально.

Это результат того, какая дата:

[root@wrongserver ~]# which date
/bin/date

ОБНОВЛЕНИЕ 2:

Вывод даты - версия на обычном сервере:

[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.

Вывод даты --версия на проблемном сервере:

[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

Но я все еще получаю ошибки, когда запускаю команду date в сценариях с помощью crontab, думаю, я не заметил этого достаточно раньше. Ошибка с командой date появляется ТОЛЬКО при строке date --date="1 days ago" +%Y%m запускается в скрипте с crontab. Если я запускаю строку в приглашении, все идет нормально. Если я запускаю сценарий вручную, он также работает.

Я сделал несколько тестов и изменил порядок, подобный этому, чтобы скрипты нормально работали с cron date +%Y%m --date="1 days ago"Конечно, изменение этого параметра в сценариях, которые у меня есть в cron, - это боль, и он должен работать нормально, поскольку на другом сервере работает.

Хорошо, я нашел эту маленькую ошибку, я знал, что это было что-то достаточно маленькое, чтобы не заметить. Оказывается, переменная PATH была изменена, когда скрипты в cron были запущены, и закончились так /usr/bin:/bin.

Конфликтующие date команда была установлена ​​в / usr / bin, а не в / bin, поэтому cron использовал неправильный, и я не мог заметить, потому что в обычном сеансе пользователя переменная PATH была перевернута /bin:/usr/bin.

Спасибо за помощь.