發表文章

目前顯示的是 三月, 2016的文章

當 console 壞掉的時候 ...

這是今天在工作上看到的一個小技巧,所以把它記錄下來。在程式開發的過程中很容易會使用 print 的方式來追蹤並解決問題,以 C 來說最常見的就是 printf,如果要吐到 console 上的話就開啟 /dev/console 並使用 fprintf。 今天聽到的問題是:「版子的 console 壞掉了怎麼辦?」

最不花腦筋的答案:「換張版子吧~」

廢話,如果是這樣也不用紀錄了。我今天看到的作法紀錄在下面:

$ killall klogd
$ mv /dev/console /dev/console_bak
$ ln -sf /dev/pts/0 /dev/console

這作法真是太 cool 了,連程式都不用改唷,當然前題是你可以透過 terminal 連進去就是了。第1行的目的是少印一些資訊。

那 /dev/pts/0 是什麼東西呢?pts 是 pseudo terminal slave 的縮寫。細節可以 google 得到,這邊只講最簡單的,當有 terminal 連到 linux 主機時,主機會分派一個 pts 給他。舉例來說,我在 linux 啟動兩個 gnome-terminal,再透過 who 這個指令,可以看到下面的訊息:

$ who
neokent  tty7         2016-03-03 15:05 (:0)
neokent  pts/2        2016-03-03 15:06 (:0)
neokent  pts/5        2016-03-03 17:08 (:0)

其中 tty7 是我的桌面,pts/2 和 pts/5 是我的兩個 terminal。這時候如果在 pts/2 的 terminal 上執行 echo Hello > /dev/pts/5 可以在 pts/5 上看到 Hello 唷。