zoukankan      html  css  js  c++  java
  • Linux_08------Linux的系统管理


    /**
    * Linux系统管理
    *
    * 1.进程管理
    * 2.工作管理
    * 3.系统资源查看
    * 4.系统定时任务
    */

    /**
    *一。进程管理
    * 1.进程管理简介
    * 2.进程的查看--pspstree命令
    * 3.进程的查看--top命令
    * 4.杀死进程
    * 5.修改进程优先级
    */

    /**
    * 1.进程管理简介:
    * 进程简介:进程就是正在运行当中的程序。所有的程序都可以产生进程。
    * 进程管理的作用: 判断服务器健康状态、查看系统中的所有进程、杀死进程。
    *
    * 强制杀死进程并不是正确关闭进程的方式!
    * 杀死进程之前先判断是不是系统的合理进程、如果是合理进程占用资源应该增加一些资源,不能终止,如果是非法进程也不能立刻终止,应该彻底清楚之后才可以终止!
    */

    /**
    * 2.进程的查看--pspstree命令
    * 查看系统当中所有正在运行的进程 ps aux / ps -le
    * /sbin/init 所有进程的父进程 PID1
    * tty1--tty6代表本地终端 远程用pts/0代表
    *
    * ps界面详细:
    * USER:该进程是由那个用户产生的;
    * PID: 进程的ID
    * &CPU 该进程占用CPU资源的百分比,占用越高,进程越耗费资源;
    * %MEM:该进程占用物理内存的百分比,占用约稿,进程越耗费资源;
    * VSZ:盖几层呢很难过占用虚拟内存的大小,单位KB
    * RSS:该进程占用实际物理内存的大小,单位kb
    * TTY:该进程是在哪个终端中运行的。其中tty1--tty7代表本地控制台终端,tt7是图形终端,
    * tty1--tty6是本地的字符界面终端。pts/0-255代表虚拟终端
    * STAT: 进程状态。常见的状态有:
    * =R:运行
    * =S:睡眠
    * =T:停止状态
    * =s:包含子进程
    * =+:位于后台
    * START:该进程的启动时间
    * TIME:该进程占用CPU的运算时间,注意不是系统时间
    * COMMAND:产生此进程的命令名
    *
    * 有些进程是服务产生的,但不全是。
    *
    * pstree命令 查看进程数
    * -p:显示进程的PID
    * -u: 显示进程的所属用户
    */

    /**
    * 3.进程的查看top命令
    * 选项:
    * -d秒数:指定top命令每隔几秒更新。默认是3秒。
    * -b:使用批处理模式输出。一般和"-n"选项何用。
    * -n次数:指定top命令执行的次数。一般和"-b"选项合用。
    *
    * top命令的交互模式当中可以执行的命令:
    * ?或者h:显示交互模式的帮助
    * P:CPU使用率排序,默认就是此项
    * M:以内存使用率排序
    * N:PID排序
    * q:退出top
    *
    * 第一块内容查看服务器健康状态:
    * 第一列:
    * 12:26:46 系统当前时间
    * up 17day, 13:32 系统的运行时间
    * 2users 当前登录了两个用户
    * load average:0.00, 0.00, 0.00 系统在之前1分钟,5分钟,15分钟的平均负载。
    * 跟核数相关,单核一般认为小于1,负载小,大于1,超出负荷。双核2.
    * 第二列:
    * Tasks: 95 total 系统的进程总数
    * 1 running 正在运行的进程数
    * 94sleeping 睡眠的进程
    * 0 stopped 正在停止的进程
    * 0 zombie 僵尸进程,如果不是1,需要手工检查僵尸进程,
    * 第三列:
    * Cpu(s):0.1%us 用户模式占用的cpu百分比
    * 0.1%sy 系统模式占用的CPU百分比
    * 0.0%ni 改变过优先级的用户进程占用的CPU百分比
    * 99.7%id 空闲的CPU百分比
    * 0.1%wa 等待输入、输出的进程占用的CPU百分比
    * 0.0%hi 硬中断请求服务占用的CPU百分比
    * 0.1%si 软中断请求服务占用的CPU百分比
    * 0.0%st st(Steal time)虚拟时间百分比。就是当前时,虚拟CPU等待时机CPU的时间百分比
    *第四列:
    * Mem
    *第五六:
    * Swap
    * 主要看load average / Cpu(s): id / Mem: free / Swap: free
    */
    /**
    * 服务器维护的基本原则:定期重启
    */


    /**
    * 4.杀死进程
    * kill命令
    * kill -HUP(1) 1523(PID)平滑重启
    * kill -9 236强制杀死进程
    * 只能杀死单一进程
    *
    * killall命令
    * killall [选项][信号] 进程名
    * killall -9 httpd 杀死一组进程
    *
    * pkill
    * 配合w命令查看登录用户
    * pkill -9 -t pts/1
    * 按终端号踢出其他用户,只有超级用户可以。
    */

    /**
    * 5.修改进程优先级
    * 简介:一个cpu在同一个时钟周期内只能运算一个指令。进程优先级决定了每个进程处理的先后顺序。
    * ps -le
    * PRI NI 两个值都是优先级,数字越小代表该进程优先级越高
    * 用户只能修改NICE的值,不能直接修改PRI
    * NI的值得范围是-2019
    * 普通用户调整NI值得范围是0-19,而且只能调整自己的进程。
    * 普通用户只能调高NI值,而不能降低。
    * root用户才能设定进程NI为负值,而且可以调整任何用户的进程。
    *
    * PRI(最终值) = PRI(原始值) + NI
    * nice命令
    * nice [选项] 命令
    * nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在的进程的NI值。
    * -n NI值:给命令赋予NI值。
    * nice -n -5 service httpd start
    *
    * renice命令
    * renice -10(优先级) PID
    *
    * 修改优先级意义不大,因为系统运行时间很快,用户体验不到差别。
    */


    /*
    * 二、工作管理
    *
    * 1.工作管理简介:
    * 工作管理指的是在单个登录终端中同时管理多个工作的行为。
    * jobs查看在后台运行的工作。
    * windows是最小化放入后台,Linux是通过命令放入后台。
    * 有些时候,有些命令会一直占据操作界面。有些服务的启动也是。
    *
    * 注意事项:
    * 当前的登录终端,智能管理当前终端的工作,而不能管理其他终端的工作;
    * 放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作;
    * 放入后台的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行。
    */
    /**
    * 2.工作管理方法
    * 把进程放入后台:
    * 在操作的后面加上& 或者 在命令执行界面按下ctrl+z
    * 区别是加&是把命令放入后台,并在后台执行;
    * 按下ctrl+z快捷键,放在后台暂停。
    *
    * topvi放入后台也只能暂停
    * 复制、压缩。解压缩、搜索
    *
    * fg %工作号 把工作恢复到前台运行
    * bg %工作号 把工作恢复到后台运行
    * %可以省略
    * 默认是+标记的,加工作号就是工作号指定的那一个
    *
    */
    /**
    * 3.后台命令脱离终端运行
    * 把命令放入后台,只能在当前终端执行。一旦退出或关闭终端,后台程序就会停止。
    *
    * d--daemon 守护进程,终端关闭之后,后台服务并不会消失
    * mysqld
    *
    * 方法:
    * 第一种把需要后台执行的文件放入rc.local文件里面;
    * 第二种使用系统定时任务,让系统在指定的实践之星某个后台命令
    * 第三种方法是使用nohup命令。让后台执行的任务脱离终端。
    * nohup /root/for.sh & 在命令前面加上nohup
    */
    /**
    * 三、系统资源查看
    * 1.vmstat 命令监控系统资源
    * vamstat 1 3 每隔一面刷新一次,共刷新三次
    *
    * procs:进程信息字段
    * -r: 等待运行的进程数,数量越大,系统越繁忙
    * -b: 不可被唤醒的进程数量,数量越大,系统月繁忙
    *
    * memory:内存信息字段
    * -swpd:虚拟内存的使用情况,单位kb.
    * -free:空闲的内存容量,单位kb.
    * -buff:缓冲的内存容量,单位kb.
    * -cache:缓存的内存容量,单位kb.
    * 缓存是用来加速数据从硬盘中读取的,二缓冲是用来加速数据写入硬盘的。
    *
    * swap:交换分区的信息字段
    * -si:从磁盘中交换到内存中数据的爽,单位kb.
    * -so:从内存中交换到磁盘中数据的数量,单位kb.
    * 这两个数越大,证明数据需要进程在磁盘和内存之间交换,系统性能越差。
    *
    * io:磁盘读写信息字段
    * -bi:从块设备读入数据的总量,单位是块。
    * -bo:写到块设备的数据的总量,单位是块。
    * 这两个数越大,代表系统的I/O越繁忙。
    *
    * system:系统信息字段
    * -in:每秒被中断的进程次数
    * -cs:每秒钟进行的时间切换次数。
    * 这两个数越大,袋面系统与接口设备的通信非常繁忙。
    *
    * CPU:CPU信息字段
    * -us:非内核进程消耗CPU运算时间的百分比
    * -sy:内核进程消耗CPU运算时间的的百分比
    * -id:空闲CPU的百分比
    * -wa:等待I/O所消耗的CPU百分比
    * -st:被虚拟机所盗用的CPU占比
    *
    */
    /**
    * 2.dmesg 开机时内核监测信息
    * dmesg |grep CPU
    * 查看硬件状态
    */
    /**
    * 3.free 命令查看内存的状态
    * -b:以字节为单位
    * -k:kb为单位,默认
    * -m:mb为单位
    * -g:gb为单位
    * 第一行:total是总内存数,used是已经使用的内存数,free是空闲的内存数,shared是多个进程共享的内存总数,
    * buffer是缓冲内存数,cached是缓存内存数,默认单位是kb.
    *
    * 第二行:-/buffers/cache 的内存数,相当于第一行的used-buffers-cached.
    * +/buffers/cache 的内存数,相当于第一行的free+buffers+cached.
    *
    * 第三行:totalswap的总数;user是已经使用的swap数。free是空闲的swap数,默认单位kb
    *
    * 添加swap分区可以有效替身Linux的性能
    */
    /**
    * 4.查看CPU的信息
    * cat /proc/cpuinfo
    */
    /**
    * 5.uptime top命令的第一行
    */
    /**
    * 6.uname 查看系统与内核相关信息
    * -a: 查看系统所有相关信息
    * -r: 查看内核版本
    * -s: 查看内核名称
    *
    * 查看系统的位数
    * file /bin/ls
    *
    * 查看当前Linux系统发行版本
    * lsb_release -a
    *
    * Linux是内核版和发行版
    * uname -r查看内核版本
    * lsb_release -a 查看发行版本
    *
    * lsof|more 查询系统中所有进程调用的文件
    * lsof /sbin/init 查询某个文件被哪个进程调用
    * lsof -c httpd 查看httpd进程调用了哪些文件
    * lsof -u root 按照用户名,查询某用户的进程调用的文件名
    */

    /**
    * 四、系统定时任务
    * 1.at一次性定时任务
    * 2.crontab循环定时任务
    * 3.系统的crontab设置
    * 4.anacron配置
    */

    /*
    * 1.at一次性定时任务
    * 1)确定at安装 chkconfig --list |grep atd
    * service atd status 查看状态
    * service atd restart 重启
    * 2)at的访问控制
    * 如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow文件中的用户可以使用
    * at命令(/etc/at.deny文件会被忽略)
    * 如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件中
    * 用户不能使用at命令。对root不起作用。
    * 如果系统中连个文件都不存在,那么只有root用户可以使用at命令。
    * 3)at命令
    * at [选项] 时间
    * 选项
    * -m: at工作完成后,无论是否命令有输出,都有email通知执行at命令的用户
    * -c 工作号: 显示该at工作的实际内容
    * 时间:
    * HH:MM 02:30
    * HH:MM YYYY-MM-DD 02:30 2013-07-25
    * HH:MM[am|pm] [month] [date] 02:30 July 25
    * HH:MM[am|pm] + [minutes|hours|days|weeks] now + 5 minutes
    * 4)例子
    * at now +2 minutes
    * 在两分钟之后执行hello.sh脚本
    * at> /root/hello.sh>>/root/hello.log
    * ctrl+d 保存退出
    * atq查看已有的任务
    * atrm 工作号 删除任务
    *
    * at 02:00 2016-08-04
    * at> /bin/sync
    */

    /**
    * 4.crontab 循环定时任务
    *1).cron服务管理与访问控制
    * 确认是否安装,以及是否启动
    * 查看cron状态
    * service crond status
    * 查看自启动
    * chkconfig --list |grep crond
    * 加入自启动
    * chkconfig crond on
    *
    * 访问控制
    * 当系统中有/etc/cron.allow文件时,只有写入此文件的用户可以使用crontab命令,
    * 没有写入的用户不能使用crontab命令。/etc/cron.deny文件会被忽略。
    * 当系统值只有/etc/cron.deny文件时,写入此文件的用户不能使用crontab命令,没有写入文件的用户可以使用crontab命令。
    * root不受限制
    *
    *2).用户的crontab设置
    *crontab [选项]
    *-e: 编辑crontab定时任务
    *-l: 查询crontab任务
    *-r: 删除当前用户所有的crontab任务
    *
    * crontab -e
    * 3)
    * * * * * * 执行任务
    * 1 0-59 一小时中的第几分钟
    * 2 0-23 一天中的第几小时
    * 3 1-31 一个月中的第几天
    * 4 1-12 一年中的第几个月
    * 5 0-7 一周中的星期几(07都代表星期日)
    *
    * * 代表任意时间
    * , 都代表不连续的时间"0 8,12,16 * * * 命令",代表每天的80分,120分,160分执行命令
    * - 代表连续范围的时间,"0 5 * * 1-6 命令",代表周一到周六的凌晨50分执行
    * */n 代表没隔多久执行一次 "*/10 * * * * 命令",代表每10分钟就执行一次
    /**
    * 0 0 1,15 * 1命令 每月1号和15号,每周100分都执行
    * 星期几和几号最好不要同时出现,他们定义的都是天。
    * 5 5 * 9,10 * /bin/echo "111" >> /tmp/test
    */
    /**
    * 4).crontab的注意事项
    * 六个选项不能为空,必须填写。如果不确定使用*代表任意时间
    * crontab定时任务最小有效时间是分钟,最大时间范围是年。
    * 在定义事件时,日期和星期最好不要在一条定时任务中出现,因为都是以天为单位。
    * 在定时任务中,不管直接写命令还是在脚本中写命令,最好使用绝对路径。
    */

    /**
    * 3.系统的crontab设置
    * crontab -e 是每个用户执行的命令,也就是说不同的用户身份可移植性自己的定时任务。
    * 可是有些定时任务需要系统执行,这是我们就需要编辑/etc/crontab这个配置文件了。
    * /etc/cron.daily/目录等其它目录里的文件还会被执行
    *
    * 执行系统的定时任务
    * 第一种方法手工执行定时任务
    * 第二种系统定时任务,系统定时任务更容易管理,推荐使用
    * 系统定时任务也有两种的方式
    * 一是把需要执行的脚本复制到/etc/cron.{dailyweeklymonthly}/目录中的任意一个,推荐使用这个
    * 二是修改/etc/crontab配置文件 5 5 * * * root /root/hello.sh
    */

    /**
    * 4.anacron配置
    * 判断因为服务器宕机等原因造成的没有执行的定时任务,只会检测系统定时任务,手工的不行。
    * 用来保证系统关机的时候错过的定时任务,可以在系统开机之后在执行。
    * 基本不需要用户的参与。
    * anacron检测周期,anacron会使用一天,七天,一个月作为检测周期
    * 在系统的/var/spool/anacron/目录中存在cron.{daily,weekly,monthly}文件,用于记录上次执行cron的时间
    * 和当前之间作比较,如果两个时间的差值超过了anacron的指定时间差值,证明有cron任务被漏执行。
    * 监测的精确时间最小单位是天。
    *
    * 配置文件 /etc/anacrontab
    *
    * cron.daily工作来说明执行过程
    * 首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间
    * 和当前的时间做比较,如果两个时间的差值超过1天,就执行cron.daily工作
    * 执行这个工作只能在03:0-22:00之间
    * 执行工作时强制延迟时间为5分钟,在随机延迟0-45分钟时间
    * 使用nice命令指定默认优先级,使用run-parts脚本执行/etc/cron.daily目录中的所有可执行文件。
    *
    */
  • 相关阅读:
    c语言判断最大数
    c语言复制字符
    C语言简单小问题
    c语言实现用指针遍历二维数组
    C语言有趣小程序
    C语言实现输入一个数,输出这个数的立方根
    C语言实现输入一个数,输出这个数的sin值
    c语言实现输出10000内所有素数,5个换一行
    输出10000内所有素数
    判断素数
  • 原文地址:https://www.cnblogs.com/eis13/p/5755743.html
Copyright © 2011-2022 走看看