Debian Jessie、Xfce4 バージョン。 4.10、HPLIPバージョン。 3.14.6
Debian WheezyからJessieにアップグレードした後(はい、知っています...)、ブートログに次の(レベル1 /警告)通知が表示され始めました。
hp-systray[PID]: error: option -s not recognized
タイトルログエントリを詳細に調べたところ、/usr/bin/python /usr/bin/hp-systray -session ....
ログインプロセスのある時点でコマンドが試行されたことがわかりました。端末で上記のコマンドを実行すると、テーマエラーの悲鳴が発生します。このスイッチは-session
コマンドに有効なスイッチではないことがわかりました。
Wheezyを実行すると、上記の通知を見たことがありません。
インターネット調査によると、この問題は比較的まれで、一見無害に見えますが、少なくとも10年間存在していたが説明されたことがないことがわかりました。
hp-systray
終了する前にプロセスを終了すると、後続の実行時に問題は表示されませんが、以前の「終了」操作なしで後続の実行時に問題が再発することがわかりました。
どんなアイデアがありますか?
答え1
いくつかの実験では、ログの叫び声エントリは、Xfce4セッションマネージャがログイン時に参照するファイルの行に関連していることを示しました~/.cache/sessions/xfce4-session-$HOSTNAME:0
(この行の次の行は、わかりやすくするためにここにコピーされました)。
Client6_RestartCommand=/usr/bin/hp-systray,-session,23775cb5c-d4da-45ef-9d25-410c10c6a78b_1597436809_471656
Client6_Program=/usr/bin/hp-systray
明らかに、セッションマネージャは、hp-systray
セッションを保存するために保存するデータにプロセスを含めると述べた。同様のパッケージスイートでWheezyを実行しているコンピュータがいくつかあり、そのコンピュータのセッションマネージャがプロセスを保存しないことがわかりました。しかし、セッションマネージャは上記のプロセスをジェシーの管理下に置いたが、結果は理想的ではなかった。
ユーザーがXfce4セッション管理者が特定のプロセスをスケジュールできないように除外する方法がある場合は明らかです。
その間、私はエレガントではありませんが、効果的な解決策をまとめました。
私は以下の最小限のサービスファイルを作成しましたstop_the_madness.service
。
[Unit]
Description=Digger add, prevents hp-systray log alert on next boot
After=syslog.service
[Service]
ExecStart=/bin/bash -c "sed -i 's/\/usr\/bin\/hp-systray/\/bin\/true/g;s/-session//' /home/$USER/.cache/sessions/xfce4-session-$HOSTNAME:0"
[Install]
WantedBy=default.target
新しく作成されたサービスファイルを適切な/etc/systemd/system
ディレクトリに配置しますchmod 644 /etc/systemd/system/stop_the_madness.service
。systemctl daemon-reload
systemctl enable stop_the_madness.service
これから起動プロセスがログインに達すると、問題のあるファイル~/.cache/xfce4-session-$HOSTNAME:0
の問題行は次のようになります(次の行を含む)。
Client6_RestartCommand=/bin/true,,2ba711268-faee-473f-a6ce-dfb1efcff056_1597378561_935995
Client6_Program=/bin/true
問題が終了しました(再起動、終了、停止の場合)。
修正する:Debian Stretchにアップグレードした後、次のブートログ警告が表示され始めました。 (...Invalid escape sequences in line, correcting:...
Jessieがこの警告を表示しているかどうかわからない)。見たようにsystemd がログにあふれないようにするには、「不明なエスケープシーケンスを無視する」を使用します。、私はすべての単一のバックスラッシュエスケープ(「ExecStart」行にあります)をダブルバックスラッシュエスケープに置き換えました。
ExecStart=/bin/bash -c "sed -i 's/\\/usr\\/bin\\/hp-systray/\\/bin\\/true/g;s/-session//' /home/dg/.cache/sessions/xfce4-session-2011:0"
質問の終わり。