进程: 已经启动的可执行程序的运行实力
进程的组成:一个进程包含内核中的一部分地址空间和一系列数据结构。其中地址空间是内核标记的一部分内存以供进程使用,而数据结构则用来纪录每个进程的具体信息。
最主要的进程信息包括:
每个进程都会从内核获取一个唯一的 ID 值。绝大多数用来操作进程的命令和系统调用,都需要用 PID 指定操作的进程对象。
在 Unix 和 Linux 系统中,一个已经存在的进程必须“克隆”它自身来创建一个新的进程。当新的进程克隆后,最初的进程便作为父进程存在。
一个进程的 UID 是其创建者的身份标志(也是对其父进程 UID 的复制)。通常只有进程的创建者和超级用户才有操作该进程的权限。
EUID 是一个额外的 UID,用来决定在任意一个特定时间点,一个进程有权限访问的文件和资源。对绝大多数进程而言,UID 和 EUID 是相同的(特殊情况即 setuid)
一个进程的计划优先级决定了它能获取到的 CPU 时间。内核有一个动态的算法来计算优先级,同时也会关注一个 Niceness 值,来决定程序运行的优先顺序。
信号属于进程级别的中断请求。它们可以作为进程间通信的手段,或者由终端发送以杀死、中断、挂起某个进程。
Linux的信号列表:
[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
常用信号:
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概念不同,如果你不理解用户空间和内核空间——>传送门:https://www.cnblogs.com/sparkdev/p/8410350.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和其他更多的信息。
原文:https://www.cnblogs.com/ashjo009/p/11912563.html