Ứng dụng .desktop tự động khởi động không thoát khi đăng xuất
Tôi đang làm theo câu trả lời về ứng dụng .desktop Tự động khởi động khi khởi động không hoạt động và nó đang hoạt động tốt. Tôi đang khởi chạy một tập lệnh python. Ứng .desktopdụng trông như thế này:
[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=shutdown_notify.py
Icon=system-run
Điều này đang hoạt động tốt - nhưng nếu tôi đăng xuất và đăng nhập, tôi thấy phiên bản đầu tiên của tập lệnh của tôi vẫn đang chạy.
$ ps -C shutdown_notify.py
PID TTY TIME CMD
4026 ? 00:00:01 shutdown_notify
25421 ? 00:00:00 shutdown_notify
Có cách nào để đảm bảo tập lệnh thoát khi đăng xuất không? Tôi có cần thêm logic để thoát khi đăng xuất không?
Cập nhật logind.confthông tin theo yêu cầu của @binarysta
$ grep -E 'KillUserProcesses|KillOnlyUsers|KillExcludeUsers' /etc/systemd/logind.conf
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
Cập nhật, tôi có hai tệp tự động khởi động: một tệp khởi chạy tập lệnh python ở trên, tệp còn lại khởi chạy gnome-terminal. Sau khi khởi động lại, tôi thấy:
$ ps aux | grep -E "gnome-terminal|shutdown_notify"
training 6495 0.9 0.1 84936 29360 ? S 07:13 0:00 /usr/bin/python3 /usr/local/bin/shutdown_notify.py
training 6565 0.7 0.2 622880 34448 ? Sl 07:13 0:00 /usr/lib/gnome-terminal/gnome-terminal-server
training 9647 0.0 0.0 13264 2564 pts/0 S+ 07:13 0:00 grep --color=auto -E gnome-terminal|shutdown_notify
Đăng xuất, đăng nhập và tôi thấy:
training 6495 0.1 0.1 85076 29360 ? S 07:13 0:00 /usr/bin/python3 /usr/local/bin/shutdown_notify.py
training 19110 3.1 0.1 84936 29636 ? S 07:15 0:00 /usr/bin/python3 /usr/local/bin/shutdown_notify.py
training 19141 2.3 0.2 696496 34584 ? Sl 07:15 0:00 /usr/lib/gnome-terminal/gnome-terminal-server
training 19421 0.0 0.0 13264 2696 pts/0 S+ 07:15 0:00 grep --color=auto -E gnome-terminal|shutdown_notify
Trả lời
Điều này là KillUserProcessesdo nomặc định trong Ubuntu . Cài đặt này làm cho các quy trình của người dùng không bị giết khi người dùng đăng xuất hoàn toàn. Để thay đổi hành vi này nhằm loại bỏ tất cả các quy trình của người dùng khi người dùng đăng xuất, hãy thiết lập và đăng KillUserProcesses=yesnhập /etc/systemd/logind.conflại.
giá trị hiện tại có thể được kiểm tra bởi (nó phải là truesau khi thay đổi)
busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager KillUserProcesses
b true
CẬP NHẬT
Sự khác biệt ở đây giữa gnome-terminal(Ứng dụng GUI) và shutdown_notify.pycác quy trình là, gnome-terminal-serverquy trình bị ràng buộc với cùng một TTY như tất cả các quy trình X11 khác đang chạy. Bằng cách đăng xuất, môi trường máy tính để bàn và hệ thống cửa sổ (x11) sẽ bị chấm dứt, đó là lý do tại sao gnome-terminalsẽ thoát.