/etc/motd文件的用途
/etc/motd?即message?of?today(布告欄信息),每次用戶登錄時,/etc/motd文件的內容會顯示在用戶的終端。系統管理員可以在文件中編輯系統活動消息,例如:管理員通知用戶系統何時進行軟件或硬件的升級、何時進行系統維護等。如果shell支持中文,還可以使用中文,這樣看起來更易於瞭解。/etc/motd?缺點是,現在許多用戶登錄系統時選擇自動進入圖形界面,所以這些信息往往看不到。
/etc/issue文件的用途
/etc/issue文件的使用方法與/etc/motd文件相差不大,它們的主要區別在於:當一個網絡用戶或通過串口登錄系統上時,/etc/issue的文件內容顯示在login提示符之前,而/etc/motd內容顯示在用戶成功登錄系統之後。
使用write命令
用戶可以使用write命令給其他在線用戶發送消息。格式:
#write username [tty]
在Shell提示符號輸入write,username指接受發送信息的用戶名。如果一個用戶多次登錄到系統, tty參數指定要發送的終端。使用write發送信息的前提條件是該用戶已經登錄到系統。否則會出現以下提示:
#write cjh
write:cjh is not logged in
可以使用who命令查詢登錄用戶名稱。接着可以輸入要發送的信息。當輸入完畢後,鍵入EOF表示信息結束,用Crtl+D組合鍵發送信息。輸入內容會出現在用戶的屏幕上,同時通信中止。
如果在網絡上可以使用write命令在username後加入主機名稱或域名,建立網絡通信。如果要和cao主機上的bj用戶通信使用命令:
#write bj@cao
可以使用rusers命令列出所有局域網上的登錄用戶。
wall命令
如果想要發送一條信息給系統中所有用戶,可以使用wall命令,wall表示:write all。輸入wall,然後編輯信息,如果shell支持可以使用中文。然後使用Crtl+D組合鍵發送信息。這樣系統所有登錄用戶的桌面會收到信息。如果在網絡上,可以使用rwall命令把信息發送到局域網上所有的用戶。
talk命令
talk命令可以和另一個登錄系統用戶實現雙向對話。系統管理員輸入信息,用戶也可以輸入自己的信息。雙方都可以看到交流時的屏幕信息。格式:
#talk username
一個例子:
#talk b
對方屏幕顯示:
Message from [email protected] at 7:18 ...
talk: connection requested by [email protected].
talk: respond with: talk [email protected]
然後進入talk分屏界面,雙方輸入的信息。會出現的對方的屏幕。
用戶完成會話後使用Crth+C斷開連接。和write一樣可以使用在username後加入主機名稱或域名,建立網絡會話連接。
mesg 命令
用戶可以阻止其他用戶給自己發送消息打斷工作,使用mesg n命令禁止其他用戶發送消息。當別人試圖再使用write給他發送信息時,發送者將會看見提示:
#write: user has messages disabled on pts/n?
但是超級用戶可以給任何用戶發送消息,即使用戶使用mesg n命令。要恢復接受信息輸入:
mesg -y
Linux服務器運行的軟件主要是開源軟件,而且都在不停升級,穩定版和測試版交替出現。如果你是一個Linux網管員,你經常需要上相應的網站看,是否有補丁,是否有了bug fix,是否需要升級。網絡管理員還要給用戶提供安全服務。對用戶要定期發送安全信息,是讓用戶具有安全意識。通過使用以上命令可以更好幫助管理用戶。
在UNIX操作系統中,爲了通知用戶某條信息,我們常常採用向用戶能看到的屏幕寫信息的方法實現。
向單一屏幕發送信息
每個登錄主機系統的用戶都分配有一個終端號,例如主控臺上的12個屏幕分別爲tty01~tty12,從多用戶卡上登錄一般有tty2a、tty2b、tty21a……等等終端設備號,如果是遠程登錄則爲ttyp0、ttyp1等虛擬終端號。它們對應的終端設備文件都在/dev目錄下。
echo'讓我告訴你:……' > /dev/tty03
這種方法使用了輸出轉向符“>”直接寫終端文件/dev/tty03來實現向屏幕發送信息。與以下其他三種方式不同的是,這種方法是針對終端的,而不是針對登錄用戶的,所以即使該終端沒有用戶登錄,使用這種方法也可以向屏幕發送信息。但其他三種方法只能對有用戶登錄的屏幕發送信息。
向指定用戶發送信息
同一個系統用戶可以在多個終端登錄,例如超級用戶可以在主控臺三號屏幕,同時也可以在多用戶卡連接的tty21c終端登錄。此時要向指定屏幕發送信息可以用write命令。
write root tty03
如果用戶只在一個屏幕登錄,可以省略第二個參數。利用這個命令可以實現聊天功能,因爲每次回車後信息即發送至指定屏幕,這種特性是其他幾種發送信息方式無法實現的。“終止”使用Ctrl+d組合鍵。
向登錄主機的所有用戶發送信息
多用戶系統特有的廣播概念:像無線廣播一樣,讓所有人都聽到你的聲音。
wall
wall -g group
wall -g root see.txt
例子中“-g”參數指定用戶組,實現向特定組發送信息的功能。換言之,系統中有多個用戶組登錄,你只想將信息廣播到ROOT超級用戶組屬性登錄的用戶屏幕,可以用“-g root”參數。無參數的wall命令向所有登錄系統的用戶發送屏幕信息,一般用於要緊急關機的場合,提示用戶在規定時間保存資料、退出系統。要廣播的信息可以是一個文本文件中的內容,也可以直接輸入,但與write不同的是,直接輸入時每行信息回車後並不發送,只有在Ctrl+d組合鍵確認輸入結束後才全部發送。需要注意的是:如果系統中無其他用戶登錄,各個屏幕(終端)都處於Login:等待登錄狀態,那麼wall命令發送的信息就不會顯示在屏幕上。
向網絡中的用戶屏幕發送信息
上面的三種方法只能對本地主機的屏幕發送信息,實際工作中我們會需要向網絡中多臺Unix主機的用戶屏幕做同樣的操作,以便統一行動,此時就要用到網絡廣播命令rwall。
rwall 123.45.67.89 < see.txt
它的參數就是要接受信息的Unix主機IP地址,使用“<”轉向符將文本文件信息發送到指定主機的所有有用戶登錄的屏幕上。rwall命令不需要登錄對方主機,不需要口令。實際應用中一般都作成一個shell文檔,將要接受信息的主機列入其中,然後統一發送。例如shell文檔爲gb:
rwall 123.45.67.89 < $1
rwall 123.45.67.90 < $1
rwall 123.45.67.91 < $1
……
發送信息時:./gb see.txt。
同樣,遠程主機的屏幕只有有用戶登錄才能接受到信息,在login:狀態下不會有信息發送到屏幕上。如果對方主機已經關閉,或者線路出現故障,系統會提示:“Couldn't contact 123.45.67.89 : RPC : Timed out”。
以上方法、命令在SCO Unix5.05系統中測試通過,在其他Unix系統中可能命令的具體形式會有所變化。