Linux计划任务与日志

计划任务

主要用于完成一些周期性任务及定时任务,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查看)

日志文件可以直接使用catvi命令查看,但日志文件通常较长,可以使用grepawk过滤后再进行分析。

日志管理系统

日志管理系统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循环任务调度实现,主要是在用户文件中编辑时间间隔和处理命令;以及日志管理的方法,包括日志查看记录,日志远程管理方法及归档处理。

相关推荐
_.Switch37 分钟前
高级Python自动化运维:容器安全与网络策略的深度解析
运维·网络·python·安全·自动化·devops
2401_8504108337 分钟前
文件系统和日志管理
linux·运维·服务器
JokerSZ.41 分钟前
【基于LSM的ELF文件安全模块设计】参考
运维·网络·安全
XMYX-01 小时前
使用 SSH 蜜罐提升安全性和记录攻击活动
linux·ssh
芯盾时代1 小时前
数字身份发展趋势前瞻:身份韧性与安全
运维·安全·网络安全·密码学·信息与通信
心灵彼岸-诗和远方2 小时前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘2 小时前
NFS服务器
运维·服务器
苹果醋33 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰3 小时前
[linux]docker基础
linux·运维·docker
Jason-河山4 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化