Linux基础命令-进程与系统性能

  • 进程与系统性能
    • 一、进程相关概念
      • 1.进程概念
      • 2.进程的基本状态和转换
      • 3.IPC进程间通信
      • 4.进程优先级
      • 5.进程状态
    • 二、进程与系统性能
      • 1.系统管理工具
      • 2.进程管理
        • 1.pstree命令
        • 2.ps命令
        • 3.nice命令
        • 4.renice命令
        • 5.pgrep命令
        • 6.pidof命令
      • 3.系统资源管理
        • 1.uptime和w命令
        • 2.top命令
        • 3.htop命令
        • 4.glances命令
        • 5.dstat命令
        • 6.lsof命令
        • 7.kill命令
        • 8.内存管理
          • 1.free 命令
          • 2.pmap命令
        • 9.磁盘管理
          • 1.vmstat命令
          • 2.iostat命令
          • 3.iotop命令
        • 10.网络管理
          • 1.iftop命令
          • 2.nload命令
        • 11.作业管理
          • 1.nohup命令
          • 2.screen命令

进程与系统性能

一、进程相关概念

1.进程概念

(1)内核功用:进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等
(2)Process: 运行中的程序的一个副本,是被载入内存的一个指令集合进程ID(Process ID,PID)号码被用来标记各个进程UID、GID、和SELinux语境决定对文件系统的存取和访问权限通常从执行进程的用户来继承存在生命周期
(3)task struct:Linux内核存储进程信息的数据结构格式
(3)task list:多个任务的的task struct组成的链表
(4)进程创建:init:第一个进程(centos6)systemd:第一个进程(centos7)进程:都由其父进程创建,父子关系,CoWfork(), clone()
(5)Page Frame: 页框,用存储页面数据,存储Page 4k
(6)物理地址空间和线性地址空间
(7)MMU:Memory Management Unit 负责转换线性和物理地址
(8)TLB:Translation Lookaside Buffer 翻译后备缓冲器,用于保存虚拟地址和物理地址映射关系的缓存
(9)LRU:Least Recently Used 近期最少使用算法,释放内存

LRU算法

进程,线程和协程

用户和内核空间

2.进程的基本状态和转换

进程的基本状态和转换

进程的基本状态
(1)创建状态:进程在创建时需要申请一个空白PCB(process control block进程控制块),向其中填写控制和管理进程的信息,
完成资源分配。如果创建工作无法完成,比如资源无法满足,就无法被调度运行,把此时进程所处状态称为创建状态
(2)就绪状态:进程已准备好,已分配到所需资源,只要分配到CPU就能够立即运行
(3)执行状态:进程处于就绪状态被调度后,进程进入执行状态
(4)阻塞状态:正在执行的进程由于某些事件(I/O请求,申请缓存区失败)而暂时无法运行,进程受到阻塞。
在满足请求时进入就绪状态等待系统调用
(5)终止状态:进程结束,或出现错误,或被系统终止,进入终止状态。无法再执行状态之间转换六种情况
(1)运行——>就绪:1,主要是进程占用CPU的时间过长,而系统分配给该进程占用CPU的时间是有限的;
2,在采用抢先式优先级调度算法的系统中,当有更高优先级的进程要运行时,该进程就被迫让出CPU,该进程便由执行状态转变为就绪状态
(2)就绪——>运行:运行的进程的时间片用完,调度就转到就绪队列中选择合适的进程分配CPU
(3)运行——>阻塞:正在执行的进程因发生某等待事件而无法执行,则进程由执行状态变为阻塞状态,如发生了I/O请求
(4)阻塞——>就绪:进程所等待的事件已经发生,就进入就绪队列
(5)以下两种状态是不可能发生的:(5.1)阻塞——>运行:即使给阻塞进程分配CPU,也无法执行,操作系统在进行调度时不会从阻塞队列进行挑选,而是从就绪队列中选取(5.2)就绪——>阻塞:就绪态根本就没有执行,谈不上进入阻塞态

3.IPC进程间通信

IPC: Inter Process Communication同一主机:pipe 管道socket 套接字文件signal 信号shm shared memorysemaphore 信号量,一种计数器不同主机:socket IP和端口号RPC remote procedure callMQ 消息队列,如:Kafka,RabbitMQ,ActiveMQ

4.进程优先级

进程优先级:系统优先级:数字越小,优先级越高0-139:各有140个运行队列和过期队列实时优先级: 99-0 值最大优先级最高nice值:-20到19,对应系统优先级100-139
Big O:时间复杂度,用时和规模的关系O(1), O(logn), O(n)线性, O(n^2)抛物线, O(2^n)


5.进程状态

Linux内核:抢占式多任务
进程类型:守护进程: daemon,在系统引导过程中启动的进程,和终端无关进程前台进程:跟终端相关,通过终端启动的进程注意:两者可相互转化
进程状态:运行态:running就绪态:ready睡眠态:可中断:interruptable不可中断:uninterruptable停止态:stopped,暂停于内存,但不会被调度,除非手动启动僵死态:zombie,结束进程,父进程结束前,子进程不关闭

二、进程与系统性能

1.系统管理工具

进程的分类:CPU-Bound:CPU密集型,非交互IO-Bound:IO密集型,交互
Linux系统状态的查看及管理工具:pstree, ps, pidof, pgrep, top, htop,glance,pmap, vmstat, dstat, kill, pkill, job, bg, fg, nohup

2.进程管理

1.pstree命令

pstree命令
pstree [选项] [PID或用户名]
pstree 命令是以树形结构显示程序和进程之间的关系-a   显示启动每个进程对应的完整指令,包括启动进程的路径、参数等。-c 不使用精简法显示进程信息,即显示的进程中包含子进程和父进程。-n 根据进程 PID 号来排序输出,默认是以程序名排序输出的。-p  显示进程的 PID。-u    显示进程对应的用户名称。

2.ps命令

ps命令-->process state
ps report a snapshot of the current processes
Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中
ps [OPTION]...支持三种选项:UNIX选项 如-A -eBSD选项 如aGNU选项 如--help
UNIX选项:-C cmdlist 指定命令,多个命令用,分隔-L 显示线程-e: 显示所有进程,相当于-A-f: 显示完整格式程序信息-F: 显示更完整格式的进程信息-H: 以进程层级格式显示进程相关信息-u userlist 指定有效的用户ID或名称-U userlist 指定真正的用户ID或名称-g gid或groupname 指定有效的gid或组名称-G gid或groupname 指定真正的gid或组名称-p pid 显示指pid的进程--ppid pid 显示属于pid的子进程-M 显示SELinux信息,相当于Z
BSD选项:默认显示当前终端中的进程a 选项包括所有终端中的进程x 选项包括不链接终端的进程u 选项显示进程所有者的信息f 选项显示进程树,相当于 --forestk|--sort 属性 对属性排序,属性前加- 表示倒序o 属性… 选项显示定制的信息 pid、cmd、%cpu、%memL 显示支持的属性列表ps输出属性
VSZ: Virtual memory SiZe,虚拟内存集,线性内存
RSS: ReSident Size, 常驻内存集
STAT:进程状态R:runningS: interruptable sleepingD: uninterruptable sleepingT: stoppedZ: zombie+: 前台进程l: 多线程进程L:内存分页并带锁N:低优先级进程<: 高优先级进程s: session leader,会话(子进程)发起者
ni: nice值
pri: priority 优先级
psr: processor CPU编号
rtprio: 实时优先级
示例:ps axo pid,cmd,psr,ni,pri,rtprio
常用组合:aux-ef-eFH-eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,commaxo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm例子:
1)查询你拥有的所有进程ps -x
2)显示指定用户名(RUID)或用户ID的进程ps -fU apacheps -fU 48
3)显示指定用户名(EUID)或用户ID的进程ps -fu wangps -fu 1000
4)查看以root用户权限(实际和有效ID)运行的每个进程ps -U root -u root
5)列出某个组拥有的所有进程(实际组ID:RGID或名称)ps -fG nginx
6)列出有效组名称(或会话)所拥有的所有进程ps -fg mysqlps -fg 27
7)显示指定的进程ID对应的进程ps -fp 1234
8)以父进程ID来显示其下所有的进程,如显示父进程为1234的所有进程ps -f --ppid 1234
9)显示指定PID的多个进程ps -fp 1204,1239,1263
10)要按tty显示所属进程ps -ft pts/0
11)以进程树显示系统中的进程如何相互链接ps -e --forest
12)以进程树显示指定的进程ps -f --forest -C sshdps -ef --forest | grep -v grep | grep sshd
13)要显示一个进程的所有线程,将显示LWP(轻量级进程)以及NLWP(轻量级进程数)列ps -fL -C nginx
14)要列出所有格式说明符ps L
15)查看进程的PID,PPID,用户名和命令ps -eo pid,ppid,user,cmd
16)自定义格式显示文件系统组,ni值开始时间和进程的时间ps -p 1234 -o pid,ppid,fgroup,ni,lstart,etime
17)使用其PID查找进程名称:ps -p 1244 -o comm=
18)要以其名称选择特定进程,显示其所有子进程ps -C sshd,bash
19)查找指定进程名所有的所属PID,在编写需要从std输出或文件读取PID的脚本时这个参数很有用ps -C httpd,sshd -o pid=
20)检查一个进程的执行时间ps -eo comm,etime,user | grep nginx
21)查找占用最多内存和CPU的进程ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | headps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head
22)显示安全信息ps -eMps --context
23)使用以下命令以用户定义的格式显示安全信息ps -eo euser,ruser,suser,fuser,f,comm,label
24)使用watch实用程序执行重复的输出以实现对就程进行实时的监视,如下面的命令显示每秒钟的监视watch -n 1 'ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head'搜索进程:
最灵活:ps 选项 | 其它命令进程优先级调整:静态优先级:100-139进程默认启动时的nice值为0,优先级为120只有根用户才能降低nice值(提高优先性)
查看:ps axo pid,comm,ni

3.nice命令

nice命令
Linux nice命令以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到 19(最低优先序)。
nice [OPTION] [COMMAND [ARG]...]
例子:
(1)实例1)后台运行vivi &2)设置默认优先级nice vi &3)设置优先级为19nice -n 19 vi &4)设置优先级为 -20nice -n -20 vi &5)显示进程 ps -l
(2)将 ls 的优先序加 1 并执行nice -n 1 ls
(3)将 ls 的优先序加 10 并执行nice ls

4.renice命令

renice命令
Linux renice命令用于重新指定一个或多个行程(Process)的优先序(一个或多个将根据参数而定)。
注意:每一个行程(Process)都有一个唯一的(unique)id。
使用权限:所有使用者。
renice [-n] priority pid...-p pid 重新指定行程的 id 为 pid 的行程的优先序-g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序-u user 重新指定行程拥有者为 user 的行程的优先序
例子:
1)将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1renice +1 987 -u daemon root -p 32

5.pgrep命令

pgrep命令
经常要查看进程的信息,包括进程的是否已经消亡,通过pgrep来获得正在被调度的进程的相关信息。
pgrep通过匹配其程序名,找到匹配的进程。
pgrep [options] pattern-u uid: effective user,生效者-U uid: real user,真正发起运行命令者-t terminal: 与指定终端相关的进程-l: 显示进程名-a: 显示完整格式的进程名-P pid: 显示指定进程的子进程

6.pidof命令

pidof命令
pidof命令 用于查找指定名称的进程的进程号id号。
pidof [选项] [参数]-s:仅返回一个进程号;-c:仅显示具有相同“root”目录的进程;-x:显示由脚本开启的进程;-o:指定不显示的进程ID。

3.系统资源管理

1.uptime和w命令

(1)显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)
(2)系统平均负载:指在特定时间间隔内运行队列中的平均进程数
(3)通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题
(4)如果linux主机是1个双核CPU,当Load Average 为6的时候说明机器已经被充分使用[root@centos7 ~]#uptime15:23:49 up 19 min,  2 users,  load average: 0.00, 0.01, 0.05[root@centos7 ~]#w15:26:20 up 21 min,  2 users,  load average: 0.00, 0.01, 0.05
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.7.1         15:09    4.00s  0.09s  0.00s w
root     pts/1    10.0.7.1         15:09    4:52   0.36s  0.02s bash补充:
/proc/uptime 包括两个值,单位 s 系统启动时长,空闲进程的总时长(按总的CPU核数计算)

2.top命令

top:有许多内置命令排序:P:以占据的CPU百分比,%CPUM:占据内存百分比,%MEMT:累积占据CPU时长,TIME+首部信息显示:uptime信息:l命令tasks及cpu信息:t命令cpu分别显示:1 (数字)memory信息:m命令退出命令:q修改刷新时间间隔:s终止指定进程:k保存文件:W栏位信息简介us:用户空间sy:内核空间ni:调整nice时间id:空闲wa:等待IO时间hi:硬中断si:软中断(模式切换)st:虚拟机偷走的时间选项:-d # 指定刷新时间间隔,默认为3秒-b 全部显示所有进程-n # 刷新多少次后退出-H 线程模式,示例:top -H -p `pidof mysqld`

3.htop命令

htop命令:EPEL源
选项:-d #: 指定延迟时间;-u UserName: 仅显示指定用户的进程-s COLUME: 以指定字段进行排序
子命令:s:跟踪选定进程的系统调用l:显示选定进程打开的文件列表a:将选定的进程绑定至某指定CPU核心t:显示进程树

4.glances命令

glances命令:EPEL源
1.linux系统自带了很多系统性能监控工具,如top,vmstat,iftop等等,还有一款监视工具glances,它能把其他几个监控的指标都集于一身。
2.Glances是一个相对比较新的系统监控工具,用 Python 编写的,使用 psutil 库从系统获取信息。
3.可以用它来监控 CPU、平均负载、内存、网络接口、磁盘 I/O,文件系统空间利用率、挂载的设备、所有活动进程以及消耗资源最多的进程。
4.Glances 有很多有趣的选项。它的主要特性之一是可以在配置文件中设置阀值(careful小心、warning警告、critical致命),然后它会用不同颜色显示信息以表明系统的瓶颈。glances [-bdehmnrsvyz1] [-B bind] [-c server] [-C conffile] [-p port] [-P password] [--password] [-t refresh] [-f file] [-o output]
常用选项:-b: 以Byte为单位显示网卡数据速率-d: 关闭磁盘I/O模块-f /path/to/somefile: 设定输入文件位置-o {HTML|CSV}:输出格式-m: 禁用mount模块-n: 禁用网络模块-t #: 延迟时间间隔-1:每个CPU的相关数据单独显示常用的快捷键   m : 按内存占用排序进程p : 按进程名称排序进程c : 按 CPU 占用率排序进程i : 按 I/O 频率排序进程a : 自动排序进程d : 显示/隐藏磁盘 I/O 统计信息f : 显示/隐藏文件系统统计信息s : 显示/隐藏传感器统计信息y : 显示/隐藏硬盘温度统计信息l : 显示/隐藏日志n : 显示/隐藏网络统计信息x : 删除警告和严重日志h : 显示/隐藏帮助界面q : 退出w : 删除警告记录C/S模式下运行glances命令
服务器模式:glances -s -B IPADDRIPADDR: 指明监听的本机哪个地址
客户端模式:glances -c IPADDRIPADDR:要连入的服务器端地址Connected to centos7.6                                  Uptime: 1:34:21
CPU  [  2.3%]   CPU       2.3% MEM     18.2% SWAP      0.0% LOAD
MEM  [ 18.2%]   user:     0.0% total:  1.78G total:   8.00G 1 min:
SWAP [  0.0%]   system:   0.8% used:    333M used:        0 5 min:  idle:    97.8% free:   1.46G free:    8.00G 15 min: NETWORK     Rx/s   Tx/s   TASKS 400 (445 thr), 1 run, 399 slp, 0 oth
eth0          0b     0b
eth1        576b    1Kb     CPU%  MEM%   PID USER        NI S Command
lo          30Kb   30Kb      6.1   0.9 11238 root         1 R /usr/bin/
virbr0        0b     0b      1.8   1.2 11242 root         1 S /usr/bin/
_rbr0-nic     0b     0b      0.3   0.3   866 root         1 S /usr/bin/0.3   0.0   137 root         1 S rcu_sched
DISK I/O     R/s    W/s      0.0   0.3 11203 root         1 S sshd: roo
sda1           0      0
2020-01-17 16:39:10       No warning or critical alert detected

5.dstat命令

dstat命令
(1)dstat 是一个可以取代vmstat,iostat,netstat和ifstat这些命令的多功能产品。dstat扬长避短,即克服了这些命令的局限又增加了一些额外的功能,不但拥有更多的监控项,也更灵活。dstat在性能测试、基准测试和排除故障过程中可以很方便监控系统运行状况。
(2)dstat可以查看所有的实时系统资源,如:通过统计IDE控制器当前状态来比较磁盘利用率,或者直接通过网络带宽数值来比较磁盘的吞吐率(在相同的时间间隔内)。
(3)dstat以列表的形式提供选项信息,并清晰地告知以何种幅度和单位显示输出。输出信息整洁,降低发生错误的概率。最重要的是,整洁的数据更容易编写插件用来收集分析关注的数据信息。
(4)dstat默认输出是专门为实时查看而设计的,然而也可以将详细信息通过cvs输出到一个文件,然后将cvs文件导入到Gnumeric或者Excel中生成图表。特性结合了vmstat,iostat,ifstat,netstat以及更多的信息实时显示统计情况,输出报告在分析和排障时可以通过启用监控项并排序模块化设计使用python编写的,方便扩展现有的工作任务容易扩展和添加你的计数器包含的许多扩展插件——增加新的监控项目很方便可以分组统计块设备/网络设备,并给出总数可以显示每台设备的当前状态极准确的时间精度,即便是系统负荷较高也不会延迟显示显示准确地单位和和限制转换误差范围不同的计量单位用不同的颜色显示显示中间结果延时小于1秒支持输出CSV格式报表,并能导入到Gnumeric和Excel以生成图形针对默认输出字段解释如下:
分组          分组含义及子项字段含义
CPU状态       CPU的使用率。显示了用户占比,系统占比、空闲占比、等待占比、硬中断和软中断情况。
磁盘统计        磁盘的读写,分别显示磁盘的读、写总数。
网络统计        网络设备发送和接受的数据,分别显示的网络收、发数据总数。
分页统计        系统的分页活动。分别显示换入(in)和换出(out)。
系统统计        统计中断(int)和上下文切换(csw)。dstat [-afv] [options..] [delay [count]]-c, --cpu      开启cpu统计-C               该选项跟cpu的编号(0~cpu核数-1,多个用都好隔开)如:0,3,total表示分别包含cpu0、cpu3和total-d, --disk        开启disk统计-D              改选跟具体的设备名(多个用逗号隔开)如:total,hda,hdb表示分别统计total、hda、hdb设备块-g, --page       开启分页统计-i, --int     开启中断统计-I 5,10           没弄懂呢~巴拉巴拉-l, --load     开启负载均衡统计,分别是1m,5m,15m-m, --mem     开启内存统计,包括used,buffers,cache,free-n, --net       开启net统计,包括接受和发送-N                该选项可以跟网络设备名多个用逗号隔开,如eth1,total-p, --proc     开启进程统计,包括runnable, uninterruptible, new-r, --io      io开启请求统计,包括read requests, write requests-s, --swap       开启swap统计,包括used, free-S              该选项可以跟具体的交换区,多个用逗号隔开如swap1,total-t, --time       启用时间和日期输出-T, --epoch        启用时间计数,从epoch到现在的秒数-y, --sys     开启系统统计,包括中断和上下文切换--aio           开启同步IO统计 (asynchronous I/O)--fs         开启文件系统统计,包括 (open files, inodes)--ipc            开启ipc统计,包括 (message queue, semaphores, shared memory)--lock          开启文件所统计,包括 (posix, flock, read, write)--raw          开启raw统计 (raw sockets)--socket       开启sockets统计,包括 (total, tcp, udp, raw, ip-fragments)--tcp         开启tcp统计,包括(listen, established, syn, time_wait, close)--udp          开启udp统计 (listen, active)--unix          开启unix统计(datagram, stream, listen, active)--vm          开启vm统计 (hard pagefaults, soft pagefaults, allocated, free)--stat            通过插件名称开启插件扩展,详见命令插件 :可能的内置插件为aio, cpu, cpu24, disk, disk24, disk24old, epoch, fs, int, int24, io, ipc, load, lock, mem, net, page, page24, proc, raw, socket, swap, swapold, sys, tcp, time,udp, unix, vm--list           列举内置插件扩展的名称-a, --all        是默认值相当于 -cdngy (default)-f, --full      相当于 -C, -D, -I, -N and -S-v, --vmstat   相当于 -pmgdsc -D total--bw, --blackonwhite    在白色背景终端上改变显示颜色--float           在屏幕上的输出强制显示为浮点值(即带小数)(相反的选项设置为 - -integer)--integer       在屏幕上的输出强制显示为整数值,此为默认值(相反的选项设置为- -float)--nocolor       禁用颜色(意味着选项 - -noupdate)--noheaders      禁止重复输出header,默认会打印一屏幕输出一次header--noupdate        当delay>1时禁止在过程中更新(即在时间间隔内不允许更新)--output file   输出结果到cvs文件中命令参数:
参数名称        参数描述
delay       两次输出之间的时间间隔,默认是1s
count       报告输出的次数,默认是没有限制,一直输出知道ctrl+c命令插件
虽然anyone可以自由的为dstat编写插件,但dstat附带大量的插件已经大大扩展其功能,下面是dstat附带插件的一个概述:--battery         电池电池百分比(需要ACPI)--battery-remain 电池剩余小时、分钟(需要ACPI)--cpufreq          CPU频率百分比(需要ACPI)--dbus              dbus连接的数量(需要python-dbus)--disk-util         显示某一时间磁盘的忙碌状况--fan              风扇转速(需要ACPI)--freespace         每个文件系统的磁盘使用情况--gpfs gpfs        读/写 I / O(需要mmpmon)--gpfs-ops           GPFS文件系统操作(需要mmpmon)--helloworld        dstat插件Hello world示例--innodb-buffer     显示innodb缓冲区统计--innodb-io            显示innodb I / O统计数据--innodb-ops      显示innodb操作计数器--lustre           显示lustreI / O吞吐量--memcache-hits     显示memcache 的命中和未命中的数量--mysql5-cmds      显示MySQL5命令统计--mysql5-conn       显示MySQL5连接统计--mysql5-io         MySQL5 I / O统计数据--mysql5-keys       显示MySQL5关键字统计--mysql-io         显示MySQL I / O统计数据--mysql-keys       显示MySQL关键字统计--net-packets       显示接收和发送的数据包的数量--nfs3                显示NFS v3客户端操作--nfs3-ops         显示扩展NFS v3客户端操作--nfsd3              显示NFS v3服务器操作--nfsd3-ops            显示扩展NFS v3服务器操作--ntp                显示NTP服务器的ntp时间--postfix         显示后缀队列大小(需要后缀)--power               显示电源使用量--proc-count     显示处理器的总数--rpc               显示rpc客户端调用统计--rpcd              显示RPC服务器调用统计--sendmail          显示sendmail队列大小(需要sendmail)--snooze          显示每秒运算次数--test              显示插件输出--thermal         热系统的温度传感器--top-bio          显示消耗块I/O最大的进程--top-cpu          显示消耗CPU最大的进程--top-cputime       显示使用CPU时间最大的进程(单位ms)--top-cputime-avg   显示使用CPU时间平均最大的进程(单位ms)--top-io          显示消耗I/O最大进程--top-latency        显示总延迟最大的进程(单位ms)--top-latency-avg   显示平均延时最大的进程(单位ms)--top-mem          显示使用内存最大的进程--top-oom            显示第一个被OOM结束的进程--utmp                显示utmp连接的数量(需要python-utmp)--vmk-hba         显示VMware ESX内核vmhba统计数--vmk-int         显示VMware ESX内核中断数据--vmk-nic         显示VMware ESX内核端口统计--vz-io               显示每个OpenVZ请求CPU使用率--vz-ubc          显示OpenVZ用户统计--wifi              无线连接质量和信号噪声比常用插件--disk-util         显示某一时间磁盘的忙碌状况--freespace            显示当前磁盘空间使用率--proc-count     显示正在运行的程序数量--top-bio            显示块I/O最大的进程--top-cpu            显示CPU占用最大的进程--top-io            显示正常I/O最大的进程--top-mem           显示占用最多内存的进程例子:
1)内存资源使用情况:dstat -glms --top-mem
2)CPU资源使用情况:dstat -cyl --proc-count --top-cpu
3)输出一个csv文件:dstat --output ~/test.csv常见问题
1、cpu分组中”wait”,如果一直处于高使用率,那说明系统存在一些其它问题。当CPU的状态处在”waits”时,那是因为它正在等待I/O设备(例如内存,磁盘或者网络)的响应而且还没有收到。
2、CPU的使用情况是否正常:用户态和内核态的使用是否合理;总体占比是否合理;若不合理可以用dstat对应的插件(- -top-cpu)排查最耗CPU的进程,配合mpstat、top再去下钻一下分析线程,进一步到程序(比如java可以jstack)。
3、磁盘IO读写是否正常:读写是否偏大;若不正常可以配合插件- -disk-util、- -freespace、- -top-bio、- -top-io等进行排查,也可以配合iostat排查
3、内存是否正常:一般要配合交换区内存一起判断,若不正常可以配合插件- -top-mem,可能是开启的进程太多,或者第三方程序捣乱。
4、应用程序内存是否正常:配合业务表现比如请求响应慢、没反应等,在结合第三方程序监控(如java可以用jvm监控工具(jprofiler、jconsole、jvisualvm……)监控内存)此种情况和3还不太一样,一个jvm内存一个sys内存
5、分页指的是一种内存管理技术用于查找系统场景,一个较大的分页表明系统正在使用大量的交换空间,或者说内存非常分散,大多数情况下你都希望看到page in(换入)和page out(换出)的值都是0。
6、系统统计仅在有比较基线时才有意义。中断和上下文切换较高的统计值通常表示大量的进程造成拥塞,需要对CPU进行关注。服务器一般情况下都会运行运行一些程序,所以这项总是显示一些数值。
7、使用不同的插件可以快速排查有问题的进程然后配合其他工具下钻具体问题,当然这个需要建立在你对所有的插件都比较熟悉的基础之上,知道什么情况下使用什么插件。技巧:可以将常用的命令写成脚本,执行分析,这样就不用每次都敲了
————————————————
版权声明:本文为CSDN博主「约会远行」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/yue530tomtom/article/details/75443305

6.lsof命令

lsof:list open files查看当前系统文件的工具。在linux环境下,一切皆文件,用户通过文件不仅可以访问常规数据,
还可以访问网络连接和硬件如传输控制协议 (TCP) 和用户数据报协议 (UDP)套接字等,系统在后台都为该应用程序分配了一个文件描述符
命令参数-a:列出打开文件存在的进程-c<进程名>:列出指定进程所打开的文件-g:列出GID号进程详情-d<文件号>:列出占用该文件号的进程+d<目录>:列出目录下被打开的文件+D<目录>:递归列出目录下被打开的文件-n<目录>:列出使用NFS的文件-i<条件>:列出符合条件的进程(4、6、协议、:端口、 @ip )-p<进程号>:列出指定进程号所打开的文件-u:列出UID号进程详情-h:显示帮助信息-v:显示版本信息。-n: 不反向解析网络名字例子:
(1)进程管理1)查看由登陆用户启动而非系统启动的进程lsof /dev/pts/12)指定进程号,可以查看该进程打开的文件lsof -p 9527
(2)文件管理1)查看指定程序打开的文件lsof -c httpd2)查看指定用户打开的文件lsof -u root | more3)查看指定目录下被打开的文件lsof +D /var/log/lsof +d /var/log/参数+D为递归列出目录下被打开的文件,参数+d为列出目录下被打开的文件
(3)查看所有网络连接lsof -i –nlsof -i@127.0.0.1通过参数-i查看网络连接的情况,包括连接的ip、端口等以及一些服务的连接情况,例如:sshd等。也可以通过指定ip查看该ip的网络连接情况
(4)查看端口连接情况lsof -i :80 -n通过参数-i:端口可以查看端口的占用情况,-i参数还有查看协议,ip的连接情况等
(5)查看指定进程打开的网络连接lsof -i –n -a -p 9527参数-i、-a、-p等,-i查看网络连接情况,-a查看存在的进程,-p指定进程
(6)查看指定状态的网络连接lsof -n -P -i TCP -s TCP:ESTABLISHED-n:no host names, -P:no port names,-i TCP指定协议,-s指定协议状态通过多个参数可以清晰的查看网络连接情况、协议连接情况等
(7)恢复删除文件lsof |grep /var/log/messagesrm -f /var/log/messageslsof |grep /var/log/messagescat /proc/653/fd/6cat /proc/653/fd/6 > /var/log/messages

7.kill命令

kill命令:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头(可省略),不区分大小写
显示当前系统可用信号: kill –l 或者 trap -l
常用信号:man 7 signal1) SIGHUP 无须关闭进程而让其重读配置文件2) SIGINT 中止正在运行的进程;相当于Ctrl+c3) SIGQUIT 相当于ctrl+\9) SIGKILL 强制杀死正在运行的进程15) SIGTERM 终止正在运行的进程18) SIGCONT 继续运行19) SIGSTOP 后台休眠指定信号的方法 :(1) 信号的数字标识:1, 2, 9(2) 信号完整名称:SIGHUP(3) 信号的简写名称:HUP
(1)按PID:kill [-SIGNAL] pid …kill –n SIGNAL pidkill –s SIGNAL pid
(2)按名称:killall [-SIGNAL] comm…
(3)按模式:pkill [options] pattern-SIGNAL-u uid: effective user,生效者-U uid: real user,真正发起运行命令者-t terminal: 与指定终端相关的进程-l: 显示进程名(pgrep可用)-a: 显示完整格式的进程名(pgrep可用)-P pid: 显示指定进程的子进程

8.内存管理

1.free 命令
free 命令
内存空间使用状态
free [OPTION]-b 以字节为单位-m 以MB为单位-g 以GB为单位-h 易读格式-o 不显示-/+buffers/cache行-t 显示RAM + swap的总和-s n 刷新间隔为n秒-c n 刷新n次后即退出[root@centos7 ~]#free -htotal        used        free      shared  buff/cache   available
Mem:           1.8G        202M        1.2G        8.9M        439M        1.4G
Swap:          8.0G          0B        8.0G

2.pmap命令
pmap命令
查看进程的内存映像信息
pmap [ -x | -d ] [ -q ] pids...
pmap -V-x  extended    Show the extended format. 显示扩展格式-d  device     Show the device format.  显示设备格式-q  quiet     Do not display some header/footer lines. 不显示头尾行-V  show version  Displays version of program. 显示版本另外一种实现cat /proc/PID/maps扩展格式和设备格式域:Address: start address of map 映像起始地址Kbytes: size of map in kilobytes 映像大小RSS: resident set size in kilobytes 驻留集大小Dirty: dirty pages (both shared and private) in kilobytes 脏页大小Mode: permissions on map 映像权限: r=read, w=write, x=execute, s=shared, p=private (copy on write)Mapping: file backing the map , or '[ anon ]' for allocated memory, or '[ stack ]' for the program    stack. 映像支持文件,[anon]为已分配内存 [stack]为程序堆栈Offset: offset into the file 文件偏移Device: device name (major:minor) 设备名例子
1)查看进程1的设备格式
[root@centos7 ~]#pmap -d 1
1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 21
Address           Kbytes Mode  Offset           Device    Mapping
00007f93677ff000       4 ----- 0000000000000000 000:00000   [ anon ]
00007f9367800000    8192 rw--- 0000000000000000 000:00000   [ anon ]
00007f9368000000     164 rw--- 0000000000000000 000:00000   [ anon ]
00007f9368029000   65372 ----- 0000000000000000 000:00000   [ anon ]
...
mapped: 123304K    writeable/private: 18016K    shared: 0K
最后一行的值
mapped 表示该进程映射的虚拟地址空间大小,也就是该进程预先分配的虚拟内存大小,即ps出的vsz
writeable/private  表示进程所占用的私有地址空间大小,也就是该进程实际使用的内存大小
shared 表示进程和其他进程共享的内存大小2)查看进程1的设备格式,不显示头尾行pmap -d -q 13)查看进程1的扩展格式
[root@centos7 ~]#pmap -x 1
1:   /usr/lib/systemd/systemd --switched-root --system --deserialize 21
Address           Kbytes     RSS   Dirty Mode  Mapping
00007f93677ff000       4       0       0 -----   [ anon ]
00007f9367800000    8192    2048    2048 rw---   [ anon ]
...
ffffffffff600000       4       0       0 r-x--   [ anon ]
---------------- ------- ------- -------
total kB          123304    5980    35924)循环显示进程3066的设备格式的最后1行,间隔2秒,while true; do pmap -d 3066 | tail -1; sleep 2; done

9.磁盘管理

1.vmstat命令
vmstat命令
虚拟内存信息
vmstat [options] [delay [count]]-V:显示vmstat版本信息-n:只在开始时显示一次各字段名称-a:显示活跃和非活跃内存-d:显示各个磁盘相关统计信息-D:显示磁盘总体信息-p:显示指定磁盘分区统计信息-s:显示内存相关统计信息及多种系统活动数量-m:显示slabinfo-t:在输出信息的时候也将时间一并输出出来-S:使用指定单位显示。参数有k、K、m、M,分别代表1000、1024、1000000、1048576字节(byte)。默认单位为K(1024bytes)delay:刷新时间间隔。如果不指定,只显示一条结果   count:刷新次数。如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷(1)procs:r:可运行(正运行或等待运行)进程的个数,和核心数有关b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)
(2)memory:swpd: 交换内存的使用总量free:空闲物理内存总量buffer:用于buffer的内存总量cache:用于cache的内存总量
(3)swap:si:从磁盘交换进内存的数据速率(kb/s)so:从内存交换至磁盘的数据速率(kb/s)
(4)io:bi:从块设备读入数据到系统的速率(kb/s)bo: 保存数据至块设备的速率
(5)system:in: interrupts 中断速率,包括时钟cs: context switch 进程切换速率
(6)cpu:us:Time spent running non-kernel codesy: Time spent running kernel codeid: Time spent idle. Linux 2.5.41前,包括IO-wait time.wa: Time spent waiting for IO. 2.5.41前,包括in idle.st: Time stolen from a virtual machine. 2.6.11前, unknown.[root@centos7 ~]#vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st1  0      0 1211740   2720 447016    0    0    31     3   55   92  0  0 99  0  0
2.iostat命令
iostat命令
iostat命令能监视系统的I/O活动,检查物理磁盘就平均传输速率而言处于活跃状态之中的时间长度。
该命令生成的报告可用于修改系统配置以便更好地平衡物理磁盘之间的I/O负荷。
常见用法:iostat 2 3         每隔2秒刷新显示,且显示3次
[root@centos7 ~]#iostat
Linux 3.10.0-327.el7.x86_64 (centos7.6)         01/17/2020      _x86_64_        (4 CPU)avg-cpu:  %user   %nice %system %iowait  %steal   %idle0.10    0.03    0.31    0.30    0.00   99.26Device:            tps    kB_read/s    kB_wrtn/s    kB_read    kB_wrtn
sdd               0.04         0.30         0.00       1044          0
sdc               0.04         0.30         0.00       1044          0
sdb               0.20         1.58         0.59       5478       2048
sda               4.77       106.63        10.87     368866      37617
scd0              0.01         0.02         0.00         62          0第一行:指示系统版本,主机名和当前日期avg-cpu:总体CPU使用情况统计,对于多核CPU,这里是所有CPU的平均值Device:各磁盘设备的IO统计信息%user:CPU在用户态执行进程的时间百分比%nice:CPU在用户态模式下,用于nice操作,所占CPU总时间的百分比%system:CPU处在内核执行进程的时间百分比%iowait:CPU用于等待IO操作所占CPU总时间的百分比%steal:管理程序(hypervisor)为另一个虚拟进程提供服务而等待虚拟CPU的百分比%idle:CPU空闲时间百分比tps:每秒向磁盘设备请求数据次数,包括读,写请求,为rtps与wtps的和kB_read/s:每秒从设备读取的数据量kB_wrtn/s:每秒向设备写入的数据量kB_read:读取的总数据量kB_wrtn:写入的总数据量
3.iotop命令
iotop命令
iotop命令是一个用来监视磁盘I/O使用状况的top类工具iotop具有与top相似的UI,其中包括
PID、用户、I/O、进程等相关信息,可查看每个进程是如何使用IO常用参数:-o, --only只显示正在产生I/O的进程或线程,除了传参,可以在运行过程中按o生效-b, --batch非交互模式,一般用来记录日志-n NUM, --iter=NUM设置监测的次数,默认无限。在非交互模式下很有用-d SEC, --delay=SEC设置每次监测的间隔,默认1秒,接受非整形数据例如1.1-p PID, --pid=PID指定监测的进程/线程-u USER, --user=USER指定监测某个用户产生的I/O-P, --processes仅显示进程,默认iotop显示所有线程-a, --accumulated显示累积的I/O,而不是带宽-k, --kilobytes使用kB单位,而不是对人友好的单位。在非交互模式下,脚本编程有用-t, --time 加上时间戳,非交互非模式-q, --quiet 禁止头几行,非交互模式,有三种指定方式-q 只在第一次监测时显示列名-qq 永远不显示列名-qqq 永远不显示I/O汇总交互按键left和right方向键:改变排序r:反向排序o:切换至选项--onlyp:切换至--processes选项a:切换至--accumulated选项q:退出i:改变线程的优先级[root@centos7 ~]#iotop
Total DISK READ :       0.00 B/s | Total DISK WRITE :       0.00 B/s
Actual DISK READ:       0.00 B/s | Actual DISK WRITE:       0.00 B/sTID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND362 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.03 % [kwo~/3:1]1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % syst~ze 212 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kso~qd/0]5 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kwo~0:0H]iotop输出第一行:Read和Write速率总计第二行:实际的Read和Write速率第三行:参数如下:线程ID(按p切换为进程ID)优先级用户磁盘读速率磁盘写速率swap交换百分比IO等待所占的百分比线程/进程命令

10.网络管理

1.iftop命令
iftop命令
iftop是一款实时流量监控工具,监控TCP/IP连接等,缺点就是无报表功能。必须以root身份才能运行。
实例:
1)默认是监控第一块网卡的流量iftop
2)监控eth1iftop -i eth1
3)直接显示IP, 不进行DNS反解析iftop -n
4)直接显示连接埠编号, 不显示服务名称:iftop -N
5)显示某个网段进出封包流量iftop -F 192.168.1.0/24 or 192.168.1.0/255.255.255.0基于实例讲解输出含义
执行iftop -N -n -i eth1后界面为12.5Kb        25.0Kb        37.5Kb        50.0Kb   62.5Kb
└─────────────┴─────────────┴─────────────┴─────────────┴──────────────
10.0.7.70             => 10.0.7.1                688b   1.74Kb  1.18Kb<=                         184b    344b    255b───────────────────────────────────────────────────────────────────────
TX:             cum:   12.9KB   peak:  rates:b   688b   1.74Kb  1.18Kb
RX:                    2.17KB            800b    184b    344b    255b
TOTAL:                 15.0KB           5.62Kb   872b   2.08Kb  1.43Kbiftop界面含义如下:第一行:带宽显示中间部分:外部连接列表,即记录了哪些ip正在和本机的网络连接中间部分右边:实时参数分别是该访问ip连接到本机2秒,10秒和40秒的平均流量=>代表发送数据,<= 代表接收数据底部三行:表示发送,接收和全部的流量底部三行第二列:为你运行iftop到目前流量底部三行第三列:为高峰值底部三行第四列:为平均值注意:通过iftop的界面很容易找到哪个ip在霸占网络流量,这个是ifstat做不到的。不过iftop的流量显示单位是Mb,这个b是bit,是位,不是字节,而ifstat的KB,这个B就是字节了,byte是bit的8倍。初学者容易被误导。进入iftop的命令:
进入iftop画面后的一些操作命令(注意大小写)按h切换是否显示帮助;按n切换显示本机的IP或主机名;按s切换是否显示本机的host信息;按d切换是否显示远端目标主机的host信息;按t切换显示格式为2行/1行/只显示发送流量/只显示接收流量;按N切换显示端口号或端口服务名称;按S切换是否显示本机的端口信息;按D切换是否显示远端目标主机的端口信息;按p切换是否显示端口信息;按P切换暂停/继续显示;按b切换是否显示平均流量图形条;按B切换计算2秒或10秒或40秒内的平均流量;按T切换是否显示每个连接的总流量;按l打开屏幕过滤功能,输入要过滤的字符,比如ip,按回车后,屏幕就只显示这个IP相关的流量信息;按L切换显示画面上边的刻度;刻度不同,流量图形条会有变化;按j或按k可以向上或向下滚动屏幕显示的连接记录;按1或2或3可以根据右侧显示的三列流量数据进行排序;按<根据左边的本机名或IP排序;按>根据远端目标主机的主机名或IP排序;按o切换是否固定只显示当前的连接;按f可以编辑过滤代码,这是翻译过来的说法,我还没用过这个!按!可以使用shell命令,这个没用过!没搞明白啥命令在这好用呢!按q退出监控。
2.nload命令
(1)nload是一个实时监控网络流量和带宽使用情况,以数值和动态图展示进出的流量情况
(2)安装:yum -y install nload (EPEL源)
(3)界面操作上下方向键、左右方向键、enter键或者tab键都就可以切换查看多个网卡的流量情况按 F2 显示选项窗口按 q 或者 Ctrl+C 退出 nload
(4)示例:nload:默认只查看第一个网络的流量进出情况nload eth0 eth1:在nload后面指定网卡,可以指定多个
(5)设置刷新间隔:默认刷新间隔是100毫秒,可通过 -t命令设置刷新时间(单位是毫秒)nload -t 500 eth0
(6)设置单位:显示两种单位一种是显示Bit/s、一种是显示Byte/s,默认是以Bit/s,也可不显示/s-u h|b|k|m|g|H|B|K|M|G 表示的含义: h: auto, b: Bit/s, k: kBit/s, m: MBit/s, H:auto, B: Byte/s, K: kByte/s, M: MByte/snload -u M eth0-a:这个好像是全部数据的刷新时间周期,单位是秒,默认是300.-i:进入网卡的流量图的显示比例最大值设置,默认10240 kBit/s.-m:不显示流量图,只显示统计数据。-o:出去网卡的流量图的显示比例最大值设置,默认10240 kBit/s.-t:显示数据的刷新时间间隔,单位是毫秒,默认500。-u:设置右边Curr、Avg、Min、Max的数据单位,默认是自动变的。注意大小写单位不同!h|b|k|m|g h: auto, b: Bit/s, k: kBit/s, m: MBit/s etc.H|B|K|M|G H: auto, B: Byte/s, K: kByte/s, M: MByte/s etc.-U:设置右边Ttl的数据单位,默认是自动变的.注意大小写单位不同(与-u相同)!Devices:自定义监控的网卡,默认是全部监控的,使用左右键切换。Device eth1 [10.0.7.70] (2/5):
=======================================================================
Incoming:Curr: 944.00 Bit/sAvg: 1.15 kBit/sMin: 936.00 Bit/sMax: 3.83 kBit/sTtl: 610.68 kByte
Outgoing:Curr: 7.29 kBit/sAvg: 7.34 kBit/sMin: 3.49 kBit/sMax: 8.67 kBit/sTtl: 4.29 MByte第一部分汇总:首先是网卡名字,IP和网卡的序列,可以用方向键来切换。
第二部分Incoming:进入网卡的流量
第三部分Outgoing:从这块网卡出去的流量。
最后面的部分:Curr:当前的流量Avg:平均的流量Min:最小的流量Max:最大的流量Ttl:流量的总和

11.作业管理

(1)Linux的作业控制前台作业:通过终端启动,且启动后一直占据终端后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)
(2)让作业运行于后台(1) 运行中的作业: Ctrl+z(2) 尚未启动的作业: COMMAND &
(3)后台作业虽然被送往后台运行,但其依然与终端相关;退出终端,将关闭后台作业。如果希望送往后台后,剥离与终端的关系nohup COMMAND &>/dev/null &screen;COMMAND
(4)查看当前终端所有作业:jobs
(5)作业控制:fg [[%]JOB_NUM]:把指定的后台作业调回前台bg [[%]JOB_NUM]:让送往后台的作业在后台继续运行kill [%JOB_NUM]: 终止指定的作业
(6)并行运行同时运行多个进程,提高效率方法1vi all.shf1.sh&f2.sh&f3.sh&方法2(f1.sh&);(f2.sh&);(f3.sh&)方法3{ f1.sh& f2.sh& f3.sh& }
1.nohup命令
nohup命令
nohup Command [ Arg … ] [ & ]
(1)用途:不挂断地运行命令。
(2)描述:nohup 命令运行由 Command 参数和任何相关的 Arg 参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序。要运行后台中的 nohup 命令,添加 & ( 表示”and”的符号)到命令的尾部。无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到 $HOME/nohup.out 文件中。如果没有文件能创建或打开以用于追加,那么      Command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。
(3)退出状态:该命令返回下列出口值:126 可以查找但不能调用 Command 参数指定的命令。127 nohup 命令发生错误或不能查找由 Command 参数指定的命令。否则,nohup 命令的退出状态是 Command 参数指定命令的退出状态。
(4)nohup命令:如果你正在运行一个进程,而且你觉得在退出帐户时该进程还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是不挂起的意思( n ohang up)。操作系统中有三个常用的流:0:标准输入流 stdin1:标准输出流 stdout2:标准错误流 stderr一般当我们用 > console.txt,实际是 1>console.txt的省略用法;< console.txt ,实际是 0 < console.txt的省略用法。例子:nohup ./start-dishi.sh >output 2>&1 &
解释:1. 带&的命令行,即使terminal(终端)关闭,或者电脑死机程序依然运行(前提是你把程序递交到服务器上); 2. 2>&1的意思 这个意思是把标准错误(2)重定向到标准输出中(1),而标准输出又导入文件output里面,所以结果是标准错误和标准输出都导入文件output里面了。 至于为什么需要将标准错误重定向到标准输出的原因,那就归结为标准错误没有缓冲区,而stdout有。这就会导致 >output 2>output 文件output被两次打开,而stdout和stderr将会竞争覆盖,这肯定不是我门想要的. 这就是为什么有人会写成: nohup ./command.sh >output 2>output出错的原因了
2.screen命令
简介:
(1)Screen是一款由GNU计划开发的用于命令行终端切换的自由软件。用户可以通过该软件同时连接多个本地或远程的命令行会话,并在其间自由切换。GNU Screen可以看作是窗口管理器的命令行界面版本。它提供了统一的管理多个会话的界面和相应的功能。在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。(2)screen [-AmRvx -ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]-A  将所有的视窗都调整为目前终端机的大小。-d   <作业名称>  将指定的screen作业离线。-h   <行数>  指定视窗的缓冲区行数。-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。-r   <作业名称>  恢复离线的screen作业。-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。-s  指定建立新视窗时,所要执行的shell。-S   <作业名称>  指定screen作业的名称。-v  显示版本信息。-x  恢复之前离线的screen作业。-ls或--list  显示目前所有的screen作业。-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。(3)常用参数:screen -S yourname -> 新建一个叫yourname的sessionscreen -ls         -> 列出当前所有的sessionscreen -r yourname -> 回到yourname这个sessionscreen -d yourname -> 远程detach某个sessionscreen -d -r yourname -> 结束当前session并回到yourname这个session(4)在Session下,使用ctrl+a(C-a) C-a ? -> 显示所有键绑定信息C-a c -> 创建一个新的运行shell的窗口并切换到该窗口C-a n -> Next,切换到下一个 window C-a p -> Previous,切换到前一个 window C-a 0..9 -> 切换到第 0..9 个 windowCtrl+a [Space] -> 由视窗0循序切换到视窗9C-a C-a -> 在两个最近使用的 window 间切换 C-a x -> 锁住当前的 window,需用用户密码解锁C-a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。 C-a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。C-a w -> 显示所有窗口列表C-a t -> time,显示当前时间,和系统的 load C-a k -> kill window,强行关闭当前的 windowC-a [ -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 vi 一样C-b Backward,PageUp C-f Forward,PageDown H(大写) High,将光标移至左上角 L Low,将光标移至左下角 0 移到行首 $ 行末 w forward one word,以字为单位往前移 b backward one word,以字为单位往后移 Space 第一次按为标记区起点,第二次按为终点 Esc 结束 copy mode C-a ] -> paste,把刚刚在 copy mode 选定的内容贴上(5)常用操作
1)创建会话(-m 强制):screen -dmS session_namesession_name session名称
2)关闭会话:screen -X -S [session # you want to kill] quit
3)查看所有会话:screen -ls
4)进入会话:screen -r session_name

Linux基础命令-进程与系统性能相关推荐

  1. Linux基础命令-pstree树状显示进程信息

    Linux基础命令-uname显示系统内核信息 Linux基础命令-lsof查看进程打开的文件 Linux基础命令-uptime查看系统负载 文章目录 前言 一 命令介绍 二 语法及参数 2.1 使用 ...

  2. linux killall 源代码,Linux基础命令---杀死进程killall

    killall killall可以根据名字来杀死进程,它会给指定名字的所有进程发送信息.如果没有指定信号名,则发送SIGTERM.信号可以通过名称(例如-HUP或-SIGHUP)或数字(例如-1)或选 ...

  3. 干货!一篇文章集合所有Linux基础命令,适合所有菜鸟学习和老手回顾!

    阿里云   干货!一篇文章集合所有Linux基础命令,适合所有菜鸟学习和老手回顾! 1 文件{ ls -rtl # 按时间倒叙列出所有目录和文件 ll -rt touch file # 创建空白文件 ...

  4. linux下kill指令默认信号,Linux基础命令之kill命令

    相信大家在使用Linux的过程中都会遇到过某个程序出错导致系统锁死的情况,按照常规的思维我们会通过重启来重新启动系统.然而事实上在Linux中并不需要进行重启就能够完成出错程序的关闭操作.在Linux ...

  5. 测试常用——linux 基础命令

    测试常用 的 linux 基础命令 1,查看服务器日志 vi 查看文件 (查找关键字:exception /exception  :  从上往下找,按n查找下一个关键字,按shift+n查找上一个关键 ...

  6. Linux 基础命令:IP 路由操作 -ip命令

    转自Linux爱好者:Linux 基础命令:IP 路由操作 Table of Contents ip 1.语法 2.选项列表 3.ip link---网络设备配置 4.ip address---协议地 ...

  7. linux基础命令学习笔记(二)

    linux基础命令学习笔记(二) 1.kill :终止进程  kill pid (唯一标示一个进程) kill -9  强制终止  kill -15 命令未结束不能终止 # ps aux 查看所有进程 ...

  8. linux 关机命令_小猿圈Linux基础命令汇总

    科技进步的今天,互联网不断的发展,很多人学习Linux运维的时候会因为记不住一些命令从而去找一些渠道,有时候因为找不到linux的命令而烦恼,下面是小猿圈linux讲师给大家总结的linux基础命令, ...

  9. Linux基础命令与进阶

    目录标题 Linux基础命令与进阶 关机命令 Linux 用户/用户组 1.增加一个用户组 2.删除一个用户组 3.修改用户组的属性 4.添加用户账号 5.删除帐号 6.修改帐号 7.用户口令的管理 ...

最新文章

  1. Troubleshooting Open Cursor Issues
  2. Linux目录结构FHS
  3. Android JNI(Java Native Interface)技术介绍
  4. 抖音后台开发社招面试
  5. python时间模块小结
  6. python字符串只保留字母_在字符串中只保留字母字符(多语言)
  7. CSS3实战 - 3d转换 - 超级立方体
  8. Excel VBA打开IE浏览器的网页
  9. MICCAI2019论文分享 PART①
  10. 不会汇报工作,还敢拼职场
  11. PTA L2-043 龙龙送外卖
  12. 硕盟SM-H2V1 HDMI转VGA高清转换器
  13. 心态不好的时候留给自己看
  14. 微信小程序wxs将数字转换为汉字
  15. win10开机“正在准备自动修复”,且无法修复你的电脑
  16. LUN详解 iscsi
  17. 看《江山美人》,让我三次笑场
  18. Django框架--一--安装,工程创建,应用创建,配置,基础操作介绍
  19. 【黑金ZYNQ7000系列原创视频教程】01.熟悉vivadomdash;mdash;纯逻辑led实验
  20. 在android上启动分屏的方法

热门文章

  1. 数据项组成数据元素,数据元素组成数据
  2. oracle 把结果加上百分号_用一条sql语句显示数据百分比并加百分号
  3. 小程序中实现待办功能
  4. 游戏开发之路-hxx
  5. wisp5.0 学习日记2
  6. 软件定义网络 Software Defined Network (一)概述
  7. 英语中 distinct 与 distinctive 的区别
  8. nsfw什么颜色_“ NSFW”是什么意思,以及如何使用它?
  9. 类型多样的人物ps后期素材素材,速来收藏
  10. 反射望远镜的发展历程(3)