在服务器日常管理中,对系统资源的查看和监控是一个重要部分;同时在服务器运行中,需要定时执行一些重复任务(服务重启、文件备份等)。本篇文章我们就来一起认识一下系统资源查看和定时任务。
系统资源查看
top
命令
top
命令可以实时查看当前系统健康状态(资源及使用信息)和进程信息。
vmstat
命令
vmstat
命令提供了隔一段时间多次刷新查看系统资源状态的功能,语法如下
vmstat <time> <n>
#time,n都为数字,time为每次刷新时间间隔,n为刷新总次数
命令执行结果:
项目 | 说明 |
procs | 进程使用情况 |
memory | 内存使用情况乱搞 |
swap | 交换分区读写信息 |
io | 系统IO状态 |
system | 系统资源使用 |
cpu | CPU状态信息 |
dmesg
命令
dmesg
命令显示开机时内核检测记录信息,包含开机的硬件检测、进程启动、端口打开等一系列记录信息,文件包含记录非常多,建议配合grep
命令查找需要的内容
free
命令
free
命令主要显示系统内存使用信息,
free -m #主要参数-m,以MB为单位显示
主要显示信息分别是,总内存、已使用内存、空余内存、共享内存、缓冲内存、缓存内存
(缓存用于加快数据从硬盘中读取速度,文件被读入缓存中暂时保存,当有进程需要读取时,文件从内存直接被读入,传输速度大大加快;缓冲用于“看起来”加快数据写入硬盘的速度,系统将要写入磁盘的文件放入内存中,磁盘空闲时从缓冲中写入文件,写入速度看起来加快)
cpuinfo
文件
cpuinfo文件完整路径/proc/cpuinfo
,用cat
命令可以查看,包含CPU型号以及各项属性。该文件位于内存中,每次开机都会创建,如果有多核,会将每个核心的信息列出。
uptime
命令
uptime
命令查看系统开机时长和平均负载等信息,与w
命令和top
命令的第一行内容完全相同,这里不多介绍。
uname
命令
uname
命令可以查看系统以及内核的版本等信息,主要有三个选项
uname -a #查看所有内核及操作系统版本信息
uname -r #查看内核版本
uname -s #查看内核名称
Linux并不支持直接查看系统位数,但是系统安装完成时会附带一些内核命令以外的外部命令,通过file
命令查看这些命令文件的文件信息,就可以找到系统位数。
使用lsof
命令可以列出进程使用的文件信息,主要有三个选项用于筛选信息,不加选项则为全部显示
选项 | 说明 |
-c | 只列出以字符串开头的进程使用的文件 |
-u | 只列出属于某个用户的进程使用的文件 |
-p | 列出PID匹配的进程使用的文件 |
- 这个命令在使用以上选项时若有多个只使用第一个选项,其余无效。
系统定时任务
系统定时任务的实现主要依靠一个名为
cron
的服务(部分发行版中为crond
,d为 daemon,守护进程)。这个服务一般会自动启动,服务启动后使用crontab
命令可以查看和配置定时任务。
用户通过crontab
命令来设置(自己的)定时任务。命令具体权限配置文件在/etc/cron.allow
和/etc/cron.deny
中,只有不在后者或前者中的用户才能使用这个命令。
crontab [options] [parameter]
crontab命令选项:
参数 | 说明 |
-l | 列出某个用户的定时任务列表 |
-e | 编辑crontab定时任务列表 |
-r | 删除列表中的定时任务 |
-u user | 对指定用户的定时任务进行操作(默认对自己),需要root权限 |
使用-e
选项后,会进入一个编辑器,按照命令的语法进行设置,就能配置需要的定时命令,文件格式
[1] [2] [3] [4] [5] <task>
#方括号为参数,数字为参数需要,作用在下面表格中列出。task为要执行的任务
参数序号 | 说明 |
1 | 一个小时中的第几分钟 |
2 | 一天中的第几小时 |
3 | 一个月中的第几天 |
4 | 一年中的第几月 |
5 | 一周中的星期几(0-7,0和7都是星期日) |
- 参数一般为数字,符合时间规律,另外,参数
*
表示每次都执行,举例如下 - 如果一个命令只需要执行一次,则应该定一个特定的时间点,而不是在时和分栏填
*
,否则每个小时甚至每分钟都会执行一次任务 - 指定星期几和指定日期之间是或的关系,每到星期几或是几号都会执行任务,但不建议使用
- 特殊语法**
,
用于指定多个日期/时间,-
指定日期/时间段,*/n
表示每隔n个单位执行一次** - 定时任务执行一个Shell脚本文件时,脚本文件中要想以日期命名,需要在date命令参数中的
%
前加上\
转义符,因为%
在crontab中有特殊含义
文件格式示例:
示例 | 说明 |
0 0 * * * | 在每天的0时0分执行任务 |
11 11 * * 7 | 在每周日的11时11分执行任务 |
10 10 1,11,21 * * | 在每月的1、11、21号10时10分执行任务 |
18 9 * * 1-5 | 在每周一到周五的9时18分执行任务 |
在每周日的11时11分执行任务 | |
10 10 1,11,21 * * | 在每月的1、11、21号10时10分执行任务 |
18 9 * * 1-5 | 在每周一到周五的9时18分执行任务 |
*/10 0 * * * | 在每天的凌晨0点每隔十分钟执行一次任务 |