进程: 已经启动的可执行程序的运行实力html
进程的组成:一个进程包含内核中的一部分地址空间和一系列数据结构。其中地址空间是内核标记的一部份内存以供进程使用,而数据结构则用来纪录每一个进程的具体信息。web
最主要的进程信息包括:算法
每一个进程都会从内核获取一个惟一的 ID 值。绝大多数用来操做进程的命令和系统调用,都须要用 PID 指定操做的进程对象。shell
在 Unix 和 Linux 系统中,一个已经存在的进程必须“克隆”它自身来建立一个新的进程。当新的进程克隆后,最初的进程便做为父进程存在。windows
一个进程的 UID 是其建立者的身份标志(也是对其父进程 UID 的复制)。一般只有进程的建立者和超级用户才有操做该进程的权限。
EUID 是一个额外的 UID,用来决定在任意一个特定时间点,一个进程有权限访问的文件和资源。对绝大多数进程而言,UID 和 EUID 是相同的(特殊状况即 setuid)bash
一个进程的计划优先级决定了它能获取到的 CPU 时间。内核有一个动态的算法来计算优先级,同时也会关注一个 Niceness 值,来决定程序运行的优先顺序。网络
信号属于进程级别的中断请求。它们能够做为进程间通讯的手段,或者由终端发送以杀死、中断、挂起某个进程。数据结构
Linux的信号列表:ui
[root@web ~]# kill -l 1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP 21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ 26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR 31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3 38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8 43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13 48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12 53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7 58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2 63) SIGRTMAX-1 64) SIGRTMAX
经常使用信号:spa
9)SIGKILL:用来当即结束程序的运行。本信号不能被阻塞、处理和忽略。
15)SIGTERM:程序结束(terminate)信号。与SIGKILL不一样的是该信号能够被阻塞和处理。一般用来要求程序本身正常(优雅地)退出。shell命令kill缺省产生这个信号。
19)SIGSTOP:中止(stopped)进程的执行。注意它和terminate以及interrupt的区别:该进程还未结束,只是暂停执行。本信号不能被阻塞、处理或忽略。
简介:ps 命令就是最根本相应状况下也是至关强大地进程查看命令.运用该命令能够肯定有哪些进程正在运行和运行地状态、 进程 是否结束、进程有没有僵死、哪些进程占用了过多地资源等等.总之大部分信息均为能够经过执行该命令获得
-e 显示全部进程,环境变量
-f 全格式
-h 不显示标题
-l 长格式
-w 宽输出
a
显示终端上地全部进程,包括其余用户地进程
命令使用案例:
列出全部进程:
[root@web ~]# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.7 190900 3796 ? Ss 09:28 0:01 /usr/lib/syste root 2 0.0 0.0 0 0 ? S 09:28 0:00 [kthreadd] root 4 0.0 0.0 0 0 ? S< 09:28 0:00 [kworker/0:0H] root 5 0.0 0.0 0 0 ? S 09:28 0:00 [kworker/u256: root 6 0.0 0.0 0 0 ? S 09:28 0:00 [ksoftirqd/0]
[root@web ~]# ps ef PID TTY STAT TIME COMMAND 918 pts/0 Ss 0:00 -bash USER=root LOGNAME=root HOME=/root PATH=/usr/lo 949 pts/0 S 0:00 \_ bash XDG_SESSION_ID=4 HOSTNAME=172.16.234.111 TE 1258 pts/0 R+ 0:00 \_ ps ef XDG_SESSION_ID=4 HOSTNAME=172.16.234.1
列出相似进程树的程序:
[root@web ~]# ps axjf PPID PID PGID SID TTY TPGID STAT UID TIME COMMAND 0 2 0 0 ? -1 S 0 0:00 [kthreadd] 2 4 0 0 ? -1 S< 0 0:00 \_ [kworker/0:0H] 2 5 0 0 ? -1 S 0 0:00 \_ [kworker/u256: 2 6 0 0 ? -1 S 0 0:00 \_ [ksoftirqd/0] 2 7 0 0 ? -1 S 0 0:00 \_ [migration/0]
-l : 列出和当前用户有关的进程 -u 用户 : 查看某一用户的进程状态
ps -aux 参数解释
注:在 STAT 栏目中:
查看实时的进程状态,实现动态监控进程,top 命令能够实时显示系统当前活跃进程的整体信息及其占用的资源。
top - 16:21:00 up 6:52, 1 user, load average: 0.00, 0.01, 0.05 Tasks: 95 total, 1 running, 94 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 479664 total, 268788 free, 98624 used, 112252 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 362524 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 407 root 20 0 0 0 0 S 0.3 0.0 0:01.19 xfsaild/dm+ 1 root 20 0 190900 3796 2584 S 0.0 0.8 0:02.00 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:+ 5 root 20 0 0 0 0 S 0.0 0.0 0:00.57 kworker/u2+ 6 root 20 0 0 0 0 S 0.0 0.0 0:00.74 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
top 命令的 -d
选项能够指定信息刷新的时间间隔。同时还有一些经常使用的交互命令
top - 10:45:08 up 1:19, 2 users, load average: 0.00, 0.01, 0.05
注意 load average数据是每隔5秒钟检查一次活跃的进程数,而后按特定算法计算出的数值。若是这个数除以逻辑CPU的数量,结果高于5的时候就代表系统在超负荷运转了
Tasks: 97 total, 1 running, 96 sleeping, 0 stopped, 0 zombie
Task-任务,分别显示任务进程的总数量以及正在运行、睡眠、中止、僵死的进程数
%Cpu(s): 1.0 us, 1.0 sy, 0.0 ni, 98.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
注:在这里CPU的使用比率和windows概念不一样,若是你不理解用户空间和内核空间——>传送门:http://www.javashuo.com/article/p-vasigkxa-gq.html
KiB Mem : 479664 total, 278252 free, 89548 used, 111864 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 371568 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1 root 20 0 43400 3736 2568 S 0.0 0.8 0:01.71 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker+
PID:进程ID,进程的惟一标识符
USER:进程全部者的实际用户名。
PR:进程的调度优先级。这个字段的一些值是'rt'。这意味这这些进程运行在实时态。
NI:进程的nice值(优先级)。越小的值意味着越高的优先级。负值表示高优先级,正值表示低优先级
VIRT:进程使用的虚拟内存。进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES:驻留内存大小。驻留内存是任务使用的非交换物理内存大小。进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR:SHR是进程使用的共享内存。共享内存大小,单位kb
S:这个是进程的状态。它有如下不一样的值:
%CPU:自从上一次更新时到如今任务所使用的CPU时间百分比。
%MEM:进程使用的可用物理内存百分比。
TIME+:任务启动后到如今所使用的所有CPU时间,精确到百分之一秒。
COMMAND:运行进程所使用的命令。进程名称(命令名/命令行)
还有许多在默认状况下不会显示的输出,它们能够显示进程的页错误、有效组和组ID和其余更多的信息。