/**
* Linux系统管理
*
* 1.进程管理
* 2.工作管理
* 3.系统资源查看
* 4.系统定时任务
*/
/**
*一。进程管理
* 1.进程管理简介
* 2.进程的查看--ps和pstree命令
* 3.进程的查看--top命令
* 4.杀死进程
* 5.修改进程优先级
*/
/**
* 1.进程管理简介:
* 进程简介:进程就是正在运行当中的程序。所有的程序都可以产生进程。
* 进程管理的作用: 判断服务器健康状态、查看系统中的所有进程、杀死进程。
*
* 强制杀死进程并不是正确关闭进程的方式!
* 杀死进程之前先判断是不是系统的合理进程、如果是合理进程占用资源应该增加一些资源,不能终止,如果是非法进程也不能立刻终止,应该彻底清楚之后才可以终止!
*/
/**
* 2.进程的查看--ps和pstree命令
* 查看系统当中所有正在运行的进程 ps aux / ps -le
* /sbin/init 所有进程的父进程 PID为1
* 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的值得范围是-20到19。
* 普通用户调整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快捷键,放在后台暂停。
*
* top和vi放入后台也只能暂停
* 复制、压缩。解压缩、搜索
*
* 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.
*
* 第三行:total是swap的总数;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 一周中的星期几(0和7都代表星期日)
*
* * 代表任意时间
* , 都代表不连续的时间"0 8,12,16 * * * 命令",代表每天的8点0分,12点0分,16点0分执行命令
* - 代表连续范围的时间,"0 5 * * 1-6 命令",代表周一到周六的凌晨5点0分执行
* */n 代表没隔多久执行一次 "*/10 * * * * 命令",代表每10分钟就执行一次
/**
* 0 0 1,15 * 1命令 每月1号和15号,每周1的0点0分都执行
* 星期几和几号最好不要同时出现,他们定义的都是天。
* 5 5 * 9,10 * /bin/echo "111" >> /tmp/test
*/
/**
* 4).crontab的注意事项
* 六个选项不能为空,必须填写。如果不确定使用*代表任意时间
* crontab定时任务最小有效时间是分钟,最大时间范围是年。
* 在定义事件时,日期和星期最好不要在一条定时任务中出现,因为都是以天为单位。
* 在定时任务中,不管直接写命令还是在脚本中写命令,最好使用绝对路径。
*/
/**
* 3.系统的crontab设置
* crontab -e 是每个用户执行的命令,也就是说不同的用户身份可移植性自己的定时任务。
* 可是有些定时任务需要系统执行,这是我们就需要编辑/etc/crontab这个配置文件了。
* /etc/cron.daily/目录等其它目录里的文件还会被执行
*
* 执行系统的定时任务
* 第一种方法手工执行定时任务
* 第二种系统定时任务,系统定时任务更容易管理,推荐使用
* 系统定时任务也有两种的方式
* 一是把需要执行的脚本复制到/etc/cron.{daily、weekly、monthly}/目录中的任意一个,推荐使用这个
* 二是修改/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目录中的所有可执行文件。
*
*/