前言
众所周知,Windows系统是有任务管理器的,我们可以通过任务管理器来结束不需要的进程。而Linux系统中的进程就相当于Windows的任务管理器,只不过进程是需要用命令来管理的。
一、程序和进程
1.程序
-
程序是保存在硬盘、光盘等介质中的可执行代码和数据
-
它是静态保存的代码
2.进程
- 进程是在CPU及内存中处于动态执行状态的计算机程序
- 每个程序启动后可以创建一个或多个进程
3.进程和线程的区别
- 一个程序至少有一个进程,一个进程至少有一个线程。
- 线程的划分尺度小于进程,使得多线程程序的并发性高。
- 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
- 每个独立的线程有一个程序运行的入口,顺序执行序列和程序的出口。但是线程不能够独立执行,必须依存在应用程序中,由应用程序提供多个线程执行控制。
- 从逻辑角度来看,多线程的意义在于一个应用程序中,有多个执行部分可以同时执行。但操作系统并没有将多个线程看做多个独立的应用,来实现进程的调度和管理以及资源分配。这就是进程和线程的重要区别。
- 他们的优缺点在于:
线程执行开销小,但不利于资源的管理和保护;而进程正相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
二、查看进程
了解系统中进程的状态是对进程进行管理的前提,使用不同的命令工具可以从不同的角度查看进程状态。
1. 查看静态的进程统计信息(ps)
ps命令是Linux系统中最为常用的进程查看工具,主要用于查看静态的进程统计信息。通过不同的命令选项,可以有选择性的查看进程信息。
- 常用选项
选项 | 说明 |
---|---|
-a | 显示当前终端下的所有进程信息,包括其他用户的进程。与“x”选项结合时将显示系统中所有的进程信息。 |
-u | 使用以用户为主的格式输出进程信息 |
-x | 显示当前用户在所有终端下的进程信息 |
-e | 显示系统内的所有进程信息 |
-l | 使用长格式显示进程信息 |
-f | 使用完整的格式显示进程信息 |
- 我们一般习惯将上述选项组合在一起使用,比如执行“ps aux” 或 “ps -elf”。
1.1 ps aus 命令
执行“ps aus” 命令后,将以简单列表的形式显示出进程信息,如下:
[root@localhost ~]#ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 125488 3988 ? Ss 17:58 0:03 /usr/lib/syste
root 2 0.0 0.0 0 0 ? S 17:58 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 17:58 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 17:58 0:00 [kworker/0:0H]
root 7 0.0 0.0 0 0 ? S 17:58 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 17:58 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 17:58 0:01 [rcu_sched]
root 10 0.0 0.0 0 0 ? S 17:58 0:00 [watchdog/0]
root 11 0.0 0.0 0 0 ? S 17:58 0:00 [watchdog/1]
root 12 0.0 0.0 0 0 ? S 17:58 0:00 [migration/1]
root 13 0.0 0.0 0 0 ? S 17:58 0:00 [ksoftirqd/1]
root 14 0.0 0.0 0 0 ? S 17:58 0:00 [kworker/1:0]
root 15 0.0 0.0 0 0 ? S< 17:58 0:00 [kworker/1:0H]
root 16 0.0 0.0 0 0 ? S 17:58 0:00 [watchdog/2]
root 17