【Linux】【操作】Linux操作集锦系列之三——进程管理系列之(六)进程其他操作命令

简介: 【Linux】【操作】Linux操作集锦系列之三——进程管理系列之(六)进程其他操作命令
  • 本系列文章,将整理一系列Linux环境下进程相关的操作命令,包括进程启动、kill、挂起、查看、前后台进程切换等各种命令。


  • 本文为本系列的第六篇,关注对进程的其他操作。



ps或top查看进程nice值


  • nice值应该是熟悉Linux/UNIX的人很了解的概念了,它是反应一个进程“优先级”状态的值,其取值范围是-20至19,一共40个级别;


  • 这个值越小,表示进程”优先级”越高,而值越大“优先级”越低。


  • 比如查看进程的nice值(一般默认为0):


[qxhgd@localhost ~]$ ps -el | grep smbd
4 S     0   1430      1  0  80   0 - 106747 ep_pol ?       00:00:00 smbd
[qxhgd@localhost ~]$ ps -e -o class,rtprio,pri,nice,cmd
CLS RTPRIO PRI  NI CMD
TS       -  19   0 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
TS       -  19   0 [kthreadd]
TS       -  39 -20 [kworker/0:0H]
[qxhgd@localhost ~]$ top
   PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND
   866 root      20   0  324488   6752   5256 S  0.3  0.4   0:04.71 vmtoolsd
   934 root      20   0  115312    944    696 S  0.3  0.1   0:00.07 ksmtuned


nice


  • 用于以指定的进程调度优先级启动其他的程序,nice指“niceness”,即友善度、谦让度。用于进程中,表示进程的优先级,也即进程的友善度。niceness值为负时,表示高优先级,能提前执行和获得更多的资源,对应低友善度;反之,则表示低优先级,高友善度;


  • 每个进程都有一个介于 -20 到 19 之间的 nice 值。默认情况下,进程的 nice 值为 0;


  • nice 命令可以给要启动的进程赋予 NI 值,但是不能修改已运行进程的 NI 值;


  • 系统允许root用户设置负数优先级,以及减小现有进程的优先级数值大小。对普通用户仅允许设置正数优先级,并且只能增大现有进程的优先级数值大小。


  • 例子


nice -19 tar zcf pack.tar.gz  documents #以nice值19,低优先级执行打包
nice --19 tar zcf pack.tar.gz  documents #以nice值-19,高优先级执行打包


renice


  • 用于重新指定一个或多个行程(Process)的优先序;


  • 同 nice 命令恰恰相反,renice 命令可以在进程运行时修改其 NI 值,从而调整优先级;


  • 例子:


sudo renice -n 15 -p 77982  #changing priority of the running process
renice -n 10 -g 4           #To change the priority of all programs of a specific group
sudo renice -n 10 -u 2      #To change the priority of all programs of a specific user. 


chrt


  • 优先级是进程的实时属性,值在0-99范围内的,都是实时进程,所以这个优先级范围也可以叫做实时进程优先级,而100-139范围内的是非实时进程;


  • chrt是用来查看、设置一个进程的实时优先级状态;


  • chrt也可用于设置进程的调度策略;


-例子:


chrt -p 0 1035
pid 1035's current scheduling policy: SCHED_RR
pid 1035's current scheduling priority: 1
chrt: number 0 is not in 1..99 range


taskset


  • The taskset command allows you to set or retrieve a process’s CPU affinity;


  • taskset命令用于设置进程(或 线程)的处理器亲和性(Processor Affinity),可以将进程(或 线程)绑定到特定的一个或多个CPU上去执行,而不允许将进程(或 线程)调度到其他的CPU上。


  • 命令格式:


– 通用命令格式:


[qxhgd@localhost ~]$ taskset mask command [arguments]


– 查看现有任务的CPU相关性:


[qxhgd@localhost ~]$ taskset -p pid


– 设置现有任务的CPU相关性:


[qxhgd@localhost ~]$ taskset -p mask pid


  • 例子:


[qxhgd@localhost ~]$ taskset -p 2371         #查看2371的cpu亲和性
pid 2371's current affinity mask: 1


[qxhgd@localhost ~]$ taskset -p 0x2 2371    #设置2371的cpu亲和性 
pid 2371's current affinity mask: 1
pid 1393's new affinity mask: 2


pmap


  • Pmap 提供了进程的内存映射,pmap命令用于显示一个或多个进程的内存状态。其报告进程的地址空间和内存状态信息。Pmap实际上是一个Sun OS上的命令,linux仅支持其有限的功能。但是它还是对查看完整的进程地址空间很有帮助。我们需要PID或者运行的进程的唯一进程ID来查看进程内存状态,我们可以通过/proc或者常规命令比如top或ps得到它。


  • 例子:


[qxhgd@localhost ~]$ pmap 1013
1013: /usr/sbin/sshd
00110000 1480K r-x- /usr/lib/libcrypto.so.1.0.0
00282000 80K rw-- /usr/lib/libcrypto.so.1.0.0
00296000 12K rw-- [ anon ]
00299000 36K r-x- /lib/libkrb5support.so.0.1
002a2000 4K rw-- /lib/libkrb5support.so.0.1
002a3000 16K r-x- /lib/libplc4.so
002a7000 4K rw-- /lib/libplc4.so
002ab000 88K r-x- /lib/libaudit.so.1.0.0
002c1000 4K r-- /lib/libaudit.so.1.0.0
002c2000 4K rw-- /lib/libaudit.so.1.0.0
002c3000 216K r-x- /lib/libgssapi_krb5.so.2.2
002f9000 4K rw-- /lib/libgssapi_krb5.so.2.2
002fa000 808K r-x- /lib/libkrb5.so.3.3
003c4000 24K rw-- /lib/libkrb5.so.3.3
003ca000 152K r-x- /lib/libk5crypto.so.3.1
003f0000 4K rw-- /lib/libk5crypto.so.3.1
003f1000 92K r-x- /usr/lib/libnssutil3.so
00738000 4K r--- /lib/libresolv-2.12.so
00739000 4K rw-- /lib/libresolv-2.12.so
0073a000 8K rw-- [ anon ]
00825000 120K r-x- /lib/ld-2.12.so
00843000 4K r--- /lib/ld-2.12.so
00844000 4K rw-- /lib/ld-2.12.so
0090d000 32K r-x- /lib/libwrap.so.0.7.6
00915000 4K rw-- /lib/libwrap.so.0.7.6
00948000 484K r-x- /usr/sbin/sshd
009c1000 8K rw-- /usr/sbin/sshd
009c3000 20K rw-- [ anon ]
009e0000 92K r-x- /lib/libpthread-2.12.so
009f7000 4K r--- /lib/libpthread-2.12.so
total 8232K
相关文章
|
3天前
|
Linux
会玩这10个Linux命令,一定是个有趣的IT男!
会玩这10个Linux命令,一定是个有趣的IT男!
|
2天前
|
安全 Linux 开发者
Linux笔记之ldd命令详解
`ldd`命令是Linux环境下一个非常实用的工具,用于显示一个程序运行时所需的共享库依赖。它帮助开发者和系统管理员快速诊断程序运行问题,特别是在处理"找不到库文件"或者"错误的库文件版本"等错误时。然而,出于安全的考虑,对于不信任的可执行文件,应该慎用 `ldd`命令,可以考虑使用其他工具如 `objdump`。总的来说,懂得如何妥善且安全地使用 `ldd`,对于维护一个稳定和高效的Linux系统来说,是非常重要的。
18 9
|
3天前
|
Linux Shell
linux命令
linux命令是对Linux系统进行管理的命令。对于Linux系统来说,无论是中央处理器、内存、磁盘驱动器、键盘、鼠标,还是用户等都是文件,Linux系统管理的命令是它正常运行的核心,与之前的DOS命令类似。linux命令在系统中有两种类型:内置Shell命令和Linux命令。
|
1天前
|
Linux
Linux源码阅读笔记13-进程通信组件中
Linux源码阅读笔记13-进程通信组件中
|
1天前
|
消息中间件 安全 Java
Linux源码阅读笔记13-进程通信组件上
Linux源码阅读笔记13-进程通信组件上
|
1天前
|
Linux
Linux源码阅读笔记10-进程NICE案例分析2
Linux源码阅读笔记10-进程NICE案例分析2
|
1天前
|
Linux 数据安全/隐私保护
|
1天前
|
Linux
Linux源码阅读笔记09-进程NICE案例分析1
Linux源码阅读笔记09-进程NICE案例分析1
|
1天前
|
存储 Linux API
Linux源码阅读笔记08-进程调度API系统调用案例分析
Linux源码阅读笔记08-进程调度API系统调用案例分析
|
1天前
|
Linux API
Linux源码阅读笔记07-进程管理4大常用API函数
Linux源码阅读笔记07-进程管理4大常用API函数