Мне нужно управлять системным временем в течение нескольких минут.
Скажем, мне нужно оставить время как есть и изменить дату на следующую.
Через несколько минут... мне нужно вернуться к нормальному времени без каких-либо ручных операций.
Как это возможно только с помощью командной строки.
Я просмотрел Что такое командная строка для изменения системных часов? и она требует ввода даты и времени.
Я не хочу менять время, только дату. Как только требование будет выполнено, то есть через несколько минут, я не хочу вводить дату и время вручную.
Я хочу вернуться к обычному времени с помощью командной строки.
Это это пример того, что (я думаю) вы хотите. Он изменит год только на прошлый год на 4 минуты, а затем снова вернется к текущей дате. Ваша машина должна быть подключена к Интернету, чтобы это работало:
sudo bash -c "timedatectl set-ntp off && date -s 'last year' && sleep 4m && timedatectl set-ntp on"
Чтобы описанное ниже сработало, сначала нужно зайти в Настройки → Дата и время и отключить Автоматическую дату и время.
Затем вы можете использовать следующую команду как (длинную) однострочную:
sudo date --set="2010-05-02 $(date '+%T')" && sleep 10 && sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
Приведенная выше команда:
Получает текущее системное время:
date '+%T'
и устанавливает желаемую дату, сохраняя текущее время:
sudo date --set="2010-05-02 $(date '+%T')"
В этом примере дата, которую вы можете изменить на нужную вам, будет 2010-05-02
.
Сохраняет измененную дату в течение указанного интервала времени с помощью команды sleep
. Здесь я использовал sleep 10
для сохранения измененного времени в течение 10 секунд. Вы можете добавить суффикс m
, h
или d
к аргументу sleep
(здесь 10
), чтобы указать время в минутах, часах или днях, соответственно.
Возвращает время к текущему (требуется доступ в интернет):
sudo date -s "$(wget -qSO- --max-redirect=0 google.com 2>&1 | grep Date: | cut -d' ' -f5-8)Z"
Credits to Shrukul Habib.