TGViewer
ServerAdmin.ru ServerAdmin.ru @srv_admin · 32.6K subscribers
Post #4912 10.3K
Вспомнил про одну необычную утилиту из мира консоли Linux. Сначала даже не был уверен, что не писал о ней ранее. Оказалось, что реально не писал, только пару упоминаний мельком сделал. Речь пойдёт о faketime. Вспомнил, когда скрипты пересматривал к утренней публикации. Искал что-то для примера в прикреплённой картинке.

Во время отладки скриптов или мониторинга иногда нужно подставить какое-то другое системное время. Можно менять время непосредственно в тестовой системе, а можно воспользоваться faketime. Причём сделать это очень просто, потому что утилита с незапамятных времён живёт в базовых репах:

# apt install faketime

Приложение скомпилировано на базе библиотеки libfaketime. Оно перехватывает системные вызовы для приложения и заменяет в них время на указанное. Работает примерно так:

# faketime '2025-12-31 23:59:59' date
Wed Dec 31 23:59:59 MSK 2025

Передали утилите date указанное время, и она его вывела.

Я чаще всего утилиту использую, когда с помощью find удаляю что-то по меткам времени. Удобно запустить через faketime без удаления, просто чтобы проверить, как отработает поиск. Вообще всё, что связано с удалением, предварительно проверяю и только потом ставлю на исполнение. Иногда в скриптах комментирую строки с удалением, чтобы дождаться полного наполнения данными, чтобы потом прийти, вручную всё отладить и только потом включить ключ с удалением. Иначе рано или поздно из-за ошибки или невнимательности можно наделать дел.

Покажу наглядный пример, где можно ошибиться и где я лично ошибался не раз. Простая конструкция:

# find . -type f -mtime +1

◽️mtime – время последнего изменения файла
◽️+1 - n*24 часа, в данном случае n=1, то есть 24 часа

Это информация из man find. Ты ожидаешь, что будут найдены все файлы с датой модификации более суток назад. Проверяем:

# touch filename.tar
# ls -l
-rw-r--r-- 1 root root 0 Aug 28 14:39 filename.tar

# faketime '2025-08-29 14:40:00' find . -type f -mtime +1

Создали файл 28 августа в 14:39, а в 29 августа в 14:40 ничего не находит, хотя мы взяли время более 24 часов вперёд.

# faketime '2025-08-30 14:40:00' find . -type f -mtime +1
./filename.tar

Уехали на 48 часов и 1 минуту вперёд и нашли файл. У find есть особенность, и в данном случае +1 это не 24 часа, а 48. А чтобы было именно 24 часа, надо использовать +0:

# faketime '2025-08-29 14:40:00' find . -type f -mtime +0
./filename.tar

Faketime позволяет проверить работу своих скриптов, заглянув в будущее.

❗️Если заметка вам полезна, не забудьте 👍 и забрать в закладки.

#linux #terminal
  • 👍 169
  • 👎 3
More from @srv_admin
  1. Oct 5, 2026На прошлой неделе Mikrotik сделал рассылку с обзором своих новых продуктов. Я последние го…
  2. Oct 5, 2026🚀 Zabbix 8.0 на подходе. Запланируйте обучение команды уже сейчас В ближайшее время ожида…
  3. Oct 5, 2026В комментариях к недавней заметке про рабочее место один читатель в комментариях упомянул…
  4. Oct 2, 2026Мне Селектел прислали прикольный светильник, которым я сейчас стал постоянно пользоваться.…
  5. Oct 2, 202620 октября в 12:00 (мск) пройдёт бесплатный вебинар «Мониторинг событий безопасности в MWS…
  6. Oct 2, 2026На днях задачка небольшая была по сохранению команд пользователя в консоли. В ней ничего о…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →