标签:linux运维
Linux运维 第二阶段 (十二) 系统管理
一、进程管理
1、进程:正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间并战胜一定的系统资源;程序:人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。
进程管理的作用:判断服务器健康状态;查看系统中所有进程;杀死进程。
2、进程的查看:
》#ps aux (查看系统中所有进程,使用BSD操作系统格式
a 与终端相关的进程
u 用户导向的用户列表
x 所有与终端无关的进程
显示项目:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
STAT:D不可被唤醒的睡眠状态,通常用于I/O情况;R该进程正在运行;S该进程在睡眠状态,可被唤醒;T停止状态,可能在后台暂停或进程在除错状态;W内存交互状态(2.6内核开始无效);X死掉的进程;Z僵尸进程,进程已经终止,但部分程序还在内在中;<高优先级;N低优先级;L被锁入内存;s包含子进程;l多线程;+位于后台。
TIME:该进程占用CPU的运算时间,注意不是系统时间。
》#ps -le
-l long长格式显示
-e 显示所有进程,与-A作用一致
显示项目:
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
F:进程标志,说明进程的权限,常见的有:1进程可复制但不能执行,4进程使用超级用户权限;
S:同#ps aux中STAT一样;
C:该进程的CPU使用率,单位是%;
ADDR:进程在内在的位置;
SZ:该进程占用多大内存;
WCHAN:该进程是否运行,“-”代表正在运行。
》#top 选项
-d 秒数 (指定top命令每隔几秒更新一次
-p PID (指定PID只查看某个PID进程
-u 用户名 (只监听某个用户的进程
-s (使top在安全模式运行,避免在交互模式中出现错误
-b (使用批处理模式输出,与“-n”合用,重定向到文件中
-n 次数 (指定top命令执行的次数,与“-b”合用。
例:#top -p 15273 (查看PID为15273的进程信息
#top -b -n 1 > /tmp/top.log
#top 输r,交互状态,可修改优先级nice值
显示项目:分为两部分
第一部分:
第一行信息:top - 15:10:16 up 1 day ,15:10,2user,load average:0.00 0.00 0.00
注:系统在1分钟5分钟15分钟的平均负载,cpu是单核,超过1是高负载,四核超过4是高负载(依据经验判断)
第二行信息:Task:95 total , 1 running , 94 sleeping , 0 stopped, 0 zombie
第三行为cpu信息:cpu(S):0.1%us,0.1%sy,0.0%ni,99.7%id,0.1%wa,0.0%hi,0.1%si,0.0%st
注: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当有虚拟机时,虚拟cpu等待实际cpu的时间百分比。
第四行为物理内存信息:mem:total,used,free,buffers(作为缓冲的内存数量)
第五行为swap信息:swap:total,used,free,cached(作为缓存的交互分区大小)
第二部分输出:
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
VIRT:该进程使用的虚拟内在的大小,单元KB
RES:该进程使用的物理内在的大小,单位KB
SHR:共享内存大小
S:state
TIME+:该进程总共占用的CPU时间
3、进程的管理:
#pstree -u|-p (-u显示进程的所属用户,-p显示进程的PID
#kill -l 或#man 7 signal (查询系统可识别的信号
#kill -信号 PID (注意kill后跟的是PID,例:#kill -1 2246
#killall 选项 -信号 进程名(注意killall后跟的是进程名,例:#killall -i -9 sshd
-i (interactive交互式
-I (ignore大小写
#pkill 选项 -信号 进程名 (注意pkill后跟进程名,例:#pkill -t -9 pts/1
-t 指定终端
例:#vi test.sh
#ps aux | grep “vi” | grep -v “grep”
#kill -9 2313
#ps aux | grep “vi” | grep -v “grep”
4、进程的优先级:PRI的值由内核动态调整,用户不能直接修改,可通过修改NI的值来影响PRI的值。
PRI和NI的关系:PRI(最终值)=PRI(原始值)+NI值
修改NI值注意事项:NI值的范围是-20-19;普通用户调整NI值的范围是0-19,而且只能调整自己的进程;普通用户只能调高NI值不能降低,如原本NI值为0,则只能调整为大于0;root才能设置NI值为负数,而且可调整任何用户的进程。
#nice -n NI值 命令 (给新执行的命令直接赋予NI值
例:#nice -n -5 service httpd start
#ps aux | grep “httpd” | grep -v “grep”
#renice 优先级 PID (修改已经存在的进程NI值
例:#renice -10 2125
#ps -le |grep “httpd” | grep -v “grep”
二、工作管理
1、后台管理注意事项:
前台是指当前可以操控和执行命令的操作环境,后台是指工作可以自行运行,但不能直接用ctrl+c终止,只能使用fg/bg来调用工作;
当前的登陆终端只能管理当前终端的工作,如tty1是不能管理tty2的工作的;
放入后台的命令必须可以持续运行一段时间,这样才能捕捉和操作这个工作;
放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停不能执行,如vi、top等命令
2、把命令放入后台:
方一:#命令 & (这种方法命令在后台是执行状态,命令不能与前台有交互,否则不能执行
例:#find / -name install.log & (每个后台命令会分配一个工作号,也会有进程号
方二:命令在执行过程中按ctrl+z,命令在后台是暂停状态,无论有无交互都暂停
例:#tar -zcf etc.tar.gz /etc 按ctrl+z(状态为stopped
3、后台管理命令:
#jobs -l (显示进程的PID
#fg %工作号 (将后台暂停的工作恢复到前台执行,%可省略,注意工作号和PID号的区别
#bg %工作号 (将后台暂停的工作恢复到后台执行
4、后台命令脱离登录终端运行:
方一:#/etc/rc.d/rc.local (启动时执行,若有临时后台任务不能执行
方二:加入定时任务 (不依赖登录终端
方三:#nohup 命令 &
例:#nohup find / -print > /root/file.log &
三、系统资源查看:
1、#vmstat 刷新延时 刷新次数 (监控系统资源,例:#vmstat 1 3
2、#dmesg |grep “cpu” (显示开机时内核检测的CPU信息
#dmesg| grep “eth0”
3、#free -b|-k|-m|-g (默认以KB为显示单位
4、#cat /proc/cpuinfo (查看CPU信息
5、#w (查看本机登陆用户信息
#who (查看系统中已登录的用户
6、#uptime (top命令的第一行
7、#uname -a|-r|-s (-a查看系统所有相关信息,-r查看内核版本,-s查看内核名称
#file /bin/ls (当前系统的位数
#lsb_release -a (当前系统的发行版本
8、#lsof -c 字符串|+d 目录名|-u 用户名|-p PID
-c只列出以字串开关的进程打开的文件
+d列出某个目录所有被进程调用的文件
-u只列出某个用户的进程打开的文件
-p列出某个PID进程打开的文件
例:#lsof |more (按PID号从1进程开始列出系统中所有的进程正在调用的文件
#lsof +d /usr/lib (查询某个目录下所有的文件是被哪些进程调用的
#lsof -c httpd (查看httpd调用了哪些文件
#lsof -p 1 (查询PID是1的进程调用的文件
#lsof -u root (按用户名查某用户的进程调用的文件
四、系统定时任务
1、at一次性执行的定时任务
#service atd start
#chkconfig atd on
访问控制依靠两个文件来实现,/etc/at.allow、/etc/at.deny,默认无/etc/at.allow,注意事项:若同一用户都在这两个文件中,那么这个用户可以使用at命令,因为/etc/at.allow优先于/etc/at.deny;若系统中只有/etc/at.deny,则在这个文件中的用户不能使用at命令;若系统中两个文件都不存在,则只有root才可使用at命令。
#at 选项 时间
-m (当at工作完成后,无论是否有输出都用email通知执行at命令的用户
-c 工作号 (显示该at工作的实际内容
时间:HH:MM
HH:MM YYYY-MM-DD
HH:MM[am|pm] [month] [date]
HH:MM[am|pm] + [minutes|hours|days|weeks]
例:#at now +2minutes
at>/root/hello.sh >> /root/hello.log
at><EOT> (使用ctrl+d保存at任务
job1 at 2015-05-16 18:35
#at -c 8 (查询第8个at工作的内容
#at 02:00 2015-5-16
at>编辑
#atq (查询当前服务器上at的工作
#atrm (删除指定的at任务
2、crontab循环执行定时任务
》用户的crontab设置
#service crond start
#chkconfig crond on
/etc/cron.allow、/etc/cron.deny这两个文件同at的两个文件一样,默认无/etc/cron.allow
#crontab -e|-l|-r|-u (-e编辑crontab定时任务;-l查询;-r删除当前所有的任务,若只想删一个用#crontab -e;-u接用户名,修改或删除其他用户的crontab任务
* * * * * 执行的任务
注意事项:
六个选项不能为空必须填写,不确定可用“*”代替为任意时间;
最小有效时间是分,最大时间范围是月;
日期和星期不要在一条定时任务中出现,若出现则是先碰到哪个执行哪个,最终都会执行;
命令都要用绝对路径,因为/etc/crontab中PATH与环境变量的PATH不一致。
第一个* 一小时当中的第几分钟 0-59
第二个* 一天当中的第几小时 0-23
第三个* 一个月当中的第几天 1-31
第四个* 一年当中的第几月 1-12
第五个* 一周当中的星期几 0-7(0和7都是sunday)
* 代表任何时间,例:第一个*代表一小时中的每分钟都执行一次
, 代表不连续的时间,例:“0 8,12,16 * * * 命令”代表在每天的8点0分,12点0分,16点0分都执行一次
- 代表连续的时间范围,例:“0 5 * * 1-6 命令”代表周一到周六5点0分执行
*/n 代表每隔多久执行一次,例:“*/10 * * * * 命令”代表每隔10分钟执行一次
例:#crontab -e
5 5 * * 2 /sbin/shutdown -r now (每周二的5点5分重启
30 3 1,10,15 * * /root/sh/autobak.sh (每月的1号10号15号执行脚本
#crontab -l
#crontab -r
》系统的crontab设置:
配置方法两种:
方一:把需要定时执行的工作写成脚本,赋予执行权限,复制到/etc/cron.{hourly,daily,weekly,monthly}
方二:修改/etc/crontab,自己加入自己的定时任务,需注意加入指定脚本的执行者身份(root才能修改此文件)
#vi /etc/crontab
* * * * * root run-parts /root/cron/
注:run-parts是/usr/bin/下的脚本,/root/cron/此目录下的脚本会按时执行
3、anacron:解决服务器意外关机,定时任务没有执行
检测周期为1天7天1个月,anacron会读取/var/spool/anacron/目录中的文件的时间与当前时间比较,若差值超过了anacron的指定时间(1天7天1个月),anacron会执行漏掉的定时任务。
centos6.x(anacron不再是单独的服务,而变成了系统命令;cronie-anacron取代了vixie-cron软件包),/etc/cron.{daily,weekly,monthly}只会被anacron调用,是为避免cron和anacron重复执行同一个定时任务,所以可将定时任务的脚本放在此目录下。
#anacron 选项 工作名
-s (开始anacron工作,依据/etc/anacrontab文件中设定的延迟时间执行
-n (立即执行/etc/anacrontab中所有工作,忽略所有的延迟时间
-u (更新/var/spool/anacron/cron.{daily,weekly,monthly}文件中的时间戳,但不执行任何工作。
工作名:依据/etc/anacrontab文件中定义的工作名
注:系统会依赖/etc/anacrontab文件中的设定通过anacron执行定时任务
例:设定定时任务在每天的03:00-05:00执行
#vi /etc/anacrontab
RANDOM_DELAY=0 (最大随机延迟
START_HOURS_RANGE=3-5 (执行时间范围
periedin days delay in minutes job-identifier command
1 0 cron.daily nice run-parts/etc/cron.daily
7 0 cron.weekly nice run-parts /etc/cron.weekly
@monthly 0 cron.monthly nice run-parts /etc/cron.monthly
来自兄弟连培训
本文出自 “Linux运维重难点学习笔记” 博客,请务必保留此出处http://jowin.blog.51cto.com/10090021/1651931
标签:linux运维
原文地址:http://jowin.blog.51cto.com/10090021/1651931