Linux_系统管理
目录
本文为慕课网Tony老师视频笔记,Tony老师的课通俗易懂,幽默风趣,Linux入门或巩固基础的话,推荐看一下!https://www.imooc.com/u/279399/courses?sort=publish
一、进程管理
进程管理简介和作用
进程简介:
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占有一定的系统资源
进程管理的作用:
判断服务器健康状态
查看系统中所有进程
杀死进程
进程的查看
ps aux
#查看系统中所有的进程,使用BSD操作系统格式(没有-只是符合BSD格式,加-也可以)
ps -le
#查看系统中所有的进程,使用Linux标注命令格式
选项
-a:显示一个终端的所有进程,除了会话引线
-u:显示进程的归属用户和内存使用情况
-x:显示没有控制终端的进程
-l:长格式显示,显示更加详细的信息
-e:显示所有进程,和-A作用一致
STAT字段:进程状态
常见状态有:
R:运行
S:睡眠
T:停止状态
s:包含子进程
+:位于后台
START字段:进程的启动时间
TIME字段:该进程占用CPU的运算时间,注意不是系统时间
COMMAND字段:产生该进程的命令名
pstree[选项]:显示进程树
选项:
-p:显示进程的PID
-u:显示进程的所属用户
top[选项]:查看系统健康状态
选项:
-d:秒数,指定top命令每隔几秒更新,默认是3秒
-b:使用批处理模式输出。一般和"-n"选项合用
-n次数:指定top命令执行的次数,一般和"-b"选项合用
在top命令的交互模式当中可以执行的命令:
?或h:显示交互模式的帮助
P:以CPU使用率进行排序默认就是此项
M:以内存使用率进行排序
N:以PID排序
q:退出top
第一行信息为任务队列信息(不过这里的load average的大小是按系统的核数来看,双核就是2,四核就是4,不过可能即使满足了这个数值,CPU和MEM还可以接受的话也不一定就超出了负载):
第二行为进程信息
第三行为CPU状态
第四行为物理内存信息 (缓冲的作用:加速了数据的写入)
第五行为交换分区信息(缓存的作用:加速了数据的读取)
杀死进程
kill -l
#查看可用的进程信号
killall[选项][信号]进程名
#按照进程名杀死进程
选项:
-i:交互式,询问是否要杀死这个进程
-I:忽略进程名大小写
pkill[选项][信号]进程名
#按照进程名终止进程
选项:
-t终端号:按照终端号踢出用户
w命令:查看已登录用户的信息(TTY字段就是终端号)
pkill -9 -t pts/1
#强制杀死从pts/1终端登录的进程
修改进程优先级
进程的优先级:
Linux操作系统是一个多用户、多任务的操作系统,Linux系统中通知运行着非常多的进程
但是CPU在同一个时钟周期内只能运行一个指令。进程的优先级决定了每个进程处理的先后顺序
进程信息中的PRI字段代表Priority(不能直接修改),NI字段代表Nice(可以修改)
这两个值都是优先级(最终是PRI和NI相加),数字越小,代表进程优先级越高
修改NI值时的注意事项:
1、NI值的范围是-20到19
2、普通用户调整NI值的范围是0-19,而且只能调整自己的进程
3、普通用户只能调高NI值,而不能降低,如原本NI值为0,则只能调整为大于0
4、root用户才能设定进程NI值为负值,而且可以调整任何用户的进程
5、PRI(最终值)=PRI(原始值)+NI
6、用户只能修改NI值,不能直接修改PRI值
nice[选项]命令
#nice命令可以给新执行的命令直接赋予NI值,但是不能修改已经存在进程的NI值
选项:
-n NI值:给命令赋予NI值
例如:
nice -n -5 service httpd start
renice[优先级]PID
#修改已存在进程的NI值
例如:
renice -10 2125
二、工作管理
工作管理简介
工作管理是指在单个登录终端中(也就是登录的shell界面中)同时管理多个工作的行为
注意事项:
1、当前的登录终端只能管理当前终端的工作,而不能管理其他登录终端的工作
2、放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作
3、放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行
工作管理方法
tar -zcf etc.tar.gz /etc &
#把命令放入后台并在后台执行
top
#在命令执行过程中,按下ctrl+z快捷键,放在后台暂停
jobs[-l]:查看后台的工作
选项:
-l:显示工作的PID
注意:"+"号代表最近一个放入后台的工作,也是工作恢复时,默认恢复的工作
"-"号代表倒数第二个放入后台的工作
将后台暂停的工作恢复到前台运行
fg %工作号
参数:
%工作号[]:%可以省略,但是注意工作号和PID的区别
将后台暂停的工作恢复到后台运行
bg %工作号
注意:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行
后台命令脱离工作终端执行
把命令放入后台只能在当前登录终端(当前Bash)执行,一旦退出或关闭终端后台程序就会停止
方式一:把需要后台执行的命令加入到/etc/rc.local文件中
方式二:使用系统定时任务,让系统在指定的时间执行某个后台命令
方式三:使用nohup命令,nohup [命令] &
三、系统资源查看
vmstat [刷新延时 刷新次数]:监控系统资源
例如:
vmstat 1 3
procs:进程信息字段
r:等待运行的进程数,数量越大,系统越繁忙
b:不可被唤醒的进程数量,数量越大,系统越繁忙
memory:内存信息字段
swpd:虚拟内存的使用情况,单位kb
free:空闲的内存容量,单位kb
buff:缓冲的内存容量,单位kb
cache:缓存的内存容量,单位kb
缓冲和缓存的区别
简单来说缓存(cache)是用来加速数据从磁盘中“读取”的,而缓冲(buffer)是用来加速数据“写入”硬盘的
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百分比
dmesg:开机时内核检测信息
dmesg
dmesg | grep CPU
free [-b|-k|-m|-g|-h]:查看内存使用信息
选项:
-b:单位字节
-k:单位KB
-m:单位MB
-g:单位GB
-h:单位自动
cat /proc/cpuinfo:查看CPU信息
uptime:显示系统的启动时间和平均负载,也就是top命令的第一行,w命令也可以看到这个信息
uname [选项]:查看系统与内核相关信息
选项:
-a:查看系统所有相关信息
-r:查看内核版本
-s:查看内核名称
file /bin/ls:判断当前系统的操作位数
lsb_release -a:查看当前系统的发行版
lsof [选项]:列出进程打开或使用的文件信息
选项:
-c 字符串:只列出以字符串开头的进程打开的文件
-u 用户名:只类出某个用户的进程打开的文件
-p pid:列出某个PID进程打开的文件
lsof | more:查询系统中所有进程调用的文件
lsof /sbin/init:查询某个文件被哪个进程调用
lsof -c httpd:查看httpd进程调用了哪些文件
lsof -u root:按照用户名,查询某用户的进程调用的文件名
四、系统定时任务
at一次执行
确定at是否安装并启动
chkconfig --list | grep atd
service atd restart
at的访问控制
1、如果系统中有/etc/at.allow文件,
那么只有写入/etc/at.allow文件(白名单)中的用户可以使用at命令(/etc/at.deny文件会被忽略)
2、如果系统中没有/etc/at.allow文件,只有/etc/at.deny文件,那么写入/etc/at.deny文件(黑名单)
中的用户不能使用at命令。对root不起作用
3、如果系统中这两个文件都不存在,那么只有root用户可以使用at命令
at [选项] 时间
选项:
-m:当at工作完成后,无论是否有输出,都用email通知执行at命令的用户
-c 工作号:显示该at工作的实际内容
时间:
HH:MM 如:02:30
HH:MM YYYY-MM-DD 如:02:30 2019-07-25
HH:MM[am|pm] [month] [date] 如:02:30 July 25
HH:MM[am|pm] + [minutes|hours|days|weeks] 如:now + 5 minutes
在两分钟之后执行hello.sh脚本
at now +2 minutes
at>/root/hello.sh >> /root/hello.log
在指定的时间重启
at 02:00 2019-07-25
at>/bin/sync
at>/sbin/shutdown -r now
atq:查询当前服务器上的at工作
atrm[工作号]:删除指定的at任务
crontab循环定时任务
确认crond服务是否安装和启动
service crond restart
chkconfig crond on
访问控制:
1、当系统中有/etc/cron.allow文件是,只有写入此文件的用户可以使用crontab命令
同样如果有此文件,/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高
2、当系统中只有/etc/cron.deny文件时,则写入此文件的用户不能使用crontab命令,
没有写入此文件的用户可以使用
crontab [选项]
选项:
-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
crontab -e
进入crontab编辑界面,会打开vim编辑你的工作
*****执行的任务
*号含义
注意事项:
1、六个选项都不能为空,必须填写。如果不确定使用:"*"代表任意时间
2、最小有效时间是分钟,最大时间范围是月
3、在定义时间时,日期和星期最好不要在一条定时任务中出现
因为他们都是以天作为单位,会让管理员混乱
4、在定时任务中不管是直接写命令还是再脚本中写命令,最好都用绝对路径
系统的crontab设置
"crontab -e"是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务。
可是有些定时任务需要系统执行,这是我们需要编辑/etc/crontab这个配置文件了
在/etc/下,有着cron.daily/ cron.hourly/ cron.monthly/ cron.weekly/几个文件,
保存着系统每隔一天一小时一个月一周所要执行的脚本,也可以根据情况加入自己的脚本
执行定时任务的方法
1、手工执行定时任务 crontab -e
2、系统定时任务
脚本拷到/etc/下的目录中
卸载/etc/crontab文件中
anacron配置
anacron是用来保证在系统关机的时候错过的定时任务,可以在系统开机之后再执行
anacron检测周期
1、anacron会使用一天、七天、一个月作为检测周期
2、在系统的/var/spool/anacron/目录中存在
cron.{daily,weekly,monthly}文件,用于记录上次执行cron的时间
3、和当前时间作比较,如果两个时间的差值超过了anacron的指定时间差值,证明有cron任务被漏了执行
注意:
1、在老的CentOS版本中,/etc/cron.{daily,weekly,monthly}这些目录即会被cron调用,也会被anacron调用
容易反复执行
2、在CentOS 6.x中,则只会被anacron调用,避免了重复执行
3、在CentOS 6.x中,anacron不再是服务而是系统命令
cat /etc/anacrontab
SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# 最大随机延迟
RANDOM_DELAY=45
# anacron的执行时间范围
START_HOURS_RANGE=3-22
#天数 强制延迟(分) 工作名称 实际执行命令
1 5 cron.daily nice run-parts /etc/cron.daily
7 25 cron.weekly nice run-parts /etc/cron.weekly
@monthly 45 cron.monthly nice run-parts /etc/cron.monthly
cron.daily工作来说明执行过程
1、首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间
2、和当前时间比较,如果两个差值超过一天,就执行cron.daily工作
3、执行这个工作只能在03:00-22:00之间
4、执行工作时强制延迟时间为5分钟,在随机延时0-45分钟时间
5、使用nice命令执行默认优先级,使用run-parts脚本执行/etc/cron.daily目录中的所有可执行文件