[关闭]
@wyjgd 2019-09-18T08:54:15.000000Z 字数 4749 阅读 668

系统性能管理工具


进程

1、内核的功能:

进程管理、文件系统、网络功能、内存管理、驱动程序、安全功能等

2、Process:

运行中的程序的一个副本,被载入内存的一个指令集合,进程ID(PID)被用来标记各个进程。
UID、GID和selinux决定对文件系统的存取和访问权限,通常从执行进程的用户来继承,存在生命周期。
task struct:linux内核存储进程信息的数据结构模式。
task list:多个任务的task struct组成的链表
进程创建:init(第一个进程)
          进程:由父进程创建,父子关系,CoW,fork(),clone()

3、进程状态

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

top命令

QQ截图20190918143830.png-50.3kB

  1. us:用户空间
  2. sy:系统空间
  3. ni:调整(nice)优先级
  4. id:空闲(idle)空间
  5. wa:等待IO时间
  6. hi:硬中断
  7. si:软中断
  8. st:虚拟机偷走时间
  9. PRtop命令自己的优先级(值越大,优先级越低)
  10. VIRT:虚拟内存
  11. RES:物理内存
  12. SHR:共享内存
  13. load average1 5 15的平均负载情况

ps

用法:ps [OPTION]...
支持三种选项:
UNIX选项 如-A -e
BSD选项 如a
GNU选项 如--help

  1. 选项:默认显示当前终端中的进程
  2. a 选项包括所有终端中的进程
  3. x 选项包括不链接终端的进程
  4. u 选项显示进程所有者的信息
  5. f 选项显示进程树,相当于 --forest
  6. k|--sort 属性 对属性排序,属性前加- 表示倒序
  7. o 属性… 选项显示定制的信息 pidcmd、%cpu、%mem
  8. L 显示支持的属性列表
  9. -L 显示线程
  10. -e: 显示所有进程,相当于-A
  11. -f: 显示完整格式程序信息
  12. -F: 显示更完整格式的进程信息
  13. -H: 以进程层级格式显示进程相关信息
  14. -p pid 显示指pid的进程
  15. --ppid pid 显示属于pid的子进程
  16. -M 显示SELinux信息,相当于Z

QQ截图20190918150215.png-6.3kB

VSZ: Virtual memory SiZe,虚拟内存集,线性内存
RSS: ReSident Size, 常驻内存集
STAT:进程状态
    R:running
    S: interruptable sleeping
    D: uninterruptable sleeping
    T: stopped
    Z: zombie
    +: 前台进程
    l: 多线程进程
    L:内存分页并带锁
    N:低优先级进程
    <: 高优先级进程
    s: session leader,会话(子进程)发起者

查找前10个占用内存和CPU的进程

ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%mem | head -10
ps -eo pid,ppid,cmd,%mem,%cpu --sort=-%cpu | head -10

iostat

iostat用于输出CPU和磁盘输入输出、分区、网络文件系统NFS相关的统计信息。监控系统设备的输入/输出情况,并生成报告,以便根据统计报告修改系统配置,获取更优的性能。

用法:

iostat [ -c ] [ -d ] [ -N ] [ -n ] [ -h ] [ -k | -m ] [ -t ] [ -V ] [ -x ] [ -z ] [ device [...] | ALL ] [ -p [ device [,...] | ALL ] ] [ interval [ count ] ]
iostat[参数][时间][次数]
其中,时间以秒为单位。

1、iostat 命令的简单使用
iostat 命令可以显示 CPU 和 I/O 系统的负载情况及分区状态信息。
直接执行 iostat 命令可以显示下面的内容:

  1. [root@master3 ~]# iostat
  2. Linux 3.10.0-957.el7.x86_64 (master3) 09/18/2019 _x86_64_ (4 CPU)
  3. avg-cpu: %user %nice %system %iowait %steal %idle
  4. 1.02 0.00 0.62 0.03 0.00 98.33
  5. Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn
  6. sda 0.23 2.30 11.52 1237068 6186048
  7. sdb 0.00 0.01 0.00 7197 2104
  8. sdc 0.00 0.02 0.00 10688 1156
  9. dm-0 0.25 2.24 11.51 1202784 6182933
  10. dm-1 0.00 0.01 0.00 2972 0
  11. dm-2 0.00 0.00 0.00 1696 2188

各输出项的含义如下:

2、选项

  1. -c 仅显示 CPU 统计信息。与 -d 选项互斥
  2. -d 仅显示磁盘统计信息。与 -c 选项互斥
  3. -k KB为单位显示每秒的磁盘请求数,默认单位块
  4. -m MB为单位显示每秒的磁盘请求数
  5. -N 显示磁盘阵列信息
  6. -n 显示网络文件系统NFS报告。此选项仅适用于Linux内核2.6.17以上版本。
  7. -p device | ALL
  8. -x 选项互斥,用于显示块设备及系统分区的统计信息,也可以在 -p 后指定一个设备名,如:iostat -p hda 或显示所有设备iostat -p ALL
  9. -t 在输出数据时,打印收集数据的时间
  10. -V 打印版本号和帮助信息
  11. -x 输出扩展信息。、

vmstat

vmstat 是除 top 之外另一个常用的系统检测工具

  1. [root@master3 ~]# vmstat 1 5
  2. procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
  3. r b swpd free buff cache si so bi bo in cs us sy id wa st
  4. 1 0 0 1610272 308 1491924 0 0 1 3 20 5 1 1 98 0 0
  5. 0 0 0 1609852 308 1491924 0 0 0 0 2476 3270 5 3 92 0 0
  6. 0 0 0 1609884 308 1491924 0 0 0 0 2506 3250 5 3 92 0 0
  7. 0 0 0 1609976 308 1491924 0 0 0 0 2306 2812 5 4 92 0 0
  8. 0 0 0 1609812 308 1491924 0 0 0 0 2318 3163 5 3 93 0 0

kill

kill:向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以SIG开头,不区分大小写

  1. 当前系统可用信号:kill -ltrap -l
  2. 常用信号:man 7 signal
  3. SIGHUP1 无须关闭进程而让其重读配置文件
  4. SIGINT2 中止正在运行的进程,相当于Ctrl+c
  5. SIGQUIT3)相当于Crtl+\
  6. SIGKILL9)强制杀死正在运行的进程
  7. SIGTERM15)终止正在运行的进程
  8. SIGCONT18)继续运行
  9. SIGSTOP19)后台休眠
按PID:kill [-SIGNAL] pid …
kill –n SIGNAL pid
kill –s SIGNAL pid
按名称:killall [-SIGNAL] comm…
按模式:pkill [options] pattern
-SIGNAL
-u uid: effective user,生效者
-U uid: real user,真正发起运行命令者
-t terminal: 与指定终端相关的进程
-l: 显示进程名(pgrep可用)
-a: 显示完整格式的进程名(pgrep可用)
-P pid: 显示指定进程的子进程

周期性任务计划cron

计划周期性执行的任务提交给crond,到指定时间会自动运行

系统cron任务:系统维护作业
              /etc/crontab
用户cron任务:crontab命令
日志:/var/log/cron
  1. 系统cron任务:/etc/crontab
  2. 注释行以 # 开头
  3. 详情参见 man 5 crontab
  4. # Example of job definition:
  5. # .---------------- minute (0 - 59)
  6. # | .------------- hour (0 - 23)
  7. # | | .---------- day of month (1 - 31)
  8. # | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
  9. # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
  10. # | | | | |
  11. # * * * * * user-name command to be executed
  12. 例如:晚上910分运行echo命令
  13. 10 21 * * * root /bin/echo "6666"
  1. @reboot Run once after reboot
  2. @yearly 0 0 1 1 * 每一年
  3. @annually 0 0 1 1 * 每一年
  4. @monthly 0 0 1 * * 每个月
  5. @weekly 0 0 * * 0 每个星期
  6. @daily 0 0 * * * 每天
  7. @hourly 0 * * * * 每小时

crontab命令

每个用户都有专用的cron任务文件:/var/spool/cron/USERNAME

用法:

crontab [-u user] [-l | -r | -e] [-i]
-l 列出所有任务
-e 编辑任务
-r 移除所有任务
-i 同-r一同使用,以交互式模式移除指定任务
-u user 仅root可运行,指定用户管理cron任务
控制用户执行计划任务:/etc/cron.{allow,deny}

crontab实现,root用户在12个月内, 每天的早上6点到12点,每隔3个小时0 分钟执行一次 /usr/bin/backup

crontab -e -u root
0 6-12/3 * 12 * /usr/bin/backup
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注