您的位置:首頁技術文章
文章詳情頁

UNIX下發送屏幕信息

瀏覽:105日期:2024-07-02 08:59:27

在Unix操作系統中,為了通知用戶某條信息,我們常常采用向用戶能看到的屏幕寫信息的方法實現。 向單一屏幕發送信息 每個登錄主機系統的用戶都分配有一個終端號,例如主控臺上的12個屏幕分別為tty01~tty12,從多用戶卡上登錄一般有tty2a、tty2b、tty21a……等等終端設備號,如果是遠程登錄則為ttyp0、ttyp1等虛擬終端號。它們對應的終端設備文件都在/dev目錄下。

echo'讓我告訴你:……' > /dev/tty03

這種方法使用了輸出轉向符“>”直接寫終端文件/dev/tty03來實現向屏幕發送信息。與以下其他三種方式不同的是,這種方法是針對終端的,而不是針對登錄用戶的,所以即使該終端沒有用戶登錄,使用這種方法也可以向屏幕發送信息。但其他三種方法只能對有用戶登錄的屏幕發送信息。

向指定用戶發送信息

同一個系統用戶可以在多個終端登錄,例如超級用戶可以在主控臺三號屏幕,同時也可以在多用戶卡連接的tty21c終端登錄。此時要向指定屏幕發送信息可以用write命令。

write root tty03

如果用戶只在一個屏幕登錄,可以省略第二個參數。利用這個命令可以實現聊天功能,因為每次回車后信息即發送至指定屏幕,這種特性是其他幾種發送信息方式無法實現的?!敖K止”使用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系統中可能命令的具體形式會有所變化。

標簽: Unix系統
国产综合久久一区二区三区