day4 - Linux系统管理

主要内容
1. 进程管理
2. 工作管理
3. 系统资源查看
4. 系统定时任务

1. 进程管理

1.1 进程简介和Linux进程管理的作用

进程简介

进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

进程管理的作用

  • 判断服务器健康状态
  • 查看系统中所有进程
  • 杀死进程

1.2 linux进程的查看PS指令和pstree命令

ps指令查看所有的进程

#查看系统中所有的进程,使用BSD操作系统格式
ps aux

#查看系统中所有进程,使用Linux标准命令格式
ps -le

#选项
-a: 显示一个终端的所有进程,除了会话引线
-u: 显示进程的归属用户及内存的使用情况
-x: 显示没有控制终端的进程
-l: 长格式显示,显示更加详细的信息
-e: 显示所有的进程,和-A作用一致 

ps命令的输出

1.1 ps命令输出举例
  • USER: 该进程是由哪个用户产生的
  • PID: 进程的ID号
  • %CPU: 该进程占用CPU资源的百分比,占用越高,进程越耗费资源
  • %MEM: 该进程占用物理内存的百分比,占用越高,进程越耗费资源
  • VSZ: 该进程占用虚拟内存的大小,单位KB
  • RSS: 该进程占用物理内存的大小,单位是KB
  • TTY: 该进程是在哪个终端中运行的,其中tty1-tty7代表本地控制台终端,tty1-tty6是本地的字符界面终端,tty7是图形终端。 pts/0-255代表虚拟终端
  • STAT: 进程状态,常见的状态有: R: 运行; S: 睡眠; T: 停止状态; s: 包含子进程; +: 位于后台
  • START: 该进程的启动时间
  • TIME: 该进程占用CPU的运算时间,注意不是系统时间
  • COMMAND: 产生该进程的命令名

查看进程树

pstree [选项]

#选项:
-p: 显示进程的PID
-u: 显示进程的所属用户

1.3 进程的查看top命令

top指令查看系统健康状态

top [选项]

#选项:
-d 秒数: 指定top命令每隔几秒更新,默认是3s
-b: 使用批处理模式输出,一般和"-n"选项合用
-n 次数: 指定top命令执行的次数,一般和"-b" 选项合用

#在top命令的交互模式中可以执行的命令:
?或h: 显示交互模式的帮助
P: 以CPU使用率排序,默认就是此项
M: 以内存的使用率排序
N: 以PID排序
q: 退出top

top指令的输出

top指令输出举例

top指令输出前五行内容的具体含义:

第一行任务队列信息

第二行进程信息
第三行CPU信息
第四行物理内存信息
第五行交换分区信息

1.4 杀死进程

kill命令 杀死单一进程

#查看可用的进程信号
kill -l
可用的进程信号
常用的进程信号含义
#几个根据不同信号杀死进程的例子

#平滑重启,不影响当前登录的用户
kill -HUP 1523
kill -1 1523

#强制终止,只有手工关闭不了的时候才会使用,被迫到最后的命令
kill -9 2236

#默认终止
kill -15 2236

killall命令

#按照进程名杀死进程
killall [选项] [信号] 进程名

#选项
-i: 交互式,询问是否要杀死某个进程
-I: 忽略进程名的大小写

pkill命令

#按照进程名终止进程
pkill [信号] [选项] 进程名

#选项
-t 终端号: 按照终端号踢出用户

#使用w命令查询本机已经登录的用户
w

#例子: 强制杀死从pts/1虚拟终端登录的进程
pkill -9 -t pts/1

1.5 修改进程优先级

进程优先级简介

Linux操作系统是一个多用户多任务的操作系统,Linux系统中通知运行着非常多的进程,但是CPU在同一个时钟周期内只能运算一个指令。进程优先级决定了某个进程处理的先后顺序。

查看优先级的方式

ps -le
查看优先级

优先级中的NI值是可以进行修改的,修改NI值时的注意事项

  • NI的值的范围是-20到19
  • 普通用户调整NI值得范围是0到19,而且只能调整自己的进程
  • 普通用户只能调高NI值而不能降低,如原本NI值为0,则只能调整为大于0
  • root用户才能设定NI值为负值,而且可以调整任何用户的进程
  • PRI(最终值) = PRI(原始值) + NI
  • 用户只能修改NI得值,不能直接修改PRI

nice命令

#nice命令可以给新执行得命令直接赋予NI值,但是不能修改已经存在得进程的NI值
nice [选项] 命令

#选项
-n NI值: 给命令赋予NI值

#举例子
nice -n -5 service httpd start

renice命令

#renice命令是修改已经存在进程的NI值的命令
renice [优先级] PID

#例如
renice -10 2125

2. 工作管理

2.1 工作管理简介

工作管理简介

工作管理指的是单个登录终端中(也就是登录的shell界面中)同时管理多个工作的行为。

工作管理注意事项

  • 当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作
  • 放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作这个工作
  • 放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停而不能执行

2.2 工作管理方法

1.将进程放入后台

#在运行的命令后面 + &
#在运行中点击ctrl + z

#把命令放入后台,并在后台执行
tar -zcf etc.tar.gz /etc &

#按下ctrl+z快捷键,放到后台暂停
top

2.查看后台的工作

jobs [-l]
#选项
-l: 显示工作的PID

#注: "+"号代表最近一个放入后台的工作,也是工作恢复时,默认要恢复的工作,"-"号代表倒数第二个放入后台的工作。

3.将后台暂停的工作恢复到前台执行

fg %工作号
#参数:
-%工作号:%号可以忽略,但是注意工作号和PID的区别(工作号不是进程号)

4.把后台暂停的工作恢复到后台执行

bg %工作号

#注:后台恢复执行的命令,是不能和前台有交互的,否则不能恢复到后台执行

2.3 后台命令脱离登录终端执行

简介

把命令放入后台,只能在当前登录终端执行,一旦退出或关闭终端,后台程序就会停止。在关闭终端的时候会默认发出sighup的指令停止当前的所有指令。

后台命令脱离登录终端执行的方法

  • 1.把需要后台执行的命令加入/etc/rc.local文件
    1. 使用系统定时任务,让系统在指定的时间执行某个后台命令
    1. 使用nohup命令

nohup命令

nohup [命令] &

#举例
#首先编辑for.sh
vi for.sh
#!/bin/bash

for((i=1;i<1000;i=i+1))
        do
                echo 111 >> /root/for.log
                sleep 10
        done

#在后台执行for.sh命令
nohup /root/for.sh &

3. 系统资源查看

3.1 vmstat命令监控系统资源

vmstat [刷新延时] [刷新次数]
vmstat命令监控系统资源输出结果

vmstat命令监控系统资源输出结果每个字段的含义

proc和memory含义
swap和io含义
system和CPU含义

memory之中缓存和缓冲的区别
简单来说缓存(cache)是用来加速数据从硬盘中“读取”的,而缓冲(buffer)是用来加速数据“写入”硬盘的。

3.2 dmesg开机时内核检测信息

dmesg

dmesg | grep CPU

3.3 free命令查看内存使用状态

free [-b|-k|-m|-g]

#选项
-b: 以字节为单位显示
-k: 以KB为单位显示,默认就是以KB为单位显示
-m: 以MB为单位显示
-g: 以GB为单位显示
free命令模拟运行结果
free命令输出结果的含义

3.4 查看CPU信息

cat /proc/cpuinfo

3.5 uptime命令

#显示系统的启动时间和平均负载,也就是top命令的第一行,w命令也可以看到这个数据
uptime

3.6 查看系统和内核相关信息

#查看系统和内核相关信息
uname [选项]
#选项:
-a: 查看系统所有相关信息
-r: 查看内核版本
-s: 查看内核名称

#判断当前系统的位数
file /bin/ls

#查询当前Linux系统发行版本
lsb_release -a

3.7 列出进程打开或使用的文件信息

#列出进程调用或打开的文件信息
lsof [选项]
#选项:
-c 字符串: 只列出以字符串开头的进程打开的文件
-u 用户名: 只列出某个用户的进程打开的文件
-p pid: 列出某个PID进程打开的文件

#查询系统中所有进程调用的文件
lsof | more
#查询某个文件被哪个进程调用
lsof /sbin/init
#查看httpd进程调用了哪些文件
lsof - c httpd
#按照用户名,查询某用户的进程调用的文件名
lsof -u root

4. 系统定时任务

4.1 at一次执行

1. 确定at安装

#at服务是否安装
chkconfig --list | grep atd

#at服务的启动
service atd restart

2. at的访问控制

  • 如果系统中有/etc/at.allow文件,那么只有写入/etc/at.allow(白名单)的用户可以使用at命令(/etc/at.deny文件会被忽略)
  • 如果系统中没有/etc/at.allow文件,只有写入/etc/at.deny(黑名单)的用户不能使用at命令,对root不起作用
  • 如果系统中这两个文件都不存在,那么只有root用户可以使用at命令

3. at命令

at [选项] 时间

#选项:
-m: 当at工作完成后,无论是否命令有输出,都用email通知执行at命令的用户
-c 工作号: 显示该at工作的实际内容
at命令中的时间

4.at命令例子

#例子: 在两分钟之后执行hello.sh脚本
at now +2 minutes
at> /root/hello.sh >> /root/hello.log
文件操作例子

5.其他at管理命令

#查询当前服务器上的at工作
atq

#删除指定的at任务
atrm [工作号]

4.2 crontab循环定时任务

1. crond服务管理与访问控制

# service crond restart
# chkconfig crond on

访问控制

  • 如果系统中有/etc/cron.allow文件,那么只有写入此文件的用户可以使用crontab命令,没有写入的不能使用,(/etc/cron.deny文件会被忽略,/etc/cron.allow文件的优先级更高)
  • 如果系统中只有/etc/cron.deny文件时,则写入该文件的用户不能使用crontab命令

2. 用户的crontab设置

crontab [选项]
#选项:
-e: 编辑crontab定时任务
-l: 查询crontab任务
-r: 删除当前用户所有的crontab任务

crontab -e
#进入crontab编辑界面,会打开vim编辑你的工作
*****执行的任务

每个*的含义

每个*的含义.png

特殊符号的含义
*的例子
crontab命令的例子

3. 常用命令

#查看root用户的crontab任务
crontab -l

#删除root用户所有的定时任务
crontab -r

4. crontab注意事项

  • 五个选项都不能为空,必须填写,如果不确定使用"*"代表任意时间
  • crontab定时任务,最小有效时间是分钟,最大时间范围是月
  • 定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都是以天作为单位,非常容易让管理员混乱
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都是用绝对路径

4.3 系统crontab设置

系统定时任务

crontab -e是每个用户执行的命令,也就是不同用户身份可以执行自己的定时任务,可是有些定时任务就需要系统执行,这时我们就需要编辑/etc/crontab这个配置文件了

CentOS 5 中的配置文件

CentOS 5 中的配置文件

执行系统的定时任务的方法

  • 手工执行定时任务
  • 系统定时任务
    -第一种把需要定时执行的脚本复制到 /etc/cron.{daily, weekly, monthly}目录中的任意一个
    -第二种是修改/etc/crontab配置文件

4.4 anacron配置

anacron是什么

anacron是用来保证在系统关机的时候错过的定时任务,可以在系统开机之后再执行

anacron检测周期

  • anacron会使用一天,七天,一个月作为检测周期
  • 在系统的/var/spool/anacron/目录中存在cron.{daily, weekly, monthly}文件,用于记录上次执行cron的时间
  • 和当前的时间做比较,如果两个时间差超过了anacron的指定时间差值,证明有cron任务被遗漏

anacron配置文件

anacron配置

cron.daily工作来说明执行过程

  • 首先读取/var/spool/anacron/cron.daily中的上一次anacron执行的时间
  • 和当前时间比较,如果两个时间差值超过一天,就执行cron.daily工作
  • 执行这个工作只能在03:00-22:00之间
  • 执行工作强制延迟时间为5分钟,再随机延迟0-45分钟时间
  • 使用nice命令指定默认优先级,使用run-parts脚本执行/etc/cron.daily目录中的所有可执行文件
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。