Linux: назначьте дату через командную строку

попытайтесь добавить-I до каталога палочки как -I/usr/local/include/ImageMagick/wand или -I/usr/local/include/ImageMagick/wand/magick

78
23.08.2014, 00:58
6 ответов

Используйте date -s :

date -s '2014-12-25 12:34:56'

Запустите это как root или под sudo . Изменение только одного года / месяца / дня является более сложной задачей и потребует повторения битов текущей даты. Есть также инструменты даты с графическим интерфейсом, встроенные в основные среды рабочего стола, обычно доступные через часы.

Чтобы изменить только часть времени, вы можете использовать подстановку команды в строке даты:

date -s "2014-12-25 $(date +%H:%M:%S)"

изменит дату, но сохранит время. См. man date для деталей форматирования для создания других комбинаций: отдельные компоненты: % Y , % m , % d , ]% H , % M и % S .

97
27.01.2020, 19:30

Вы изменяете дату командой дата . Однако, команда ожидает полную дату в качестве аргумента:

# date -s "20141022 09:45"
Wed Oct 22 09:45:00 BST 2014

Для изменения части даты выведите текущую дату с той частью даты, которую вы хотите изменить, в виде строки, а все остальные - в виде переменных форматирования даты. Затем передайте ее команде дата -s для установки:

# date -s "$(date +'%Y12%d %H:%M')"
Mon Dec 22 10:55:03 GMT 2014

меняет месяц на 12-й месяц - декабрь.

Форматы даты:

  • %Y - Год
  • %m - Месяц
  • %d - День
  • %H - Час
  • %M - Минута
3
27.01.2020, 19:30

Системное время

Для установки системной даты можно воспользоваться командой дата. Реализация GNU date (как в большинстве не встроенных систем на базе Linux) допускает множество различных форматов для установки времени, вот несколько примеров:

-устанавливает только год:

date -s 'next year'
date -s 'last year'

-устанавливает только месяц:

date -s 'last month'
date -s 'next month'

-устанавливает только день:

date -s 'next day'
date -s 'tomorrow'
date -s 'last day'
date -s 'yesterday'
date -s 'friday'

-устанавливает все вместе:

date -s '2009-02-13 11:31:30' #that's a magical timestamp

Аппаратное время

Теперь системное время установлено, но вы можете синхронизировать его с аппаратными часами:

Используйте - show для печати аппаратного времени:

hwclock --show

Вы можете установить аппаратные часы на текущее системное время:

hwclock --systohc

Или системное время на аппаратные часы

hwclock --hctosys
44
27.01.2020, 19:30

Для таких, как я, использующих ESXI 5.1, вот что мне ответила система

~ # date -s "2016-03-23 09:56:00"
date: invalid date '2016-03-23 09:56:00'

Мне пришлось вместо этого использовать специальную команду ESX:

esxcli system time set  -y 2016 -M 03 -d 23  -H 10 -m 05 -s 00
2
27.01.2020, 19:30

Я использовал команду даты и формат времени, перечисленные ниже, чтобы успешно установить дату из команды оболочки терминала, выполненной на Android Things, которая использует ядро ​​​​Linux.

дата 092615002017.00

ММДДЧЧММГГГГ.СС

ММ -Месяц -09

ДД -День -26

ЧЧ -Час -15

ММ -Мин. -00

ГГГГ -Год -2017

.SS -секунда -00

-2
27.01.2020, 19:30

Команда для изменения системной даты date.

Существует два способа вызова команды даты(в Linux):

   date [OPTION]... [+FORMAT]
   date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

Легко

Проще всего использовать date -s, так как он позволяет использовать простыеотносительные даты

 $ date -s yesterday; date
 date: cannot set date: Operation not permitted
 Sat Jan  5 07:21:07 EST 2019
 Sun Jan  6 07:21:07 EST 2019

Дата не изменилась, так как она выполнялась с ограниченным пользователем $. Если вы действительно хотите изменить дату, используйте root(#)или sudo:

 $ sudo date -s yesterday; date
 Sat Jan  5 07:21:07 EST 2019
 Sat Jan  5 07:21:07 EST 2019

Таким образом, изменить любую часть относительной даты так же просто, как назвать ее:

 $ date -s "5 years ago"
 Mon Jan  6 08:26:26 EST 2014

 $ date -s "+6 months"
 Sat Jul  6 08:28:39 EDT 2019

 $ date -s "+3 hours -13 minutes"
 Sun Jan  6 11:16:59 AST 2019

Абсолютные даты немного сложнее, так как они требуют большей детализации:

 $ date -s "2001-07-23 10:11:12"

Или вы можете использовать команду даты дважды:

 $ date -s "$(date +'%Y-%m-%d %H:%M:%S')"

замените любой из %допустимым значением, и дата будет установлена ​​(только как корень ).

 $ date -s "$(date +'%Y-11-%d %H:%M:%S')"
 Wed Nov  6 08:37:15 EST 2019

прямой

Вторая форма вызова даты используется для прямого изменения системной даты.

 date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]

Так:

 date 11230812              # MMDDhhmm

Устанавливает дату 23 ноября в 08:00 и 12:00.

BSD имеет похожую команду , но другой формат ([[[[[cc]гг]мм]дд]ЧЧ]ММ[.ss] ).

Попробуйте dateкак пользователь с ограниченными правами, чтобы увидеть, что он будет делать (без каких-либо изменений):

 $ date 11230812
 date: cannot set date: Operation not permitted
 Sat Nov 23 08:12:00 EST 2019

Или, если вы действительно хотите изменить дату, как root:

 # date 11230812
 # date
 Sat Nov 23 08:12:00 EST 2019

Обратите внимание, что это повлияет на такие службы, как NTP или chrony. И, если перезапустить, сбросит дату обратно на реальную.

Добавьте YY для установки года:

 $ date 1123081222
 date: cannot set date: Operation not permitted
 Wed Nov 23 08:12:00 EST 2022

Или CCYY для установки года и века:

 $ date 112308121982
 date: cannot set date: Operation not permitted
 Tue Nov 23 08:12:00 EST 1982
8
27.01.2020, 19:30

Теги

Похожие вопросы