主に実行されるヘッドレスサーバーがあります。ダーバンxorg/グラフィック環境がインストールされていません。起動時にテキストモードのログインプロンプトのみが表示されます。
どうすればいいのか知りたいユーザーがログインする前にコマンドの出力を表示します。(マイ端末のログイン画面から)?コマンドはコマンドのように表示され、watch
2秒ごとに更新され、対話は必要ありません。
watch
注:ほとんどの場合、自分のコンピュータにSSHセッションを置いてSSHセッションを実行するだけで十分であるか、ブラウザから必要なものを提供できるWebサーバーをインストールする方が良いことがわかります。しかし、私のシナリオでは、両方のアプローチはいくつかの理由で実用的ではありません。また、純粋に好奇心を満たすために、この質問に対する答えを知りたいです。
答え1
私の頭の中では、次のことができます。
- 必要なすべてのタスクを実行するスクリプトを作成します(たぶん、たぶん
watch somecommand
、もっと複雑になるかもしれません)。 - ユーザーアカウントを作成し、このスクリプトをログインシェルに設定します。
getty
そのユーザーが自動的にログインするように調整
これにより、正しくログインできなくなる可能性があります。これを把握するには、いくつかの実験が必要です。
もちろん、ログイン時間情報を表示する一般的なメカニズムはです/etc/issue
。しかし、この観点からは、1. 任意のコマンドを実行してそのコマンドを出力するメカニズムはなく、2. 出力を一度印刷するのではなく、継続的に更新するメカニズムがないため、不適切に見えます。
答え2
前述のように/etc/issue
正しい場所に表示されますが、これは静的メッセージです。
あなたできる/etc/issue
時々プロセスを強制的に再起動するスクリプトを作成しましたが、getty
ログインを妨げる2秒間隔を使用しました。より現実的な間隔は約1分です。
Debian の場合、以下を使用している可能性がありますagetty
(参照マニュアルページ)。SIGHUP
以下を送信して再起動できます(例:根もちろん、次getty
のように実行した後根)。
関連読書:
答え3
login
ttyが初期化されたらすぐに実行するのではなく、次のスクリプトを実行してください。
#!/bin/sh
( trap '' TTOU
while clear
do #gen your output
sleep 2
done
) & stty -icanon
dd count=1 >/dev/null 2>&1
stty icanon
exec login
... ttyで少なくとも1バイトを読むまでループに入れたすべてを実行し、その時点でlogin
呼び出されます。login
常にtty制御で始まるので、HUP
端末に出力を書き込むバックグラウンドプロセスは終了するとすぐに終了しますが、目的の出力を生成するために誰かがキーを押すまでループしません。バックグラウンドで制御するttyに出力を書き込むことができますが、バックグラウンドループが何をしようとしても、決して成功しません。読むそれから入力を取得します。