进程和程序(ps top lsof kill nice renice )

进程

表示程序的一次执行过程,是应用程序的运行实例,是一个动态的过程。或者描述为:进程是操作系统当前运行的程序。

进程包括动态执行的程序和数据,每一个进程都是操作系统进行资源调度和分配的一个独立单位。并且每个进程之间存在互斥和同步的关系,互斥也就是不能同时运行,同步指的是进程间通过某种通信机制实现信息交互。

进程的状态
运行态 态表示程序当前实际占用着CPU等资源
就绪态 程序除CPU之外的一切运行资源都已经就绪,等待操作系统分配CPU资源,只要分配了CPU资源,可立即运行
阻塞态 程序在运行的过程中由于需要请求外部资源而当前无法继续执行,从而主动放弃当前CPU资源转而等待所请求资源。

进程和程序的区别

程序是指令的有序结合(一系列动作执行过程的描述),是一个静态的概念。程序可以以某种形式保存载存储介质上。

进程是动态的,是程序以及数据在计算机上的一次执行,没有静态的程序也就没有动态的执行。也只能在运行时存在于计算机的内存中。

进程的查看命令

ps :查看进程(只是当前查询状态下进程瞬间的状态信息)  格式 :ps 参数

常用参数:-A 列出所有进程  -a 列出不和本终端有关的所有进程  -w 显示加宽可以显示更多进程 

-u 显示有效使用者相关的进程  aux  显示所有包含其他使用者的进程

[root@web1 ~]# ps -A
   PID TTY          TIME CMD
     1 ?        00:00:03 systemd
     2 ?        00:00:00 kthreadd
...
 10908 ?        00:00:00 systemd-hostnam
 10925 pts/0    00:00:00 ps
[root@web1 ~]# ps -a
   PID TTY          TIME CMD
 10944 pts/0    00:00:00 ps
[root@web1 ~]# ps -u
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       1532  0.0  1.5 330012 29172 tty1     Ssl+ 11:26   0:10 /usr/b
root       2734  0.0  0.1 116396  2992 pts/0    Ss   11:28   0:00 bash
root      10966  0.0  0.0 151064  1820 pts/0    R+   18:12   0:00 ps -u
[root@web1 ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 128164  6860 ?        Ss   11:26   0:03 /usr/l
root          2  0.0  0.0      0     0 ?        S    11:26   0:00 [kthre
root          3  0.0  0.0      0     0 ?        S    11:26   0:00 [ksoft
root          5  0.0  0.0      0     0 ?        S<   11:26   0:00 [kwork
...
//(1-4列)进程拥有者   pid  占用的CPU使用率  占用的内存使用率  
(5-7列)占用的虚拟内存大小  占用的内存大小  运行的终端号码   
(8列)进程状态(D:不可中断 R:运行中  S:休眠  T:暂停  Z:僵尸进程 W:没有足够的内存可分配  <:高优先级的行程  N:低优先级的行程)  
(9-11列)进程开始时间  累计使用CPU时间 执行的命令

top :动态的查看进程,它提供了实时的系统状态监控,可以按照CPU使用、内存使用、执行时间等指标对进程进行排序。

注:按字母P键表示按照CPU的使用率排序,按字母M键表示按照Memory的使用率排序,按字母N键表示以PID排序,按字母T键表示按照CPU使用时间排序,按字母K键则表示kill进程,按字母R键表示可以renice一个进程等。

[root@web1 ~]# top

top - 18:26:38 up  7:00,  2 users,  load average: 0.00, 0.01, 0.05
//基础信息:命令的刷新时间 启动时间 目前登录用户个数  系统的负载:最近一分钟内的系统负载 最近五分钟内的平均负载  最近15分钟内的平均负载
Tasks: 244 total,   1 running, 243 sleeping,   0 stopped,   0 zombie
//进程情况: 一共多少进程  正在运行   休眠的个数  停止的进程  僵尸进程 
%Cpu(s):  5.2 us,  2.4 sy,  0.0 ni, 92.3 id,  0.0 wa,  0.0 hi,  0.0 si, 0.0 st
//CPU信息:用户空间占用的CPU百分比 内核空间占用 改变过优先级的进程 空闲CPU百分比 wa代表I/O等待百分比  hi硬中断占用的CPU百分比 si软中断占用的CPU百分比  st虚拟机偷取时间
KiB Mem :  1867024 total,   410628 free,   808252 used,   648144 buff/cache
//物理内存的使用状态:物理内存总量 空闲内存  已使用内存 缓存使用的内存
KiB Swap:  2097148 total,  2097148 free,        0 used.   818516 avail Mem
//是虚拟内存的使用状态:内存总量 空闲内存  已使用内存  缓冲的交换区总量 

   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+  COMMAND
//进程id 所有者 进程优先级 nice值(负值表示高优先级,正值低优先) 
VIRT(虚拟内存总量 单位为Kb vIRT-SWAP+RES) RES(进程使用未被换出的物理内存大小 单位为Kb RES=CODE+DATA) SHR(共享内存大小 单位为Kb) 
%CPU上次更新到现在的CPU时间占用百分比  %MEM进程使用的物理内存百分比  TIME+进程使用的CPU时间总计,单位为1/100秒  COMMAND进程名称(命令名/命令行)
1403 root      20   0  344516  30992  11504 S   1.3  1.7   0:45.89 X                                                        
  2405 root      20   0  721536  24408  15060 S   1.0  1.3   0:12.72 gnome-terminal-                                          
  2014 root      20   0 2143004 132756  41084 S   0.3  7.1   1:38.11 gnome-shell                                              
  2123 root      20   0 1364484  29036  16352 S   0.3  1.6   0:05.02 gnome-settings-                                          
  2191 root      20   0  384956  18632  14780 S   0.3  1.0   0:59.85 vmtoolsd                                                 
     1 root      20   0  194928   6864   2720 S   0.0  0.4   0:08.31 systemd                                                  
     2 root      20   0       0      0      0 S   0.0  0.0   0:00.08 kthreadd                                                 
     3 root      20   0       0      0      0 S   0.0  0.0   0:00.44 ksoftirqd/0                                              
     5 root       0 -20       0      0      0 S   0.0  0.0   0:00.00 kworker/0:0H                                             
     7 root      rt   0       0      0      0 S   0.0  0.0   0:00.13 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:07.61 rcu_sched        

进程的终止:kill ,killall 

kill  [信号代码]  进程ID

常用信号代码如下: HUP(1) 重启(不改变主进程,也就是相当于软重启) 

                                  KILL(9) 强行结束     

                                  TERM(15) 正常结束   可以使进程正常退出 

killall  进程名字      结束进程较为安全 

lsof   查询进程打开的文件   lsof  [ options ]  filename 

打开的文件可以是普通文件、目录、网络文件系统中的文件、字符设备、管道、socket等

lsof filename 显示打开指定文件的所有进程 
lsof -c string   显示COMMAND列中包含指定字符的进程所有打开的文件 #lsof -u username  显示所属于user进程打开的文件 
lsof -g gid 显示归属于gid的进程情况 
lsof +d /DIR/ 显示目录下被进程打开的文件 
lsof +D /DIR/ 同上,但是会搜索目录下的所有目录,时间相对较长 
lsof -d FD 显示指定文件描述符的进程 
lsof -n 不将IP转换为hostname,默认是不加-n参数 
lsof -i 用以显示符合条件的进程情况 
lsof -i[46] [protocol][@hostname|hostaddr][:service|port] 
           46指IPv4或IPv6 
           protocol指TCP或UDP 
           hostname指主机名 
           hostaddr是IPv4地址 
           service是/etc/service中的service name
           port是端口

[root@guowei ~]# lsof /root             //显示打开指定文件/root的所有程序
COMMAND     PID USER   FD   TYPE DEVICE SIZE/OFF     NODE NAME
gnome-ses  1794 root  cwd    DIR  253,0     4096 33574977 /root
gnome-she  2014 root  cwd    DIR  253,0     4096 33574977 /root
...
[root@guowei ~]# lsof -c ibus-daem      //显示COMMAND列中包含指定字符ibus-daem的进程所有打开的文件
COMMAND    PID USER   FD      TYPE             DEVICE  SIZE/OFF     NODE NAME
ibus-daem 2021 root  cwd       DIR              253,0      4096 33574977 /root
ibus-daem 2021 root  rtd       DIR              253,0       235       64 /
...
[root@guowei ~]# lsof -u root | more     //显示所属于root进程打开的文件 
COMMAND     PID USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
systemd       1 root  cwd       DIR              253,0       235         64 /
systemd       1 root  rtd       DIR              253,0       235         64 /
systemd       1 root  txt       REG              253,0   1523560   34432363 /usr/lib/systemd/systemd
...
[root@guowei ~]# lsof | more
COMMAND     PID  TID           USER   FD      TYPE             DEVICE  SIZE/OFF       NODE NAME
//进程的名称  进程id  线程id  用户  文件描述符   文件类型  磁盘名  文件大小   文件标识(索引节点) 文件名称  
systemd       1                root  cwd       DIR              253,0       235         64 /
systemd       1                root  rtd       DIR              253,0       235         64 /
systemd       1                root  txt       REG              253,0   1523560   34432363 /usr/lib/systemd/systemd
systemd       1                root  mem       REG              253,0     20040     288885 /usr/lib64/libuuid.so.1.3.0
systemd       1                root  mem       REG              253,0    261336     618875 /usr/lib64/libblkid.so.1.1.0
...
[root@guowei ~]# lsof -i:22                //可以查看使用某个端口22的进程 
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    1140 root    3u  IPv4  22327      0t0  TCP *:ssh (LISTEN)
sshd    1140 root    4u  IPv6  22336      0t0  TCP *:ssh (LISTEN)

nice、renice 进程的优先级调整 

通过top命令可以看到其输出中有NI字段,标记了对应进程的优先级,取值范围是-20~19,数值越低代表优先级越高,也就能更多地被操作系统调度运行,如果一个进程在启动时并没有设定nice优先级,则默认使用0。

 # nice -n -10 ./job.sh           //将脚本名为job.sh 的优先级设置为 -10

# renice -10 -p  1234           //将PID为1234的进程的nice优先级调整为-10

利用tpo命令修改 

查到该进程的PID  在top界面按r键 出现 PID to renice 后输入PID 

top - 17:49:10 up 20:27,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 247 total,   2 running, 245 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  5.9 sy,  0.0 ni, 94.1 id,  0.0 wa,  0.0 hi,  0.0 si,  
KiB Mem :  1867048 total,   281856 free,   819896 used,   765296 buff/cac
KiB Swap:  2097148 total,  2097108 free,       40 used.   800748 avail Me
PID to renice [default pid = 2405] 
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ 
  2405 root      20   0  740016  31076  15800 S   6.2  1.7   0:25.26 

然后在出现的 Renice PID XXXX  to value 后输入修改的nice优先级即可

top - 17:49:10 up 20:27,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 247 total,   2 running, 245 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  5.9 sy,  0.0 ni, 94.1 id,  0.0 wa,  0.0 hi,  0.0 si,  
KiB Mem :  1867048 total,   281856 free,   819896 used,   765296 buff/cac
KiB Swap:  2097148 total,  2097108 free,       40 used.   800748 avail Me
Renice PID 2345 to value 
   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ 
  2405 root      20   0  740016  31076  15800 S   6.2  1.7   0:25.26 

猜你喜欢

转载自blog.csdn.net/weixin_43800781/article/details/88381150
今日推荐