每一个进程都有一个唯一的进程标识符PID 初始化进程,PID=1,也叫根进程
在Shell下通过执行程序所产生的进程,这个进程为当前shell的子进程。
一个进程序列
服务,监控进程,后台运行,如sshd
ps
a:显示系统中所有用户的进程。 x:表示显示没有控制终端的进程及后台进程。 r:只显示正在运行的进程。 u:表示显示进程所有者的信息。 -e:表示显示所有进程。 -f:按全格式显示(列出进程间父子关系)。 -l:按长格式显示。
ps -ef
bashroot@momen-PC:~# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 18:02 ? 00:00:00 /init
root 7 1 0 18:02 ? 00:00:00 /init
root 8 7 0 18:02 ? 00:00:00 /init
root 9 8 0 18:02 pts/0 00:00:00 -bash
root 119 9 0 18:02 pts/0 00:00:00 apt update
_apt 122 119 1 18:02 pts/0 00:00:00 /usr/lib/apt/methods/https
bash输出列含义: UID //用户ID,显示为用户名 PID //进程PID PPID //父进程PID C //进程占用CPU的百分比 STIME //进程启动到现在的时间 TTY //该进程在那个终端上运行,若与终端无关,则显示?; 若为pts/0等,表示由网络连接主机进程 CMD //命令的名称和参数 USER //启动某个进程的用户ID和改用户所属组的ID STAT //进程状态 运行,等待,停止等 PRIORITY //进程优先级
ps aux
bashroot@momen-PC:~# ps aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1804 1180 ? Sl 18:02 0:00 /init
root 7 0.0 0.0 1816 80 ? Ss 18:02 0:00 /init
root 8 0.0 0.0 1816 92 ? S 18:02 0:00 /init
root 9 0.0 0.0 10128 5056 pts/0 Ss+ 18:02 0:00 -bash
root 351 0.0 0.0 1816 80 ? Ss 18:02 0:00 /init
root 352 0.0 0.0 1816 92 ? R 18:02 0:00 /init
root 353 0.0 0.0 10128 5128 pts/1 Ss 18:02 0:00 -bash
root 16386 0.0 0.0 10620 3388 pts/1 R+ 18:17 0:00 ps aux
输出列含义 USER //用户名 %CPU //进程占用的CPU百分比 %MEM //进程占用的内存百分比 VSZ //该进程使用的虚拟內存量(KB) RSS //该进程占用的实际內存量(KB) STAT //进程的状态 (P108) START //该进程被触发启动时间 TIME //该进程实际使用CPU运行的时间
--sort -[列]
降序排序
--sort +[列]
升序排序
bashroot@momen-PC:~# ps aux --sort -%cpu | head -6
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 1804 1180 ? Sl 20:30 0:00 /init
root 7 0.0 0.0 1816 80 ? Ss 20:30 0:00 /init
root 8 0.0 0.0 1816 92 ? S 20:30 0:00 /init
root 9 0.0 0.0 10072 5128 pts/0 Ss 20:30 0:00 -bash
root 61 0.0 0.0 1816 80 ? Ss 20:39 0:00 /init
bashroot@momen-PC:~# ps aux --sort -rss | head -6
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 9 0.0 0.0 10072 5128 pts/0 Ss 20:30 0:00 -bash
root 63 0.0 0.0 10072 5088 pts/1 Ss 20:39 0:00 -bash
root 78 0.0 0.0 10876 3648 pts/1 S+ 20:39 0:00 top
root 82 0.0 0.0 10620 3240 pts/0 R+ 20:46 0:00 ps aux --sort -rss
root 1 0.0 0.0 1804 1180 ? Sl 20:30 0:00 /init
bashroot@momen-PC:~# ps aux --sort +rss | head -6
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 7 0.0 0.0 1816 80 ? Ss 20:30 0:00 /init
root 61 0.0 0.0 1816 80 ? Ss 20:39 0:00 /init
root 8 0.0 0.0 1816 92 ? S 20:30 0:00 /init
root 62 0.0 0.0 1816 92 ? S 20:39 0:00 /init
root 87 0.0 0.0 7248 516 pts/0 S+ 20:48 0:00 head -6
top
bashtop - 18:03:50 up 1 min, 0 users, load average: 0.13, 0.06, 0.02
Tasks: 10 total, 1 running, 9 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.3 us, 0.1 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
MiB Mem : 7653.3 total, 6807.2 free, 312.5 used, 533.6 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 7113.1 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
518 _apt 20 0 28848 17208 10304 S 6.2 0.2 0:01.27 https
488 root 20 0 80400 70304 52448 S 0.5 0.9 0:00.93 apt
1 root 20 0 1804 1180 1104 S 0.0 0.0 0:00.01 init
7 root 20 0 1816 80 0 S 0.0 0.0 0:00.00 init
8 root 20 0 1816 92 0 S 0.0 0.0 0:00.04 init
9 root 20 0 10128 5056 3300 S 0.0 0.1 0:00.03 bash
351 root 20 0 1816 80 0 S 0.0 0.0 0:00.00 init
352 root 20 0 1816 92 0 S 0.0 0.0 0:00.00 init
353 root 20 0 10128 5128 3376 S 0.0 0.1 0:00.04 bash
519 root 20 0 10876 3668 3156 R 0.0 0.0 0:00.00 top
PID 进程号 PR 优先级 NI nice值,负数表示高优先,正数低优先级 VIRT 虚拟内存总量 kB RES 进程使用的,未被换出的物理内存大小 KB SHR 共享内存大小 KB S 进程状态 %CPU CPU的占比 %MEM 物理内存的占比 TIME+ 进程使用的cpu时间和,单位1/100秒 COMMAND 命令
常用选项: -d:指定每两次屏幕刷新的时间间隔,例如:top -d 10 #每10s刷新一次屏幕 -c:表示显示整个命令行,而不只是显示命令名。例如:top -c q:退出top N:以PID的大小的顺序排列表示进程列表,执行完top后,输入N实现排序 P: 以CPU占用率大小的顺序排列进程列表,执行完top后,输入P实现排序 M:以内存占用率大小的顺序排列进程列表,执行完top后,输入M实现排序
top -c U [用户名]
top -o %MEM
pstree [开始的进程] //只能查看在这个进程上的子进程
bashroot@momen-PC:~# pstree 0
?───init─┬─init───init───bash───pstree
├─init───init───bash───top
└─2*[{init}]
source 脚本文件名
//不会建立子bash
bash 脚本文件名
//会建立子bash
sh 脚本文件名
. 脚本文件名
//不会建立子bash
./脚本文件名
//会建立子bash[常用]
[路径]脚本文件名
//会建立子bash
2.若在要执行的命令后面跟随一个符号“&”,则为后台启动 如./server &
3.在shell下启动的进程就是shell进程的子进程
事先设置好程序要运行的时间,当到了预设的时间后,系统自动启动程序 http://wiki.momen.world:8880/post/33
<ctrl>+<z>
:将一个正在前台执行的命令放到后台,并且暂停执行
jobs
:查看当前有多少在后台运行的命令 常见用法:jobs -l
fg命令
:将挂起的作业调至前台继续运行,用法: fg %jobnumber
bg命令
:将挂起的作业在后台变成继续执行,用法:bg %jobnumber
注:%jobnumber
是通过jobs命令查到的后台命令的序号
后台任务继承当前会话的标准输出(stdout)和标准错误(stderr) 因此,此后台任务的所有输出依然会在当前SHELL的命令行下显示 后台任务不就成当前会话的标准输入(stdin),此后台任务无法接收输入指令 执行后台任务的同时,用户可以在当前shell执行其他命令
ctrl+c
kill -9 <pid>:强制终止进程
kill命令中的常见信号(可以使用kill -l 命令列出所有信号名称): SIGHUP - 1:用户退出登陆时,会给对终端输出的进程(即:当前终端SHELL窗口产生的子进程)发送此信号,使进程退出。有些信号免疫此信号,如`nohup`启动的进程 SIGINT - 2:中断 `ctrl+c`,终止前台进程 SIGTERM - 15:友好终止进程的执行,进程可以释放资源然后退出 SIGKILL - 9:强制终止进程执行,进程资源无法释放,用于终止无法正常结束或异常的进程 SIGCONT - 18:使进程继续执行 SIGSTOP - 19:进程未结束执行,知识使进程暂停执行
kill命令中常见信号
kill -l
命令列出所有信号的名称
进程优先级:http://wiki.momen.world:8880/post/48
进程优先级用nice
值表示,范围-20~19
,-20
为最高优先级 19为最低优先级,数字越大,优先级越低,系统进程默认优先级0
使用ps -efl
或者top
命令查看进程的优先级,表示优先级的两个字段PR(PRI)和NI,NI是优先值,是用户层面的概念,PR是给内核使用的进程实际优先级
命令nice
用于设置进程的优先级 nice [-n] [命令[参数]...]
bashroot@momen-PC:~# ps -efl
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 80 0 - 436 - 10:33 ? 00:00:00 /init
5 S root 7 1 0 80 0 - 441 - 10:33 ? 00:00:00 /init
1 D root 8 7 0 80 0 - 441 - 10:33 ? 00:00:00 /init
4 S root 9 8 0 80 0 - 2522 do_wai 10:33 pts/0 00:00:00 -bash
0 R root 116 9 0 80 0 - 2655 - 10:33 pts/0 00:00:00 ps -efl
root@momen-PC:~# nice -n 5 ./tcp.sh & #以优先级为5来运行tcp.sh
root@momen-PC:~# ps -efl
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 T root 1107 63 0 85 5 - 2289 do_sig 22:11 pts/1 00:00:00 bash ./tcp.sh
root@momen-PC:~# renice 0 1107 #修改1107进程优先级为0
1107 (process ID) old priority 5, new priority 0
root@momen-PC:~# ps -efl
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
0 T root 1107 63 0 80 0 - 2289 do_sig 22:11 pts/1 00:00:00 bash ./tcp.sh
0 R root 1132 63 0 80 0 - 2655 - 22:12 pts/1 00:00:00 ps -efl
本文作者:墨洺的文档
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!