리눅스 파일 시스템
일반적인 리눅스 디렉토리 이름 :
디렉토리 | 용도 |
---|---|
/ | 가상 루트 디렉토리. 일반적으로 여기에 파일을 저장하지 않습니다 |
/큰 상자 | 바이너리 디렉토리는 많은 사용자 수준 도구 GUN를 저장 |
/신병 | 시작 디렉토리, 부팅 파일을 저장 |
/ dev에 | 장비 디렉토리, 리눅스 디바이스 노드는 여기 만들어 |
/기타 | 시스템 구성 파일 디렉토리 |
/집 | 홈 디렉토리, 리눅스 사용자 디렉토리는 여기에 생성 |
/ lib에 | 도서관 카탈로그, 저장소 파일 시스템 및 응용 프로그램 |
/미디어 | 미디어 카탈로그 공통 마운트 포인트, 이동식 미디어 장치 |
/ MNT | 마운트 디렉토리, 또 다른 일반적인 마운트 포인트는 모바일 미디어 장치가있을 수 있습니다 |
/고르다 | 데이터를 저장 파일 및 타사 소프트웨어 패키지에 사용되는 옵션 디렉토리, |
/ PROC | 코스 카탈로그, 저장, 기존 하드웨어와 현재의 프로세스 정보 |
/뿌리 | 루트 사용자의 홈 디렉토리 |
/ sbin에 | 시스템 바이너리 디렉토리, 그것은 GUN 관리자 수준의 도구를 많이두고 |
/운영 | 디렉토리를 실행하는 런타임 데이터, 스토리지 시스템 운영 |
/ SRV | 디렉토리 서비스, 서비스는 파일을 로컬로 저장 관련 |
/ SYS | 시스템 디렉토리, 파일 시스템 관련 하드웨어 정보를 저장 |
/ tmp를 | 임시 디렉토리, 해당 디렉토리에 임시 작업 파일을 생성 및 삭제할 수 있습니다 |
는 / usr | 바이너리 디렉토리의 사용자, 사용자 수준 GUN 툴과 데이터 파일의 큰 숫자는 여기에 저장됩니다 |
/ 어디 | 이러한 로그 파일과 같이 자주 변경되는 파일을 저장하기위한 변수 디렉토리 |
공통 디렉토리 이름은 파일 시스템 계층 표준 (파일 시스템 계층 구조 stanard, FHS)을 기반으로합니다. FHS는 때때로 FHS 리눅스 배포판에서 어떤 사람들은 이전 표준을 사용가있을 수 있습니다 업데이트. : 최신 FHS 표준은 공식 홈 페이지를 방문 할 수 있습니다
http://www.pathname.com/fhs을
ps 명령 과정을 보는
프로그램이 시스템에서 실행되면, 과정 (프로세스)라고합니다. 이러한 프로세스를 모니터링하기 위해, 우리는 ps 명령의 사용에 익숙해야합니다.
기본적으로 ps 명령은 현재 콘솔에서 실행 현재 사용자에 속하는 프로세스를 표시합니다 :
$ ps
PID TTY TIME CMD
4763 pts/0 00:00:00 bash
4782 pts/0 00:00:00 ps
$
여기서, bash 쉘 실행 현재 사용자 및 ps 명령 자체 (주, 쉘은 시스템에서만 실행되는 또 다른 과정이다).
리눅스 시스템에서 사용되는 GNU의 ps 명령은 명령 줄 매개 변수의 세 가지 유형을 지원합니다 :
- 하나의 파선으로 앞에 유닉스 스타일의 매개 변수,
- 첫 번째 점선이없는 BSD 스타일의 매개 변수,
- 점선 비스 앞에 GNU 긴 스타일의 매개 변수,
유닉스 스타일의 매개 변수
벨 연구소가 아래로 원래 AT & T 유닉스 ps 명령 시스템을 개발에서 유닉스 스타일의 인수는 상속됩니다.
유닉스 스타일 ps 명령 매개 변수 :
매개 변수 | 기술 |
---|---|
-에이 | 모든 프로세스를 표시 |
-엔 | 전체 프로세스와 일치 나타내는 파라미터 표시 |
-에이 | 표시 제어 처리 (세션 리더) 및 모든 비 - 프로세스는 다른 단말을 처리 |
-디 | 공정 제어를 제외한 모든 프로세스를 표시 |
-이자형 | 모든 프로세스를 표시합니다. -A 동일해야 |
-C cmdlist | 디스플레이 과정은 cmdlist의 목록에 포함되어 |
-G GRPLIST | 프로세스 그룹 ID는 GRPLIST의 목록에 표시됩니다 |
-U 사용자 목록 | 소유자의 사용자 ID 프로세스 사용자 목록의 목록을 표시합니다 |
-g GRPLIST | 표시 세션 또는 그룹 ID 프로세스 GRPLIST 목록 |
-p pidlist는 | PID 프로세서 pidlist는 목록 |
-s sesslist | 세션 ID 표시 처리 sesslist 목록 |
-t ttylist | 터미널 ID 프로세스 ttylist의 목록을 표시합니다 |
-u 사용자 목록 | 유효 사용자 ID는 프로세스의 사용자 목록 목록에 표시됩니다 |
-에프 | 이상의 추가 출력 (-f 매개 변수를 기준으로 조건)보기 |
-O 형식 | 기본 디스플레이 출력 열 및 특정 열 형식 지정 목록 |
-엠 | 안전 정보 표시 방법 |
-씨 | 추가 정보는 프로세스 스케줄러를 보여 |
-에프 | 전체 화면 출력 형식 |
-제이 | 디스플레이 작업 정보 |
-엘 | 긴 목록을 표시합니다 |
-o 형식 | 단지 형식 열을 기준으로 지정된보기 |
- 그리고 | (진행 상태 테이블 마킹 플래그) 현저한 진전을 표시하지 않음 |
-Z | 보안 레이블이 표시됩니다 (SELinux에의 보안 컨텍스트) 정보 |
-H | 형식 (나무를 부모 프로세스를 표시하는) 계층 적 공정을 표시합니다 |
-n 이름 목록 | 이는 열에 표시된 값을 정의 WCHAN |
-w | 넓은 출력 모드의 표시에 한정되지 않는다 폭 |
-엘 | 그 과정에서 표시 스레드 |
-V | ps 명령은 버전 번호를 표시 |
명령 매개 변수는 아니지만 반드시 모든 많은 나열되어 있습니다. ps 명령을 사용하는 열쇠는 마음에 사용할 수있는 매개 변수의 많은 방법이 아니다. 그러나 단지 잘 가장 유용한 매개 변수 조합의 일부를 기억한다.
ps -ef
查看系统上运行的所有进程:
$ ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 18:23 ? 00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0 0 18:23 ? 00:00:00 [kthreadd]
root 3 2 0 18:23 ? 00:00:00 [ksoftirqd/0]
root 5 2 0 18:23 ? 00:00:00 [kworker/0:0H]
root 6 2 0 18:23 ? 00:00:00 [kworker/u2:0]
root 7 2 0 18:23 ? 00:00:00 [migration/0]
root 8 2 0 18:23 ? 00:00:00 [rcu_bh]
root 9 2 0 18:23 ? 00:00:00 [rcu_sched]
root 10 2 0 18:23 ? 00:00:00 [lru-add-drain]
......
root 4250 1 0 18:23 ? 00:00:00 /usr/sbin/hypervkvpd -n
root 4251 1 0 18:23 ? 00:00:00 /usr/sbin/sshd -D
root 4253 1 0 18:23 ? 00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 4254 1 0 18:23 ? 00:00:00 /usr/sbin/rsyslogd -n
root 4515 1 0 18:23 ? 00:00:00 /usr/libexec/postfix/master -w
postfix 4532 4515 0 18:24 ? 00:00:00 qmgr -l -t unix -u
root 4569 4251 0 18:24 ? 00:00:00 sshd: root@pts/0
root 4763 4569 0 18:24 pts/0 00:00:00 -bash
postfix 4931 4515 0 20:04 ? 00:00:00 pickup -l -t unix -u
root 4938 2 0 20:31 ? 00:00:00 [kworker/0:3]
root 4944 2 0 20:46 ? 00:00:00 [kworker/0:2]
root 4947 2 0 20:51 ? 00:00:00 [kworker/0:0]
root 4949 4763 0 20:53 pts/0 00:00:00 ps -ef
$
每列的信息说明:
- UID:启动这些进程的用户
- PID:进程的进程ID
- PPID:父进程的进程号(如果该进程是由另一个进程启动的)
- C:进程生命周期中的CPU利用率
- STIME:进程启动时的系统时间
- TTY:进程启动时的终端设备
- TIME:运行进程需要的累积CPU时间
- CMD:启动的程序名称
ps -elps -ef
最常用,而-l参数可以显示其他额外的信息,也可以ps -efl
把两部分的信息都显示出来。
使用-l参数,会产生一个长格式输出:
$ ps -el
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 1 0 0 80 0 - 32005 ep_pol ? 00:00:01 systemd
1 S 0 2 0 0 80 0 - 0 kthrea ? 00:00:00 kthreadd
1 S 0 3 2 0 80 0 - 0 smpboo ? 00:00:00 ksoftirqd/0
1 S 0 5 2 0 60 -20 - 0 worker ? 00:00:00 kworker/0:0H
1 S 0 6 2 0 80 0 - 0 worker ? 00:00:00 kworker/u2:0
1 S 0 7 2 0 -40 - - 0 smpboo ? 00:00:00 migration/0
1 S 0 8 2 0 80 0 - 0 rcu_gp ? 00:00:00 rcu_bh
1 R 0 9 2 0 80 0 - 0 - ? 00:00:00 rcu_sched
1 S 0 10 2 0 60 -20 - 0 rescue ? 00:00:00 lru-add-drain
......
4 S 0 4250 1 0 80 0 - 10025 poll_s ? 00:00:00 hypervkvpd
4 S 0 4251 1 0 80 0 - 28215 poll_s ? 00:00:00 sshd
4 S 0 4253 1 0 80 0 - 143481 poll_s ? 00:00:02 tuned
4 S 0 4254 1 0 80 0 - 55687 poll_s ? 00:00:00 rsyslogd
5 S 0 4515 1 0 80 0 - 22412 ep_pol ? 00:00:00 master
4 S 89 4532 4515 0 80 0 - 22455 ep_pol ? 00:00:00 qmgr
4 S 0 4569 4251 0 80 0 - 39183 poll_s ? 00:00:00 sshd
4 S 0 4763 4569 0 80 0 - 28859 do_wai pts/0 00:00:00 bash
4 S 89 4931 4515 0 80 0 - 22438 ep_pol ? 00:00:00 pickup
1 S 0 4972 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:0
1 S 0 4973 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:3
1 S 0 4974 2 0 80 0 - 0 worker ? 00:00:00 kworker/0:1
1 R 0 4977 2 0 80 0 - 0 - ? 00:00:00 kworker/0:2
0 R 0 4979 4763 0 80 0 - 38309 - pts/0 00:00:00 ps
$ ^
每列的信息说明:
- F:内核分配给进程的系统标记
- S:进程的状态
- O代表正在运行
- S代表正在休眠
- R代表可运行,正等待运行
- Z代表僵化,进程已结束但父进程已不存在
- T代表停止
- PRI:进程的优先级(越大表示优先级越低)
- NI:谦让度值用来参与决定优先级
- ADDR:进程的内存地址
- SZ:假如进程被换出,所需交换空间的大致大小
- WCHAN:进程休眠的内核函数的地址
BSD风格的参数
伯克利软件发行版(Berkeley software distribution, BSD)是加州大学伯克利分校开发的一个Unix版本。
BSD风格的ps命令参数:
参数 | 描述 |
---|---|
T | 显示跟当前终端关联的所有进程 |
a | 显示跟任意终端关联的所有进程 |
g | 显示所有的进程,包括控制进程 |
r | 仅显示运行中的进程 |
x | 显示所有的进程,甚至包括未分配任何终端的进程 |
U userlist | 显示归userlist列表中某用户ID所拥有的进程 |
p pidlist | 显示PID在pidlist列表中的进程 |
t ttylist | 显示所关联的终端在ttylist列表中的进程 |
O format | 除了默认输出的列之外,还输出由format指定的列 |
X | 按过去的Linux i386寄存器格式显示 |
Z | 将安全信息添加到输出中。效果和-Z参数差不多 |
j | 显示任务信息 |
l | 采用长模式 |
o format | 仅显示由format指定的列 |
s | 采用信号格式显示 |
u | 采用基于用户的格式显示 |
v | 采用虚拟内存格式显示 |
N namelist | 定义在WCHAN列中使用的值 |
O order | 定义显示信息列的顺序 |
S | 将数值信息从子进程加到父进程上,比如CPU和内存的使用情况 |
c | 显示真实的命令名称(用以启动进程的程序名称) |
e | 显示命令使用的环境变量 |
f | 用分层格式来显示进程、表明哪些进程启动了哪些进程 |
h | 不显示头信息 |
k sort | 指定用以将输出排序的列 |
n | 和WCHAN信息一起显示出来,用数值来表示用户ID和组ID |
w | 为较宽屏幕显示宽输出 |
H | 将线程按进程来显示 |
m | 在进程后显示线程 |
L | 列出所有格式指定符 |
V | 显示ps命令的版本号 |
Unix和BSD类型的参数有很多是重复的,大多数情况下,选择自己重用的格式的参数即可。
ps aux
这个是BSD风格的显示所有进程的命令,效果类似于ps -ef
,主要是展示风格不同,输出的列也有一些区别。
在使用BSD参数时,ps命令会自动改变输出以模仿BSD格式:
$ ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.3 128000 6540 ? Ss 09:19 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 09:19 0:00 [kthreadd]
root 3 0.0 0.0 0 0 ? S 09:19 0:00 [ksoftirqd/0]
root 5 0.0 0.0 0 0 ? S< 09:19 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 09:19 0:00 [kworker/u2:0]
root 7 0.0 0.0 0 0 ? S 09:19 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 09:19 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? R 09:19 0:00 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 09:19 0:00 [lru-add-drain]
......
root 4256 0.0 0.0 40100 1540 ? Ss 09:19 0:00 /usr/sbin/hypervkvpd -n
root 4258 0.0 0.2 112860 4296 ? Ss 09:19 0:00 /usr/sbin/sshd -D
root 4259 0.0 0.4 222748 7800 ? Ssl 09:19 0:00 /usr/sbin/rsyslogd -n
root 4261 0.0 0.9 573924 17144 ? Ssl 09:19 0:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 4503 0.0 0.1 89648 2100 ? Ss 09:19 0:00 /usr/libexec/postfix/master -w
postfix 4516 0.0 0.2 89752 4068 ? S 09:19 0:00 pickup -l -t unix -u
postfix 4517 0.0 0.2 89820 4096 ? S 09:19 0:00 qmgr -l -t unix -u
root 4770 0.0 0.3 156732 5524 ? Ss 09:28 0:00 sshd: root@pts/0
root 4774 0.0 0.1 115436 2068 pts/0 Ss 09:28 0:00 -bash
root 4829 0.0 0.0 0 0 ? S 09:35 0:00 [kworker/0:3]
root 4887 0.0 0.0 0 0 ? S 09:40 0:00 [kworker/0:1]
root 4901 0.0 0.0 0 0 ? R 09:45 0:00 [kworker/0:0]
root 4903 0.0 0.1 155360 1884 pts/0 R+ 09:48 0:00 ps aux
$
每列的信息说明:
- VSZ:进程在内存中的大小,以千字节(KB)为单位
- RSS:进程在未唤出时占用的物理内存
- STAT:代表当前进程状态的双字符状态码。
BSD风格表示的进程状态码更详细。双字符码能比Unix风格输出的单字符状态码更清楚地表示进程的当前状态。
第一个字符采用了Unix分格S列相同的值,表明休眠(S)、运行(O)还是等待(R)。
第二个值进一步说明进程的状态:
- <:该进程运行在高优先级上
- N:该进程运行在低优先级上
- L:该进程有页面锁定在内存中
- s:该进程是控制进程
- l:该进程是多线程的
- +:该进程运行在前台
GNU长参数
最后,GNU开发人员在最近改进过的ps命令中加入了另外一些参数。其中一些复制了现有的Unix或BSD类型的参数,而另一些则提供了新功能。
GNU风格的ps命令参数:
参数 | 描述 |
---|---|
--deselect | 显示所有进程,除了命令行中列出的进程 |
--Group grplist | 显示组ID在grplist列表中的进程 |
--User userlist | 显示用户ID在userlist列表中的进程 |
--group grplist | 显示有效组ID在grplist列表中的进程 |
--pid pidlist | 显示PID在pidlist列表中的进程 |
--ppid pidlist | 显示父PID在pidlist列表中的进程 |
--sid sidlist | 显示会话ID在sidlist列表中的进程 |
--tty ttylist | 显示终端设备号在ttylist列表中的进程 |
--user userlist | 显示有效用户ID在userlist列表中的进程 |
--format format | 仅显示由format指定的列 |
--context | 显示额外的安全信息 |
--cols n | 将屏幕宽度设置为n列 |
--columns n | 将屏幕宽度设置为n列 |
--cumulative | 包含已停止的子进程的信息 |
--forest | 用层级结构显示出进程和父进程之间的关系 |
--headers | 在每页输出是显示列的头 |
--no-headers | 不显示列的头 |
--lines n | 将屏幕高度设为n行 |
--rows n | 将屏幕高度设为n排 |
--sort order | 指定将输出按哪列排序 |
--width n | 将屏幕宽度设为n列 |
--help | 显示帮助信息 |
--info | 显示调试信息 |
--version | 显示ps命令的版本号 |
部分GNU长参数可以和Unix或BSD风格的参数混用来定制输出。
--forest参数 显示进程的层级信息
这么多参数中,--forest是一个很好的功能。它会显示进程的层级信息,并用ASCII字符绘出好看的效果:
$ ps -ef --forest
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 09:19 ? 00:00:00 [kthreadd]
root 3 2 0 09:19 ? 00:00:00 \_ [ksoftirqd/0]
......
root 4256 1 0 09:19 ? 00:00:00 /usr/sbin/hypervkvpd -n
root 4258 1 0 09:19 ? 00:00:00 /usr/sbin/sshd -D
root 4770 4258 0 09:28 ? 00:00:00 \_ sshd: root@pts/0
root 4774 4770 0 09:28 pts/0 00:00:00 \_ -bash
root 5001 4774 0 11:12 pts/0 00:00:00 \_ ps -ef --forest
root 4259 1 0 09:19 ? 00:00:00 /usr/sbin/rsyslogd -n
root 4261 1 0 09:19 ? 00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 4503 1 0 09:19 ? 00:00:00 /usr/libexec/postfix/master -w
postfix 4517 4503 0 09:19 ? 00:00:00 \_ qmgr -l -t unix -u
postfix 4958 4503 0 11:00 ? 00:00:00 \_ pickup -l -t unix -u
$
Unix风格的-H参数也有同样的功能,但是效果没有这个好:
$ ps -efH
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 09:19 ? 00:00:00 [kthreadd]
root 3 2 0 09:19 ? 00:00:00 [ksoftirqd/0]
......
root 4256 1 0 09:19 ? 00:00:00 /usr/sbin/hypervkvpd -n
root 4258 1 0 09:19 ? 00:00:00 /usr/sbin/sshd -D
root 4770 4258 0 09:28 ? 00:00:00 sshd: root@pts/0
root 4774 4770 0 09:28 pts/0 00:00:00 -bash
root 5002 4774 0 11:13 pts/0 00:00:00 ps -efH
root 4259 1 0 09:19 ? 00:00:00 /usr/sbin/rsyslogd -n
root 4261 1 0 09:19 ? 00:00:01 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 4503 1 0 09:19 ? 00:00:00 /usr/libexec/postfix/master -w
postfix 4517 4503 0 09:19 ? 00:00:00 qmgr -l -t unix -u
postfix 4958 4503 0 11:00 ? 00:00:00 pickup -l -t unix -u
$
BSD风格的f参数也是这个功能,效果和--forest一样。
top 命令实时监测进程
top命令和ps命令相似,都能够显示进程信息,并且是实时的:
$ top
top - 12:01:28 up 2:41, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 97 total, 2 running, 95 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.3 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1816668 total, 335380 free, 1325796 used, 155492 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 321636 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5028 root 20 0 161880 2216 1572 R 0.3 0.1 0:00.06 top
1 root 20 0 128000 6544 4136 S 0.0 0.4 0:01.12 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 0:00.03 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.03 kworker/u2:0
7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 0:00.35 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
11 root rt 0 0 0 0 S 0.0 0.0 0:00.11 watchdog/0
13 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kdevtmpfs
14 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 netns
15 root 20 0 0 0 0 S 0.0 0.0 0:00.00 khungtaskd
16 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 writeback
17 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kintegrityd
18 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
19 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
20 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 bioset
21 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kblockd
22 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 md
23 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 edac-poller
24 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 watchdogd
30 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kswapd0
31 root 25 5 0 0 0 S 0.0 0.0 0:00.00 ksmd
32 root 39 19 0 0 0 S 0.0 0.0 0:00.06 khugepaged
33 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 crypto
41 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kthrotld
输出的第一部分显示的是系统的概况:
- 第一行显示了当前时间、系统的运行时间、登录的用户数以及系统的平均负载。
- 平均负载有3个值:最近1分钟的、最近5分钟的、最近15分钟的平均负载
- 第二行显示了进程概要信息。这里将进程叫做任务(task),各种状态进程的数量:
- total:总数
- running:运行
- sleeping:休眠
- stopped:停止
- zombie:僵化(僵化状态是指进程完成了,但父进程没有响应)
- 第三行显示了CPU的概要信息,将CPU利用率分成几类输出:
- us【user space】— 用户空间占用CPU的百分比。
- sy【sysctl】— 内核空间占用CPU的百分比。
- ni【】— 改变过优先级的进程占用CPU的百分比
- id【idolt】— 空闲CPU百分比
- wa【wait】— IO等待占用CPU的百分比
- hi【Hardware IRQ】— 硬中断占用CPU的百分比
- si【Software Interrupts】— 软中断占用CPU的百分比
- 第四行是系统的物理内存状态:
- total — 物理内存总量
- free — 空闲内存总量
- used — 使用中的内存总量
- buff/cache — 用作内核缓存的内存量
- 第五行是系统的交换空间状态:
- total — 交换区总量
- free — 空闲交换区总量
- used — 使用的交换区总量
- avail Mem — 缓冲的交换区总量。内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖,该数值即为这些内容已存在于内存中的交换区的大小,相应的内存再次被换出时可不必再对交换区写入。
- 最后一部分显示了当前运行中的进程的详细列表,有些列和ps命令的输出类似:
- PID:进程的ID
- USER:进程属主的名字
- PR:进程的优先级
- NI:进程的谦让度值(nice值)
- VIRT:进程占用的虚拟内存总量
- RES:进程占用的物理内存总量
- SHR:进程和其他进程共享的内存总量
- S:进程的状态(D可中断的休眠状态,R运行,S休眠,T跟踪状态或停止状态,Z僵化)
- %CPU:进程使用的CPU时间比例
- %MEM:进程使用的内存占可用内存的比例
- TIME+:自进程启动到目前为止的CPU时间总量
- COMMAND:进程所对应的命令行名称,也就是启动的程序名
默认情况下,top启动后按%CPU排序,可按f指定其他列。轮询时间默认是3.0秒,可按d修改。按q是退出。其他就不列举了。
结束进程
在Linux中,进程之间通过信号来通信。大多数编写完善的程序都能接收和处理标准Unix进程信号。
Linux进程信号:
信号 | 名称 | 描述 |
---|---|---|
1 | HUP | 挂起 |
2 | INT | 中断 |
3 | QUIT | 结束运行 |
9 | KILL | 无条件终止 |
11 | SEGV | 段错误 |
15 | TERM | 尽可能终止 |
17 | STOP | 无条件停止运行,但不终止 |
18 | TSTP | 停止或暂停,但继续在后台运行 |
19 | CONT | 在STOP或TSTP之后恢复执行 |
kill命令
kill命令可通过进程ID(PID)给进程发信号。默认发送TERM信号。因为只能使用PID来指定,而不能用命令名,所以有时候不是很好用。
要发送信号,你还必须是该进程的属主或者是root。
kill命令不会有任何输出,要检查kill命令是由有效,可以再运行ps或top命令。
killall命令
killall命令支持通过进程名而不是PID来结束进程。killall命令也支持通配符。