Как манипулировать датой, сохраняя то же время через командную строку

Мне нужно управлять системным временем в течение нескольких минут.

Скажем, мне нужно оставить время как есть и изменить дату на следующую.
Через несколько минут... мне нужно вернуться к нормальному времени без каких-либо ручных операций.

Как это возможно только с помощью командной строки.

Я просмотрел Что такое командная строка для изменения системных часов? и она требует ввода даты и времени.

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

Я хочу вернуться к обычному времени с помощью командной строки.

1
задан 14 June 2021 в 18:25

2 ответа

Это это пример того, что (я думаю) вы хотите. Он изменит год только на прошлый год на 4 минуты, а затем снова вернется к текущей дате. Ваша машина должна быть подключена к Интернету, чтобы это работало:

sudo bash -c "timedatectl set-ntp off && date -s 'last year' && sleep 4m && timedatectl set-ntp on"
2
ответ дан 28 July 2021 в 11:28

Чтобы описанное ниже сработало, сначала нужно зайти в Настройки → Дата и время и отключить Автоматическую дату и время.

Затем вы можете использовать следующую команду как (длинную) однострочную:

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.

2
ответ дан 28 July 2021 в 11:28

Другие вопросы по тегам:

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