linux 系统管理

一、进程管理

1.什么是进程

就是正在运行的程序

2.进程管理的作用

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

3.进程的查看

  • ps命令
ps aux #列出系统的所有进程,aux前面不能加-,否则会出现一条警告
ps -le #列出系统的所有进程,linux 标准格式
选项:
-a:显示一个终端的所有进程
-u:显示进程的归属用户和内存使用情况
-x:显示没有终端控制的进程
-e:显示所有进程
-l:长格式显示,显示更加详细的信息
USER:进程所属用户
PID:进程ID
%CPU:cpu的使用率
%MEM:内存的使用率
VSZ:虚拟内存使用情况
RSS:真实内存使用情况
TTY:终端类型,tty1~tty7,本地终端,pts0~pts255远程终端
STAT:进程状态,R运行,S睡眠,T停止,s包含子进程,+后台运行
START:进程的起始时间
TIME:进程消耗的CPU时间
COMMAND:命令
  • pstree命令
pstree -pu #将进程以树状显示
选项:
-p:显示一个进程的pid
-u:显示一个进程的用户
  • top命令
top命令可以显示系统的运行状态和系统正在运行的进程,top默认会3秒刷新一次,top的前五行是系统状态,下面的正在运行的进程。top也是一个交互式的程序,根据用户输入的不同指令可以进行不同处理。
top 选项 #显示系统状态
选项:
-i<时间>:设置间隔时间; -u<用户名>:指定用户名; -p<进程号>:指定进程; -n<次数>:循环显示的次数。
交互:
M:根据驻留内存大小进行排序;
P:根据CPU使用百分比大小进行排序;
T:根据时间/累计时间进行排序;
q:退出程序;
h:显示帮助画面,给出一些简短的命令总结说明;
前五行字段的说明:
top - 09:44:56[当前系统时间],
16 days[系统已经运行了16天],
1 user[个用户当前登录],
load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
Tasks: 145 total[总进程数],
2 running[正在运行的进程数],
143 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s): 99.8%us[用户空间占用CPU百分比],
0.1%sy[内核空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
0.2%id[空闲CPU百分比],
0.0%wa[等待输入输出的CPU时间百分比],
0.0%hi[],
0.0%st[],
Mem: 4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap:  5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区总量]

4.杀死进程

kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用 ps 指令或job指令查看。
HUP 1 终端断线INT 2 中断(同 Ctrl + C)QUIT 3 退出(同 Ctrl + \)TERM 15 终止KILL 9 强制终止CONT 18 继续(与STOP相反, fg / bg 命令)STOP 19 暂停(同 Ctrl + Z)
  • kill
kill [选项] [PID]
选项:
-a:当处理当前进程时,不限制命令名和进程号的对应关系;
-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
-s <信息名称或编号>:指定要送出的信息;
-u:指定用户。
  • killall
有时候一个软件或者服务会有多个进程,使用kill只能杀死一个进程,而killall能将一个软件或者服务的所有进程全部杀死。
killall [选项] [信号] 进程名
选项:
-i:交互模式;
-I:忽略进程名的大小写
  • pkill
pkill [选项] [信号] 进程名
选项:
-t:终端号;
根据终端号踢掉用户:

二、工作管理(后台程序管理)
工作管理就是后台程序管理,有时候进行一些复杂任务是例如:复制较大文件,备份较大文件等等,这样的任务往往要运行很长时间,在运行期间这个任务就会占用终端,这时我们只能等待这个任务完成,完成之前我们什么也做不了。其实将这个任务放在后台这行就可以解决这个问题。

1.如何将程序放到后台运行

  • 在命令后面加&,例如:tar -zcf etc.tar.gz /etc &
  • 在前台执行的命令时按Ctrl + Z,放到后台暂停。

2.查看后台程序

jobs [选项]
选项:
-l:显示后台程序PID

说明:中括号里面的是后台程序的编号,前后台切换的时候能用到,+代表最后放到后台的-代表倒数第二个放到后台的。

3.前后台程序切换

  • fg %程序编号,将后台程序放到前台
  • bg %程序编号,将前台程序放到后台
说明:程序编号就是中括号里面的数字

4.脱离终端运行

脱离终端的概念是,我们在终端里运行的程序是和终端绑定的,当我们退出终端是程序就会自动结束。有时候我们想启动一个服务然后在退出终端也能运行,这时就需要脱离终端运行。
  • 将系统服务的启动不在终端里面进行,可以写入/etc/rc.d/rc.local
  • 放在定时任务里面
  • nohup命令:
nohup command &
三、查看系统资源

1.vmstat,报告关于进程、内存、I/O等系统整体运行状态。


Procs(进程)
  • r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1)
  • b: 等待IO的进程数量。
Memory(内存)
  • swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
  • free: 空闲物理内存大小。
  • buff: 用作缓冲的内存大小。
  • cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。
Swap
  • si: 每秒从交换区写到内存的大小,由磁盘调入内存。
  • so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。
IO(现在的Linux版本块的大小为1kb)
  • bi: 每秒读取的块数
  • bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。
system(系统)
  • in: 每秒中断数,包括时钟中断。
  • cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。
CPU(以百分比表示)
  • us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。
  • sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。
  • wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。
  • id: 空闲时间百分比
2.free [-b|-k|-m|-g],显示内存使用情况,选项都是以什么单位显示
3.dmesg: 开机自查信息,
4.查看cpu:cat /proc/cpuinfo
5.uptime: top命令的第一行
6.查看内核信息:uname -a
7.linux发行版本: lsb_release -a
四、定时任务

1.at

at命令用于在指定时间执行命令。
at [选项] [时间]
选项:
-m:任务执行完成后向用户发送E- mail
-c:显示所有设定过得具体命令
时间:
HH:MM 如:02:33
HH:MM YYYY-MM-DD 如:15:28 2018-3-29
5pm+3 days 三天后的下午5点
17:20 tomorrow 明天17:20
atq 查询设置那些任务
atrm 删除设置的任务
at -c 任务号 ,查看任务的具体内容

说明:/etc/at.allow和/etc/at.deny分别是at服务的白名单和黑名单,只要把用户名写到你忙就会生效,其中.allow的优先权大于.deny,像这样的白名单和黑名单其他服务也有例如:crontab
注意:在at里面的任务的权限是和创建任务用户的权限一样,如果超出权限是不会执行。

2.crontab

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。
crontab [选项]
选项:
-e:编辑crontab,使用的是vim编辑器
-l:列出所有的定时任务
-r:删除所有定时任务
crontab的书写规则:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
minute hour day month week command 顺序:分 时 日 月 周
其中:
  • minute: 表示分钟,可以是从0到59之间的任何整数。
  • hour:表示小时,可以是从0到23之间的任何整数。
  • day:表示日期,可以是从1到31之间的任何整数。
  • month:表示月份,可以是从1到12之间的任何整数。
  • week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
在以上各个字段中,还可以使用以下特殊字符:
  • 星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
  • 逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
  • 中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
  • 正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
实例:
每月1、10、22日的4 : 45重启smb 
45 4 1,10,22 * * /etc/init.d/smb restart
每隔两天的上午8点到11点的第3和第15分钟执行
3,15 8-11 */2 * * command
说明:/etc/cron.allow和/etc/cron.deny分别是cron服务的白名单和黑名单,只要把用户名写到你忙就会生效,其中.allow的优先权大于.deny
注意:在crontab里面的任务的权限是和创建任务用户的权限一样,如果超出权限是不会执行。

3.系统定时任务

  • 系统定时任务就是通过/etc/crontab这个配置文件设置的,它的书写规则和crontab -e类似,只不过添加了user字段。
  • 在/etc/下有四个特殊的文件夹,这四个文件夹是存放定时任务脚本的,只要将可执行脚本放在cron.daily下就会每天执行一次,cron.hourly是每小时执行一次,cron.monthly是每月执行一次,cron.weekly是每周执行一次

4.anacron

上面的是个文件夹之所以会执行是依赖于/etc/crontab和anacron.而centos6以后就完全依赖anacron进行执行。
centos6以前的版本的/etc/crontab会直接设置,centos6和以后的版本就没有这样的设置了。

anacron的原理:在/var/spool/anacron/下有三个文件分别是cron.daily,cron.weekly,cron.mouthly,这三个文件分别记录着/etc/下与这三个文件同名的目录下的所有脚本的最后执行时间。anacron会每天检查一下cron.daily,每七天检查cron.weekly,每月检查cron.mouthly文件所记录的时间对比记录时间和检查时间的时间差,如果大于一天、一周、一个月,就会执行相应文件夹下的脚本。
anacron的配置文件:/etc/anacrontab

RANFD_DELAY:随机延时
START_HOURS_RANGE:执行的时间范围
最后三行有四个字段分别代表:天数,强制延迟时间,工作名,实际命令
以执行cron.daily为例:
  • 首先检查/var/spool/anacron/cron.daily
  • 对比记录时间和当前时间
  • 如果时间超过一天,就执行/etc/cron.daily下的脚本
  • 只能在3~22点之间执行(可以修改配置文件)
  • 执行会在强制延迟5分钟+随机延迟0~45分钟之后执行。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值