サービスを開始するには、占有されている/ dev / ttyを消去してください。

サービスを開始するには、占有されている/ dev / ttyを消去してください。

ログインプロンプトの前に、出力を使用してUbuntuサーバー上の特定のttyでサービスを実行したいと思います。 tty3でhtopを実行するサービスを正常に作成しました。

[Unit]
Description=htop on tty3

[Service]
Type=simple
ExecStart=/usr/bin/htop
ExecStop=/bin/kill -HUP ${MAINPID}
StandardInput=tty
StandardOutput=tty
TTYPath=/dev/tty3
Restart=always
RestartSec=2

[Install]
WantedBy=getty.target

これはデフォルトでうまく機能し、期待どおりにtty3(alt + f3)に切り替えると期待どおりにhtopが表示され、プロセスを終了するとすぐに再起動されます。他のttyでサービスを停止して開始/再起動しても、期待どおりに機能します。

しかし、他のサービスの努力について私をやや挫折させる奇妙な場合があります。上記のサービスを停止してtty3に切り替えるとログインプロンプトが表示され、別のttyに切り替えてサービスを再起動するとhtopは再び戻りません。私はこれが通常のログイン/ターミナル/何であれ/dev/tty3を要求するので、これだと思います。だから私のサービスは/ dev / tty3を要求できるのを待っています。

だから私の質問は、通常のbash端末がそれを要求した後にこのサービスや同様のサービスを再開できるように、特定のttyをどのように消去するのかということです。

ベストアンサー1

以下の「仮想端末」の段落を参照してください。http://0pointer.de/blog/projects/serial-console.html

デフォルトでは、仮想端末#1〜#6に切り替えると、そのプロセスはlogindのテンプレートに基づいて自動的に起動します。自動起動回数は、との2つの設定で制御されます。 ` /etc/systemd/logind.conf.d/*.conf ドキュメントからコメントを削除して調整することで、デフォルト値を超えてこれらの設定を変更できます。getty/lib/systemd/system/[email protected]gettylogindNAutoVTs=ReserveVT=/etc/systemd/logind.conf

または、より高いTTY番号を使用できます。gettys には #1-#6 を、GUI には #7 と #8 (高速ユーザー切り替えのために 1 つ追加) を残します。また、#9〜#12は無料で利用できます。

おすすめ記事