linux上的进程查看及管理工具:

pstree,ps,pidof,pgrep,top,htop,glances,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup,nice,renice,killall。。。

linux开机时,会启动第一个进程,由这个进程去启动别的进程,这个第一个进程在centos5,6,7上实现的都不一样。

  • centos5:Sysv init:串行通过脚本去启动别的进程,速度慢
  • centos6:upstart:参考ubuntu的upstart,并行启动脚本,速度快
  • centos7:systemd:参考mac启动的过程,速度更快

这个第一个进程:/sbin/init

在centos7上执行pstree:可以看到父进程是systemd

# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager─┬─dhclient
│ └─2*[{NetworkManager}]
├─2*[VBoxClient───VBoxClient]
├─2*[VBoxClient───VBoxClient───{VBoxClient}]
├─VBoxClient───VBoxClient───2*[{VBoxClient}]
├─VBoxService───7*[{VBoxService}]
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
├─alsactl
├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon}
│ └─3*[{at-spi-bus-laun}]
├─at-spi2-registr───2*[{at-spi2-registr}]

ps命令:显示当前时间点进程的状态

ps命令为什么能知道所有进程的状态呢?我们知道进程是由内核管理的。每个进程对应内核来说,就是某个变量,内核把这个变量的信息存放在/proc/进程ip/目录下,ps命令就是读这些目录下的文件,来取得所有进程的状态的。

内核参数:linux哲学是一切皆文件,所以内核参数也是文件。

  • 可设置其参数值,而改变内核的允许特性的参数存放在:/proc/sys目录下。
  • 状态变量:用于保存内核中的所有进程的信息,仅用于查看,存放在:/proc/进程id目录下。

查看/proc/1下的文件(也就是1号进程,也就是systemd进程),每个文件存放的是内核参数的值

# pwd
/proc/1
# ls
attr cmdline environ io mem ns pagemap sched stack task
autogroup comm exe limits mountinfo numa_maps patch_state schedstat stat timers
auxv coredump_filter fd loginuid mounts oom_adj personality sessionid statm uid_map
cgroup cpuset fdinfo map_files mountstats oom_score projid_map setgroups status wchan
clear_refs cwd gid_map maps net oom_score_adj root smaps syscall

查看文件comm的内容:发现是启动1号进程的命令。

# cat comm
systemd

查看文件maps的内容:

此进程使用的堆(heap)所占用的内容空间是:55f9ef4c6000-55f9ef643000

此进程使用的栈(stack)所占用的内容空间是:7ffd27f9e000-7ffd27fbf000

此进程使用的动态库(/usr/lib64/ld-2.17.so)所占用的内容空间是:7f13ece84000-7f13ece85000

# cat maps
55f9ed91b000-55f9eda7c000 r-xp 00000000 fd:00 67757678 /usr/lib/systemd/systemd
55f9ef4c6000-55f9ef643000 rw-p 00000000 00:00 0 [heap]
7f13ea4ac000-7f13ea4b0000 r-xp 00000000 fd:00 33700674 /usr/lib64/libuuid.so.1.3.0
7f13ece84000-7f13ece85000 rw-p 00022000 fd:00 33637191 /usr/lib64/ld-2.17.so
7ffd27f9e000-7ffd27fbf000 rw-p 00000000 00:00 0 [stack]

直接用cat等命令去看文件里的内容太累了,所以有了各种各样的工具来帮助人去查看这些信息,ps就是其中的一个。

进程启动的方式:

  • 系统启动时,自动启动的:与终端无关
  • 用户通过终端启动:与终端有关

ps常用选项:

  • 查看与终端有关的进程:a

    TTY:终端设备号

    TIME:占用cpu的时间总和

    # ps a
    PID TTY STAT TIME COMMAND
    5705 pts/0 Ss+ 0:00 bash
    5901 pts/1 Ss+ 0:00 bash
    5961 pts/2 Ss 0:00 bash
    6062 pts/2 S 0:00 su - root
    6073 pts/2 S+ 0:00 -bash
    6171 pts/3 Ss 0:00 -bash
    14173 pts/3 R+ 0:00 ps a
  • 查看与终端无关的进程:x

    由于与终端无关,所以TTY出没有终端设备号

    COMMAND:这个进程是由那个程序启动的。由中括号的,是内核启动的线程

    # ps x
    PID TTY STAT TIME COMMAND
    2 ? S 0:00 [kthreadd]
    3 ? S 0:00 [ksoftirqd/0]
    5 ? S< 0:00 [kworker/0:0H]
    3793 ? Ssl 0:00 /usr/sbin/libvirtd

    显示所有进程:ps ax

  • 以用户的角度显示进程的信息:u

    所有aux经常一起使用,显示的结果是以列PID排序的。

    USER:启动进程的user

    PID:进程号

    %CPU:累计cpu使用时间

    %MEM:使用内存比率

    VSZ:占用的虚拟内存大小

    RSS:常驻内存大小(不能放到swap和磁盘上的关键内容)

    STAT:进程的状态

    • R:running(运行中)

    • S:interruptable sleeping(休眠中,但可以被唤醒)

    • D:unterruptable sleeping(休眠中,但不可以被唤醒)

    • T:Stoped(停止了)

    • Z:zombie(僵尸进程,父亲进程没有回收它)。

    • +:前台进程

    • l:启动了多线程的进程

    • N:低优先级进程

    • <:高优先级进程

    • s:session leader:在bash里运行了很多别的线程,所有bash就成了session leader;所以只要结束了session leader进程,则在它里面启动的进程就全被结束掉。

      Ss   08:05   0:00 -bash

    START:

    USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
    root 1 0.0 0.1 128272 6928 ? Ss 08:00 0:03 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root 2 0.0 0.0 0 0 ? S 08:00 0:00 [kthreadd]
    root 13 0.0 0.0 0 0 ? S 08:00 0:00 [kdevtmpfs]
    root 14 0.0 0.0 0 0 ? S< 08:00 0:00 [netns]
    root 15 0.0 0.0 0 0 ? S 08:00 0:00 [khungtaskd]
    dbus 3048 0.0 0.1 70204 4328 ? Ssl 08:00 0:05 /usr/bin/dbus-daemon --system --address=systemd: --nofork --nopidfile --systemd-activation
    rpc 3049 0.0 0.0 73648 1380 ? Ss 08:00 0:00 /sbin/rpcbind -w
    avahi 3068 0.0 0.0 62144 400 ? S 08:00 0:00 avahi-daemon: chroot helper
    libstor+ 3069 0.0 0.0 8576 824 ? Ss 08:00 0:00 /usr/bin/lsmd -d
    ys 4771 0.0 0.0 317316 3880 ? Sl 08:01 0:00 /usr/bin/gnome-keyring-daemon --daemonize --login
    gdm 4779 0.0 0.1 452196 4236 ? Sl 08:01 0:00 ibus-daemon --xim --panel disable
    gdm 4782 0.0 0.0 375868 3524 ? Sl 08:01 0:00 /usr/libexec/ibus-dconf
    ys 4788 0.0 0.2 818940 9444 ? Ssl 08:01 0:00 /usr/libexec/gnome-session-binary --session gnome-classic
    gdm 4789 0.0 0.3 464772 13420 ? Sl 08:01 0:00 /usr/libexec/ibus-x11 --kill-daemon
    ys 4804 0.0 0.0 59024 968 ? S 08:01 0:00 dbus-launch --sh-syntax --exit-with-session
  • 显示所有进程:-e

    带-的是BSD风格的选项,不带-的是UNIX的风格。

    # ps -e
    PID TTY TIME CMD
    1 ? 00:00:03 systemd
    2 ? 00:00:00 kthreadd
    3 ? 00:00:00 ksoftirqd/0
    5 ? 00:00:00 kworker/0:0H
    7 ? 00:00:00 migration/0

    和-e一起使用的还有-f:显示详细信息

    PPID:父进程

    C:CPU占用的百分比

    STIME:运行启动的时间

    TIME:累计CPU运行时间

    # ps -ef
    UID PID PPID C STIME TTY TIME CMD
    root 1 0 0 08:00 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    root 2 0 0 08:00 ? 00:00:00 [kthreadd]

    还有个-F和-f类似

    PSR:运行在那个cpu核心上。

    # ps -eF
    UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
    root 1 0 0 32068 6928 0 08:00 ? 00:00:04 /usr/lib/systemd/systemd --switched-root --system --deserialize
    root 2 0 0 0 0 0 08:00 ? 00:00:00 [kthreadd]
    root 3 2 0 0 0 0 08:00 ? 00:00:00 [ksoftirqd/0]

    按父,子进程层级方式显示:-H

    # ps -eFH
    UID PID PPID C SZ RSS PSR STIME TTY TIME CMD
    gdm 4779 1 0 113049 4236 0 08:01 ? 00:00:00 ibus-daemon --xim --panel disable
    gdm 4782 4779 0 93967 3524 0 08:01 ? 00:00:00 /usr/libexec/ibus-dconf
  • 自定义要显示的列。列于列之间用逗号分隔:o

    # ps axo pid,command
    PID COMMAND
    1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

    BSD风格:ps -eo

    # ps -eo pid,command | head -3
    PID COMMAND
    1 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    2 [kthreadd]

    常用列:pid,ni(nice),priority(优先级),psr(运行在哪个核心上),pcpu(cpu的利用率),stat(状态),comm(启动的程序),tty(跟哪个终端相关),ppid(父进程id),rtprio(实时优先级)

    nice:取值是-20到19,值越小优先级越高。作用是把自己的优先级降低(普通用户不能提高自己的优先级),让别的进程先执行,很礼让,所有叫nice。但管理员可以提高进程的优先级。

pgrep,pkill命令

pgrep:根据进程的各个列的值,挑选出想查看哪些进程的信息。

pkill:根据进程的各个列的值,挑选出想给哪些进程发信号。

常用选项:

  • 根据effictive user去查看进程:-u uid(或者用户名)

  • 根据实际user去查看进程:-U uid(或者用户名)

    # pgrep -U postfix
    4322
    14862
    # id postfix
    uid=89(postfix) gid=89(postfix) groups=89(postfix),12(mail)
    # pgrep -U 89
    4322
    14862
    # pgrep -u postfix
    4322
    14862
    [root@localhost 1]# pgrep -u 89
    4322
    14862
  • 根据terminal查看进程:-t

  • 显示进程名:-l

    # pgrep -lU postfix
    4322 qmgr
    14862 pickup
  • 显示完整格式的进程名:-a

    # pgrep -aU postfix
    4322 qmgr -l -t unix -u
    14862 pickup -l -t unix -u
  • 显示其进程号下面的子进程:-P

    root      3781     1  0 28189  4312   0 08:01 ?        00:00:00   /usr/sbin/sshd -D
    root 6163 3781 0 41301 6116 0 08:05 ? 00:00:00 sshd: root@pts/3
    # pgrep -aP 3781
    6163 sshd: root@pts/3
  • 根据字符串去查看ps出来的结果:ps key

    查看有【ssh】字样的进程。

    # pgrep ssh -a
    3781 /usr/sbin/sshd -D
    5023 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "env GNOME_SHELL_SESSION_MODE=classic gnome-session --session gnome-classic"
    6163 sshd: root@pts/3

    ps nginxps httpd

pidof命令

根据进程名字,找到pid。

# pidof sshd
6163 3781

top命令

类似windows的任务查看器,动态变化。

不带参数top,是按CPU列逆序排序,占用cpu最高的进程在最上面。

# top
top - 15:55:33(当前时间) up 7:54(运行时长), 5 users(登录的用户数), load average(平均负载,等待运行的队列长度): 0.00(1分钟), 0.01(5分钟), 0.05(15分钟)
Tasks(多少个进程): 231 total, 3 running, 228 sleeping, 0 stopped, 0 zombie
%Cpu(s)(cpu占用百分比): 0.3 us(用户空间的进程占cpu的百分比), 0.7 sy(内核空间的进程占cpu的百分比), 0.0 ni(调整nice的百分比), 99.0 id(空闲百分比), 0.0 wa(等待io的百分比), 0.0 hi(处理硬件终端的百分比), 0.0 si(处理软件终端的百分比), 0.0 st(被虚拟化软件进程偷走的百分比)
KiB Mem(物理内存) : 3880620 total, 2183580 free, 737500 used, 959540 buff/cache(缓冲/缓存)
KiB Swap(交换分区): 4063228 total, 4063228 free, 0 used. 2813008 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
5078 ys 20 0 3025948 199132 68308 R 1.7 5.1 10:32.60 gnome-shell
1524 root 20 0 0 0 0 S 0.3 0.0 0:10.56 xfsaild/dm-0

uptime命令能显示top命令结果的第一行:

# uptime
16:38:27 up 8:37, 5 users, load average: 0.07, 0.04, 0.05

VIRT:虚拟内存集;RES:常驻内存集;SHR:共享内存空间;S:当前状态;TIME+:运行时长

默认是按照%CPU列逆序排序的,可以改变排序的列:

  • 按内存排序:交互输入M
  • 按CPU排序:交互输入T
  • 按执行时长排序:交互输入T

在TOP执行时,可以交互输入的命令列表:

h:显示帮助

l,t,m :显示/非显示第一行,第二行,第三行

d or s:调整刷新间隔

k:杀死指定的进程

q:退出top

  Z,B,E,e   Global: 'Z' colors; 'B' bold; 'E'/'e' summary/task memory scale
l,t,m Toggle Summary: 'l' load avg; 't' task/cpu stats; 'm' memory info
0,1,2,3,I Toggle: '0' zeros; '1/2/3' cpus or numa node views; 'I' Irix mode
f,F,X Fields: 'f'/'F' add/remove/order/sort; 'X' increase fixed-width L,&,<,> . Locate: 'L'/'&' find/again; Move sort column: '<'/'>' left/right
R,H,V,J . Toggle: 'R' Sort; 'H' Threads; 'V' Forest view; 'J' Num justify
c,i,S,j . Toggle: 'c' Cmd name/line; 'i' Idle; 'S' Time; 'j' Str justify
x,y . Toggle highlights: 'x' sort field; 'y' running tasks
z,b . Toggle: 'z' color/mono; 'b' bold/reverse (only if 'x' or 'y')
u,U,o,O . Filter by: 'u'/'U' effective/any user; 'o'/'O' other criteria
n,#,^O . Set: 'n'/'#' max tasks displayed; Show: Ctrl+'O' other filter(s)
C,... . Toggle scroll coordinates msg for: up,down,left,right,home,end k,r Manipulate tasks: 'k' kill; 'r' renice
d or s Set update interval
W,Y Write configuration file 'W'; Inspect other output 'Y'
q Quit

top命令的常用选项:

  • 指定刷新时间的间隔:-d #
  • 以批次方式显示:-b
  • 显示多少批次后就退出top命令:-n #

以批次方式显示,显示2批次后,自动退出top,刷新间隔是1秒。

# top -b -n 2 -d 1

htop命令

top命令的升级版,在默认repo里没有,在epel里。

  • 选项和top基本相同。

  • 子命令:大部分和top相同,下面几个是htop独有的。

    F1获取子命令的帮助信息。

    • 查看某个进程打开的所有文件:l(小写L)
    • 查看某个进程发起的系统调用都有哪些:s
    • 此父子层级方式显示:t或F5
    • 将选定的进程绑定到某几个cpu核心上:a。(进程默认是可以运行在任意核心上的)

vmstat命令

vmstat [options][delay [count]]

查看内存的统计数据

delay:控制每几秒种显示一次

count:显示几次

每2秒种显示一次,一共显示3次:

# vmstat 2 3

查看一次就退出:

# vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2254396 3148 954228 0 0 145 16 88 90 1 1 98 0 0

procs:进程个数

  • r:等待运行的进程个数;cpu上等待运行的任务队列的长度
  • b:处于不可中断睡眠状态的进程的个数;被阻塞的任务队列的长度。

memory:

  • swpd:交换内存的使用量。这里如果是0,说明物理内存够用,说明处于健康状态;如果这里的值过大,就说明物理内存严重不足。spwd是利用磁盘模拟内存,所以速度非常慢。
  • free:空闲的物理内存总量。
  • buff:用于buffer的内存总量
  • cache:用于cache的内存总量

swap:

  • si:数据从物理内存进入swap的速率(单位:kb/s)
  • so:数据从swap离开,返回到物理内存的速率(单位:kb/s)

可以通过swpd和swap的so来判断当前物理内存是否够用:如果swpd里有值,而且so的值很大,则说明物理内存不够,频繁需要从swap换进换出;如果swpd里有值,而so的值不大,则还可以忍受。

io:

  • bi:从块设备读入系统的速率(单位:kb/s)
  • bo:保存数据到块设备的速率(单位:kb/s)

system:

  • in:interrupts,中断产生的速率(每秒产生多少个中断)
  • cs:context switch:进程来回切换的速率。如果此值过万,则说明要运行的进程过多,cpu处理不过来了,需要加cpu。

cpu:

  • us(user space):用户空间的进程使用cpu的百分比
  • sy(system): 内核空间的进程使用cpu的百分比
  • id(idle): cpu处于空闲时间的百分比
  • wa(wait): 等待io完成的cpu百分比
  • st(stolen):被虚拟化技术偷走的时间百分比

常用选项:

  • 查看内存使用的汇总信息:-s

    # vmstat -s
    3880164 K total memory
    707772 K used memory
    861212 K active memory
    523236 K inactive memory
    2164936 K free memory
    3148 K buffer memory
    1004308 K swap cache
    4063228 K total swap
    0 K used swap
    4063228 K free swap
    4633 non-nice user cpu ticks
    3335 nice user cpu ticks
    4878 system cpu ticks
    1343696 idle cpu ticks
    576 IO-wait cpu ticks
    0 IRQ cpu ticks
    353 softirq cpu ticks
    0 stolen cpu ticks
    941197 pages paged in
    112819 pages paged out
    0 pages swapped in
    0 pages swapped out
    763048 interrupts
    860345 CPU context switches
    1582090142 boot time
    17373 forks

pmap命令

显示指定进程的内存映射表

pmap [options] pid [...]

pmap pid=cat /proc/pid/maps

常用选项:

  • 显示详细信息:-x

    RSS:常驻内存大小

    Dirty:脏数据大小

    Mode:读,写,执行的权限

    # pmap -x 1
    1: /usr/lib/systemd/systemd --switched-root --system --deserialize 22
    Address Kbytes RSS Dirty Mode Mapping
    000055bb2ebd1000 1412 1168 0 r-x-- systemd
    000055bb2ef31000 140 132 132 r---- systemd
    000055bb2ef54000 4 4 4 rw--- systemd
    000055bb2f8fb000 1520 1464 1464 rw--- [ anon ]
    00007f173c000000 164 12 12 rw--- [ anon ]
    00007f173c029000 65372 0 0 ----- [ anon ]
    00007f1744000000 164 12 12 rw--- [ anon ]
    00007f1744029000 65372 0 0 ----- [ anon ]
    00007f174aeb2000 4 0 0 ----- [ anon ]
    00007f174aeb3000 8192 8 8 rw--- [ anon ]
    00007f174b6b3000 4 0 0 ----- [ anon ]
    00007f174b6b4000 9024 840 840 rw--- [ anon ]
    00007f174c11c000 16 8 0 r-x-- libuuid.so.1.3.0
    00007f174c120000 2044 0 0 ----- libuuid.so.1.3.0

glances命令

用python研发的命令,在base仓库里没有,在epel里。

和top和htop差不多。

特点是支持c/s模式:可以在没有server的登录用户时,使用这种方式,监视server的各种信息。

server端:glances -s -B 本机某个网卡的ip地址

client端:glances -c 服务器的ip地址

dstat命令

需要安装,在base仓库里。

功能很强大,上面命令能查看的,dstat基本都能查看。

# dstat
You did not select any stats, using -cdngy by default.
----total-cpu-usage---- -dsk/total- -net/total- ---paging-- ---system--

不使用任何参数就是使用:-cdngy

c:total-cpu-usage;d:dsk/total;n:net/total;g:paging;y:system

  • 查看tcp各种状态下的连接的数量:

    # dstat --tcp
    ----tcp-sockets----
    lis act syn tim clo
    13 1 0 0 0
  • 查看最消耗cpu的进程是谁:--top-cpu

    # dstat --top-cpu
    -most-expensive-
    cpu process
    VBoxClient 0.0
    VBoxlient 0.2
  • 查看最消耗磁盘io的进程是谁:--top-bio

    # dstat --top-bio
    ----most-expensive----
    block i/o process
    systemd 36k 18k
  • 查看最消耗内存的进程是谁:--top-mem

    # dstat --top-mem
    --most-expensive-
    memory process
    gnome-shell 192M
  • 延迟最大的进程是谁:--top-latency

    # dstat --top-latency
    --highest-total--
    latency process
    rcu_sched 292
    ksoftirqd/2 9115
  • 还有很多类似--top-xxx的选项

  • --tcp,--udp,--raw,--socket,--ipc

kill命令

给进程发送信号。

有3种办法标识信号:

​ 1,信号的数字标识

​ 2,信号的完整名称:SIGHUP

​ 3,信号的简写名称:HUP

  • 查看有哪些信号:-l

    # 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
    # kill -l 1
    HUP
    # kill -l 2
    INT
  • 发送信号方法:

    # kill -1 pid
    # kill -SIGHUP pid
    # kill -HUP pid
  • 常用信号解释:

    1)SIGHUP:无需关闭进程,让其从新读配置文件

    2)SIGINT:终止正在运行的进程,相当于ctrl+c

    9)SIGKILL:立即无条件终止正在运行的进程

    15)SIGTERM:终止正在运行的进程。(进程打开的文件描述符等,关闭后,在结束自己)

    18)SIGCONT:让后台运行的进程,回到前台运行。

    19)SIGSTOP:让前台的进程去后台运行。

killall命令

根据进程的名字,终止进程,所以符合名字的进程都会被终止。

# killall httpd

调整进程运行的优先级

通过调整进程的nice值调整进程的优先级。只要管理员能调低nice值。

nice:取值是-20到19,值越小优先级越高。

用户空间的进程的优先级范围是:100139,对应nice值-2019。也就是说nice为-20的进程的优先级是100。优先级数字越小则越优先,niec值越小则越优先。

进程启动时,nice值是0,所以优先级是120.可以在启动时修改进程的nice值:

显示的15,其实是115,把前面的1省略了。

# nice -n -5 htop
# ps axo pid,priority,ni,comm | grep 344
344 15 -5 htop

进程启动后,也可以修改其nice:renice -n NICE pid ...

显示的20,其实是120,把前面的1省略了。

# ps axo pid,priority,ni,comm | grep 344
344 15 -5 htop
# renice -n 0 344
344 (process ID) old priority -5, new priority 0
# ps axo pid,priority,ni,comm | grep 344
344 20 0 htop

Linux 系统作业控制

系统作业也叫job。

前台作业:通过终端启动,且启动后一直占据终端。

后台作业:可以通过终端启动,但启动后转入后台运行,释放终端。

那么如何让作业,转入后台呢?

  • 运行中的作业:输入ctrl+z之后,作业转入后台,但不是运行状态,而是停止状态。

  • 尚未启动的作业:command &

    这种方法虽然能让作业进入后台运行,但依然依附于终端,一旦终端被终止,它也被终止了。

  • 尚未启动的作业:nohup command &

    让作业进入后台运行,且脱离终端。即使终端被终止,它也不会被终止。

查看后台的所有作业:jobs

那么如何让转入后台的作业,返回到前台终端呢?

fg 作业号,就让指定的作业号的作业恢复到前台运行。

直接执行fg,则是让有加号的作业恢复到前台执行

# jobs
[1] Stopped htop
[2]- Stopped top
[3]+ Stopped dstat
# fg 1#回复htop命令到前台执行
  • 终止指定的作业:kill %作业号

    注意必须有%号

    # kill %3
    
    [3]+  Stopped                 dstat
    # jobs
    [1] Stopped htop
    [2]- Stopped top
    [3]+ Terminated dstat

# c/c++ 学习互助QQ群:877684253
![](https://img2018.cnblogs.com/blog/1414315/201811/1414315-20181106214320230-961379709.jpg)
# 本人微信:xiaoshitou5854

linux 查看系统资源使用信息的一些命令集合的更多相关文章

  1. Linux 查看操作系统版本信息 uname

    Linux 查看操作系统版本信息 uname uname 命令用于显示当前系统的版本信息. 带 -a 选项的 uname 命令会给出当前操作系统的所有有用信息. 命令如下: [root@node1 / ...

  2. Linux查看系统硬件信息命令

    Linux查看系统硬件信息命令 查看磁盘类型(是否SSD) cat /sys/block/sda/queue/rotational code:0 SSD盘 code:1 SATA盘 查看物理CPU个数 ...

  3. Linux查看系统资源占用

    Linux查看系统资源占用 在系统维护的过程中,随时可能有需要查看 CPU和内存的使用率,并根据相应信息分析系统状况的需求.本文介绍一下几种常见的Linux系统资源查看命令. 1.总体内存占用的查看 ...

  4. 整理Linux查看系统日志的一些经常使用命令

    整理Linux查看系统日志的一些经常使用命令 last -a 把从何处登入系统的主机名称或ip地址,显示在最后一行. -d 指定记录文件.指定记录文件.将IP地址转换成主机名称. -f <记录文 ...

  5. Linux检查和收集硬件信息的常用命令总结

    Linux检查和收集硬件信息的常用命令总结 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. Linux基础真的很重要,基础不牢,地动山摇.这句话我是听老男孩创始人冉总说的一句话,起初 ...

  6. linux查看操作系统版本信息

    linux查看操作系统版本信息  摘自:https://www.cnblogs.com/vaelailai/p/7545166.html 一.linux下如何查看已安装的centos版本信息: 1.L ...

  7. Linux查看系统当前登录用户的命令,top命令看到users有多个用户登录

    Linux查看系统当前登录用户的命令,top命令看到users有多个用户登录 作为系统管理员,top命令看到users有多个用户登录,会需要查看下是否被黑客进入了. 实战例子:top命令:top - ...

  8. Linux 查看Tomcat版本信息

    Linux 查看Tomcat版本信息 如果我们想运行在 Linux 下的 Tomcat 版本信息,只需要在 Tomcat 的 bin/ 目录下,运行 version.sh 脚本即可. 1.使用如下命令 ...

  9. Linux 查看登录用户信息 who & whoami

    Linux 查看登录用户信息 who & whoami 在一台服务器上,同一时间往往会有很难多人同时登录. who 命令可以查看当前系统中有哪些人登录,以及他们都工作在哪个控制台上. 这样可以 ...

随机推荐

  1. 安装 Xen

    安装 Xen 安装支持 Xen 的相关工具: $ sudo apt-get install ubuntu-xen-server 下载和安装支持 Xen 的 Linux 内核: http://secur ...

  2. 机器学习-浅谈神经网络和Keras的应用

    概述 神经网络是深度学习的基础,它在人工智能中有着非常广泛的应用,它既可以应用于咱们前面的章节所说的Linear Regression, classification等问题,它还广泛的应用于image ...

  3. linux下redis的部署

    https://www.cnblogs.com/wangchunniu1314/p/6339416.html https://www.linuxidc.com/Linux/2017-09/146894 ...

  4. volatile梳理

    volatile 可见性也就是说一旦某个线程修改了该被volatile修饰的变量,它会保证修改的值会立即被更新到主存,当有其他线程需要读取时,可以立即获取修改之后的值. 在Java中为了加快程序的运行 ...

  5. CentOS7主机名的查看和修改

    CentOS7主机名的查看和修改 在CentOS7中,有三种定义的主机名: 静态的(Static hostname) "静态"主机名也称为内核主机名,是系统在启动时从/etc/ho ...

  6. redis--->事务和锁

    redis 的事务.锁.流水线 Redis与 mysql事务的对比 开启 mysql:start transaction redis:multi 语句:mysql:普通sql redis:普通命令 成 ...

  7. springboot中使用Caffeine本地缓存

    Caffeine是使用Java8对Guava缓存的重写版本性能有很大提升 一 依赖 <dependency> <groupId>org.springframework.boot ...

  8. .net core 认证与授权(三)

    前言 在写三上是在一的基础上写的,所以有没有看过二是没得关系的,在一中介绍了认证与授权,但是没有去介绍拿到证书后怎样去验证授权. 概念性东西:在这套机制中,把这个权限认证呢,称作为policy.这个p ...

  9. Asp.Net Core 混合全球化与本地化支持

    前言 最近的新型冠状病毒流行让很多人主动在家隔离,希望疫情能快点消退.武汉加油,中国必胜! Asp.Net Core 提供了内置的网站国际化(全球化与本地化)支持,微软还内置了基于 resx 资源字符 ...

  10. 十五 awk文本处理

    Awk 语法和基础命令 以行为处理单位 对数据进行逐行处理 处理完当前行,把当前行的处理结果输出后自动对下一行进行处理 直到文件中所有行处理完为止 创造者:Aho.Weinberger.Kernigh ...