Ứng dụng .desktop tự động khởi động không thoát khi đăng xuất

Jun 17 2020

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

1 binarysta Jun 18 2020 at 12:56

Đ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.