cron及日志管理
liuian 2024-12-01 01:00 44 浏览
循环调度执行cron
1.1简介cron
crond的概念和crontab是不可分割的。crontab是一个命令,常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行
1.2认识crond进程
[root@JX01 ~]# systemctl status crond
● crond.service - Command Scheduler
Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
Active: active (running) since 三 2018-08-01 07:03:23 CST; 17min ago
Main PID: 671 (crond)
CGroup: /system.slice/crond.service
└─671 /usr/sbin/crond -n
?
8月 01 07:03:23 JX01 systemd[1]: Started Command Scheduler.
8月 01 07:03:23 JX01 systemd[1]: Starting Command Scheduler...
8月 01 07:03:23 JX01 crond[671]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 2% if used.)
8月 01 07:03:23 JX01 crond[671]: (CRON) INFO (running with inotify support)
[root@JX01 ~]#
?
[root@JX01 ~]# ps aux | grep crond
root 671 0.0 0.0 126280 1668 ? Ss 07:03 0:00 /usr/sbin/crond -n
root 1440 0.0 0.0 112720 980 pts/0 R+ 07:21 0:00 grep --color=auto crond
[root@JX01 ~]#
1.3创建计划任务
#计划任务存储的位置
[root@JX01 ~]# ls /var/spool/cron/
root jack alice
?
#管理计划任务的命令
crontab:
-l Displays the current crontab on standard output.
-r Removes the current crontab.
-e Edits the current crontab using the editor specified.
?
#计划任务书写的格式
.---------------- 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
| | | | |
* * * * * command
?
#计划任务案例
00 02 * * * ls //每天2:00整
00 02 1 * * ls //每月1号2:00整
00 02 14 2 * ls //每年2月14号2:00整
00 02 * * 7 ls //每周日2:00整
00 02 * 6 5 ls //每年6月的周五2:00整(特殊)
00 02 14 * 7 ls //每月14号2:00整 或者 每周日2:00整,这两个时间都执行
00 02 14 2 7 ls //每年2月14号2:00整 或者 每周日2:00整,这两个时间都执行
?
00 02 * * * ls //每天2:00整
* 02 * * * ls //每天2:00中的每一分钟
* * * * * ls //每分钟执行ls
* * 14 2 * ls //2月14号的每分钟 1440分钟
?
*/5 * * * * ls //每隔5分钟
00 02 1,5,8 * * ls //每月1,5,8号的2:00整
00 02 1-8 * * ls //每月1到8号的2:00整
00 02 * 1-10 * ls
?
#测试计划任务的执行效果
1 编写执行脚本.
vim /crontab.sh
touch /root/`date +%F-%X`.txt
?
2 编排任务计划
[root@localhost ~]# crontab -e
* * 1 1 * bash /crontab.sh
?
3 修改日期时间为1月2日3点4分
date 01020304
修改时间为1点2分3秒
date -s 01:02:03
?
4 监控当前目录
watch -n 0.5 'ls /root/*.txt'
?
5 测试目标
?
* * * * 1 //每周1 每分钟会执行
* * * 1 * //1月每日 每分钟会执行
* * * 1 1 //1月的周1 每分钟会执行
* * 1 * * //每月1日 每分钟会执行
* * 1 * 1 //每月1日和每月周1 每分钟会执行
* * 1 1 * //1月1日 每分钟会执行
* * 1 1 1 //1月1日和1月的周1 每分钟都会执行
日志管理
日志:在现代社会里,为了维护自身系统资源的运行状况,计算机系统一般都会有相应的日志记录系统有关日常事件或者误操作警报的日期及时间戳信息。这些日志信息对计算机犯罪调查人员非常有用,但计算机日记是按正常工作状态记录的,所以冗余量很大,对查找与分析有用信息造成很大困难。
?
#Linux系统中存在的日志都在哪里?/var/log/
# tail /var/log/messages //系统主日志文件
# tail -20 /var/log/messages
# tail -f /var/log/messages //动态查看日志文件的尾部
# tailf /var/log/secure //认证、安全
# tail /var/log/maillog //跟邮件postfix相关 prefix
# tail /var/log/cron //crond、at进程产生的日志
# tail /var/log/dmesg //和系统启动相关
# tail /var/log/audit/audit.log //系统审计日志
# tail /var/log/yum.log //yum
# tail /var/log/mysqld.log //MySQL
# tail /var/log/xferlog //和访问FTP服务器相关
# tail /var/log/wtmp //当前登录的用户(命令:w)
# tail /var/log/btmp //最近登录的用户(命令last)
# tail /var/log/lastlog //所有用户的登录情况(命令lastlog)
?
#Linux系统是什么进程程序在管理日志?rsyslog
##rsyslog
rsyslog:linux系统中管理日志的服务
所产生的进程是: rsyslogd -n
?
linux中的配置文件:
linux中所有的服务或者工具,都是由配置文件驱动工作的;
Linux中的工具或服务都是遵循配置文件中的规则工作的;
?
/etc/rsyslog.conf:
这个文件定义了系统中所有的服务或者工具,它们所产生的日志,根据特定的级别需要存储在特定的位置
?
日志等级:
等级由低到高:debug<info<warn<Error<Fatal
?
系统或服务的排错:
根据配置文件的对错有一下两种方案供给选择:
1. 查看rsyslog的 journalctl -xe 找出服务或系统的报错信息
2. 根据服务自身的检测机制,去检查配置文件的语法
3. 系统常用排错指令 journalctl -xe\\ systemctl status service.name\\ 服务自带检测工具
bash -nx 检测shell脚本的语法问题
httpd -t 检测apache web服务的配置文件语法问题
nginx -t 检测nginx web服务的配置文件语法问题
?
[root@JX02 ~]# vim /etc/rsyslog.conf
#### RULES ####
?
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
?
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
?
# The authpriv file has restricted access.
authpriv.* /var/log/secure
?
# Log all the mail messages in one place.
mail.* -/var/log/maillog
?
# Log cron stuff
cron.* /var/log/cron
?
# Everybody gets emergency messages
*.emerg :omusrmsg:*
?
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
?
# Save boot messages also to boot.log
local7.* /var/log/boot.log
##logrotate
#认识一下logrotate
为了节省空间和整理方便,日志文件经常需要按!时间或!大小等维度分成多份,删除时间久远的日志文件。这就是通常说的日志滚动(log rotation)
logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
?
#logrotate配置文件:
主文件:/etc/logrotate.conf (决定每个日志文件如何轮转)
子文件夹:/etc/logrotate.d/*
?
#认识logrotate的选项含义
==================全局设置==================
weekly //轮转周期,一周轮转
rotate 4 //保留4份
create //轮转后创建新文件
dateext //使用日期作为后缀
compress //是否压缩
include /etc/logrotate.d //包含该目录下的文件
/var/log/wtmp { //对该日志文件设置轮转的方法
monthly //一个月轮转一次
create 0664 root utmp //轮转后创建新文件,并设置权限
minsize 1M //最小达到1M才轮转
rotate 1 //保留一份
}
/var/log/btmp {
missingok //丢失不提示
monthly
create 0600 root utmp
rotate 1
}
?
=========================================参数========================================
compress 通过gzip 压缩转储以后的日志
nocompress 不做gzip压缩处理
copytruncate
用于还在打开中的日志文件,把当前日志备份并截断;是先拷贝再清空的方式,拷贝和清空之间有一个时间差,可能会丢失部分日志数据。
nocopytruncate 备份日志文件不过不截断
create mode owner group 轮转时指定创建新文件的属性,如create 0777 nobody nobody
nocreate 不建立新的日志文件
delaycompress 和compress 一起使用时,转储的日志文件到下一次转储时才压缩
nodelaycompress 覆盖 delaycompress 选项,转储同时压缩
missingok 如果日志丢失,不报错继续滚动下一个日志
errors address 专储时的错误信息发送到指定的Email 地址
ifempty 即使日志文件为空文件也做轮转,这个是logrotate的缺省选项
notifempty 当日志文件为空时,不进行轮转
mail address 把转储的日志文件发送到指定的E-mail 地址
nomail 转储时不发送日志文件
olddir directory 转储后的日志文件放入指定的目录,必须和当前日志文件在同一个文件系统
noolddir 转储后的日志文件和当前日志文件放在同一个目录下
sharedscripts
运行postrotate脚本,作用是在所有日志都轮转后统一执行一次脚本。如果没有配置这个,那么每个日志轮转后都会执行一次脚本
prerotate 在logrotate转储之前需要执行的指令,例如修改文件的属性等动作;必须独立成行
postrotate 在logrotate转储之后需要执行的指令,例如重新启动 (kill -HUP) 某个服务!必须独立成行
daily 指定转储周期为每天
weekly 指定转储周期为每周
monthly 指定转储周期为每月
rotate count 指定日志文件删除之前转储的次数,0 指没有备份,5 指保留5 个备份
dateext 使用当期日期作为命名格式
dateformat .%s
配合dateext使用,紧跟在下一行出现,定义文件切割后的文件名,必须配合dateext使用,只支持 %Y %m %d %s 这四个参数
size(或minsize) log-size
当日志文件到达指定的大小时才轮转,log-size能指定bytes(缺省)及KB (sizek)或MB(sizem).
当日志文件 >= log-size 的时候就转储。
以下为合法格式:(其他格式的单位大小写没有试过)
size = 5 或 size 5 (>= 5 个字节就转储)
size = 100k 或 size 100k
size = 100M 或 size 100M
=================================================================================
?
#案例一:普通切割
[root@JX02 ~]# vim /etc/logrotate.d/yum
/var/log/yum.log {
missingok //丢失不执行
# notifempty //空文件不轮转
# size 30k //达到30k轮转, daily or size
# yearly //或者一年一轮转
daily //缩小周期到1天
rotate 3 //轮转保留3次
create 0777 root root
}
[root@JX02 ~]# /usr/sbin/logrotate -f /etc/logrotate.conf //强制轮转日志
[root@JX02 ~]# ll /var/log/yum* //发现日志已经被切割了
?
?
#案例二:切割前后执行动作
[root@JX02 ~]# vim /etc/logrotate.d/httpd
/var/log/httpd/* {
prerotate
chattr -a /var/log/httpd
endscript
?
#notifempty
daily
create 0600 root root
missingok
rotate 5
?
postrotate
chattr +a /var/log/httpd
endscript
}
?
[root@JX02 logrotate.d]# /usr/sbin/logrotate -f /etc/logrotate.conf
?
#案例三:切割多个日志文件
[root@JX02 ~]# vim /etc/logrotate.d/web
/var/log/httpd_test.log
/var/log/nginx_test.log
/var/log/tomcat_test.log
{
daily
create 0600 root root
missingok
rotate 5
}
?
[root@JX02 ~]# /usr/sbin/logrotate -f /etc/logrotate.conf
?
#案例四:切割一个文件夹下的所有日志
[root@JX02 ~]# vim /etc/logrotate.d/apache
/var/log/apache/*log {
daily
create 0600 root root
missingok
rotate 5
}
?
[root@JX02 logrotate.d]# /usr/sbin/logrotate -f /etc/logrotate.conf
相关推荐
- eino v0.4.5版本深度解析:接口类型处理优化与错误机制全面升级
-
近日,eino框架发布了v0.4.5版本,该版本在错误处理、类型安全、流处理机制以及代理配置注释等方面进行了多项优化与修复。本次更新共包含6个提交,涉及10个文件的修改,由2位贡献者共同完成。本文将详...
- SpringBoot异常处理_springboot异常注解
-
在SpringBoot中,异常处理是构建健壮、可维护Web应用的关键部分。良好的异常处理机制可以统一返回格式、提升用户体验、便于调试和监控。以下是SpringBoot中处理异常的完整指...
- Jenkins运维之路(Jenkins流水线改造Day02-1-容器项目)
-
这回对线上容器服务器的流水线进行了一定的改造来满足目前线上的需求,还是会将所有的自动化脚本都放置到代码库中统一管理,我感觉一章不一定写的完,所以先给标题加了个-1,话不多说开干1.本次流水线的流程设计...
- 告别宕机!零基础搭建服务器监控告警系统!小白也能学会!
-
前言本文将带你从零开始,一步步搭建一个完整的服务器指标监控与邮件告警系统,使用的技术栈均为业界主流、稳定可靠的开源工具:Prometheus:云原生时代的监控王者,擅长指标采集与告警规则定义Node_...
- httprunner实战接口测试笔记,拿走不谢
-
每天进步一点点,关注我们哦,每天分享测试技术文章本文章出自【码同学软件测试】码同学公众号:自动化软件测试码同学抖音号:小码哥聊软件测试01开始安装跟创建项目pipinstallhttprunne...
- 基于JMeter的性能压测平台实现_jmeter压测方案
-
这篇文章已经是两年前写的,短短两年时间,JMeter开源应用技术的发展已经是翻天覆地,最初由github开源项目zyanycall/stressTestPlatform形成的这款测试工具也开始慢...
- 12K+ Star!新一代的开源持续测试工具!
-
大家好,我是Java陈序员。在企业软件研发的持续交付流程中,测试环节往往是影响效率的关键瓶颈,用例管理混乱、接口调试复杂、团队协作不畅、与DevOps流程脱节等问题都能影响软件交付。今天,给大家...
- Spring Boot3 中分库分表之后如何合并查询
-
在当今互联网应用飞速发展的时代,数据量呈爆发式增长。对于互联网软件开发人员而言,如何高效管理和查询海量数据成为了一项关键挑战。分库分表技术应运而生,它能有效缓解单库单表数据量过大带来的性能瓶颈。而在...
- 离线在docker镜像方式部署ragflow0.17.2
-
经常项目上会出现不能连外网的情况,要怎么使用ragflow镜像部署呢,这里提供详细的步骤。1、下载基础镜像根据docker-compose-base.yml及docker-compose.yml中的i...
- 看,教你手写一个最简单的SpringBoot Starter
-
何为Starter?想必大家都使用过SpringBoot,在SpringBoot项目中,使用最多的无非就是各种各样的Starter了。那何为Starter呢?你可以理解为一个可拔插式...
- 《群星stellaris》军事基地跳出怎么办?解决方法一览
-
《群星stellaris》军事基地跳出情况有些小伙伴出现过这种情况,究竟该怎么解决呢?玩家“gmjdadk”分享的自己的解决方法,看看能不能解决。我用英文原版、德语、法语和俄语四个版本对比了一下,结果...
- 数据开发工具dbt手拉手教程-03.定义数据源模型
-
本章节介绍在dbt项目中,如何定义数据源模型。定义并引入数据源通过Extract和Load方式加载到仓库中的数据,可以使用dbt中的sources组件进行定义和描述。通过在dbt中将这些数据集(表)声...
- docker compose 常用命令手册_docker-compose init
-
以下是DockerCompose常用命令手册,按生命周期管理、服务运维、构建配置、扩缩容、调试工具分类,附带参数解析、示例和关键说明,覆盖多容器编排核心场景:一、生命周期管理(核心命令...
- RagFlow与DeepSeek R1本地知识库搭建详细步骤及代码实现
-
一、环境准备硬件要求独立显卡(建议NVIDIAGPU,8GB显存以上)内存16GB以上,推荐32GB(处理大规模文档时更高效)SSD硬盘(加速文档解析与检索)软件安装bash#必装组件Docker...
- Docker Compose 配置更新指南_docker-compose配置
-
高效管理容器配置变更的最佳实践方法重启范围保留数据卷适用场景docker-composeup-d变更的服务常规配置更新--force-recreate指定/所有服务强制重建down→up流程...
- 一周热门
-
-
【验证码逆向专栏】vaptcha 手势验证码逆向分析
-
Python实现人事自动打卡,再也不会被批评
-
Psutil + Flask + Pyecharts + Bootstrap 开发动态可视化系统监控
-
一个解决支持HTML/CSS/JS网页转PDF(高质量)的终极解决方案
-
再见Swagger UI 国人开源了一款超好用的 API 文档生成框架,真香
-
网页转成pdf文件的经验分享 网页转成pdf文件的经验分享怎么弄
-
C++ std::vector 简介
-
飞牛OS入门安装遇到问题,如何解决?
-
系统C盘清理:微信PC端文件清理,扩大C盘可用空间步骤
-
10款高性能NAS丨双十一必看,轻松搞定虚拟机、Docker、软路由
-
- 最近发表
- 标签列表
-
- python判断字典是否为空 (50)
- crontab每周一执行 (48)
- aes和des区别 (43)
- bash脚本和shell脚本的区别 (35)
- canvas库 (33)
- dataframe筛选满足条件的行 (35)
- gitlab日志 (33)
- lua xpcall (36)
- blob转json (33)
- python判断是否在列表中 (34)
- python html转pdf (36)
- 安装指定版本npm (37)
- idea搜索jar包内容 (33)
- css鼠标悬停出现隐藏的文字 (34)
- linux nacos启动命令 (33)
- gitlab 日志 (36)
- adb pull (37)
- python判断元素在不在列表里 (34)
- python 字典删除元素 (34)
- vscode切换git分支 (35)
- python bytes转16进制 (35)
- grep前后几行 (34)
- hashmap转list (35)
- c++ 字符串查找 (35)
- mysql刷新权限 (34)