once кэширует вывод команд, чтобы не запрашивать отпечаток пальца для каждого секрета

Once: Cache CLI Commands

once — утилита, которая выполняет команду в текущем каталоге, запоминает stdout в фоновом демоне и повторяет его без запуска команды до истечения TTL. Кэш привязан к рабочему каталогу и tenant-ключу, а опция --no-dir позволяет использовать одно значение во всех каталогах. Типичный сценарий — чтение секретов из 1Password: отпечаток пальца запрашивается только при первом вызове, а последующие в течение заданного времени берут результат из памяти. Демон хранит данные только в RAM и завершается, когда истекает последняя запись.

Первый вызов запрашивает отпечаток пальца, каждый следующий вызов в течение 8 часов с тем же tenant-ключом — нет.
  1. aktau

    Такие инструменты очень полезны. У меня есть свой, называется memo (это просто shell-скрипт: https://github.com/aktau/dotfiles/blob/master/bin/memo).

    О нём говорили в https://news.ycombinator.com/item?id=45670052, и другие подключились со своими (например, bkt(1) и up(1)).

    Основные различия, которые я вижу:

    - memo не нужно собирать (это shell-скрипт)

    - once хранит кэш вывода в работающем демоне. В отличие от него, memo сохраняет содержимое в /tmp с лучшим доступным сжатием (предпочитает zstd). В этом есть свои компромиссы. Более парето-оптимальным с точки зрения безопасности может быть наличие своего рода сессионного ключа и сжатие-затем-шифрование файлов на диске.

  2. __MatrixMan__

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

    Nixos делает это для сборок, но я не видел, чтобы это обобщалось на произвольные процессы.

  3. xuhu

    Хотел бы я, чтобы это работало без префикса "once" перед командами. Особенно если я запустил команду с подробным выводом, а потом решил, что хочу что-то из него grep-нуть. В терминалах вывод есть в буфере прокрутки, и, может быть, достаточно написать команду "output", которая позволит мне выполнить:

    $ cmake ..

    $ output | grep "libssl version"

  4. deadbunny

    Я всегда хотел разобраться с инвалидацией кэша в своём терминале.

  5. giancarlostoro

    > Типичный сценарий: чтение секретов из 1Password без подтверждения каждого чтения отпечатком пальца.

    Ну, не знаю насчёт этого, начальник.

Ещё за этот день

2026-10-09