Ответы:
С текущей 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. Таким образом, нет причин запускать его вручную. Если вы хотите использовать включенный агент Secure Shell, вы можете запустить агент, используя:
gpg-connect-agent /bye
Обычно простой killall gpg-agent(из некорневой оболочки) вполне подходит для завершения gpg-agent. Скорее всего, вы заметите небольшую задержку при использовании GnuPG в следующий раз, так как gpg-agentон запускается снова.
dirmngr --shutdownследуют, dirmngr --daemonа иногда и дополнительные опции (я также включаю конкретный домашний каталог GPG и --use-torфлаг).
По моему опыту, есть несколько сценариев, когда gpg не сможет запустить новый агент gpg (импортировать новый ключ?).
Убей старого агента так:
GNUPGHOME="${GNUPGHOME:-$HOME/.gnupg}" gpgconf --kill gpg-agent
и затем начните новый:
gpg-agent --homedir "${GNUPGHOME:-$HOME/.gnupg}" --daemon
Явная установка --homedir при запуске гарантирует, что ваш список ps ясен, когда у вас более одного homedir; и это аналогично тому, что делает gpg, когда запускает его.
Установка GNUPGHOME при остановке не требуется, но это может сделать вас или рецензента кода более удобным.