歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> 關於Linux >> 命令行的故障排除:給linux初學者的建議(譯文)

命令行的故障排除:給linux初學者的建議(譯文)

日期:2017/3/1 13:38:23   编辑:關於Linux
從1991年到現在,linux才誕生了20多年,雖然他只比我小一歲,但是他已經走過了很長的路了。並且,他現在比以前更可靠和穩定。但是linux任然是有問題的,相信你能判斷並修復任何問題。
桌面凍結該怎麼辦? 在使圖形環境更穩定的過程中,復合窗口管理器是一個巨大的進步。但是,有時候你們漂亮的linux圖形化桌面鎖起來了,那麼你會怎麼辦?你所要做的是通過ctrl + alt + f2進入到一個控制台。這個控制台和你的圖形環境是互相獨立的。 接下來你這麼做。假如你知道是什麼鎖住了你的桌面,你可以找到它的進程號並殺死它。比如,當我在我的海豚圖形文件管理器中連接到一個遠端網絡共享時,網絡連接中斷了,海豚圖形文件管理器鎖住了我整個桌面。所以我進入控制台模式,運行下列命令來找到它的進程號:
$ ps aux | grep dolphin 
carla 9218 ?  Sl  0:00 /usr/bin/dolphin    
     --icon system-file-manager -caption Dolphin
這表明carla擁有這個進程,她能夠使用下面的命令來殺死這個進程:
$ kill 9218
假如root或者不同的使用者擁有這個進程,那就使用命令:sudo kill 9218 現在,在你的鍵盤上按下向上箭頭按鍵去回到上一條命令,按下Enter鍵去重新運行,看我們的殺死命令是否有效,是否殺死了那個進程。如果,沒有殺死,那就使用更霸道的命令:
$ kill -9 9218
-9發送SIGKILL信號,這個信號是不能被忽略的,是直接送到內核的(個人理解nuclear option)。假如你發現一個失控進程已近催生了子進程。為了防止你所殺死的子進程再次由它產生,你需要去殺死父進程,因為它產生子進程,這樣可以防止它再產生子進程。(假如你不熟悉這些術語,那麼你有同伴了,我也不熟悉這些術語(原作者的觀點))。添加-f選項來在樹狀圖中看父進程和子進程的關系,就像plex媒體服務器這個簡短的例子:
root 1776 /bin/sh -e /proc/self/fd/9 
plex 1803   \_ /bin/sh /usr/sbin/start_pms 
plex 1804     \_ ./Plex Media Server 
plex 1970     \_Plex Plug-in [com.plexapp.system] 
plex 2645     \_ /usr/lib/plexmediaserver 
plex 2690     \_ Plex Plug-in 
所以,你可以用sudo kill 1776去干掉上述所有的進程。大多數linux發行版有六個控制台:tty1~tty6.tty7通常是你的x會話(x window 圖形界面),所以你可以按ctrl + alt + f7來重返你的圖形界面。
誰是罪魁禍首? 假如你不確定哪個進程造成了這個問題,試試古老而有用的top命令:
$ top  
top - 12:07:33 up 4:13, 7 users, load average: 0.56, 0.38, 0.34 
[...] 
PID USER  VIRT  RES   %CPU %MEM  COMMAND 
6399 carla  493m 27m 94.2 0.2 konsole
4386 carla 1937m 819m  2.0  5.1 firefox
1511 root   613m 189m  1.3  1.2  Xorg
上述結果指出Konsole是麻煩制造者,因為它占用了94.2%的cpu。你可以很清楚的看到這個進程的id號:6399,來吧,殺死這個進程。
記錄保存一天 大多數服務器記錄他們的活動。假如你查看/var/log,你會發現一系列的日志文件如CPUS,boot,dmesg,kern.log,syslog,和udev.當你安裝服務的時候,他們通常有可配置的日志記錄,所以你可以從調試信息的緊急程度來選擇放日志文件的地點及日志文件的詳細程度。下面是調試信息等級:
  • debug
  • info
  • notice
  • warning
  • error
  • critical
  • alert
  • emergency emergency輸出最少量的信息。 debug輸出最多的信息。 info是一個很好的每天記錄等級,記錄日常活動以及警告和錯誤。 debug可以是壓倒性的,所以當你在研究一個問題時,一個好的策略是打開調試,然後當問題被解決時將問題寫到info中。你將在哪裡做這些呢?看一下/etc這個目錄。個人的服務都有自己的配置文件,比如/etc/cups/cupsd.conf。如果你的linux是古老的syslogd,這個syslog在/etc/syslog.conf中配置。如果你有新的rsyslogd,你的syslog在/etc/rsyslog.conf中配置。人們並不是很喜歡去讀日志文件。但是在要解決問題的時候,他們不得不讀。有個好方法是,你可以用grep命令讓錯誤信息自動出現。
    $ grep -i error /var/log/syslog
    
    任何文本字符串都將幫助你快速的找到你所需要的信息,如下這個例子是網絡管理經常做的:
    $ grep -i networkmanager /var/log/syslog 
    Dec 10 14:54:50 studio NetworkManager[1402]:  
       (eth1): DHCPv4 state changed bound -> renew 
    Dec 10 14:54:50 studio NetworkManager[1402]:      
       address 192.168.10.182 
    Dec 10 14:54:50 studio NetworkManager[1402]:
       prefix 24 (255.255.255.0)
                    
    
    一旦你找到看起來有用的信息,你可以參考你的文檔,看看是怎麼回事,並通過谷歌查詢跟多的信息。
    但是,圖形應用程序沒有日志 大部分圖形應用部產生日志文件,這是可悲的和沒有幫助的。但是,你任然可以從命令行運行應用程序來查看一些命令輸出,如我最喜歡的游戲:超級TuxKart:
    $ supertuxkart  
    Irrlicht Engine version 1.8.0 Linux 3.8.0-19-generic 
      #30-Ubuntu SMP Wed May 1 1   
    6:35:23 UTC 2013 x86_64 [FileManager] Data files will be fetched from:
        '/usr/share/games/supertuxkart' 
    [FileManager] Addons files will be stored in    
       '/home/carla/.local/share/supertuxkart/addons'.
    
    Debian要求所有的程序有一個man手冊,所以如果你使用的是Debian,Ubuntu或者他們的衍生系統,你可以使用man手冊。如果沒有man手冊或其它文件,試試-h參數(比如 superuxkart -h)來查看幫助菜單。當然,我不可能面面俱到,所以我舉了個例子。但是具體是什麼原因導致圖形界面掛掉要具體問題具體分析。你可能是丟失了一個庫或者系統發生了沖突,具體命令行會告訴你。原作者:Carla Schroder 原文地址:http://www.linux.com/learn/tutorials/752708-linux-commands-for-troubleshooting-linux-graphical-apps-for-beginners 雖然本人英語過了六級,但水平還是有限的,請大家指正翻譯錯誤!謝謝大家!
Copyright © Linux教程網 All Rights Reserved