如何在啟動時登入 tty

如何在啟動時登入 tty

我想在 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 部分:在 shell 登入時執行函數

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
  • 如果您需要特定的 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

/* 用於將 Root 設定為預設登入 */

更改: exec /sbin/getty -8 38400 tty1

至: exec /sbin/mingetty --autologin root --noclear tty1

/* 用於將普通使用者設定為預設登入 */

exec /bin/login -f abcuser < /dev/tty1 > /dev/tty1 2>&1

相關內容