Câu trả lời:
Với GPG hiện tại (2.1+), để dừng gpg-agent
bạn có thể sử dụng gpgconf --kill
, như thế này:
gpgconf --kill gpg-agent
Bạn không cần phải tự khởi động lại nó. GPG sẽ khởi động lại nó khi cần thiết.
~/.gnupg
thư mục, bạn sẽ cần khởi động lại tác nhân gpg bằng tay.
gpg-agent
không phải là dịch vụ toàn hệ thống nhưng được bắt đầu một lần cho mỗi người dùng (do đó, nó không được quản lý bởi service
). Mặc dù đôi khi được gọi bởi các dotfiles của người dùng hoặc ít nhất là trong Debian và các dẫn xuất cũng khi X11 được khởi động (và gpg-agent
được cài đặt) trong /etc/X11/Xsession.d/90gpg-agent
(để đảm bảo rằng một lệnh chung gpg-agent
được sử dụng bởi tất cả các lệnh gọi GnuPG, bất kể từ thiết bị đầu cuối hay ứng dụng GUI); nó cũng được GnuPG tự động khởi động khi có yêu cầu. Từ man gpg-agent
:
Tác nhân được tự động bắt đầu theo yêu cầu bởi gpg, gpgsm, gpgconf hoặc gpg-connect- agent. Do đó, không có lý do để bắt đầu nó bằng tay. Trong trường hợp bạn muốn sử dụng Đại lý Secure Shell đi kèm, bạn có thể bắt đầu đại lý bằng cách sử dụng:
gpg-connect-agent /bye
Thông thường, một đơn giản killall gpg-agent
(từ một vỏ không gốc) sẽ tốt cho việc chấm dứt gpg-agent
. Bạn có thể sẽ thấy một chút chậm trễ khi sử dụng GnuPG vào lần tiếp theo, khi gpg-agent
được bắt đầu lại.
dirmngr --shutdown
theo sau dirmngr --daemon
và đôi khi là các tùy chọn bổ sung (tôi cũng bao gồm một homedir GPG cụ thể và --use-tor
cờ).
Theo kinh nghiệm của tôi, có một số tình huống trong đó gpg sẽ không khởi động được một tác nhân gpg mới (nhập khóa mới?).
Giết các đặc vụ cũ như vậy:
GNUPGHOME="${GNUPGHOME:-$HOME/.gnupg}" gpgconf --kill gpg-agent
và sau đó bắt đầu cái mới:
gpg-agent --homedir "${GNUPGHOME:-$HOME/.gnupg}" --daemon
Đặt rõ ràng --homedir khi bắt đầu đảm bảo danh sách ps của bạn rõ ràng khi bạn có nhiều hơn một homedir; và nó không phù hợp với những gì gpg làm khi nó khởi động nó.
Đặt GNUPGHOME khi dừng là không cần thiết, nhưng nó có thể giúp bạn hoặc người đánh giá mã thoải mái hơn.