私がフォローしている答え起動時に自動起動.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
更新、2つの自動起動ファイルがあります。 1つは上記のPythonスクリプトを起動し、もう1つは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
的にUbuntu。この設定を有効にすると、ユーザーが完全にログオフしてもユーザープロセスは終了しません。ユーザーがログオフしたときにすべてのユーザープロセスが終了するようにこの動作を変更するには、それを設定して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にバインドされていることです。ログアウトすると、デスクトップ環境とWindowsシステム(x11)が終了するためgnome-terminal
終了します。