答え1
systemdは、出力を印刷するときに現在の画面解像度に従って行を調整します。
lightdm が閉じると、画面の解像度がデフォルト値に戻ります。 systemdが前の行をすでに印刷してから戻ることなく画面を消去してから、解像度が変更されるたびに新しい解像度でコンテンツを再印刷しないようにするのが合理的です。
この問題を解決するには、次のものが必要であることがわかります。基本TTY解像度設定X(またはウェイランド)サーバーの解像度と一致するようにします。
また、仕上げのテキストの外観を改善するために努力するのがやや賢明であることも指摘したいと思います。メッセージはあまりにも長い間画面に表示されず、サービスが停止して停止すると現在の解像度で印刷されるため、重要な内容を読むことができるはずです。ログが永続性(実行間に保存され、/var/
実行間に削除されない)の場合は、ログの表示方法とは異なる方法で保存されていることに気付くことができます。永続性のためにログを構成した場合は、journalctl -b 1
最後の開始から正しくソートされたメッセージを表示できます。これらのメッセージを読む必要がありますが、それを読むことができないと思う場合は、これが重要です。
答え2
婦人声明:このソリューションは、systemdとLightDMを実行しているユーザーのためのものです。設定が異なる場合は、システムに合わせて次のガイドラインを変更する必要があります。誤ってソートされた終了メッセージに関するすべての背景情報を読みたくない場合は、回避策セクションに進んでください。
概要:私はこの問題を解決するために長い時間を費やしましたが、数日前まではそのようなことは起こりませんでした。これは、画面解像度とは関係のない可能性が高いですが、アプリケーション(おそらくLightDM)の1つがターミナル/ ttyを正しくフォーマットしていないために発生します。開始/終了のいずれかの時点で、何かがttyを変更して、新しい行(NL)が通常どおり自動キャリッジリターン(CR)を受け取らないようにします。英語では、キーボードを押すとテキストカーソルが1行Enter下に移動しますが、ターミナルウィンドウの左側に並べ替えられないことを意味します(提供された図に表示されます)。https://i.stack.imgur.com/oARSo.jpg)。これは「階段効果」と呼ばれ、私が聞いたところによると、これはLinuxでかなり一般的な問題です。上記の問題を解決するコアコードはですがstty opost onlcr
、 systemd で正確にどこに入れるべきかわからないと使用しにくいことがあります。このコマンドを早すぎたり遅すぎたりすると、すでに正しく表示されているテキストの書式設定のみが行われます。 1つの解決策は、tty出力を適切に調整するカスタムシステムサービスを作成することです。時々、サービスが自動的に再起動されるようにすることで、stty opost onlcr
正確にどこに行くべきかを知る必要がなくなります。
解決策:
#デスクトップ環境(Gnome、KDE Plasmaなど)が実行されているttyインスタンスを確認します。通常はtty1ですが、LightDMを使用するので、実際にはtty7でなければなりません。手順2でsystemdサービスを作成するときにこの情報が必要です。
- 端末で実行してください
who
。次の出力を生成する必要があります。
ユーザー名 tty7 2021-02-08 12:11 (:0)
#As root /etc/systemd/system/
。このExecStart=
セクションの下に、手順1で見つけたtty情報が含まれています。サービス名を必要に応じて指定してくださいstaircase-effect.service
。例: 。
- 端末で実行してください
sudo nano /etc/systemd/system/staircase-effect.service
。これは、後で説明する重要なオプションと一緒に試すことができるサンプルデバイスです。
[Unit]
Description=tty 階段回復 effectDefaultDependency
=no
Before=halt.target shutdown.target restart.target
[Eメール保護]
StartLimitBurst=5
StartLimitIntervalSec=0[サービス]
タイプ=simple
ExecStart=/bin/stty -F /dev/tty7 opost onlcr
Restart=常に
RestartSec=30[インストール]
WantedBy=multi-user.target
StartLimitIntervalSec=0
- このオプションを「0」に設定すると、systemdはエラーを返さずに無制限にサービスを再起動できます。
Type=simple
- このサービスは無限ループで実行されるため、「使い捨て」ではなく「単純」を使用することをお勧めします。 AFAIK、「oneshot」は、他のサービスが同時に実行されるのを防ぎますが、これは望ましくありません。
ExecStart=/bin/stty -F /dev/tty7 opost onlcr
- この行は実際に階段メッセージを解決します。who
手順1のコマンドで正しいtty番号を入力したことを確認してください。
Restart=always
- 開始/終了プロセスでサービスを配置する場所を正確に知らない限り、このサービスが繰り返し表示されるようにします。stty
テキストがすでに正しく表示されている間にコマンドを実行すると、コマンドは適用されません。
RestartSec=30
- 技術的には、このオプションは個人的な好みによって決まります。問題を解決するのに十分な頻度でサービスを再起動する必要がありますが、問題自体が問題になるほど頻繁にサービスを再起動しないでください。
#新しいサービスをrootとして有効にしますsystemctl
。
- 端末で実行してください
sudo systemctl enable staircase-effect.service
。次に、reboot
修正が機能していることを確認します。
オプションのLIGHTDM調整:
#Default LightDMサービスが不要なサービス/usr/lib/systemd/system/lightdm.service
と競合しています[email protected]
(https://bugs.archlinux.org/task/49527?opened=22169&status%5B0%5D=)。これが階段メッセージに関連しているかどうかはわかりませんが、[email protected]
ユニットファイルからその行を削除しても問題にはなりません。
- 端末で実行してください
sudo systemctl edit --full lightdm.service
。その後、[email protected]
LightDMが標準のgettyサービスを妨げないように、この行を削除またはコメントアウトしてください。reboot
変化を見てください。
代替ソリューション:
https://www.reddit.com/r/linux/comments/iwnm9w/shutdown_staircase_output_fix/
代替ソリューション1(ここでstty
基本コマンドを取得します)
https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=617249
代替ソリューション2(System VおよびDebianを実行しているユーザー用)