【运维知识基础篇】Linux定时任务

2023-11-14

今天给大家介绍下linux定时任务,定时任务无非就是在什么时间干什么命令。

首先大家要知道文件怎么配置?

定时任务一般用root执行,这里介绍crond(crontab)

crontab -e 用户定时任务 /var/spool/cron/root #有语法检查功能

vim /etc/crontab #直接编辑系统的定时任务

接下来就是怎么去写?

* * * * * root echo hehe

五颗星代表分时日月周

分0-59

时0-23 0表示凌晨12点

日1-31天

月1-12月

周0-6天,0和7都表示星期天

OK,接下来正式开始。


目录

定时任务作用

定时任务配置文件

定时任务的符号

写定时任务的流程

企业中常用案例

九大注意事项

写脚本的流程


定时任务作用

1、定时备份(重要的系统文件 系统数据 业务文件 业务数据等)

什么时间备份,在业务的低谷期备份,不同业务有不同的低谷期,大部分都是凌晨

视频:晚上8-晚上12点

小说:中午12点-凌晨1点

公司官网:上午10点-下午6点

购物:凌晨3点-凌晨5点

游戏:早上8点-早上9点

在低谷期做备份,需要tar打包压缩,打包压缩占用cpu负载是最高的,所以尽量不影响用户体验。

2、定时数据统计

3、定时辅助进程运行

4、其他作用,定时校验看是否被篡改等等

定时任务配置文件

1、系统配置文件

/etc/crontab 系统定时任务

/var/log/cron 定时任务日志

/var/spool/mail/root root的邮件信息 每执行一次就提示一次信息

一般都关闭这个,影响性能

 

/etc/cron.hourly 每小时执行一次的定时任务配置文件

/etc/cron.daily 每天执行一次的定时任务配置文件

/etc/cron.weekly 每周执行一次的定时任务配置文件

/etc/cron.monthly 每月执行一次的定时任务配置文件

/etc/cron.deny 不允许哪个用户进行定时任务

2、用户的配置文件

/var/spool/cron/root 用户定时任务 vim编辑但不支持语法检查 用crontab -e就可以检查了

crontab -e 编辑---->实际写入到/var/spool/cron/ #有语法检测的功能

crontab -l 列出定时任务

[root@VMware-koten ~]# cat /etc/crontab
SHELL=/bin/bash #解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin #定时任务命令在里面查找
MAILTO=root #出错时候将信息传递给root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- 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
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
# 分 时 日  月 周 执行用户
[root@VMware-koten ~]# 

定时任务的符号

* 表示每

*/5 表示间隔5分钟执行一次定时任务 05,10,15,20,25,30,35,40,45,50,55,00 而不是以当前时间+5

- 表示区间范围

, 表示间隔

示例1:每分钟将自己的名字写入家目录中的1.txt

写定时任务的流程

  1. 命令如何在命令行中执行

  1. 命令在定时任务中怎么表示

  1. 执行查看结果

  1. 排错

示例1:每天七点半吃早餐

30 07 * * * root echo 吃早餐 #写echo,实际当前解释器是看不到的,可以通过日志查看

示例2:每天晚上11点准时睡觉

00 23 * * * root echo 睡觉

示例3:每分钟输出自己的姓名

* * * * * root echo koten

示例4:每个小时的第5分钟执行echo koten

5 * * * * root echo koten

示例5:早上7点到上午11点执行echo koten

00 7-11 * * * root echo koten

示例6:早上7点到上午11点,下午一点到下午三点执行echo koten

00 7-11,13-15 * * * root echo koten #用逗号表示间隔

企业中常用案例

1、间隔5分钟进行时间同步

*/5 * * * * root ntpdate ntp1.aliyun.com

2、凌晨12点查找7天前的文件删除,或者备份

00 00 * * * root find /data -type f -mtime +7|xargs tar zcvf /opt/etc.tar.gz

00 00 * * * root find /data -type f -mtime +7|xargs rm

3、校验MD5值保证文件被篡改时第一时间发现并恢复业务

find /data -type f |xargs md5sum > /opt/md5.log

*/5 * * * * root md5sum -c /opt/md5.log > /opt/result.txt

其他:定时清空某个文件 定时检查程序运行

 

用户定时任务格式

crontab -e 编辑配置文件默认里面空的,实际写入到/var/spool/cron/root

* * * * * 可执行命令

crontab -l 列出用户的定时任务

 

在企业中就用一种配置方式,

要么使用系统定时任务/etc/crontab

要么使用crontab -e 两种是并行的方式,尽量选择一种使用

九大注意事项

1、使用定时任务需要按规则做好注释

 

2、两条命令以上,使用脚本的方式使用

案例:创建opt下IP地址+时间命令的目录

将/etc/hosts /etc/passwd 打包放在上面的目录

IP=`ifconfig eth0 |awk 'NR==2{print $2}'`
TIME=`date +%F`
mkdir -p /opt/${IP}_$TIME
tar zcvf /opt/${IP}_$TIME/${TIME}.tar.gz /etc/hosts /etc/passwd
find /opt/${IP}_$TIME/ -type f -mtime +7|xargs rm &>/dev/null

再写入到定时任务,先按每分钟进行测试,再调整到固定时间

 

3、在定时任务中不识别%需要加转义\% 或者将命令写到脚本里面

 

4、执行脚本尽量前面加上sh或者bash使用

/server/scripts/backup.sh 需要给脚本执行权限

sh /server/scripts/backup.sh 不需要脚本执行权限

 

5、执行脚本的结果,定时任务的结果定向到空或者文件中

在执行每条定时任务后,系统会自动给用户发送文件信息

/var/spool/mail/root 对于有用户访问的服务器会将邮件功能关闭 以减少性能损失

关闭后定时任务执行后发邮件发布出去,会生成临时的小文件

执行一行定时任务会执行一个小文件,小文件越多会导致inode不够用,无法写入数据到磁盘

 

解决问题:

  1. 关闭邮件功能,定时任务执行会产生小文件

  1. 开启邮件可以解决问题,但是会影响服务器性能

  1. 对外服务器关闭邮件功能,定时任务的结果定向到空,不会产生小文件

第二种解决方案,定时删除临时小文件

  1. 对内的服务器(测试服务器)开启也行,关闭也可以,看自己的喜好

对外服务器邮件功能关闭后

#定时任务结果重定向到空
systemctl stop postfix
* * * * * root echo hehe &>/dev/null
#定时删除小文件
#临时小文件存放目录
/var/spool/postfix/maildrop
* * * * * root rm -rf /var/spool/postfix/maildrop/*

6、避免不必要的程序及命令输出,比如tar zcf,tar zcvf,不用v

 

7、打包尽量到相对路径,一般打包都先cd,在tar ,但是当前解释器不会真的cd,而是在新的解释器下

所以不影响当前界面

 

8、定时任务的脚本中,程序尽量使用绝对路径

用户定时任务识别的PATH变量,只有/usr/bin/和/bin目录

使用crontab定义定时任务时 只去/usr/bin/和/bin下面查找任务

比如使用ntpdate就成功不了,可以去查看邮件,邮件辅助我们排查问题

解决问题:

  1. 将PATH变量写入定时任务中

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
  1. 如果变量在脚本中可以将PATH变量定义在脚本

 

9、java环境变量 data/java/bin

 

写脚本的流程

1.命令行可以执行成功

2.写入脚本,执行脚本可以执行成功

3.写入定时任务进行测试

4.排查问题(结果,postfix开启邮件,个人经验)


我是koten,10年运维经验,持续分享运维干货,感谢大家的阅读和关注!

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【运维知识基础篇】Linux定时任务 的相关文章

  • Linux 上的用户空间能否实现本机代码的抢占式多任务处理?

    我想知道是否可以在 Linux 用户空间的单个进程中实现本机代码的抢占式多任务处理 也就是说 从外部暂停一些正在运行的本机代码 保存上下文 交换到不同的上下文 然后恢复执行 所有这些都由用户空间精心安排 但使用可能进入内核的调用 我认为这可
  • 当 grep "\\" XXFile 我得到“尾随反斜杠”

    现在我想查找是否有包含 字符的行 我试过grep XXFile但它暗示 尾随反斜杠 但当我尝试时grep XXFile没关系 谁能解释一下为什么第一个案例无法运行 谢谢 区别在于 shell 处理反斜杠的方式 当你写的时候 在双引号中 sh
  • “make install”将库安装在 /usr/lib 而不是 /usr/lib64

    我正在尝试在 64 位 CentOS 7 2 上构建并安装一个库 为了这个目的我正在跑步 cmake DCMAKE BUILD TYPE Release DCMAKE INSTALL PREFIX usr DCMAKE C COMPILER
  • MySQL 中的创建/写入权限

    我的设备遇到一些权限问题SELECT INTO OUTFILE陈述 当我登录数据库并执行简单的导出命令时 例如 mysql gt select from XYZ into outfile home mropa Photos Desktop
  • 进程退出后 POSIX 名称信号量不会释放

    我正在尝试使用 POSIX 命名信号量进行跨进程同步 我注意到进程死亡或退出后 信号量仍然被系统打开 在进程 打开它 死亡或退出后是否有办法使其关闭 释放 早期的讨论在这里 当将信号量递减至零的进程崩溃时 如何恢复信号量 https sta
  • 子目录中的头文件(例如 gtk/gtk.h 与 gtk-2.0/gtk/gtk.h)

    我正在尝试使用 GTK 构建一个 hello world 其中包括以下行 include
  • 如何在c linux中收听特定接口上的广播?

    我目前可以通过执行以下操作来收听我编写的简单广播服务器 仅广播 hello int fd socket PF INET SOCK DGRAM 0 struct sockaddr in addr memset addr 0 sizeof ad
  • Windows CE 与嵌入式 Linux [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 现在我确信我们都清楚 Linux 与 Windows 桌面的相对优点 然而 我对嵌入式开发世界的了解却少得多 我主要对行业解决方案感兴
  • 如何查询X11显示分辨率?

    这似乎是一个简单的问题 但我找不到答案 如何查询 通过 X11 存在哪些监视器及其分辨率 查看显示宏 http tronche com gui x xlib display display macros html and 屏幕宏 http
  • 为什么C Clock()返回0

    我有这样的事情 clock t start end start clock something else end clock printf nClock cycles are d d n start end 我总是得到输出 时钟周期是 0
  • Capistrano 3 部署无法连接到 GitHub - 权限被拒绝(公钥)

    我使用 Capistrano v3 和 capistrano symfony gem 设置了以下部署脚本 我正在使用 Ubuntu 14 4 部署到 AWS EC2 实例 我正在连接从 AWS 下载的 pem 文件 我的deploy rb中
  • 为什么我可以在 /proc/pid/maps 输出中看到几个相同的段?

    测试在32位Linux上进行 代码如下 int foo int a int b int c a b return c int main int e 0 int d foo 1 2 printf d n d scanf d e return
  • Mcrt1.o和Scrt1.o有什么用?

    我坚持使用以下两个文件 即 Mcrt1 o 和 Scrt1 o 谁能帮我知道这两个文件的用途 如何使用它 我们以 gcrt1 o 为例 在使用 pg 选项编译进行性能测试时非常有用 谢谢 表格的文件 crt o总是 C 运行时启动代码 大部
  • Python 脚本作为 Linux 服务/守护进程

    Hallo 我试图让 python 脚本作为服务 守护进程 在 ubuntu linux 上运行 网络上存在多种解决方案 例如 http pypi python org pypi python daemon http pypi python
  • 后台分叉无法正常工作[重复]

    这个问题在这里已经有答案了 我运行这个程序 在前景和背景中 int main int pid printf App Start pid d n getpid while 1 pid fork if pid 0 printf Child n
  • vagrant ssh -c 并在连接关闭后保持后台进程运行

    我正在编写一个脚本来启动和后台流浪机器内的进程 似乎每次脚本结束和 ssh 会话结束时 后台进程也会结束 这是我正在运行的命令 vagrant ssh c cd vagrant src nohup python hello py gt he
  • 让 TeXstudio 在 linux mint 中工作:找不到文件“url.sty”。

    刚刚切换到 Linux Mint 以前的顽固 Windows 用户 我在尝试安装 TeXstudio 时遇到一些问题 Sudo apt get install texstudio 给了我一个正确的安装 至少 我是这么认为的 但是当我尝试构建
  • 捕获数据包后会发生什么?

    我一直在阅读关于网卡捕获数据包后会发生什么的内容 我读得越多 我就越困惑 首先 我读过传统上 在网卡捕获数据包后 它会被复制到内核空间中的一个内存块 然后复制到用户空间 供随后处理数据包数据的任何应用程序使用 然后我读到了 DMA 其中 N
  • 如何将后台作业的输出分配给 bash 变量?

    我想在 bash 中运行后台作业并将其结果分配给一个变量 我不喜欢使用临时文件 并且希望同时运行多个类似的后台任务 root root var echo hello world root root echo var hello world
  • linux下写入后崩溃

    如果我使用 write 将一些数据写入磁盘上的文件会发生什么 但我的应用程序在刷新之前崩溃了 如果没有系统故障 是否可以保证我的数据最终会刷新到磁盘 如果您正在使用write 并不是fwrite or std ostream write 那

随机推荐

  • JDK以及IDEA的安装和配置【JAVA学习--安装配置学习工具】

    目录 一 JDK的安装和环境配置 1 准备工作 2 配置JDK环境变量 3 验证环境配置是否成功 二 安装配置IDEA 创建项目 一 JDK的安装和环境配置 1 准备工作 在Oracal官方网站下载适合自己电脑版本的JDK 并进行安装 注意
  • Linux 查看操作系统

    转载 linux查看操作系统版本信息 这个常用 放在这里备忘 转载上面的链接 一 linux下如何查看已安装的centos版本信息 1 Linux查看当前操作系统版本信息 cat proc version Linux version 2 6
  • Oracle入门笔记(一)——环境配置及简单介绍

    Oracle环境配置及目录结构说明 1 引言 2 Oracle简介 3 Oracle版本迭代说明 4 Oracle的安装与配置 5 Oracle数据库目录介绍 6 Oracle用户说明 7 Oracle启动与关闭 8 参考文献 1 引言 害
  • 负载测试和压力测试的区别

    这两个测试都属于性能测试的一部分 我之前都一直有盲区 每次想起对于这两个概念都不是很清晰 在网上看了一篇文章后 终于有些理解了 特记录下来方便大家理解 这个是网上看到的一篇文章 如果大家还是有些不懂可以在参考一下这篇文章 我所理解的性能测试
  • tp6重定向

    引入 use think exception HttpResponseException 方法 public function redirect args throw new HttpResponseException redirect a
  • 计算机毕业设计-社区疫情防控管理系统springboot-小区疫情管理系统java代码

    计算机毕业设计 社区疫情防控管理系统springboot 小区疫情管理系统java代码 注意 该项目只展示部分功能 如需了解 评论区咨询即可 1 开发环境 开发语言 Java 架构 B S 框架 SpringBoot 前端 HTML CSS
  • Docker-容器

    容器 容器的状态用 docker contaier ls 启动容器 启动一个容器的终端 并允许交互 docker run it ubuntu 16 04 bin bash 当利用 docker run 来创建容器时 Docker 在后台运行
  • uvm message printing mechnism

    原文链接 http www sunburst design com papers CummingsSNUG2014AUS UVM Messages pdf 本文主要介绍了如何控制消息打印的等级 以及禁止消息打印等
  • 使用nginx+uwsgi+flask实现python服务的负载均衡---(2)uwsgi的安装

    0 安装uwsgi 转自官网 使用pip install uwsgi就可以 当然了也可以下载源码自己make 1 配置uwsgi uwsgi 有多种配置可用 1 ini 2 xml 3 json 4 yaml 这里我使用的ini 当然也可以
  • selenium-server-standalone selenium-server 和 selenium-java 的区别

    selenium1 0还是 seleniumRC的时候 需要启动selenium server standalone包 用来做server selenium RC通过server来给code和broswer建立通道 同时 该jar包包括我们
  • BATJ面试必会之Java IO 篇

    一 概览 二 磁盘操作 三 字节操作 实现文件复制 装饰者模式 四 字符操作 编码与解码 String 的编码方式 Reader 与 Writer 实现逐行输出文本文件的内容 五 对象操作 序列化 Serializable transien
  • DDL和DML常用语句总结

    DDL语句 常用来操作数据库 数据库表 用到的语句 create show alter drop 1 操作数据库 CRUD 1 C Create 创建 创建数据库 create database 数据库名称 创建数据库 判断不存在 再创建
  • 前端页面性能优化 - 字体加载优化

    相比于英文的字库来说 中文字库的体积非常之大 小则1M 动辄几十 M 的体积非常常见 所以在前端页面性能优化中 字体加载的优化就显得尤为重要 阅读了相关的知识和文章 在研究了市面上字体加载方案之后 我总结出了目前可行的方案 1 font s
  • 实对称矩阵的特征值求法_机器学习与线性代数 - 特殊矩阵

    在线性代数中 有一些特殊的矩阵具有易于分析和操作的特性 它们的特征向量可能具有特定的特征值或特殊关系 还有一些方法可以将一个矩阵分解成这些 更简单 的矩阵 操作复杂性的降低提高了可伸缩性 然而 即使这些矩阵都是特殊的 它们也不是罕见的 在机
  • linux创建文件软连接和硬链接详解

    前言 linux系统中链接文件仔细区分可以分为软连接 符号链接 和硬链接 软链接比硬链接应用更广泛 所以也可以认为linux链接文件就是指软链接文件 本文将会在第2部分介绍创建软链接和硬链接的基本命令 在第3部分从linux文件系统的角度出
  • 联合体union在立体几何中的妙用

    联合体union在立体几何中的妙用 为了更好地理解三维游戏编程 我开始研究了立体几何 注意 是立体解析几何 里面涉及到了很多元组 向量和矩阵的知识 虽然还有
  • 编写一个密码类,其中包含一个 str 密码字符串私有成员数据,一个“==”运算 符重载成员函数,用于比较用户输入的密码是否正确。并用数据测试该类。

    define CRT SECURE NO WARNINGS 编写一个密码类 其中包含一个 str 密码字符串私有成员数据 一个 运算 符重载成员函数 用于比较用户输入的密码是否正确 并用数据测试该类 include
  • [Python人工智能] 七.加速神经网络、激励函数和过拟合

    从本系列文章开始 作者正式开始研究Python深度学习 神经网络及人工智能相关知识 前六篇文章讲解了神经网络基础概念 Theano库的安装过程及基础用法 theano实现回归神经网络 theano实现分类神经网络 theano正规化处理 这
  • PTA L1-058 6翻了(详解)

    前言 内容包括 题目 代码实现 大致思路 代码解读 题目 666 是一种网络用语 大概是表示某人很厉害 我们很佩服的意思 最近又衍生出另一个数字 9 意思是 6翻了 实在太厉害的意思 如果你以为这就是厉害的最高境界 那就错啦 目前的最高境界
  • 【运维知识基础篇】Linux定时任务

    今天给大家介绍下linux定时任务 定时任务无非就是在什么时间干什么命令 首先大家要知道文件怎么配置 定时任务一般用root执行 这里介绍crond crontab crontab e 用户定时任务 var spool cron root