1.1.1 Ps[选项]命令//用来列出系统中当前运行的那些进程 3
1.2.1 Top[选项]// 默认以CPU使用率排序,查看前几个CPU使用率较高的进程 4
1.3.4 Killall[选项][信号]进程名 //按照进程名杀死进程 5
1.3.5 pkill[选项][信号]进程名 //按照进程名杀死进程 5
2.2.1Nice[选项]命令 //给新执行的命令直接赋予NI的值,但不能修改已经存在的进程NI的值 6
2.1.2 Renice [优先级] PID进程号 //修改某一个已经存在进程的NI值的命令 6
3.2.1 Jobs [选项]//查看有多少程序在后台运行的命令 6
4.1 Vmstat [刷新延时 刷新次数] //监控系统资源 7
4.4 Cat/proc/cpuinfo——查看CPU信息 8
4.7 Lsb_release -a——查询当前Linux系统的发行版本 9
用于设置周期性被执行的指令,如果不使用crontab,那么任务就是常驻程序 10
5.2.6 Crontab系统定时任务编辑基本格式 : 12
1进程管理
定义:进程是正在运行的程序
作用:判断服务器的健康状态,
查看系统中的所有进程,(CPU 内存的资源占用率)
杀死进程(正常运行的进程不能终止,非法进程要找到根源彻底清除)
1.1进程的查看——ps 和pstress
1.1.1 #ps[选项]命令 //用来列出系统中当前运行的那些进程
选项
-a 显示一个终端的所有进程,除了会话引线
-u 显示进程的归属用户及内存使用情况
-x 显示没有控制终端的进程。
-l 显示更加详细的信息,以长格式显示
-e 显示一个终端的所有进程.
1.1.2使用方法
#ps aux
//查看系统中所有进程,使用BSD操作系统格式
#ps –le
//查看系统中所有进程,使用Linux标准命令格式
1.1.3 ps命令的输出(了解)
User:产生该进程的用户
PID:进程的ID号,ID号为1的进程是父进程
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗费资源,上限80%
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源。
VSZ:该进程占用虚拟内存的大小,单位KB
RSS:该进程占用实际物理内存的大小,单位KB
TTY:该进程在哪个终端中运行,
其中:tty1-tty6是本地控制台字符界面终端,tty7是本地控制台图形界面终端
Pts/0-255是虚拟远程终端
? 系统内核终端
STAT:进程状态(R:运行;S:睡眠;T:停止状态;s:包含子进程;+:位于后台)
START:进程的启动时间
TIME:该进程占用CPU的运算时间,注意不是系统时间
COMMAND:产生该进程的命令名。
1.1.4 #pstress [选项] 查看进程树
[选项]
-p:显示进程的PID
-u:显示进程的归属用户
1.2查看进程的健康状态——top
1.2.1 Top[选项]// 默认以CPU使用率排序,查看前几个CPU使用率较高的进程
选项:
-d秒数:指定top命令每隔几秒更新,默认3秒
-b:使用批处理模式输出,一般和-n合用
-n次数:指定Top命令执行的次数
1.2.2在top命令的交互模式当中可以执行的命令:
?或h:显示交互模式的帮助
P:以CPU使用率排序,默认是此选项
M:以内存的使用率排序
N:以PID排序
q:退出
1.2.3使用方法
Top -b -n 1>top.log.
//将top命令执行结果写到top.log文件中,查看所有进程,1表示刷新1次
1.2.4 top命令的输出(了解)
第一行
- 系统当前时间
- 系统运行时间(服务器应该定期重启,衡量服务器好坏不是持续运行时间而是无故障。
- 当前登录用户数
- 系统在1分钟,5分钟,15分钟的平均负载(平均负载:一段时间cpu与内存的占用平均值)。这三个值与系统核数相关,是一个经验值。
第二行:进程
- 系统的进程总数
- 正在运行的进程数
- 睡眠进程
- 正在停止的进程
- 僵尸进程,如果不是0,可能正在结束等一会,若长时间存在需要手工检查僵尸进程
第三行:CPU
- 用户模式占用的CPU百分比
- 系统模式占用的CPU百分比
- 改变过优先级的用户进程占用的CPU百分比
- 空闲CPU占用的CPU百分比
- 等待输入输出的进程占用的CPU百分比
- 硬中断请求服务占用的CPU百分比
- 软中断请求服务占用的CPU百分比
- St(steal time)虚拟时间百分比。当有虚拟机时,虚拟CPU等待实际CPU的时间百分比
第四行:内存MEM
- 物理内存总量,单位KB
- 已经使用的物理内存数量
- 空闲物理内存数量
- 作为缓冲的内存数量(buffer缓冲 加速数据的写入.cached缓存 加速数据的读取)
第五行:交换分区swap
- 交换分区内存总量,单位KB
- 已经使用的交换分区内存数量
- 空闲交换分区内存数量
- 作为缓存的交换分区内存数量
1.3杀死进程——Kill、Killall、pkill
1.3.1 #kill //杀死一个进程
1.3.2常用进程信号
1-sighup-该信号让进程立即关闭,然后重新读取配置文件后重启(需要修改配置文件时节省时间,提高用户体验度。)
2-sigint-程序终止信号,用于终止前台进程,相当于ctrl+c快捷键
9-sigkill-用于强制终止进程,立即结束进程的运行
15-sigterm-默认信号,正常结束进程
1.3.3使用方法
#kill -l //查看可用的进程信号
#kill -hup或1 进程号PID //平滑重启:把配置文件重新加载但不会切掉已经登录的用户
1.3.4 #killall[选项][信号]进程名 //按照进程名杀死进程
选项:
-i:交互式,询问是否杀死某个进程
-I:忽略进程名大小写
1.3.5 #pkill[选项][信号]进程名 //按照进程名杀死进程
选项:
-t:终端号,按照终端号踢出用户,只有超级用户(root)可以踢出其他用户,两个同时是超级用户先下手为强。需要使用W命令查询本机已经登录的用户
1.3.5使用方法
#pkill -9 -t pts/1
//强制杀死从pts/1虚拟终端登录的进程
2 修改进程的优先级(了解)
Linux是一个多用户,多任务的操作系统,Linux系统中通知运行这非常多的进程,但是CPU在同一个时钟周期内只能运算一个指令,进程优先级决定了每个进程处理的先后顺序。 一般不需要用户修改优先级,因为CPU运行速度很快,一般感受不到,只有在内核裁剪,嵌入式编程应用。
2.1查看进程优先级——#ps -le命令
输出有PRI和NI两项
PRI代表priority,NI代表nice 。这两个值都是优先级,数字越小代表优先级越高。
注意:用户只能修改NI的值,不能直接修改PRI。
NI值的范围是-20到19,数值越小代表优先级越高;
普通用户调整NI值的范围是0到19,只能调整自己的进程并且只能调高NI的值,不能降低。
Root用户能设定NI的值为负值,而且可以调整任何用户的进程
PRI(最终值)=PRI(原始值)+NI
2.2修改优先级命令——nice
2.2.1 #nice[选项]命令 //给新执行的命令直接赋予NI的值,但不能修改已经存在的进程NI的值
选项:
-n NI值:给命令赋予NI值
Nice -n -5 service httpd start
//修改通过service httpd start启动的进程的优先级
2.1.2 #renice [优先级] PID进程号 //修改某一个已经存在进程的NI值的命令
3工作管理
工作管理指的是单个登录终端中(也就是登录的shell界面中)同时管理多个工作的行为
注意事项:
- 当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作。
- 放入后台的命令必须可以持续运行一段时间,这样我们才能扑捉和操作这个工作。
- 放入后台的执行命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行(像top vim这样的命令在后台不能运行是暂停状态他们与前台有交互,find命令运行期间不需要用户查看只把查找结果反馈给用户)。
3.1把进程放入后台
#top & //把命令放入后台并在后台执行
#top //按下ctrl+Z 快捷键,放在后台暂停,进程没有消失。
3.2 查看后台进程作业
3.2.1 #jobs [选项]//查看有多少程序在后台运行的命令
选项
-l //可显示工作的PID进程号
3.2.2使用方法
#jobs -l
3.2.3输出结果
[工作号] 进程号 运行状态 命令名称
注意:
输出结果“+”代表最近一个放入后台的工作,是工作恢复时,默认恢复的工作。
“-”代表倒数第二个放入后台的工作。当使用fg或bg命令时,不指定工作号,恢复默认的工作,也可以指定恢复工作。同时+ -改变指向的工作
3.3将后台暂停的工作恢复到前台执行——fg %工作号
参数:
-%工作号:%可以省略,但注意工作号和PID的区别
3.4将后台暂停的工作恢复到后台执行——bg %工作号
参数:
-%工作号:%可以省略,但注意工作号和PID的区别同时不能和前台有交互
3.5后台命令脱离终端
一般把命令放入后台,只能在当前登录终端执行,一旦退出或关闭终端,后台程序就消失。Mysql例外
后台命令脱离登录终端执行的方法:不会由于用户关闭该终端,造成进程服务消失。
- 把需要后台执行的命令加入/etc/rc.local,开机自动执行的配置文件
- 使用系统定时任务,让系统在指定的时间执行某个后台命令
- 使用nohup命令,格式:Nohup [命令] &
4系统资源查看
4.1 #vmstat [刷新延时 刷新次数] //监控系统资源
4.1.1 使用方法
#vmstat 5 1 //报告关于进程、内存、交换分区、磁盘IO、系统和 CPU 活动的统计信息。
4.1.2 输出结果
Procs:进程信息字段
-r:等待运行的进程数,数量越多,系统越繁忙
-b:不可被唤醒的进程数量,数量越多,系统越繁忙
Memory:内存信息字段,单位:KB
-swpd:虚拟内存的使用情况
-free:空闲的内存容量
-buffer:缓冲的内存容量
-cache:缓存的内存容量
缓冲与缓存
区别 buffer缓冲 加速数据的写入硬盘.
cached缓存 加速数据的从硬盘中读取。
联系 都是从内存中划出来的,用于提高与硬盘交互的速度
Swap:交换分区的信息字段,单位:KB
-si:从磁盘中交换到内存中的数据数量
-so:从内存中交换到磁盘中数据的数量
两个数越大,证明数据需要经常在磁盘和内存之间交换,系统性能越差
IO:磁盘读写信息字段,单位:块
-bi:从块设备读入数据的总量
-bo:写到块设备的数据总量
两个数越大,系统的IO越繁忙
System 系统信息字段
-in:每秒被中断的进程次数
-cs:每秒钟进行的事件切换次数
这两个数越大,代表系统与借口设备的通信越繁忙。
CPU信息字段
-us:非内核进程消耗CPU运算时间的百分比
-sy:内核进程消耗CPU运算时间的百分比
-id:空闲CPU的百分比
-wa:等待IO所消耗CPU百分比
-st:被虚拟机所盗用的CPU百分比
4.2 dmesg 开机时内核检测信息
#dmesg | grep CPU,从内核自检信息提取CPU信息,判断处理机状态
4.3 free命令查看内存使用状态
#free [选项]
选项:
-b:以字节为单位显示
-k:以KB为单位显示,默认就是以KB为单位
-m:以MB为单位显示
-g:以GB为单位显示
4.3.1输出:
内存: Total used free shared buffer cache
Used-buffer -cache Free+buffer+cache
Swap: Total used free
4.4 查看CPU、内存、分区、进程
cat /proc/meminfo //能够查看当前系统所在设备的内存信息,物理内存的大小
cat /proc/swaps://查看SWAP分区信息
ps -ef //显示所有进程
watch //可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行
pg //提供了一次性的查看进程结果,但所提供的查看结果不是动态连续的
4.5 uptime——显示系统的启动时间和平均负载
也就是top命令的第一行,W命令也可以看到这个数据。查看当前linux系统运行了多长时间以及有多少个用户登录,快速获知服务器的负荷情况。
#uptime[选项]——查看系统与内核相关信息
选项:
-a:查看系统所有相关信息
-r:查看内核版本
-s:查看内核名称
4.6 file/bin/ls——判断当前系统位数
4.7 lsb_release -a——查询当前Linux系统的发行版本
4.8 lsof——列出进程打开或使用的文件信息
列出当前系统打开文件的工具,用来查看PID执行的程序
#lsof [选项]
选项:
-c字符串:只列出以字符串开头的进程打开的文件
-u用户名:只列出某个用户的进程打开的文件
-p pid:列出某个PID进程打开的文件。
4.8.1 使用方法
#lsof|more ——查询系统中所有进程调用的文件
#lsof/sbin/init——查询某个文件被哪个进程调用
#losf -c httpd——查询httpd进程调用了哪些文件
#lsof -u root——按照用户名,查询某个用户的进程调用的文件名
5系统定时任务
5.1 at——一次定时任务
5.1.1 at服务安装与启动
at服务是否安装——#chkconfig --list| grep atd
at服务是否启动——#service atd status
重启at服务——#service atd restart
5.1.2 at服务访问控制
如果系统有/etc/at.allow文件,那么只有写入/etc/at.allow文件中的用户可以使用at命令。
如果系统没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件中的用户不可以使用at命令。对root不起作用。
如果系统中这两个文件都不存在,那么只有root用户可以使用at命令
5.1.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
5.1.4 使用方法
在两分钟之后执行hello.sh脚本
#at now +2 minutes
#at> /root/hello.sh>> /root/hello.log
在指定时间重启,实际工作中不建议自动重启
#at 02:30 2013-07-25
at> /bin/sync
at>/sbin/shutdown -r now
5.1.5 #atq——查询执行结果
5.2 crontab——循环定时任务
用于设置周期性被执行的指令,如果不使用crontab,那么任务就是常驻程序
5.2.1 crond服务安装与启动
crond服务是否安装——#chkconfig --list| grep cron
crond服务是否启动——#service crond status
重启crond服务——#chkconfig crond on
5.2.2 crond服务访问控制
如果系统有/etc/at.allow文件,那么只有写入/etc/at.allow文件中的用户可以使用 crond命令。
如果系统没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件中的用户不可以使用 crond命令。
如果系统中这两个文件都存在,/etc/at.deny文件会被忽略,/etc/at.allow文件优先级高。
5.2.3 crontab定时任务
#crontab [选项]
选项:
-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
5.2.4 使用方法
#crontab -e //绑定当前用户命令
进入Crontab编辑界面,会打开vim编辑工作,可以编辑脚本或命令,可以不全部删除定时任务
Crontab编辑基本格式 :
* * * * * command to be executed
分 时 日 月 周 命令
第1列表示分钟0~59 一小时当中的第几分钟
第2列表示小时0~23(0表示0点) 一天当中的低级小时
第3列表示日期1~31 一个月当中的第几天
第4列表示月份1~12 一年当中的第几个月
第5列标识号星期0~7(0、7表示星期天) 一周当中的星期几
第6列要运行的命令
特殊符号
*——代表任意时间,第一个*表示一小时中每分钟执行一次
,——代表不连续时间,“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号0点0分执行一次,每个星期一0点0分执行一次。
注意:六个命令都不能为空
最小有效时间是分钟,最大时间范围是月
不管是在脚本中某些命令还是直接写命令,命令最好使用绝对路径
星期几和几号最好不要同时出现,他们都是天,容易混淆
可以用 whereis +命令 查询该命令的绝对路径,whereis shutdwn
//查看文件的位置,可以只查找源代码、二进制文件和帮助文件,而不是所有类型的文件。此命令查找的目录是由环境变量$PATH指定的
-b : 只找二进制文件
-m: 只找在说明文件manual路径下的文件
-s : 只找source源文件
-u : 没有说明文档的文件
5.2.5 Crontab 系统定时任务
#crontab -e //绑定当前用户命令,是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务。可是有些定时任务需要系统执行,这是我们需要编辑/etc/crontab这个配置文件,可以自由定义用户身份
打开配置文件 Vi /etc/crontab
5.2.6 Crontab系统定时任务编辑基本格式 :
* * * * * user-name command to be executed(命令绝对路径)
执行ls /etc/cron 查看/etc/cron目录文件
查看结果 cron.d/ cron.deny crontab
cron.monthly cron. weekly/ cron.daily/ cron.hourly/ 这四个目录不再由crontab管理,但是脚本依然存在,由Anacron管理
执行系统的定时的任务的方法
手工执行定时任务
系统定时任务
第一种是把需要定时执行的脚本复制到/etc/cron{monthly,weekly/ ,daily/ ,hourly/}目录中的任意一个。
第二种修改/etc/crontab配置文件
5.3 Anacron配置
由于服务器故障导致某些定时任务没有执行,在服务器正常时,anacron会检测 cron.monthly cron. weekly/ cron.daily/ cron.hourly/ 这四个目录是否有没有执行的定时任务,如果有没有执行的定时任务,系统会自动执行。
在老版本CentOS中,/etc/cron{monthly,weekly/ ,daily/ ,hourly/}目录会被cron调用,也会被anacron调用,容易重复执行,
在CentOS 6.X中则智慧被anacron 调用,避免了重复执行。anacron 不再是服务,而是系统命令。
5.3.1Anacron配置文件
打开编辑命令 vi /etc/anacrontab
RANDOM_DELAY=45 //最大随机延时
START_HOURS_RANGE=3-22 //anacron的执行时间范围是3:00-22:00,可以修改
天数 强制延迟(分) 工作名称 实际执行的命令
1 5 corn.daily nice-parts /etc/cron.daily
7 25 cron.weekly nice-parts /etc/cron.weekly
@monthly 45 cron.monthly nice-parts /etc/cron.monthly
5.3.2 Anacron检测周期
- Anacron 会使用一天,七天,一个月作为检测周期
- 在系统/var/spool/anacron/目录中存在cron{monthly,weekly/ ,daily/}文件,用于记录上次执行cron 的时间。
- 和当前时间比较,若两个时间的差超过了anacron的指定时间差值,证明有cron任务被漏执行
5.3.3 Cron.daily 工作来说明执行过程
- 首先读取/var/spool/anacron/cron.daily中的上一次anacron的执行时间
- 和当前时间比较,如果两个时间的差值超过1天,就执行cron.daily工作
- 执行这个工作只能在3:00-22:00之间
- 执行这个工作强制延迟时间为5分钟,再随机延迟0-45分钟
- 使用nice命令指定默认优先级,使用run-parts脚本执行/etc/cron.daily目录中的所有可执行文件。