导航菜单

  • 0.api
  • 0.Async
  • 0.module
  • 1.ES2015
  • 2.Promise
  • 3.Node
  • 4.NodeInstall
  • 5.REPL
  • 6.NodeCore
  • 7.module&NPM
  • 8.Encoding
  • 9.Buffer
  • 10.fs
  • 11.Stream-1
  • 11.Stream-2
  • 11.Stream-3
  • 11.Stream-4
  • 12-Network-2
  • 12.NetWork-3
  • 12.Network-1
  • 13.tcp
  • 14.http-1
  • 14.http-2
  • 15.compress
  • 16.crypto
  • 17.process
  • 18.yargs
  • 19.cache
  • 20.action
  • 21.https
  • 22.cookie
  • 23.session
  • 24.express-1
  • 24.express-2
  • 24.express-3
  • 24.express-4
  • 25.koa-1
  • 26.webpack-1-basic
  • 26.webpack-2-optimize
  • 26.webpack-3-file
  • 26.webpack-4.tapable
  • 26.webpack-5-AST
  • 26.webpack-6-sources
  • 26.webpack-7-loader
  • 26.webpack-8-plugin
  • 26.webpack-9-hand
  • 26.webpack-10-prepare
  • 28.redux
  • 28.redux-jwt-back
  • 28.redux-jwt-front
  • 29.mongodb-1
  • 29.mongodb-2
  • 29.mongodb-3
  • 29.mongodb-4
  • 29.mongodb-5
  • 29.mongodb-6
  • 30.cms-1-mysql
  • 30.cms-2-mysql
  • 30.cms-3-mysql
  • 30.cms-4-nunjucks
  • 30.cms-5-mock
  • 30.cms-6-egg
  • 30.cms-7-api
  • 30.cms-8-roadhog
  • 30.cms-9-yaml
  • 30.cms-10-umi
  • 30.cms-12-dva
  • 30.cms-13-dva-ant
  • 30.cms-14-front
  • 30.cms-15-deploy
  • 31.dva
  • 31.cms-13-dva-antdesign
  • 33.redis
  • 34.unittest
  • 35.jwt
  • 36.websocket-1
  • 36.websocket-2
  • 38.chat-api-1
  • 38.chat-api-2
  • 38.chat-3
  • 38.chat-api-3
  • 38.chat
  • 38.chat2
  • 38.chat2
  • 39.crawl-0
  • 39.crawl-1
  • 39.crawl-2
  • 40.deploy
  • 41.safe
  • 42.test
  • 43.nginx
  • 44.enzyme
  • 45.docker
  • 46.elastic
  • 47.oauth
  • 48.wxpay
  • index
  • 52.UML
  • 53.design
  • index
  • 54.linux
  • 57.ts
  • 56.react-ssr
  • 58.ts_react
  • 59.ketang
  • 59.ketang2
  • 61.1.devops-linux
  • 61.2.devops-vi
  • 61.3.devops-user
  • 61.4.devops-auth
  • 61.5.devops-shell
  • 61.6.devops-install
  • 61.7.devops-system
  • 61.8.devops-service
  • 61.9.devops-network
  • 61.10.devops-nginx
  • 61.11.devops-docker
  • 61.12.devops-jekins
  • 61.13.devops-groovy
  • 61.14.devops-php
  • 61.15.devops-java
  • 61.16.devops-node
  • 61.17.devops-k8s
  • 62.1.react-basic
  • 62.2.react-state
  • 62.3.react-high
  • 62.4.react-optimize
  • 62.5.react-hooks
  • 62.6.react-immutable
  • 62.7.react-mobx
  • 62.8.react-source
  • 63.1.redux
  • 63.2.redux-middleware
  • 63.3.redux-hooks
  • 63.4.redux-saga
  • 63.5.redux-saga-hand
  • 64.1.router
  • 64.2.router-connected
  • 65.1.typescript
  • 65.2.typescript
  • 65.3.typescript
  • 65.4.antd
  • 65.4.definition
  • 66-1.vue-base
  • 66-2.vue-component
  • 66-3.vue-cli3.0
  • 66-4.$message组件
  • 66-5.Form组件
  • 66-6.tree
  • 66-7.vue-router-apply
  • 66-8.axios-apply
  • 66-9.vuex-apply
  • 66-10.jwt-vue
  • 66-11.vue-ssr
  • 66-12.nuxt-apply
  • 66-13.pwa
  • 66-14.vue单元测试
  • 66-15.权限校验
  • 67-1-network
  • 68-2-wireshark
  • 7.npm2
  • 69-hooks
  • 70-deploy
  • 71-hmr
  • 72.deploy
  • 73.import
  • 74.mobile
  • 75.webpack-1.文件分析
  • 75.webpack-2.loader
  • 75.webpack-3.源码流程
  • 75.webpack-4.tapable
  • 75.webpack-5.prepare
  • 75.webpack-6.resolve
  • 75.webpack-7.loader
  • 75.webpack-8.module
  • 75.webpack-9.chunk
  • 75.webpack-10.asset
  • 75.webpack-11.实现
  • 76.react_optimize
  • 77.ts_ketang_back
  • 77.ts_ketang_front
  • 78.vue-domdiff
  • 79.grammar
  • 80.tree
  • 81.axios
  • 82.1.react
  • 82.2.react-high
  • 82.3.react-router
  • 82.4.redux
  • 82.5.redux_middleware
  • 82.6.connected
  • 82.7.saga
  • 82.8.dva
  • 82.8.dva-source
  • 82.9.roadhog
  • 82.10.umi
  • 82.11.antdesign
  • 82.12.ketang-front
  • 82.12.ketang-back
  • 83.upload
  • 84.graphql
  • 85.antpro
  • 86.1.uml
  • 86.2.design
  • 87.postcss
  • 88.react16-1
  • 89.nextjs
  • 90.react-test
  • 91.react-ts
  • 92.rbac
  • 93.tsnode
  • 94.1.JavaScript
  • 94.2.JavaScript
  • 94.3.MODULE
  • 94.4.EventLoop
  • 94.5.文件上传
  • 94.6.https
  • 94.7. nginx
  • 95.1. react
  • 95.2.react
  • 96.1.react16
  • 96.2.fiber
  • 96.3.fiber
  • 97.serverless
  • 98.websocket
  • 100.1.react-basic
  • 101.1.monitor
  • 101.2.monitor
  • 102.java
  • 103.1.webpack-usage
  • 103.2.webpack-bundle
  • 103.3.webpack-ast
  • 103.4.webpack-flow
  • 103.5.webpack-loader
  • 103.6.webpack-tapable
  • 103.7.webpack-plugin
  • 103.8.webpack-optimize1
  • 103.9.webpack-optimize2
  • 103.10.webpack-hand
  • 103.11.webpack-hmr
  • 103.11.webpack5
  • 103.13.splitChunks
  • 103.14.webpack-sourcemap
  • 103.15.webpack-compiler1
  • 103.15.webpack-compiler2
  • 103.16.rollup.1
  • 103.16.rollup.2
  • 103.16.rollup.3
  • 103.16.vite.basic
  • 103.16.vite.source
  • 103.16.vite.plugin
  • 103.16.vite.1
  • 103.16.vite.2
  • 103.17.polyfill
  • 104.1.binary
  • 104.2.binary
  • 105.skeleton
  • 106.1.react
  • 106.2.react_hooks
  • 106.3.react_router
  • 106.4.redux
  • 106.5.redux_middleware
  • 106.6.connected-react-router
  • 106.6.redux-first-history
  • 106.7.redux-saga
  • 106.8.dva
  • 106.9.umi
  • 106.10.ketang
  • 106.11.antdesign
  • 106.12.antpro
  • 106.13.router-6
  • 106.14.ssr
  • 106.15.nextjs
  • 106.16.1.cms
  • 106.16.2.cms
  • 106.16.3.cms
  • 106.16.4.cms
  • 106.16.mobx
  • 106.17.fomily
  • 107.fiber
  • 108.http
  • 109.1.webpack_usage
  • 109.2.webpack_source
  • 109.3.dll
  • 110.nest.js
  • 111.xstate
  • 112.Form
  • 113.redux-saga
  • 114.react+typescript
  • 115.immer
  • 116.pro5
  • 117.css-loader
  • 118.1.umi-core
  • 119.2.module-federation
  • 119.1.module-federation
  • 120.create-react-app
  • 121.react-scripts
  • 122.react-optimize
  • 123.jsx-runtime
  • 124.next.js
  • 125.1.linux
  • 125.2.linux-vi
  • 125.3.linux-user
  • 125.4.linux-auth
  • 125.5.linux-shell
  • 125.6.linux-install
  • 125.7.linux-system
  • 125.8.linux-service
  • 125.9.linux-network
  • 125.10.nginx
  • 125.11.docker
  • 125.12.ci
  • 125.13.k8s
  • 125.14.k8s
  • 125.15.k8s
  • 125.16.k8s
  • 126.11.react-1
  • 126.12.react-2
  • 126.12.react-3
  • 126.12.react-4
  • 126.12.react-5
  • 126.12.react-6
  • 126.12.react-7
  • 126.12.react-8
  • 127.frontend
  • 128.rollup
  • 129.px2rem-loader
  • 130.health
  • 131.hooks
  • 132.keepalive
  • 133.vue-cli
  • 134.react18
  • 134.2.react18
  • 134.3.react18
  • 135.function
  • 136.toolkit
  • 137.lerna
  • 138.create-vite
  • 139.cli
  • 140.antd
  • 141.react-dnd
  • 142.1.link
  • 143.1.gulp
  • 143.2.stream
  • 143.3.gulp
  • 144.1.closure
  • 144.2.v8
  • 144.3.gc
  • 145.react-router-v6
  • 146.browser
  • 147.lighthouse
  • 148.1.basic
  • 148.2.basic
  • 148.3.basic
  • 148.4.basic
  • 148.5.basic
  • 149.1.vite
  • 149.2.vite
  • 149.3.vite
  • 149.4.vite
  • 150.react-window
  • 151.react-query
  • 152.useRequest
  • 153.transition
  • 154.emotion
  • 155.1.formily
  • 155.2.formily
  • 155.3.formily
  • 155.3.1.mobx.usage
  • 155.3.2.mobx.source
  • 156.vue-loader
  • 103.11.mf
  • 157.1.react18
  • 158.umi4
  • 159.rxjs
  • 159.rxjs2
  • 160.bff
  • 161.zustand
  • 162.vscode
  • 163.emp
  • 164.cors
  • 1. 进程管理
    • 1.1 进程
    • 1.2 进程管理简介
    • 1.2 进程的查看命令(ps)
      • 1.2.1 选项
      • 1.2.2 结果字段含义
      • 1.2.3 进程状态(STAT)
    • 1.3 pstree
    • 1.3 进程的查看(top)
      • 1.3.1 选项
      • 1.3.2 交互模式的命令
      • 1.3.3 状态栏
        • 1.3.3.1 第一行为任务队列信息
        • 1.3.3.2 第二行为进程信息
        • 1.3.3.3 第三行为CPU信息
        • 1.3.3.4 第四行为物理内存信息
        • 1.3.3.5 第四行为交换分区信息
    • 1.4 杀死进程(kill)
      • 1.4.1 进程信号
      • 1.4.2 杀死单一进程
      • 1.4.3 killall
      • 1.4.4 pkill
      • 1.4.5 w
    • 1.5 修改进程优先级
      • 1.5.1 进程优先级
      • 1.5.2 修改进程优先级
      • 1.5.3 nice
      • 1.5.4 renice
  • 2. 工作管理
    • 2.1 工作管理(jobs)
    • 2.2 工作管理方法
      • 2.2.1 把进程放入后台
      • 2.2.2 查看后台的工作
      • 2.2.3 恢复到前台
      • 2.2.4 恢复到后台
      • 2.2.3 后台命令脱离终端
        • 2.2.3.1 rc.local
        • 2.2.3.2 定时任务
        • 2.2.3.3 rc.local
  • 3. 系统资源查看
    • 3.1 vmstat
      • 3.1.1 (procs)进程信息字段
      • 3.1.2 memory(内存信息字段)
      • 3.1.3 swap(交换分区信息)
      • 3.1.4 io(磁盘读写)
      • 3.1.5 system(系统信息字段)
      • 3.1.6 CPU(CPU信息字段)
    • 3.2 dmesg
    • 3.3 free
      • 3.3.1 第一行
      • 3.3.2 第二行
      • 3.3.3 第三行
    • 3.4 cpuinfo
    • 3.5 uptime
    • 3.6 查看内核相关信息
    • 3.7 查看操作系统位数
    • 3.8 查看发行版本
    • 3.9 查看发行版本
    • 3.10 列表进程打开或使用文件信息
      • 3.10.1 查看系统中所有进程调用的文件
      • 3.10.2 查看某个文件是被哪个进程调用
      • 3.10.3 查看某个进程调用了哪些文件
      • 3.10.4 查询某个用户调用了哪些文件
  • 4. 系统定时任务
    • 4.1 at
      • 4.1.1 启动服务
      • 4.1.2 at的访问控制
      • 4.1.3 at命令
      • 4.1.4 atq
      • 4.1.5 atrm
    • 4.2 crontab
      • 4.2.2 at的访问控制
      • 4.2.3 crontab设置
        • 4.2.3.1 语法
        • 4.2.3.2 位置
        • 4.2.3.3 特殊符号
        • 4.2.3.4 案例
        • 4.2.3.5 注意事项
    • 4.3 系统定时任务
    • 4.3.1 /etc/crontab
    • 4.3.2 /etc/cron
    • 4.4 anacron配置
      • 4.4.1 /etc/anacrontab
      • 4.4.2 cron.daily执行过程

1. 进程管理 #

1.1 进程 #

  • 进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间并且用一定的系统资源
  • 进程就是正在执行的某个程序

1.2 进程管理简介 #

  • 判断服务器的状态
  • 查看系统中的所有进程
  • 杀死进程,只有无法关闭才要杀死进程

1.2 进程的查看命令(ps) #

  • ps aux 查看系统中所有进程,使用BSD操作系统格式
  • ps -le 查看系统中所有进程,使用Linux标准格式
  • TTY是TeleType的一个缩写,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西
  • pts(pseudo['su:doʊ]-terminal slave)是所谓的伪终端或虚拟终端

1.2.1 选项 #

参数 含义
-a 显示一个终端的所有进程
-u 显示进程的归属用户及内存的使用情况
-x 显示没有控制终端的进程
-l 长格式显示,显示更详细的信息

1.2.2 结果字段含义 #

数据 含义
USER 该进程是由哪个用户创建的
PID 进程的ID号
%CPU 该进程占用CPU资源的百分比,占用越高说明越消耗系统资源
%MEM 该进程占用物理内存的百分比,占用越高说明越消耗系统资源
VSZ 该进程占用虚拟内存的百分比,单位是KB
RSS 该进程占用实际物理内存大小,单位是KB
TTY 该进程在哪个终端中运行。tty1~tty7表示本地控制终端,tty1~tty6是字符终端,tty7是图形终端。pts/0~255代表虚拟终端,?表示此终端是系统启动的
STAT 进程状态
START 该进程的启动时间
TIME 该进程占用CPU的运算时间,数值越高说明越消耗系统资源
COMMAND 产生此进程的命令名

1.2.3 进程状态(STAT) #

参数 含义
R(Runing) 运行
S(Sleep) 休眠
T(Terminated) 停止
S(Son) 包含子进程
+ 位于后台

1.3 pstree #

  • pstree [选项]
    • -p 显示进程PID
    • -u 显示进程的所属用户

1.3 进程的查看(top) #

  • top
 top -b -n 1 > top.txt

1.3.1 选项 #

选项 含义
-b 使用批处理模式输出,一般和-n配合使用
-n 次数,指定top命令执行的次数。一般了-b选项配合使用
-d 秒数,指定top命令每隔几秒更新。默认是3秒

1.3.2 交互模式的命令 #

选项 含义
?或h 显示交互模式的帮助
P 按CPU使用率排序,默认就是此选项
M 以内存的使用率排序
N 以PID排序
q 退出top

1.3.3 状态栏 #

1.3.3.1 第一行为任务队列信息 #
内容 说明
12:12:12 系统的当前时间
up 1 day 5:33 系统的运行时间,本机已经运行了1天5小时33分
2 users 当前登录了二个客户端
load average 0 0 0 系统在之前1分钟、5分钟、15分钟的平均负载。一般认为小于1小时负载较小,大于1超过负载
1.3.3.2 第二行为进程信息 #
内容 说明
Tasks: 100 total 系统中的进程总数
1 running 正在运行的进程数
94 sleeping 睡眠的进程
0 stopped 正在停止的进程
0 zombie 僵尸进程。如果不是0的话要进行检查
1.3.3.3 第三行为CPU信息 #
内容 说明
Cpu(s): 0.1%us 用户模式占用的CPU百分比
0.1%sy 系统模式占用的CPU百分比
0.0%ni 改变过优先级的用户进程 占用的CPU百分比
99.7%id 空闲CPU的CPU百分比
0.1%wa 等待输入/输出的进程的占用CPU百分比
0.1%hi 硬中断请求服务占用的CPU百分比
0.1%si 软中断请求服务占用的CPU百分比
0.0%st st(Steal time)虚拟时间百分比,就是当有
  • 硬中断 由与系统相连的外设(比如网卡、硬盘)自动产生的。主要是用来通知操作系统系统外设状态的变化。比如当网卡收到数据包的时候,就会发出一个中断。我们通常所说的中断指的是硬中断(hardirq)。
  • 软中断是通讯进程之间用来模拟硬中断的 一种信号通讯方式,软中断是执行中断指令产生的,无面外部施加中断请求信号,因此中断的发生不是随机的而是由程序安排好的。

  • 硬中断是可屏蔽的,软中断不可屏蔽。软中断是由程序调用发生的,而硬中断是由外设引发的

1.3.3.4 第四行为物理内存信息 #
内容 说明
Mem: 1030720k total 物理内存的问题,单位是KB
551860k used 已经使用的物理内存数量
478860k free 空闲的物理内存数量,虚拟机分配了1024M内存,使用了538M,空闲467M
43180k buffers 作为缓冲的内存数量,可以存放需要写入硬盘的数据,用来加速数据的写入
1.3.3.5 第四行为交换分区信息 #
内容 说明
Swap: 2047992k total 总计的交换分区(虚拟内存)大小
536k used 已经使用的交换分区大小
2047456k free 空闲的交换分区大小
368164k cached 把需要经常读取的数据从硬盘读到内存中,加速了数据的读取

1.4 杀死进程(kill) #

1.4.1 进程信号 #

  • httpd采用的是worker模式,是一种多进程与多线程混合的模式
  • kill -l 查看可用的进程信号
信号 代码 信号名称 说明 示例
1 SIGHUP 该信号让进程立即关闭,然后重写读取配置文件后重启,平滑重启 kill -1 -HUP 进程号
2 SIGINT 程序终止信号,用于关闭前台进程,相当于ctrl+c
9 SIGKILL 用来立刻结束程序的运行,本信号不能阻塞、处理和忽略,一般用于强制中止
15 SIGTERM 正常结束进程的信号,kill命令的默认信号。如果不能正常中止,才会尝试SIGKILL信号

1.4.2 杀死单一进程 #

kill -9 进程号

1.4.3 killall #

  • 按照进程名杀死进程
  • killall [选项][信号] 进程名
    • -i 交互式,询问是否要杀死某个进程
    • -I 进程名忽略大小写
  • /etc/httpd/conf/httpd.conf
    • ServerName localhost:80

1.4.4 pkill #

  • 按照进程名杀死进程
  • pkill [选项][信号] 进程名 -t 按终端号踢出用户
pkill -9 -t "pts/2"

1.4.5 w #

选项 含义
USER 显示登陆用户帐号名
TTY 用户登陆所用的终端
FROM 显示用户在何处登陆系统
LOGIN@ 是LOGIN AT的意思,表示登陆进入系统的时间
IDLE 用户空闲时间,从用户上一次任务结束后,开始记时
JCPU 终端代号来区分,表示在这段时间内,所有与该终端相关的进程任务所耗费的CPU时间
PCPU 指WHAT域的任务执行后耗费的CPU时间
WHAT 表示当前执行的任务

1.5 修改进程优先级 #

1.5.1 进程优先级 #

  • Linux操作系统是一个多用户、多任务的操作系统,Linux系统同时管理着非常多的进程,但是CPU在同一个时间周期内只能运算一个指令
  • 进程的优先级决定了每个进程处理的先后顺序

1.5.2 修改进程优先级 #

  • ps -le 可以查看进程优先级
  • PRI表示Priority,NI表示Nice。这两个值都是优先级,数字越小代理进程优先有越高
  • NI的值范围是-20~19
  • 普通用户调整NI值的范围是0~19,而且只能调整自己的进程
  • 普通用户只能调高NI值,但不能调低。比如原来是0,则只能调为大于0的数字
  • root用户才能设定进程NI值为负值,而且可以调整任何用户的进程
  • PRI(最终值)=PRI(原始值)+NI
  • 用户只能修改NI的值,不能直接修改PRI的值

1.5.3 nice #

  • nice命令可以给新执行的命令直接赋NI值,但不能修改已经存在进程的NI值
  • nice [选项] 命令
  • 选项 -n NI值 给命令赋新的NI值
nice -n -5 service httpd start

1.5.4 renice #

  • 修改已经存在的进程的NI的值
  • renice [优先级] PID
renice -10 30054
0054: old priority -5, new priority -10
# ps -le | grep httpd
1 S     0 30054     1  0  70 -10 -  2792 -      ?        00:00:00 httpd
5 S    48 30055 30054  0  75  -5 -  2792 -      ?        00:00:00 httpd

2. 工作管理 #

2.1 工作管理(jobs) #

  • 工作管理就是指的是单个登录终端中同时管理多个工作的行为
  • 有时候有些命令会卡住我们的操作界面,我们就需要把它放入后台,比如拷贝大型文件
  • 当前的登录终端只能管理当前终端的工作,而不能管理其它终端工作
  • 放入后台的命令必须是还要持续一段时间的,这样我们才能去捕捉和操作这个动作
  • 放入后台的命令不能和前台用户有交互或者需要前台输入,否则放入后台只能暂停,而不会执行

2.2 工作管理方法 #

2.2.1 把进程放入后台 #

  • & 在命令后面加可以把命令放入后台,并在后台执行
  • ctrl+z 把工作放在后台暂停

2.2.2 查看后台的工作 #

  • jobs
    • -l 显示工作的PID
  • 加号代表最近一个放入后台的工作,也就工作恢复时默认恢复的工作
  • 减号代表倒数第二个放入后台的工作
[1]+  Stopped                 top
# jobs -l
[1]+ 30562 停止 (信号)         top

# sleep 100s
^Z
[2]+  Stopped                 sleep 100s
# jobs -l
[1]- 30562 停止 (信号)         top
[2]+ 30588 停止                  sleep 100s

vim hello.txt &

find / -name hello

2.2.3 恢复到前台 #

  • fg %工作号
    • -%工作号 %可以省略,注意工作号和PID是不同的

2.2.4 恢复到后台 #

  • bg %工作号
    • -%工作号 %可以省略,注意工作号和PID是不同的
  • 后台恢复执行的命令,不能和前台有交互
# bg 2
[2]+ sleep 100s &
# jobs -l
[1]+ 30562 停止 (信号)         top
[2]- 30601 Running                 sleep 100s &

2.2.3 后台命令脱离终端 #

  • 所有的后台程序默认跟终端绑定,终端消失后台程序也会退出
  • 当终端退出的时候,系统会向终端里所有的进程发送一个SIGHUB的信号,终止后台进程
2.2.3.1 rc.local #
  • 把需要后台执行的命令加入到/etc/rc.local文件中
2.2.3.2 定时任务 #
  • 使用系统定时任务,让系统在指定的时间执行某个后台命令
2.2.3.3 rc.local #
  • 使用nohub命令
  • nohup [命令] &

sleep.sh

#!/bin/bash
for((i=0;i<10000;i++))
do
   echo `date` >> /root/date.log
   sleep 1s
done
nohup ./sleep.sh &
tail -f /root/date.log 
ps -ef | grep sleep.sh

3. 系统资源查看 #

3.1 vmstat #

  • 监控系统资源使用状态
  • vmstat [刷新延时 刷新次数]
vmstat 1 3
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    532 329932  99388 459768    0    0    16    81   59   50  3  1 96  0  0    

3.1.1 (procs)进程信息字段 #

分类 参数 含义
procs r 等待运行的进程数,数量越大,系统就越繁忙
procs b 不可被唤醒的进程数量,数量越大,系统越繁忙

3.1.2 memory(内存信息字段) #

分类 参数 含义
memory swpd 使用的Swap空间的大小,单位KB
memory free 空闲的内存容量,单位KB
memory buff 缓冲的内存容量,单位KB
memory cache 缓存的内存容量,单位KB

3.1.3 swap(交换分区信息) #

  • 如果说si和so数越大说明数据经常要在磁盘和内存之间数据交换,系统性能就会越差
分类 参数 含义
swap si(in) 从磁盘中交换到内存中的数据的数量,单位KB
swap so(out) 从内存中交换到硬盘中的数据的数量,单位KB

3.1.4 io(磁盘读写) #

  • bi和bo数越大,说明磁盘的I/O越繁忙
分类 参数 含义
io bi(in) 从块设备读入数据的问题,单位是块
io bo(out) 写到块设备的数据的总量,单位是块

3.1.5 system(系统信息字段) #

  • in和cs数越大,说明系统与接口设备的通信越繁忙
分类 参数 含义
system in(interrupt) 每秒被中断的进程次数
system cs(switch) 每秒钟进行的事件切换次数

3.1.6 CPU(CPU信息字段) #

分类 参数 含义
CPU us(user) 非内核进程消耗CPU运算时间的百分比
CPU sy(system) 内核进程消耗CPU运算时间的百分比
CPU id(idea) 空闲CPU的百分比
CPU wa(wait) 等待I/O所消耗的CPU百分比
CPU st(steal) 被虚拟机偷走的CPU百分比

3.2 dmesg #

  • 开机时内核检测信息
dmesg | grep CPU

3.3 free #

  • 查看内存使用状态
  • free [-b|-k|-m|-g]
  • 选项
    • -b 以字节为单位
    • -k 以KB字节为单位
    • -m 以MB字节为单位
    • -g 以GB字节为单位
# free -m
             total       used       free     shared    buffers     cached
Mem:          1006        687        319          0         98        449
-/+ buffers/cache:        139        866
Swap:         1999          0       1999

3.3.1 第一行 #

分类 参数 含义
total 内存总数
used 已经使用的内存数
free 空闲的内存数
shared 多个进程共享的内存数
buffers 缓冲区内存数
cached 缓存内存数

3.3.2 第二行 #

参数 算法 含义
- buffers/cache 第一行的used-buffers-cached 已经使用的要减去缓存和缓冲的内存量
+ buffers/cache 第一行的free+buffers+cached 空闲的要加上缓存和缓冲的内存量

3.3.3 第三行 #

分类 参数 含义
total swap总数,默认单位是K
used 已经使用的swap数,默认单位是K
free 空闲的swap数,默认单位是K

3.4 cpuinfo #

  • 查看CPU的信息
  • cat /proc/cpuinfo

3.5 uptime #

  • 显示系统的启动时间和平均负载,也就是top的第一行
  • 通过w也可以看到

3.6 查看内核相关信息 #

  • uname
# uname -a
Linux localhost 2.6.32-279.el6.i686 #1 SMP Fri Jun 22 10:59:55 UTC 2012 i686 i686 i386 GNU/Linux
# uname -s
Linux
# uname -r
2.6.32-279.el6.i686

3.7 查看操作系统位数 #

file /bin/ls

3.8 查看发行版本 #

lsb_release -a

3.9 查看发行版本 #

yum install redhat-lsb -y
lsb_release -v

3.10 列表进程打开或使用文件信息 #

  • lsof [选项]
  • 列出进程调用或打开的文件的信息
  • 选项
    • -c 字符串: 只列出字符串开头的进程打开的文件
    • -u 用户名:只列出某个用户的进程打开的文件
    • -p pid: 列出某个PID进程打开的文件

3.10.1 查看系统中所有进程调用的文件 #

lsof | more

3.10.2 查看某个文件是被哪个进程调用 #

lsof /sbin/init

3.10.3 查看某个进程调用了哪些文件 #

lsof -c httpd

3.10.4 查询某个用户调用了哪些文件 #

lsof -u root

4. 系统定时任务 #

  • 有些任务比如备份数据库等操作需要在系统空闲的时候执行

4.1 at #

  • 一次性定时任务

    4.1.1 启动服务 #

    chkconfig --list | grep atd
    service atd status
    service atd start

4.1.2 at的访问控制 #

  • 如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow(白名单)中的用户可以使用at命令(优先级更高,会忽略/etc/deny文件)
  • 如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件中的用户不能使用at命令,但这个对root用户并没有作用
  • 如果这两个文件都不存在,那么只有root用户可以使用at命令

4.1.3 at命令 #

  • at 选项 时间
  • 选项
    • -m 当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
    • -c 工作号 显示该at工作的实际内容
  • 时间
    • HH:MM 例如 10:10
    • HH:MM YYYY -MM-DD 10:10 2018-08-08
    • HH:MM[am|pm] [month] [date] 10:10 May 11
    • HH:MM[am|pm] + [minutes|hours|days|weeks] now + 5 minutes

输出日志

# at now +5 minutes
at> /root/hello.sh > /root/hello.log
job 3 at 2019-04-10 22:48
[root@localhost ~]# atq
3    2019-04-10 22:48 a root

at -c 3

指定的时间重启服务器

# at now +6 minutes
at> /bin/sync 把内存中的数据保存到硬盘中
at> /sbin/shutdown -r now 重启服务器

4.1.4 atq #

  • 查询当前服务器上的at工作

4.1.5 atrm #

  • 删除指定的at任务

4.2 crontab #

  • 可以循环定时执行定时任务
  • cron
service crond restart
chkconfig crond on

4.2.2 at的访问控制 #

  • 如果系统中有/etc/cron.allow文件,那么只有写入/etc/cron.allow(白名单)中的用户可以使用at命令(优先级更高,会忽略/etc/cron.deny文件)
  • 如果系统中没有/etc/cron.allow文件,只有/etc/cron.deny文件,那么写入/etc/cron.deny文件中的用户不能使用at命令,但这个对root用户并没有作用
  • 如果这两个文件都不存在,那么只有root用户可以使用at命令

4.2.3 crontab设置 #

  • crontab [选项]
  • 选项
    • -e 编辑crontab定时任务
    • -l 查询crontab任务
    • -r 删除当前用户所有的crontab任务
* * * * *  执行的任务
4.2.3.1 语法 #
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name command to be executed
4.2.3.2 位置 #
项目 含义 范围
第1个星 1个小时中的第几分钟 0~59
第2个星 1天当中的第几小时 0~23
第3个星 1月当中的第几天 1~31
第4个星 1年当中的第几月 1~12
第5个星 1周当中的星期几 0~6
4.2.3.3 特殊符号 #
符号 含义 例子
* 代表任意时间 比如第一个星就代表一个小时中每分钟都执行一次
, 代表不连续的时间 比如"1,2,3 ",就代表每小时的1分、2分、3分执行命令
- 代表连续的时间范围 比如 " 1-5 * ** ",代表每小时的第1分到第5分执行命令
*/n 代表每隔多久执行一次 比如 "/10 " 就代表每隔10分钟就执行一次命令
0 0 1,10 * 1 每月1号和10号,每周1的0点0分都会执行
4.2.3.4 案例 #
符号 含义
10 22 * 在每天的22点10分执行
0 15 1 每周1的15点0分执行
0 5 5,10 每月5号和10号的凌晨5点整执行
10 5 1-5 每周一到周五的凌晨5点10分执行命令
/10 10 每天凌晨10点钟,每隔10分钟执行一次
4.2.3.5 注意事项 #
  • 所有选项不能为空,必须填写
  • crontab最小单位是分钟,最大单位是天
  • 不管写命令还是脚本都要使用绝对路径

4.3 系统定时任务 #

  • crontab -e是用户执行的命令,不同的用户身份可以执行自己的定时任务
  • 如果需要系统执行定时任务,可以编辑/etc/crontab文件
  • /etc/crontab可以指定shell、路径、邮件发送和家目录

4.3.1 /etc/crontab #

  • 修改/etc/crontab配置文件
    `5 5 * * * echo `date` >> /root/date.log`

4.3.2 /etc/cron #

  • 把需要定时执行的脚本复制到/etc/cron.{daily,weekly,monthly}目录中的任意一个
root@localhost log]# ls /etc/cron*
/etc/cron.daily:
cups  logrotate  makewhatis.cron  mlocate.cron  prelink  readahead.cron  tmpwatch
/etc/cron.hourly:
/etc/cron.monthly:
/etc/cron.weekly:

4.4 anacron配置 #

  • anacron是用来保证在系统关机的时候错过的定时任务(/etc/cron.daily),可以在系统开机后自动执行
  • anacron会使用1天、7天和1个月作为检测周期
  • 在系统的/var/spool/anacron目录中存在cron.{daily,weekly,monthly}文件,用于记录上次执行cron的时间
  • 和当前的时间做比较,如果两个时间的差值超过了anacron指定的时间差,那就证明有 crontab未执行
  • /etc/cron.{daily,weekly,monthly}只会被anacron调用

4.4.1 /etc/anacrontab #

# /etc/anacrontab: configuration file for anacron

# See anacron(8) and anacrontab(5) for details.

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# the maximal random delay added to the base delay of the jobs
# 最大随机延迟时间(分钟)
RANDOM_DELAY=45
# the jobs will be started during the following hours only
# anacron的执行时间范围是 3:00 ~ 22:00
START_HOURS_RANGE=3-22

#period in days   delay in minutes   job-identifier   command
每隔几天执行 强制延迟时间(分钟) 修改优先级 执行目录下面的所有脚本
1    5    cron.daily        nice run-parts /etc/cron.daily
7    25    cron.weekly        nice run-parts /etc/cron.weekly
@monthly 45    cron.monthly        nice run-parts /etc/cron.monthly

4.4.2 cron.daily执行过程 #

  • 首先读取/var/spool/anacron/cron.daily中的上一次执行时间
  • 和当前时间对比,如果两个时间相差超过1天,说明漏执行了,就执行cron.daily任务
  • 执行任务的时间只能在3-22点之间
  • 执行的时强制延迟时间为5分钟,再随机延迟0~45分钟
  • 使用nice命令指定默认的优先级,再使用run-parts脚本执行/etc/cron.daily目录中所有的可执行文件

访问验证

请输入访问令牌

Token不正确,请重新输入