之前讲了Linux对文件和目录的管理和相关操作,下面主要讲一些Linux系统管理的一些命令,来探查Linux系统的内部信息。
Linux系统管理员面临的最复杂的任务之一就是跟踪运行在系统中的程序。图形化界面总是显示不出所有正在执行的程序,好在还有一些命令可以进行管理。
ps命令可以检测进程的运行,它能输出运行在系统上的所有程序的许多信息。然而该命令还有很多的选项参数,所以ps命令可以被称为复杂的命令之一。(学习一些必要的参数组合是非常必要的)
默认情况下,ps命令只会显示运行在当前控制台下属于当前用户的进程(只有ps命令本身)
输出中包含进程的ID(PID),以及它们运行在哪个终端(TTY),以及进程已用的CPU时间。
Linux系统中实用的GNU ps命令支持三种不同类型的命令行参数
Unix风格参数 加单破折线-
BSD风格参数 不加破折线
GNU风格参数 加双破折线
在实际使用中,并不是需要记住所有的参数选项,而是要记住一些非常有用、经常使用到的参数组合
-ef 查看系统上运行的所有进程
-e 显示所有进程 -f扩展输出(格式上完整)
想要更多的信息,则可以加 -l 参数
其实记住一个Unix风格即可,其他的风格最为了解,以后见到不是特别惊讶就好了
GNU是长参数类型
虽然ps命令可以手机到运行在系统上的进程信息,但是ps命令只能显示在某个特定时间点的信息。使用top命令也是现实进程信息,但是是实时显示的。
第一行显示了当前时间、系统运行时间、登录用户、系统的平均负载
(负载值超过2,就说明系统较为繁忙了)
第二行显示进程的概要信息,在top中进程被称为task
第三行显示CPU的概要信息
最后两行说明了系统内存的状态
默认情况下,top命令在启动时会按照%CPU值对进程进行排序,可以在top运行的时候,在进行重新排序。
按q键退出top命令(可以用来找出占用系统资源的罪魁祸首!)
在Linux中,进程间可以通过信号来通信,进程的信号就是预定义好的一个消息,进程可以识别它决定忽略或者做出反应,进程如何处理信号由开发人员通过编程来实现。
标准的Unix进程信号:
Linux上有两个命令可以向运行中的进程发出信号:
kill命令可以通过进程ID(PID)给进程发信号。默认情况下,kill命令会向命令行中列出的全部PID发送一个TERM信号。
kill 3940
给进程3940发出TERM信号(此时你必须是进程的属主或者登陆为root用户,否则会被拒绝)
TERM告诉进程可能的话就停止运行,不过,也有不服管教的进程,就会忽略这个信号,如果要强行中止,-s 参数可以让你如愿以偿。(支持信号名或者信号值)
kill -s 15 3940
kill -s HUP 3940
killall 命令非常强大,它支持通过进程名而不是PID来结束进程,而且killall命令还支持通配符
killall http*
结束所有以http开头的进程
(在root用户下 ,要谨慎使用,防止杀掉必要的系统进程,可能会破坏文件系统)