アロハ!
モニターにヘッドレスサーバーが接続されています。サーバーにグラフィック環境がインストールされておらず、キーボードやマウスが接続されていません。 SSH経由でログインできます。
キーボードを接続してttyにログインし、そこにtmuxセッションを接続しなくても、モニターに表示されているコンソール(tty)にtmuxセッションを表示したいと思います。これにより、対応するtmuxセッションにSSHで接続して、そのモニターに表示される内容(ログ、システム使用量など)をリモートで制御できます。
このモニターにどのコンソールが接続されているか(シェルにログイン、ログインしていないユーザー)、どうすればわかりますか?そして、起動時に(および/またはリモートで/他のコンソールから)自動的にコマンドを実行できますか?
答え1
解決策
これは使用のためのものですsystemd
。
/etc/systemd/system/tty8tmux.service
ルートとして、次の内容を含むファイルを作成します。
[Unit]
Description=Tmux session in tty8
[Service]
Type=idle
User=herrcrazi
KillMode=process
ExecStart=/usr/bin/tmux new-session -s tty8 -A -f read-only
ExecStartPost=+/usr/bin/chvt 8
ExecStop=/usr/bin/tmux kill-session -t tty8
ExecStopPost=+/usr/bin/chvt 1
TTYPath=/dev/tty8
StandardInput=tty
StandardOutput=tty
StandardError=tty
[Install]
WantedBy=multi-user.target
systemd
変更されたことに関する通知:
sudo systemctl daemon-reload
サービスを有効にします。
sudo systemctl enable tty8tmux.service
サービスを開始します。
sudo systemctl start tty8tmux.service
サービスを開始すると、tty8
指定されたユーザーの名前が付けられたtmuxセッションが作成され、そこherrcrazi
にtmuxクライアントが接続されます。クライアントは仮想端末 tty8 で実行されます。 tmux セッションがすでに存在する場合、クライアントはセッションを再生成せずにそのセッションに接続します。それにもかかわらず、tty8はフロント仮想端末になります。
サービスを停止すると、名前付きtmuxセッションが削除され、tty8
ディスプレイがtty1に切り替わります。セッションではなくtmuxクライアントのみを終了する場合は、指定を省略(削除またはコメントアウト)してくださいExecStop=
。KillMode=process
これは基本プロセス(つまりtmuxクライアント)のみが終了するためです。
サービスはシステムと共に自動的に開始されます。
SSH経由で接続したら、herrcrazi
次のコマンドを呼び出してtmuxセッションに接続します。
tmux attach-session -t tty8 -f ignore-size
ヒント、注意事項
サービスはシステムで開始され、まだユーザーが使用できるtmuxサーバーがない可能性があります
herrcrazi
。 tmux サーバーが自動的に起動します。後で別のtmuxセッションを作成することもできるので、herrcrazi
同じサーバーを使用してください。サーバーの環境は実際の親(ここでは)から派生し、クライアントが接続systemd
されたときに自動的に更新されないため、期待したものと異なる場合があります。たとえば、参照してください。この回答そしてその中のリンク。tmuxサーバーは正式にサービスに属します(制御グループに関する限り)、
KillMode=process
サービスが停止したときに終了するのを防ぎます。上記の理由から、デフォルト以外のソケットを使用することを検討または
User=somebodyelse
教えてくださいtmux
(例:-L tty8
)。接続時にユーザー(sudo -u somebodyelse tmux a …
)を一致させるか、正しいソケットを選択する必要があります。これにより、通常のユーザーは、herrcrazi
サービスが存在しないかのように他の目的にtmuxを使用できます。somebodyelse
おそらく根であろう。代わりに、tmuxセッションを作成し、事前定義されたウィンドウレイアウトで事前定義されたツールセット(たとえば)を実行した後、最終的にを実行
ExecStart=/usr/bin/tmux …
できます。特定の注意事項:ExecStart=/path/to/shellscript
shellscript
htop
watch sensors
watch df -h
exec
tmux attach-session -t tty8
特に、シャットダウン時にカーネルメッセージがtty8に表示されることがあります。通常の動作中は、tmuxクライアントが表示する内容を妨げ、tty8内で実行されているクライアントが自分のニーズに合わせて端末を構成するため、これらのメッセージは表示されません。カーネルにtty1のみを使用するように指示することを検討してください。
console=tty1
カーネルパラメータを追加するだけです。これが唯一のパラメーターである場合、関連行は/etc/default/grub
次のようになります。GRUB_CMDLINE_LINUX="console=tty1"
(または
GRUB_CMDLINE_LINUX_DEFAULT
)。ファイルを保存して呼び出し
sudo update-grub
て再起動してください。 On Demandを使用してメッセージを表示したり、継続表示dmesg
を使用したりできますdmesg -wH
。フロントttyをに手動で変更するには、
ttyN
を使用しますchvt N
。仮想端末でない場合(SSH経由でログインしている場合など)、次のことを行う必要がありますsudo
。sudo chvt 2
Debian GNU/Linux 12 でテスト済みです。