
Linuxの起動時に特別なtty(例えばtty2)で何らかのコマンドを実行し、システムが再起動するたびにそのttyでこのコマンドが実行されるようにします。これそうするためのリンク。
問題なく動作しますが、問題は、起動時に目的の tty にログインしてからコマンドを実行する必要があることです。最初に何らかのコマンドで tty にログインする方法はありますか? ありがとうございます
答え1
プログラムを実行するためのより簡単な解決策としては、--autologin
のフラグgetty
と、 から必要なコマンドを実行する関数を組み合わせることが考えられます.bashrc
。
パート 1: getty への自動ログイン
ご存知かもしれませんが、TTYはゲッティプログラム/etc/init/
ディレクトリ内のスタートアップ サービスとして。Ubuntu の場合、デフォルトのプログラムは でagetty
、--autologin
フラグが付いています。したがって、次の操作を実行できます。
ターミナルで実行してsudo nano /etc/init/tty1.conf
、TTY1のinitファイルを開きます(TTY1は単なる例であり、どれを選択してもかまいません)。行を変更します。
exec /sbin/getty -8 38400 tty1
に
exec /sbin/getty --autologin userName -8 38400 tty1
実際のユーザー名に置き換えてください userName
。
パート2: シェルログイン時に関数を実行する
tty
Linux/Unixシステムには、現在使用している端末の種類を報告するという便利な小さなプログラムがあります。たとえば、gnome-terminalでは次のような報告が行われます。
$ tty
/dev/pts/27
しかしTTY1では次のように報告されます
$ tty
/dev/tty1
$HOME/.bashrc
ファイルの先頭に関数を作成できることを知っている
function testTTY
{
isTTY=$(tty | awk '{if ($0~/\/dev\/tty.*/) {print "true"}else{print "false"}}')
if [ $isTTY == "true" ]; then
printf "You are in virtual console\n"
printf "current disk usage is"
df
fi
}
次に、 の下部で.bashrc
、 として関数を呼び出しますtestTTY
。つまり、最初に関数を定義し、後で呼び出します。
補足事項:
- カスタムコマンドを
if [];then ...fi
- 特定の TTY が必要な場合は、
isTTY
コードを次のように変更します。isTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')
答え2
以下の手順に従ってください。
まずmingettyをインストールします: $ sudo apt-get install mingetty
5.2) /etc/init/tty1.confを編集する
/* ルートをデフォルトのログインにするため */
変更: exec /sbin/getty -8 38400 tty1
実行先: exec /sbin/mingetty --autologin root --noclear tty1
/* 通常のユーザーをデフォルトのログインとして設定する場合 */
/bin/login -f abcuser < /dev/tty1 > /dev/tty1 2>&1を実行します。