计划任务
主要用于完成一些周期性任务及定时任务,Windows中也有该功能:
单次调度执行
yum install -y at
安装at工具,systemctl start atd
启动服务,使用方法为at 选项 时间 执行内容
时间可以自由设置,开启的栏目中输入具体任务,执行后命令失效,编辑任务使用ctrl+d退出编辑,具体选项如下:
-f:指定包含具体指令的任务文件
-q:指定新任务的队列名称
-l:显示待执行任务的列表
-d:删除指定的待执行任务
也可以使用子命令atq
查看待执行的任务和atrm
通过序号删除任务,时间规定写法如下:
now +5min # 从现在开始5分钟后
teatime tomorrow # 明天的下午16:00
noon +4 days # 4天后的中午
11:20 AM # 早上11:20
设置五分钟后创建文件的命令示例如图:
循环调度执行
这种计划任务方式比较常用,可设置多次循环执行任务,可使用cron
工具实现,通过systemctl start crond.service
启动服务,基本语法为cron 选项
,具体选项有:
-l:列出当前用户的定时任务。
-r:删除当前用户的定时任务。
-e:编辑当前用户的定时任务。
-n:检查定时任务是否可用。
-m:发送类似于电子邮件的消息,用于通知定时任务执行的结果
-u:指定用户
/etc/cron.deny
文件为cron黑名单,文件内的用户无法使用cron,配置任务通过cron -e
实现,格式如下:
分 时 日 月 星期>>任务指令
任务指令可以是语句,也可以是脚本文件
*标识任意都符合
0 2 * * * date >> date.txt # 每天的2点
0 2 14 * * date >> date.txt # 每月14号2点
0 2 14 2 * date >> date.txt # 每年2月14号2点
0 2 * * 5 date >> date.txt # 每个星期5的2点
0 2 * 6 5 date >> date.txt # 每年6月份的星期5的2点
0 2 2 * 5 date >> date.txt # 每月2号或者星期5的2点 星期和日同时存在,那么就是或的关系
0 2 2 6 5 date >> date.txt # 每年6月2号或者星期5的2点
* /5 * * * * date >> date.txt # 每隔5分钟执行一次
0 2 1,4,6 * * date >> date.txt # 每月1号,4号,6号的2点
0 2 5-9 * * date >> date.txt # 每月5-9号的2点
* * * * * date >> date.txt # 每分钟
0 * * * * date >> date.txt # 每整点
* * 2 * * date >> date.txt # 每月2号的每分钟
任务存放在/var/spool/cron/用户名
文件中
系统任务
清理临时文件/tmp /var/tmp
,日志轮转lgrotate
等操作,通常不由用户定义,系统任务文件展示如下:
日志管理
系统运行产生的各种错误和提示信息都存在日志文件中,系统出错时,运维人员首先要查看的就是日志文件,常见日志的存储位置如下:
/var/log/messages 系统主日志文件
/var/log/secure 记录认证、安全的日志
/var/log/maillog 跟邮件postfix相关
/var/log/cron crond、at进程产生的日志
/var/log/dmesg 记录系统启动时加载的硬件相关信息日志
/var/log/yum.log yum的日志
/var/log/mysqld.log MySQL日志
var/log/xferlog 和访问FTP服务器相关
/var/log/boot.log 系统启动过程日志记录存放
/var/log/wtmp 当前登录的用户(可以直接在命令行输入w查看)
/var/log/lastlog 所有用户的登录情况(可以直接在命令行输入lastlog查看)
日志文件可以直接使用cat
或vi
命令查看,但日志文件通常较长,可以使用grep
,awk
过滤后再进行分析。
日志管理系统
日志管理系统rsyslogd
,即处理日志的进程,处理绝大部分日志记录,和系统操作有关,安全,认证sshd,su,计划任务at,cron等,sql、http、nginx有其自己的方式记录日志。
日志可以存放在本地,也可以存放在远程服务器堡垒机上,使得运维人员无需登录内网主机也可查看主机日志,方便进行管理。
日志配置文件主要有以下几种:
/etc/logrotate.d/syslog # 日志轮转(切割)相关
/etc/rsyslog.conf # rsyslogd的主配置文件
/etc/sysconfig/rsyslog # rsyslogd相关文件
主配置文件告诉rsyslogd进程 哪个设备(facility),关于哪个级别的信息,以及如何处理,部分代码展示如下:
不同的日志类型如下;
序号 Facility 解释
0 kern (kernel) Linux内核产生的信息,大部分是硬件检测和内核功能的启用
1 user 用户层级产生的信息,例如后边介绍的通过logger产生的日志信息
2 mail 所有邮件收发的相关信息
3 daemon 系统服务产生的信息
4 auth 与认证、授权相关的信息,如login、ssh、su等产生的信息
5 syslog syslogd服务产生的信息
6 lpr 打印相关的信息
7 news 新闻群组相关的信息
8 uucp Unix to Unix Copy Protocol 早期Unix系统间的数据交换协议
9 cron 周期性计划任务程序,如cron、at等产生的信息
10 authpriv 与auth类似,但记录的多为帐号相关的信息,如pam模块的调用等
16~23 local0~local7 保留给本地用户使用的日志类型,通常与终端交互相关。
不同日志级别分类如下:
LOG_EMERG 紧急,致命,服务无法继续运行,如配置文件丢失
LOG_ALERT 报警,需要立即处理,如磁盘空间使用95%
LOG_CRIT 致命行为
LOG_ERR(error) 错误行为
LOG_WARNING 警告信息
LOG_NOTICE 普通
LOG_INFO 标准信息
LOG_DEBUG 调试信息,排错才开,一般不建议使用
日志归档
避免日志存储单一文件过大, 可使用logrotate
给日志进行归档,便于查看查找,也避免单一文件过大影响写入效率,该归档方法为按日期归档,当前日志以日期命名,不含日期的日志文件为最新的记录。
其本质是挂在cron
配置目录cron.daily
下面,通过计划任务实现,所以会被cron
每天执行一次,
日志轮转配置文件如图:
分别对应,轮转间隔weekly
、保留历史文件数量rotate 4
即删除序号为5以后的文件、轮转后创建新的日志文件create
、使用日期而非数字标识轮转dateext
、加载配置文件、对其他日志的特殊设置信息。
总结
本章学习了Linux计划任务的设置方法------通过cron
循环任务调度实现,主要是在用户文件中编辑时间间隔和处理命令;以及日志管理的方法,包括日志查看记录,日志远程管理方法及归档处理。