自动启动的 .desktop 应用程序在注销时不会退出

自动启动的 .desktop 应用程序在注销时不会退出

我正在关注的答案启动时自动启动 .desktop 应用程序不起作用,并且运行良好。我正在启动一个 python 脚本。该.desktop应用程序如下所示:

[Desktop Entry]
Type=Application
Name=Autostart Script
Exec=shutdown_notify.py
Icon=system-run

这运行良好 - 但如果我注销并登录,我会看到脚本的第一个实例仍在运行。

$ ps -C shutdown_notify.py
  PID TTY          TIME CMD
 4026 ?        00:00:01 shutdown_notify
25421 ?        00:00:00 shutdown_notify

有没有办法确保脚本在注销时退出?我需要添加退出逻辑吗?


logind.conf根据@binarysta 的要求更新信息

$ grep -E 'KillUserProcesses|KillOnlyUsers|KillExcludeUsers' /etc/systemd/logind.conf
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root

更新,我有两个自动启动文件:一个启动上面的 python 脚本,另一个启动gnome-terminal.重新启动后我看到:

$ 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

注销,登录,然后我看到:

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

答案1

这是因为KillUserProcesses默认no情况下乌班图。此设置会导致用户完全注销时用户进程不会被终止。要更改此行为以便在用户注销时终止所有用户进程,请设置KillUserProcesses=yes/etc/systemd/logind.conf重新登录。

可以通过以下方式检查当前值(应该是true更改后的值)

busctl get-property org.freedesktop.login1 /org/freedesktop/login1 org.freedesktop.login1.Manager KillUserProcesses
b true

更新

gnome-terminal(GUI 应用程序)和shutdown_notify.py进程之间的区别在于,gnome-terminal-server进程与所有其他正在运行的 X11 进程绑定到相同的 TTY。通过注销,桌面环境和窗口系统(x11)将被终止,这就是gnome-terminal退出的原因。

相关内容