最新公告
  • 欢迎您光临网站无忧模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • 程序员必知必会的 Linux系列 —— 系统篇

    正文概述 掘金(james)   2021-04-03   709

    1. 进程管理

    1.1 进程

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

    1.2 进程管理简介

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

    1.3 进程的查看命令(ps)

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

    1.3.1 选项

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

    1.3.2 结果字段含义

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

    1.3.3 进程状态(STAT)

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

    1.4 pstree

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

    1.5 进程的查看(top)

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

    1.5.1 选项

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

    1.5.2 交互模式的命令

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

    1.5.3 状态栏

    1.5.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.5.3.2 第二行为进程信息
    内容说明
    Tasks: 100 total系统中的进程总数1 running正在运行的进程数94 sleeping睡眠的进程0 stopped正在停止的进程0 zombie僵尸进程。如果不是0的话要进行检查
    1.5.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%stst(Steal time)虚拟时间百分比,就是当有
    1.5.3.4 第四行为物理内存信息
    内容说明
    Mem: 1030720k total物理内存的问题,单位是KB551860k used已经使用的物理内存数量478860k free空闲的物理内存数量,虚拟机分配了1024M内存,使用了538M,空闲467M43180k buffers作为缓冲的内存数量,可以存放需要写入硬盘的数据,用来加速数据的写入
    1.5.3.5 第四行为交换分区信息
    内容说明
    Swap: 2047992k total总计的交换分区(虚拟内存)大小536k used已经使用的交换分区大小2047456k free空闲的交换分区大小368164k cached把需要经常读取的数据从硬盘读到内存中,加速了数据的读取

    1.6 杀死进程(kill)

    1.6.1 进程信号

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

    1.6.2 杀死进程

    sleep.sh

    #!/bin/bash
    i=0
    while [ $i -le 1000 ]
     do
       echo $(date)
       sleep 1s
     done
    sh sleep.sh &
    ps -ef | grep sleep.sh
    kill  进程号
    

    2. 系统资源查看

    2.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    
    

    2.1.1 (procs)进程信息字段

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

    2.1.2 memory(内存信息字段)

    分类参数含义
    memoryswpd使用的Swap空间的大小,单位KBmemoryfree空闲的内存容量,单位KBmemorybuff缓冲的内存容量,单位KBmemorycache缓存的内存容量,单位KB

    2.1.3 swap(交换分区信息)

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

    2.1.4 io(磁盘读写)

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

    2.1.5 system(系统信息字段)

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

    2.1.6 CPU(CPU信息字段)

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

    2.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
    

    2.3.1 第一行

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

    2.3.2 第二行

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

    2.3.3 第三行

    分类参数含义
    totalswap总数,默认单位是Kused已经使用的swap数,默认单位是Kfree空闲的swap数,默认单位是K

    2.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
    

    2.7 查看操作系统位数

    file /bin/ls
    

    2.8 查看发行版本

    lsb_release -a
    

    2.9 查看发行版本

    yum install redhat-lsb -y
    lsb_release -v
    

    3. 系统定时任务

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

    3.2 crontab

    • 可以循环定时执行定时任务
    • cron
    systemctl restart crond.service
    

    3.2.3 crontab设置

    • crontab [选项]
    • 选项
      • -e 编辑crontab定时任务
      • -l 查询crontab任务
      • -r 删除当前用户所有的crontab任务
    * * * * *  执行的任务
    
    3.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
    
    3.2.3.2 位置
    项目含义范围
    第1个星1个小时中的第几分钟0~59第2个星1天当中的第几小时0~23第3个星1月当中的第几天1~31第4个星1年当中的第几月1~12第5个星1周当中的星期几0~6
    3.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分都会执行
    3.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分钟执行一次
    3.2.3.5 注意事项
    • 所有选项不能为空,必须填写
    • crontab最小单位是分钟,最大单位是天
    • 不管写命令还是脚本都要使用绝对路径

    3.3 系统定时任务

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

    3.3.1 /etc/crontab

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

    4. 实战任务

    4.1 监控nginx

    nginx.sh

    #!/bin/bash
    local nginx
    nginx=`ps -ef |grep nginx|grep -v grep|wc -l`
     if [ $nginx -gt 2 ];then
        echo "your nginx is running"
        exit 0
     else
        /bin/systemctl start nginx.service
        exit 1
    fi
    

    4.2 监控mysql状态

    mysql.sh

    #!/bin/sh
    PortNum=`netstat -lnt|grep 3306|wc -l`
    if [ $PortNum -eq 1 ]
    then
     echo "mysqld is running."
    else
     echo "mysqld is stoped."
    fi
    

    4.3 mysql备份脚本

    mysql_backup.sh

    #!/bin/bash
    DATE=$(date +%F_%H-%M-%S)
    HOST=127.0.0.1
    DB=test
    USER=root
    PASS=abcd1#EFG
    MAIL="83687401@qq.com"
    BACKUP_DIR=/data/db_backup
    if [ ! -d "$BACKUP_DIR" ];then
     mkdir -p $BACKUP_DIR
    fi
    SQL_FILE=${DB}_FULL_$DATE.sql
    BAK_FILE=${DB}_FULL_$DATE.zip
    cd $BACKUP_DIR
    if mysqldump -h$HOST -u$USER -p$PASS -B $DB > $SQL_FILE; then
      zip $BAK_FILE $SQL_FILE && rm -rf $SQL_FILE
      if [ ! -s $BAK_FILE ]; then
        echo "$DATE 备份失败" | mail -s "备份失败" $MAIL
      fi
    else
      echo "$DATE 备份失败" | mail -s "备份失败" $MAIL
    fi
    find $BACKUP_DIR -name '*.zip' -ctime +14 -exec rm {} \;
    

    下载网 » 程序员必知必会的 Linux系列 —— 系统篇

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元