Відповіді:
З поточним GPG (2.1+) для зупинки gpg-agent ви можете користуватися gpgconf --killтаким чином:
gpgconf --kill gpg-agent
Вам не потрібно буде перезавантажувати її вручну. GPG перезапустить його, коли це буде потрібно.
~/.gnupgкаталог, вам потрібно буде перезапустити gpg-агент вручну.
gpg-agentне є загальносистемною послугою, але запускається один раз на кожного користувача (таким чином, нею не керує service). Хоча іноді викликається дотфайлами користувачів або, принаймні, в Debian та похідних, також коли X11 запускається (і gpg-agentвстановлюється) в /etc/X11/Xsession.d/90gpg-agent(щоб переконатися, що загальне gpg-agentвикористовується у всіх дзвінках GnuPG, незалежно від того, з терміналу чи додатків GUI); він також запускається автоматично GnuPG при необхідності. Від man gpg-agent:
Агент автоматично запускається на вимогу gpg, gpgsm, gpgconf або gpg-connect- agent. Таким чином, немає підстав запускати його вручну. У випадку, якщо ви хочете скористатись захищеним агентом оболонки, ви можете запустити агент, використовуючи:
gpg-connect-agent /bye
Зазвичай простий killall gpg-agent(з некореневої оболонки) повинен бути прекрасним для припинення gpg-agent. Ймовірно, ви побачите невелику затримку при наступному використанні GnuPG, як gpg-agentце буде запущено заново.
dirmngr --shutdownсупроводжуються, dirmngr --daemonа іноді й додатковими параметрами (я також включаю конкретний GPG homedir та --use-torпрапор).
На мій досвід, є кілька сценаріїв, коли gpg не вдасться запустити свіжий агент gpg (імпорт нового ключа?).
Вбийте старого агента так:
GNUPGHOME="${GNUPGHOME:-$HOME/.gnupg}" gpgconf --kill gpg-agent
а потім запустіть нове:
gpg-agent --homedir "${GNUPGHOME:-$HOME/.gnupg}" --daemon
Якщо явно встановити --homedir під час запуску, ви зможете зрозуміти, що ваш перелік ps зрозумілий, коли у вас є більше одного гомедіра; і це аналогічно тому, що робить gpg, коли він запускає його.
Налаштування GNUPGHOME під час зупинки не є необхідним, але це може зробити вас або переглядача коду більш комфортними.