day021-定时任务

文章目录

  • 1. cron
    • 1.1 检查是否安装
    • 1.2 检查是否开机自启动
    • 1.3 配置文件与相关命令
    • 1.4 配置文件格式
  • 2. 案例
    • 2.1 同步时间
    • 2.2 定时备份/etc和/var/log目录
    • 2.3 定时巡检脚本
  • 3. 练习三剑客过滤
    • 3.1 去重统计ip数量
    • 3.2 去重统计第7列 用户访问的url的数量
    • 3.3 去重统计第9列 状态码与数量
    • 3.4 添加条件统计指定范围,指定日期的日志情况.
    • 3.5 书写脚本自动完成上面统计
  • 4. 踩坑记录
    • 4.1 /bin和/usr/bin的关系(/sbin和/usr/sbin)?
    • 4.2 虚拟机进入紧急模式
    • 4.3 sort: 写入失败: /tmp/sort2f2zkI: 设备上没有空间
  • 5. 思维导图

1. cron

  • cron:官方定义就是 “Chronos(时间)” 的简写,与时间管理直接相关。

1.1 检查是否安装

[root@oldboy99-Kylin ~]# rpm -qa cron*
cronie-help-1.5.5-3.ky10.noarch
crontabs-help-1.11-21.ky10.noarch
cronie-1.5.5-3.ky10.x86_64
crontabs-1.11-21.ky10.noarch

1.2 检查是否开机自启动

[root@oldboy99-Kylin ~]# systemctl is-active crond.service 
active
[root@oldboy99-Kylin ~]# systemctl is-enabled crond.service 
enabled

1.3 配置文件与相关命令

  • cron的配置文件:/var/spool/cron/root
  • ubuntu中配置文件略有不同:/var/spool/cron/crontabs/root
cron命令选项说明
crontab-eedit,编辑cron配置文件
crontab-llist,显示定时任务信息

1.4 配置文件格式

任务执行时间(*(分) *(时) *(日) *(月) *(周)) 执行命令或脚本

  • 注意任务执行后的结果输出位置
  • 执行的命令要使用绝对路径
符号说明
*表示所有时间
/表示间隔时间
-表示时间范围

2. 案例

2.1 同步时间

  • 测试命令
[root@oldboy99-Ubuntu ~]# ntpdate ntp.aliyun.com
26 May 17:42:51 ntpdate[1886]: adjust time server 203.107.6.88 offset -0.000672 sec
  • 编辑定时任务
[root@oldboy99-Ubuntu ~]# crontab -l
# 同步时间
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1
  • 查看cron日志:
  • kylin中cron日志位置:/var/log/cron
  • ubuntu中cron日志位置:/var/log/syslog
[root@oldboy99-Ubuntu ~]# tail -f /var/log/syslog
May 26 17:44:42 oldboy99-Ubuntu crontab[1912]: (root) BEGIN EDIT (root)
May 26 17:45:01 oldboy99-Ubuntu cron[840]: (root) RELOAD (crontabs/root)
May 26 17:45:01 oldboy99-Ubuntu cron[840]: (root.bak) ORPHAN (no passwd entry)
May 26 17:45:04 oldboy99-Ubuntu systemd[1]: Started Session 3 of User root.
May 26 17:46:29 oldboy99-Ubuntu crontab[1912]: (root) REPLACE (root)
May 26 17:46:29 oldboy99-Ubuntu crontab[1912]: (root) END EDIT (root)
May 26 17:46:35 oldboy99-Ubuntu crontab[1989]: (root) LIST (root)
May 26 17:47:01 oldboy99-Ubuntu cron[840]: (root) RELOAD (crontabs/root)
May 26 17:47:01 oldboy99-Ubuntu cron[840]: (root.bak) ORPHAN (no passwd entry)
May 26 17:48:01 oldboy99-Ubuntu CRON[2053]: (root) CMD (/usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1)
……

2.2 定时备份/etc和/var/log目录

  • 脚本不要放在家目录,否则可能有权限故障
[root@oldboy99-Ubuntu ~]# mkdir /server/scripts -p
[root@oldboy99-Ubuntu ~]# cd /server/scripts/
[root@oldboy99-Ubuntu /server/scripts]# cat bak-conf-log.sh 
#!/bin/bash#desc:备份etc和/var/log目录
#author:孙克旭tar zcf /backup/etc-`date +%F_%w`.tar.gz /etc
tar zcf /backup/log-`date +%F_%w`.tar.gz /var/log
[root@oldboy99-Ubuntu /server/scripts]# crontab -e
crontab: installing new crontab
[root@oldboy99-Ubuntu /server/scripts]# crontab -l
# 同步时间
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1
# 备份/etc和/var/log目录
0 0 * * * /usr/bin/bash /server/scripts/bak-conf-log.sh >/dev/null 2>&1

2.3 定时巡检脚本

  • cron的不会默认输出到屏幕,需要指定输出文件
  • 获取系统的各种信息
  • 编写脚本
#!/bin/bash
#desc:巡检脚本
#author:孙克旭#主机信息
hostname=`hostname`
ip=`hostname -I`
os=`hostnamectl |awk -F ': +' '/Operating System/{print $2}'`
kernel=`hostnamectl |awk -F ': +' '/Kernel/{print $2}'`
cpu_arch=`uname -m`cat << EOF
====主机基本信息====
主机名:$hostname
ip地址:$ip
系统版本:$os
内核版本:$kernel
CPU架构:$cpu_arch
EOF#进程信息
proc_total=`top -bn1 |awk 'NR==2{print $2}'`
proc_zom=`top -bn1 |awk 'NR==2{print $(NF-1)}'`cat << EOF
====进程信息====
进程总数:$proc_total
僵尸进程数:$proc_zom
EOF
  • 写入定时任务:
[root@oldboy99-Ubuntu ~]# crontab -l
# 同步时间
*/2 * * * * /usr/sbin/ntpdate ntp.aliyun.com >/dev/null 2>&1
# 备份/etc和/var/log目录
0 0 * * * /usr/bin/bash /server/scripts/bak-conf-log.sh >/dev/null 2>&1
# 定时执行巡检脚本
0 0 * * * /bin/bash /server/scripts/check_system.sh >>/server/scripts/check_system.log 2>&1

3. 练习三剑客过滤

  • 企业生产环境日志,压缩包500mb左右,解压后5gb左右,1000w行.
  1. 去重统计ip数量
  2. 去重统计第7列 用户访问的url的数量
  3. 去重统计第9列 状态码与数量.
  4. 添加条件统计指定范围,指定日期的日志情况.
  5. 书写脚本自动完成上面统计.

3.1 去重统计ip数量

# 解压压缩包
[root@oldboy99-Kylin ~/oldboy]# tar xf 1000w-oldboy-lidao996-access.log.tar.xz 
# 去重统计ip数量
[root@oldboy99-Kylin ~/oldboy]# awk '{print $1}' 1000w-oldboy-lidao996-access.log |sort |uniq -c |sort -k1nr |head185611 220.181.51.57185542 220.181.51.4197735 220.181.51.5896784 220.181.51.4267199 61.135.165.3666686 61.135.165.466686 61.135.169.566679 61.135.165.4266650 61.135.165.3966541 61.135.169.6

3.2 去重统计第7列 用户访问的url的数量

[root@oldboy99-Kylin ~/oldboy]# TMPDIR=./tmp/ awk '{print $7}' 1000w-oldboy-lidao996-access.log |sort -T ./tmp/ |uniq -c |sort -k1nr -T ./tmp/ |head -521696 /favicon.ico1192 /446 /recv.cm.php?_fbnVsbCxMRy9VODEyMC92MS4w65 /new/images/grey.gif54 /new/css/css.css

3.3 去重统计第9列 状态码与数量

[root@oldboy99-Kylin ~/oldboy]# TMPDIR=./tmp/ awk '{print $9}' 1000w-oldboy-lidao996-access.log |sort -T ./tmp/ |uniq -c |sort -k1nr -T ./tmp/ |head -5
5042786 302
4902220 20022541 40418193 49913464 502

3.4 添加条件统计指定范围,指定日期的日志情况.

[root@oldboy99-Kylin ~/oldboy]# sed -n '/16:30:00/,/16:32:00/p' 1000w-oldboy-lidao996-access.log |wc -l
23454

3.5 书写脚本自动完成上面统计

[root@oldboy99-Kylin /server/scripts]# cat test.sh
#!/bin/bash
#desc:练习三剑客
#author:孙克旭# 变量
log="/root/oldboy/1000w-oldboy-lidao996-access.log"
tmp="/root/oldboy/tmp"# 去重统计ip数量
echo "去重统计ip数量:"
awk '{print $1}' $log |sort |uniq -c |sort -k1nr |head# 去重统计第7列 url数量
echo "去重统计url数量:"
TMPDIR=$tmp awk '{print $7}' $log |sort -T $tmp |uniq -c |sort -k1nr -T $tmp |head -5# 去重统计第9列 状态码数量
echo "去重统计状态码数量:"
TMPDIR=$tmp awk '{print $9}' $log |sort -T $tmp |uniq -c |sort -k1nr -T $tmp |head -5# 统计指定日期范围的数据
echo "统计指定范围的数据:"
sed -n '/16:30:00/,/16:32:00/p' $log |wc -l
[root@oldboy99-Kylin /server/scripts]# bash test.sh 
去重统计ip数量:185611 220.181.51.57185542 220.181.51.4197735 220.181.51.5896784 220.181.51.4267199 61.135.165.3666686 61.135.165.466686 61.135.169.566679 61.135.165.4266650 61.135.165.3966541 61.135.169.6
去重统计url数量:21696 /favicon.ico1192 /446 /recv.cm.php?_fbnVsbCxMRy9VODEyMC92MS4w65 /new/images/grey.gif54 /new/css/css.css
去重统计状态码数量:
5042786 302
4902220 20022541 40418193 49913464 502
统计指定范围的数据:
23454

4. 踩坑记录

4.1 /bin和/usr/bin的关系(/sbin和/usr/sbin)?

  • 硬链接,可以看到inode值相同
[root@oldboy99-Kylin /bin]# ll -d /bin/ /usr/bin/ -i
201326747 dr-xr-xr-x 2 root root 45056  526 10:35 /bin/
201326747 dr-xr-xr-x 2 root root 45056  526 10:35 /usr/bin/
[root@oldboy99-Kylin ~]# ll -di /sbin/ /usr/sbin/
135 dr-xr-xr-x 2 root root 20480  526 10:35 /sbin/
135 dr-xr-xr-x 2 root root 20480  526 10:35 /usr/sbin/
  • ubuntu与kylin不同,是软链接
[root@oldboy99-Ubuntu ~]# ll -di /bin /usr/bin/12 lrwxrwxrwx 1 root root     7 Feb 17  2024 /bin -> usr/bin/
1703938 drwxr-xr-x 2 root root 36864 May 13 16:04 /usr/bin//
[root@oldboy99-Ubuntu ~]# ll -di /sbin /usr/sbin/17 lrwxrwxrwx 1 root root     8 Feb 17  2024 /sbin -> usr/sbin/
1703947 drwxr-xr-x 2 root root 20480 May 13 15:51 /usr/sbin//

4.2 虚拟机进入紧急模式

  • 一开始认为是百度网盘自动备份虚拟机,导致虚拟机查找文件出现故障,后来一看虚拟机目录,未发现有百度网盘相关文件
  • 查看下/etc/fstab
  • 之前把一个硬盘删除了,系统中的硬盘名称发生了改变

在这里插入图片描述

在这里插入图片描述

  • 将硬盘名改正即可

4.3 sort: 写入失败: /tmp/sort2f2zkI: 设备上没有空间

  • sort -T /path/to/tmpdir:指定 sort 的临时文件目录
  • TMPDIR 环境变量:控制临时目录位置

5. 思维导图

【金山文档】 思维导图 https://www.kdocs.cn/l/co3I7PtpTYQX

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/diannao/84616.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于(stream)流

Stream 是 Java 8 引入的一个强大的功能&#xff0c;用于处理集合&#xff08;Collection&#xff09;或数组中的数据。它提供了一种声明式的编程方式&#xff0c;可以极大地简化对数据的操作&#xff0c;例如过滤、排序、映射和聚合等。 1. 什么是 Stream 流&#xff1f; 定义…

结课作业自选01. 内核空间 MPU6050 体感鼠标驱动程序(二)(完整实现流程)

目录 一. 题目要求-内核空间 MPU6050 体感鼠标驱动程序 二. 伪代码及程序运行流程 三. 主要函数详解&#xff08;根据代码流程进行详解&#xff09; 3.1 module_i2c_driver宏&#xff08;对应“1”&#xff09; 3.2 mpu_of_match设备树匹配表&#xff08;对应“2”&#x…

5G 核心网切换机制全解析:XN、N2 与移动性注册对比

摘要 本文深入探讨了 5G 核心网中的三种关键切换方式:基于 XN 接口的切换、基于 N2 接口的切换以及移动性注册更新机制。通过对比分析它们的原理、应用场景和技术差异,帮助读者全面理解 5G 网络中用户移动性管理的核心技术。 1. 引言 随着 5G 技术的广泛应用,用户对网络连…

用深度学习提升DOM解析——自动提取页面关键区块

一、时间轴&#xff1a;一次“抓不到重点”的二手车数据爬虫事故 2025/03/18 09:00 产品经理希望抓取懂车帝平台上“北京地区二手车报价”作为竞品监测数据源。我们初步使用传统XPath方案&#xff0c;试图提取车型、年限、里程、价格等数据。2025/03/18 10:00 初版脚本运行失败…

React与Vue的内置指令对比

React 与 Vue 不同&#xff0c;它没有内置的模板指令系统。React 采用了 JavaScript 优先 的声明式方式&#xff0c;使用 JSX 语法将 HTML 和 JavaScript 结合在一起。因此&#xff0c;React 中没有类似 Vue 的 v-if、v-for、v-bind 等内置指令。 React 中的替代方案 条件渲染…

Spring声明式事务源码全链路剖析与设计模式深度解读

Spring声明式事务源码全链路剖析与设计模式深度解读 作者&#xff1a;AI 日期&#xff1a;2025-05-22 一、前言 Spring事务是企业级开发的基石&#xff0c;但“为什么有时事务失效&#xff1f;”、“不同传播行为背后发生了什么&#xff1f;”、“Spring事务源码到底如何实现&…

云原生安全基础:深入探讨容器化环境中的权限隔离与加固策略

&#x1f525;「炎码工坊」技术弹药已装填&#xff01; 点击关注 → 解锁工业级干货【工具实测|项目避坑|源码燃烧指南】 在云原生环境中&#xff0c;容器化技术&#xff08;如 Docker 和 Kubernetes&#xff09;的广泛应用带来了灵活性与效率&#xff0c;但也引入了新的安全挑…

如何在 ONLYOFFICE 演示文稿中调整段落首行缩进

在制作演示文稿时&#xff0c;保持内容的一致性与可读性至关重要&#xff0c;而段落首行缩进作为格式设置的关键环节&#xff0c;直接影响着整体呈现效果。在本文中&#xff0c;我们将介绍如何通过创建 ONLYOFFICE 宏&#xff0c;快速设置演示文稿中所有段落的首行缩进。 关于 …

[Asp.Net]GridView、Repeater 导出Excel长数字显示成科学计数

类似身份证纯数字的格式时 &#xff0c;excel默认是数字格式 变成了科学计数法 &#xff0c; GridView:RowDataBound 添加e.Row.Cells[2].Attributes.Add(“style”, “vnd.ms-excel.numberformat:;”); protected void GridView1_RowDataBound(object sender, GridViewRowE…

Ntfs!NtfsReadBootSector函数分析之nt!CcGetVacbMiss中得到一个nt!_VACB结构

第一部分&#xff1a; 1: kd> g Breakpoint 3 hit nt!CcGetVacbMiss: 80a1a19e 6a30 push 30h 1: kd> kc # 00 nt!CcGetVacbMiss 01 nt!CcGetVirtualAddress 02 nt!CcMapData 03 Ntfs!NtfsMapStream 04 Ntfs!NtfsReadBootSector Ntfs…

Linux10正式版发布,拥抱AI了!

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 作者&#xff1a;IT邦德 中国DBA联盟(ACDU)成员&#xff0c;10余年DBA工作经验 Oracle、PostgreSQL ACE CSDN博客专家及B站知名UP主&#xff0c;全网粉丝10万 擅长主流Oracle、MySQL、PG、高斯…

关于 SSE(Server-Sent Events)过程的简要解剖

Js前端&#xff1a;发送普通请求 fetch(...) .then(()>{}) .catch(()>{})Java后端&#xff1a;接收请求后调用请求处理函数&#xff0c;函数返回一个emiiter对象 public SseEmitter handleRequest(...) {// 创建一个 SseEmitter 对象&#xff0c;用于发送 SSE 事件SseE…

PyTorch 中unsqueeze(-1)用法

unsqueeze(-1) 是 PyTorch 中的一个张量操作&#xff0c;用于‌在指定维度上增加一个长度为1的维度‌&#xff08;即扩展维度&#xff09;。具体解析如下&#xff1a; 功能说明 ‌作用位置‌ -1 表示在张量的‌最后一个维度‌后添加新维度。 &#xff08;等价于 dimlen(tensor.…

RTC技术

什么是RTC RTC&#xff08;Real time communication&#xff09;实时通信&#xff0c;是实时音视频的一个简称&#xff0c;我们常说的RTC技术一般指的是WebRTC技术&#xff0c;已经被 W3C 和 IETF 发布为正式标准。由于几乎所有主流浏览器都支持 WebRTC 标准 API &#xff0c;…

vue+cesium示例:3Dtiles三维模型高度调整(附源码下载)

接到一位知识星友的邀请&#xff0c;实现他需要3Dtiles三维模型的简单高度调整需求&#xff0c;适合学习Cesium与前端框架结合开发3D可视化项目。 demo源码运行环境以及配置 运行环境&#xff1a;依赖Node安装环境&#xff0c;demo本地Node版本:推荐v18。 运行工具&#xff1a;…

详解3DGS

4 可微分的3D高斯 splatting 核心目标与表示选择 我们的目标是从无法线的稀疏SfM点出发&#xff0c;优化出一种能够实现高质量新视角合成的场景表示。为此&#xff0c;我们选择3D高斯作为基本图元&#xff0c;它兼具可微分的体表示特性和非结构化的显式表示优势&#xff0c;既…

构建版本没mac上传APP方法

在苹果开发者的app store connect上架Ios应用的时候&#xff0c;发现需要使用xode等软件来上传iOS的APP。 但是不管是xcode也好&#xff0c;transporter也好&#xff0c;还是命令行工具也好&#xff0c;都必须安装在mac电脑才能使用&#xff0c;。 假如没有mac电脑&#xff0…

Gitee PPM:智能化项目管理如何重塑软件工厂的未来格局

在数字化转型浪潮席卷全球的当下&#xff0c;软件开发行业正经历着前所未有的变革。随着企业项目复杂度呈指数级增长&#xff0c;传统项目管理方式已难以应对多项目并行、跨团队协作等挑战。Gitee项目组合管理&#xff08;PPM&#xff09;作为新一代智能化项目管理解决方案&…

node入门:安装和npm使用

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、安装npm命令nvm 前言 因为学习vue接触的&#xff0c;一直以为node是和vue绑定的&#xff0c;还以为vue跑起来必须要node&#xff0c;后续发现并不是。 看…

单例模式,饿汉式,懒汉式,在java和spring中的体现

目录 饿汉式单例模式 懒汉式单例模式 Spring中的单例模式 关键差异对比 在Java和Spring中的应用场景 手写案例 单例模式是一种创建型设计模式&#xff0c;其核心在于确保一个类仅有一个实例&#xff0c;并提供一个全局访问点来获取该实例。下面将详细介绍饿汉式和懒汉式…