Есть довольно известная программа в Linux (в Windows тоже работает) для хранения и упра... — 21 июля 2026 г. в 05:30:05.578
Есть довольно известная программа в Linux (в Windows тоже работает) для хранения и управления историей - atuin. Видел много про неё заметок в различных тематических каналах. Но в основном там были общие слова, либо пересказ описания. Программа мало того, что сама по себе довольно удобная и полезная, но таких немало, так у неё есть ещё одна особенность, которая меня заинтересовала. Она поддерживает централизованное хранение истории со всех хостов в одном месте с возможностью смотреть или искать глобально по всей истории. Я развернул всё это хозяйство у себя на постоянку, настроил, чтобы было удобно пользоваться и хочу поделиться своим опытом. Сразу скажу, что я не уверен, что подобное стоит устанавливать в прод. Я бы не стал, если прям сильно не нужна эта функциональность. Развернул всё на своих личных машинах, которых у меня немало и которым тоже требуется централизованное управление. 📌 Перечислю основные возможности atuin: ▪️Замена основного поиска по истории через CTRL + R. Работает удобно, мне лично очень понравилось. ▪️Централизованный сбор истории со всех хостов. Хранение либо в SQLite, либо в PostgreSQL. Это одновременно и удобный поиск по всей истории, и её бэкап. ▪️На сервере может показывать глобальную историю, историю всего хоста, текущей сессии или конкретной папки. ▪️Помимо непосредственно выполненной команды сохраняет код выхода, время исполнения, в какой директории была запущена. ▪️Стандартную историю в ~/.bash_history не заменяет и не перезаписывает. ▪️Работает со всеми популярными оболочками, в том числе powershell. ▪️В bash работает с помощью хуков preexec и precmd через расширение bash-preexec.sh, в других оболочках не проверял. ▪️ Всё это open source. Не буду подробно останавливаться на установке клиентов, так как в документации всё это есть. Для сервера я взял готовый docker-compose.yml, убрал оттуда postgres и заменил на локальную sqlite, просто указав: ATUIN_DB_URI: sqlite:///config/atuin.db Соответственно, бэкап всей истории - это бэкап файла atuin.db. Теперь после установки клиентов на хостах достаточно добавить адрес своего сервера для хранения там истории. Приведу пример настроенного мной клиента в ~/.config/atuin/config.toml. Отражу только те параметры, что изменил по сравнению со стандартом: sync_address = "http://192.168.137.57:8888" Мой локальный адрес сервера истории sync_frequency = "0" Сразу после записи команды отправлять её на сервер filter_mode = "host" По умолчанию в поиске по CTRL+R открывается история хоста history_format = "{time} {host} {user} - {directory} | {command}" Формат хранения истории, по умолчанию не сохраняет имя сервера, добавил style = "full" Всегда отображать полный интерфейс По умолчанию autin запускается по CTRL+R или по стрелке вверх. Последнее мне не нужно, я сразу отключил. Для этого в ~/.bashrc добавил ключ к запуску: eval "$(atuin init bash --disable-up-arrow)" После настройки первого клиента, регистрируем учётную запись на сервере: # atuin register Далее записываем в atuin уже существующую историю и синхронизируем её с сервера: # atuin import auto # atuin sync На следующих серверах достаточно будет сделать: # atuin login И зайти под уже созданной учёткой. Теперь при нажатии CTRL+R у вас откроется поиск по текущей истории хоста. Дальнейшее нажатие комбинации CTRL+R переключает область поиска: сессия, директория, глобальный поиск. Для того, чтобы статично вывести глобальную историю, а не искать по ней, можно использовать команду: # atuin search --filter-mode global Можно её грепать, а можно прямо тут написать строку для поиска. Например, смотрим на все перезагрузки: # atuin search --filter-mode global reboot В целом, удобное решение для централизованного хранения истории. Тут тебе и сама история хоста и по сути глобальный аудит. Не хватает веб интерфейса для просмотра. #linux

