Linuxの起動時に特別なtty(tty2など)でコマンドを実行するため、システムがリブートするたびにこのttyでコマンドが実行されます。 this リンクを使用しました。
正常に動作しますが、問題は、起動時に目的のttyにログインしてからコマンドを実行する必要があることです。最初に何らかのコマンドでttyにログインする方法はありますか?ありがとう
プログラムを実行するためのより簡単なソリューション、IMHOはgetty
の--autologin
フラグと.bashrc
から目的のコマンドを実行する関数を組み合わせることです。
パート1:gettyへの自動ログイン
ご存じかもしれませんが、TTYは/etc/init/
ディレクトリのスタートアップサービスとして gettyプログラム で開かれます。 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:シェルログインでの関数の実行
Linux/Unixシステムには、tty
と呼ばれるこの素敵なプログラムがあり、現在使用している端末の種類を報告します。たとえば、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
の間にカスタムコマンドを配置しますisTTY
コードをisTTY=$(tty | awk '{if ($0=="/dev/tty1") {print "true"}else{print "false"}}')
に変更します以下の手順に従ってください。
最初のmingettyのインストール:$ Sudo apt-get install mingetty
5.2)/etc/init/tty1.confを編集します
/ *ルートをデフォルトのログインとして作成する場合* /
変更:exec/sbin/getty -8 38400 tty1
To:exec/sbin/mingetty --autologin root --noclear tty1
/ *デフォルトのログインとして通常のユーザーを作成する場合* /
exec/bin/login -f abcuser </ dev/tty1>/dev/tty1 2>&1