系统管理之资源与定时任务

系统管理之资源与定时任务,第1张

概述一、系统资源查看相关命令 1、vmstat 命令监控系统资源 2、dmesg 显示开机时内核检测信息 3、free 命令查看内存使用状态 4、查看 CPU 信息 CPU 的主要信息保存在/proc/c 一、系统资源查看相关命令1、vmstat 命令监控系统资源
[root@centos ~]# vmstat 1 3#每一秒刷新一次,共刷新三次procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy ID wa st 0  0      0 329960  21424  49564    0    0   324    34   84  140  1  2 91  6  0	 0  0      0 329928  21424  49560    0    0     0     0   26   29  0  0 100  0  0	 0  0      0 329928  21424  49560    0    0     0     0   27   32  0  0 100  0  0procs:进程信息字段: r:等待运行的进程数,数量越大,系统越繁忙。 b:不可被唤醒的进程数量,数量越大,系统月繁忙memory:内存信息字段: swpd:虚拟内存的使用情况,单位 KB。 free:空闲的内存容量,单位 KB。 buff:缓冲的内存容量,单位 KB。 cache:缓存的内存容量,单位 KB。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 占比	
2、dmesg 显示开机时内核检测信息
#dmesg 输出的信息很多,需要自己过滤[root@centos ~]# dmesg | grep "eth0"       #网卡相关信息[root@centos ~]# dmesg | grep "cpu"        #cpu信息
3、free 命令查看内存使用状态
[root@centos ~]# free 选项选项:-b: 以字节为单位显示  -k: 以 KB 为单位显示,默认就是以 KB 为单位显示  -m: 以 MB 为单位显示  -g: 以 GB 为单位显示-h:  友好显示 [root@centos ~]# free -h             total       used       free     shared    buffers     cachedMem:          474M       152M       322M       228K        20M        48M-/+ buffers/cache:        83M       391MSwap:         1.9G         0B       1.9G第一行       总内存       已使用      空闲     多进程共享    缓冲        缓存第二行        used-buffers-cached    free+buffers+cached第三行       总量         已使用       空闲
4、查看 cpu 信息

cpu 的主要信息保存在/proc/cpuinfo 这个文件当中,我们只要查看这个文件,就可以知道 cpu 的相关信息。

[root@centos ~]# cat /proc/cpuinfo processor	: 0vendor_ID	: GenuineIntelcpu family	: 6model		: 94......
5、查看本机登陆用户信息

如果我们想要知道 linux 服务器上目前已经登录的用户信息,可以使用 w 或 who 命令来进行查询。

 15:48:51 up 23 min,1 user,load average: 0.01,0.02,0.05当前时间   开机时间    一个用户   过去,5 ,10,15 min 的负载USER     TTY      FROM              LOGIN@       IDLE       Jcpu   Pcpu     WHAT用户     登录终端  从哪里登录         登陆时间     用户闲置时间                 当前在做什么root     pts/0    100.100.100.1    15:28          0.00s     0.04s  0.00s      wJcpu   指的是和该终端连接的所有进程占用的 cpu 运算时间。这个时间里并不包括过去 的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。Pcpu   是指当前进程所占用的 cpu 运算时间。
6、查看系统与内核相关信息
[root@centos ~]# uname [选项] 选项:  -a: 查看系统所有相关信息;  -r: 查看内核版本;  -s: 查看内核名称#可以通过 file 命令来判断系统文件(主要是系统命令)的位数来推断系统的位数[root@centos ~]# file /bin/ls/bin/ls: ELF 64-bit LSB executable,x86-64,version 1 (SYSV),dynamically linked (uses shared libs),for GNU/linux 2.6.18,stripped
二、定时任务使用 at 命令 设置执行一次的定时任务。1、at 服务管理与访问控制

at 命令要想正确执行,需要 atd 服务的支持。atd 服务是独立的服务,需要保证服务已经正常启动。

[root@centos ~]# service atd start #一般情况下服务默认启动[root@centos ~]# chkconfig atd on  #设置开机自启[root@centos ~]# chkconfig --List | grep 'atd'atd            	0:off	1:off	2:on	3:on	4:on	5:on	6:off

atd 服务启动之后,at 命令才可以正常使用,不过我们还需要了解下at 命令的访问控制。这里的访问控制指的是允许哪些用户使用 at 命令设定定时任务,或者不允许哪些用户使用 at 命令,at 的访问控制是依靠/etc/at.allow 文件(白名单)和/etc/at.deny 文件(黑名单)这两个文件来实现的。

如果系统中有/etc/at.allow 文件,那么只有写入/etc/at.allow 文件(白名单)中的用户可以使用 at 命令,其他用户不能使用 at 命令(/etc/at.deny 文件会被忽略,也就是说同一个用户既写入/etc/at.allow 文件,也写入/etc/at.deny 文件,那么这个用户是可以使用 at 命令的,因为/etc/at.allow 文件优先级更高。如果系统中没有/etc/at.allow 文件,只有/etc/at.deny 文件,那么写入/etc/at.deny 文件 (黑名单)中的用户不能使用 at 命令,其他用户可以使用 at 命令。不过这个文件对 root 用户不生效。如果系统中这两个文件都不存在,那么只有 root 用户可以使用 at 命令。 系统中默认时只有/etc/at.deny 文件,而且这个文件是空的,这样的话系统中所有的用户都可以 使用 at 命令。不过如果我们打算控制用户的 at 命令权限,把用户写入/etc/at.deny 文件即可 /etc/at.allow 文件的权限更高,如果/etc/at.allow 文件存在,则/etc/at.deny 文件失效。 /etc/at.allow 管理行为更加严格,因为只有写入这个文件的用户才能使用 at 命令,如果需要禁用 at 命令的用户较多,则可以把少数用户写入这个文件。/etc/at.deny 文件的管理较为松散,如果允许使用 at 命令的用户较多,则可以把禁用的用户写入这个文件。不过这两个文件都不能对 root 用户生效。2、at命令
[root@centos ~]# at [选项] 时间 选项:  -m:   当 at 工作完成后,无论是否命令有输出,都用 email 通知执行 at 命令的用户  -c 工作号:  显示该 at 工作的实际内容时间:   at 支持的时间格式如下:  HH:MM    在指定的“小时:分钟”执行命令,例如:02:30  HH:MM YYYY-MM-DD 在指定的“小时:分钟 年-月-日”执行,例如 02:30 2018-07-25  HH:MM[am|pm] [month] [date]  在指定的“小时:分钟[上午|下午][月][日]”执行,例如 02:30 July 25  HH:MM[am|pm] + [minutes|hours|days|weeks] 在指定的时间“再加多久执行”,例如 Now + 5 minutes,05am +2 hours 

at 命令只要指定正确的时间,就可以输入需要在指定时间执行的命令了,这个命令可以是系统命令,也可以是 shell 脚本。

例子 1:在五分钟后执行hello脚本[root@centos ~]# cat 1.sh #!/bin/bashecho "hello"[root@centos ~]# at Now +2 minutes at> /bin/bash /root/1.shat> <EOT>  ctrl + d 保存任务job 2 at 2019-12-10 16:21例子 2: #在三点执行重启 *** 作[root@centos ~]# at 15:00 2019-12-12at> /bin/sync                 at> /sbin/shutdown -r Nowat> <EOT>job 3 at 2019-12-12 15:00
3、at管理命令
1)查询 atq[root@centos ~]# atq3	2019-12-12 15:00 a root2)删除 atrm  [工作号] [root@centos ~]# atrm 3
多次执行的定时任务crontab1、crond 服务管理与访问控制 crontab 命令是需要 crond 服务支持的,所以要保证其正常运行。
[root@centos ~]# service crond start #启动 crond 服务[root@centos ~]# chkconfig crond on # 设定 crond 服务为开机自启动  crond 服务默认是自启动的。

crontab 命令和 at 命令类似,也是通过/etc/cron.allow 和/etc/cron.deny 文件来限制某些用户是否可以使用 crontab 命令的。

当系统中有/etc/cron.allow 文件时,只有在此文件的用户可以使用 crontab 命令,没有写入的用户不能使用 crontab 命令。同样如果有此文件,/etc/cron.deny 文件会被忽略。当系统中只有/etc/cron.deny 文件时,则写入此文件的用户不能使用 crontab 命令,没有写入文件的用户可以使用 crontab 命令。 这个规则基本和 at 的规则一直,同样/etc/cron.allow 文件的优先级比/etc/cron.deny 文件的优先级高,linux 中默认只有/etc/cron.deny 文件。2、crontab 单用户设置
[root@localhost ~]# crontab [选项] 选项:  -e:  编辑 crontab 定时任务  -l:  查询 crontab 任务  -r:  删除当前用户所有的 crontab 任务,如果有多个任务,只想删除一个,可以所以用“crontab -e”  -u 用户名: 修改或删除其他用户的 crontab 任务。只有 root 可用 [root@centos ~]# crontab -e #针对当前用户的crontab任务编辑界面第一个“*” 一小时当中的第几分钟 0-59 第二个“*” 一天当中的第几小时 0-23 第三个“*” 一个月当中的第几天 1-31 第四个“*” 一年当中的第几月 1-12 第五个“*” 一周当中的星期几 0-7(0 和 7 都代表星期日)* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。, 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在 每天的 8 点 0 分,12 点 0 分,16 点 0 分都执行一次命令 - 代表连续的时间范围。比如“0 5 * * 1-6 命令”,代表在周一到周六的凌晨 5 点 0 分执行命令 */n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔 10 分钟就执行一遍命令

crontab 例子

0 5 * * * /sbin/shutdown -r Now   #每天凌晨五点执行重启 *** 作0 5 * * 6  MysqLdump  -u root -p123456 info > /root/info.dump #每周6凌晨5点备份info数据库
3、在书写 crontab 定时任务时,需要注意几个注意事项六个选项都不能为空,必须填写。如果不确定使用“*”代表任意时间。crontab 定时任务,最小有效时间是分钟,最大时间范围是月。像 2019 年某时执行,3 点 30 分 30 秒这样的时间都不能识别.在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都是以天作为单位, 非常容易让管理员混乱在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都是用绝对路径。4、系统的 crontab 设置

“crontab -e”是每个用户执行的命令,也就是说不同的用户身份可以执行自己的定时任务。可 是有些定时任务需要系统执行,这时我们就需要编辑/etc/crontab 这个配置文件了。当然,并不是说 写入/etc/crontab 配置文件中的定时任务执行时,不需要用户身份,而是“crontab -e”命令定义定 时任务时,默认用户身份是当前登录用户。而修改/etc/crontab 配置文件时,定时任务的执行着身份 是可以手工指定的。这样定时任务的执行会更加灵活,修改起来也更加方便。

[root@centos ~]# vim /etc/crontabSHELL=/bin/bash    #指定shellPATH=/sbin:/bin:/usr/sbin:/usr/bin  # 指定 PATH 环境变量MAILTO=root  # 如果有报错输出,或命令结果有输出,会向 root 发信息HOME=/  # 标示主目录# For details see man 4 crontabs  #出现失败时,可以查看 crontabs 4等级的帮助# Example of job deFinition:# .---------------- minute (0 - 59)# |  .------------- hour (0 - 23)# |  |  .---------- day of month (1 - 31)# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# |  |  |  |  |# *  *  *  *  * user-name command to be executed

1)crontab配置方法

把你需要定时执行的工作写成脚本程序,并赋予执行权限,然后直接把这个脚本复制到/etc/cron.{daily,weekly,monthly}目录中的任意一个。比如我需要让某个脚本每周执行,那么就把这个脚本复制到/etc/cron.weekly/目中。这样这个脚本就会每周执行一次,具体的执行时间要参考 anacron 的配置。第二种方法就是修改/etc/crontab 这个配置文件,自己加入自己的定时任务,不过需要注意指定脚本的执行者身份。6、anacron

anacron 是用来干什么的呢?我们的 linux 服务器如果不是 24 小时开机的,那么刚好在关机的时间段之内有系统定时任务(cron)需要执行,那么这些定时任务是不会执行的。也就是说,假设我们需要在凌晨 5 点 05 分执行系统的日志备份,但是我们的 linux 服务器不是 24 小时开机的,在晚上需要关机,白天才会再次开机。这个定时任务的执行时间我们的服务器刚好没有开机,那么这个任务就不会执行了。anacron 就是用来解决这个问题的。
anacron 会使用一天,七天,一个月作为检测周期,用来判断是否有定时任务在关机之后没有执行,如果有这样的任务,anacron 会在特定的时间重新执行这些定时任务。在系统的/var/spool/anacron/ 目录中存在 cron.{daily,monthly}文件,

[root@centos ~]# vim /var/spool/anacron/cron.cron.daily    cron.monthly  cron.weekly

这些文件中都保存着 anacron 上次执行时的时间。anacron 会去读取这些文件中的时间,然后和当前时间做比较,若果两个时间的差值超过了 anacron 的指定时间差值(一般是 1 天,7 天和一个月),就说明有定时任务漏掉了没有被执行,这时 anacron 会介入而执 行这个漏掉的定时任务,从而保证在关机时没有被执行的定时任务不会被漏掉。在 CentOS 6.x 中,我们使用 cronIE-anacron 取代了 vixIE - cron 软件包。而且在原先的 CentOS 版本中 /etc/ cron.{daily,monthly}这些目录中的定时任务会同时被 cron 和 anacron 调用, 这样非常容易出现重复执行同一个定时任务的错误。
在现在的 CentOS 6.x 中, /etc/cron.{daily,monthly}目录中的定时任务程序只会被 anacron 调用,从而保证这些定时任务只会在每天、每周或每月被定时执行一次,而不会重复。

[root@centos ~]# anacron [选项] [工作名] 选项:  -s: 开始 anacron 工作,依据/etc/anacrontab 文件中的设定的延迟时间执行  -n: 立即执行/etc/anacrontab 中所有的工作,忽略所有的延迟时间  -u: 更新/var/spool/anacron/cron.{daily,monthly}文件中的时间戳,但不执行任何工作 参数:  工作名: 是依据/etc/anacrontab 文件中定义的工作名

anacron的配置文件为 /etc/anacrontab

# /etc/anacrontab: configuration file for anacron# See anacron(8) and anacrontab(5) for details.SHELL=/bin/shPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=root# the maximal random delay added to the base delay of the jobsRANDOM_DELAY=45# 最大随机延迟。# the jobs will be started during the following hours onlySTART_HOURS_RANGE=3-22#anacron 的执行时间范围是 3:00 - 22:00#period in days   delay in minutes   job-IDentifIEr   command1       5       cron.daily              nice run-parts /etc/cron.daily7       25      cron.weekly             nice run-parts /etc/cron.weekly@monthly 45     cron.monthly            nice run-parts /etc/cron.monthly时间差    推迟执行分钟   工作名称         实际执行命令      

所以crontab中定义的定时任务,从本质上还是依赖 anacron 的配置文件。
我们用 cron.daily 工作来说明下/etc/anacrontab 的执行过程:

首先读取/var/spool/anacron/cron.daily 中的上一次 anacron 执行的时间和当前时间比较,如果两个时间的差值超过 1 天,就执行 cron.daily 工作执行这个工作只能在 03:00-22:00 之间执行工作时强制延迟时间为 5 分钟,再随机延迟 0-45 分钟时间;使用 nice 命令指定默认优先级,使用 run-parts 脚本执行/etc/cron.daily 目录中的所有可执行文件。 总结

以上是内存溢出为你收集整理的系统管理之资源与定时任务全部内容,希望文章能够帮你解决系统管理之资源与定时任务所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1014269.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存