命令行的故障排除:给linux初学者的建议
接下来你这么做。假如你知道是什么锁住了你的桌面,你可以找到它的进程号并杀死它。比如,当我在我的海豚图形文件管理器中连接到一个远端网络共享时,网络连接中断了,海豚图形文件管理器锁住了我整个桌面。所以我进入控制台模式,运行下列命令来找到它的进程号:
$ 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 - 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 konsole4386 carla 1937m 819m 2.0 5.1 firefox1511 root 613m 189m 1.3 1.2 Xorg上述结果指出Konsole是麻烦制造者,因为它占用了94.2%的cpu。你可以很清楚的看到这个进程的id号:6399,来吧,杀死这个进程。
$ 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)一旦你找到看起来有用的信息,你可以参考你的文档,看看是怎么回事,并通过谷歌查询跟多的信息。
$ 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)来查看帮助菜单。当然,我不可能面面俱到,所以我举了个例子。但是具体是什么原因导致图形界面挂掉要具体问题具体分析。你可能是丢失了一个库或者系统发生了冲突,具体命令行会告诉你。