linux 系统管理相关知识点分享,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)

killkill [选项] [PID]选项:-a:当处理当前进程时,不限制命令名和进程号的对应关系;-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;-s <信息名称或编号>:指定要送出的信息;-u:指定用户。

killall有时候一个软件或者服务会有多个进程,使用kill只能杀死一个进程,而killall能将一个软件或者服务的所有进程全部杀死。killall [选项] [信号] 进程名选项:-i:交互模式;-I:忽略进程名的大小写

pkillpkill [选项] [信号] 进程名选项:-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: 用户进程执行时间百分比(usertime)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/cpuinfo5.uptime: top命令的第一行6.查看内核信息:uname -a7.linux发行版本: lsb_release -a四、定时任务

1.at

at命令用于在指定时间执行命令。at [选项] [时间]选项:-m:任务执行完成后向用户发送E-mail。-c:显示所有设定过得具体命令时间:HH:MM 如:02:33HH:MM YYYY-MM-DD 如:15:28 2018-3-295pm+3 days 三天后的下午5点17:20 tomorrow 明天17:20atq 查询设置那些任务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重启smb45 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分钟之后执行。

相关内容