Linux
在引導期間以 root 身份執行腳本並在預設的 linux 終端中顯示?
以下是我配置 kickstart 系統初始化腳本的方式(這是一個 kickstart conf 腳本片段):
... %post --log=/root/ks-post.log --interpreter /bin/bash cd /root curl --silent --show-error --retry 5 -O "https://mysecurewebsite.net/init-script7.sh" cp init-script.sh /etc/init.d/initializesystem chmod +x /etc/init.d/initializesystem [ ! -d /etc/rc.d ] && echo "/etc/rc.d/ not present, creating dir." && mkdir /etc/rc.d [ ! -d /etc/rc.d/rc3.d ] && echo "/etc/rc.d/rc3.d/ not present, creating dir." && mkdir /etc/rc.d/rc3.d ln -s /etc/init.d/initializesystem /etc/rc.d/rc3.d/S30initializesystem %end
這很好用,並且在安裝作業系統後首次啟動時在無人看管的後台執行。
但是,我想通過讓預設啟動 tty 顯示此
initializesystem
腳本的標準輸出來使其更加友好。目前,我有腳本將其進度寫入日誌文件,並且我必須以 root 和tail -f
日誌文件身份登錄。如果我願意,我仍然希望能夠做到這一點,但我想知道是否也可以讓它自動顯示輸出而不需要我登錄。需要注意的一件事是,我不想讓系統完全不互動。例如,我希望能夠
Ctrl
++並Alt
登F2
錄以在此腳本繼續執行時進行一些管理。
Ctrl
如果+C
在執行時無法殺死這個特定的腳本,我也更喜歡它,儘管我懷疑設置它來處理 SIGINT 可能很容易,所以忘記我提到它了。這可能嗎?在這裡使用 Centos 7。
正如您自己指出的那樣,作為 root 您可以將內容寫入
/dev/tty1
.如果您的腳本確實寫入標準輸出,您可以使用:
yourscript | tee -a /your/log/file > /dev/tty1
如果腳本直接寫入日誌文件,事情就不是那麼容易了,你必須按照日誌文件顯示新的內容。在這種情況下,可能更容易更改腳本以使用一些
使用
Ctrl
+C
無法停止這種情況,即使您首先在控制台上登錄也無法停止,因為您的 shell 無法知道將中斷發送到何處。根據您的啟動偏好,無論您是否有圖形登錄,您都可能希望使用
/dev/tty2
as not 破壞第一個螢幕。您還應該考慮使用換行符開始日誌,這樣第一個文本就不會出現在machinename login:
螢幕頂部的提示。
我認為沒有辦法在您以這種方式寫入的控制台上回滾,但這可能並不重要。