
我想在 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