- 本系列文章,将整理一系列Linux环境下进程相关的操作命令,包括进程启动、kill、挂起、查看、前后台进程切换等各种命令。
- 本文为本系列的第六篇,关注对进程的其他操作。
- 欢迎各位关注我的博客:https://qxhgd.blog.csdn.net。
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