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

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

今天给大家介绍下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. 命令如何在命令行中执行
  2. 命令在定时任务中怎么表示
  3. 执行查看结果
  4. 排错

示例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. 关闭邮件功能,定时任务执行会产生小文件
  2. 开启邮件可以解决问题,但是会影响服务器性能
  3. 对外服务器关闭邮件功能,定时任务的结果定向到空,不会产生小文件

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

  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年运维经验,持续分享运维干货,感谢大家的阅读和关注!

目录
相关文章
|
7月前
|
运维 监控 数据可视化
斩获6.1 star,再见Crontab!这款开源定时任务管理系统让运维更高效
Gocron是一款基于Go语言的轻量级定时任务调度系统,替代传统Linux Crontab。它提供可视化Web界面管理,支持秒级调度、任务依赖配置与多节点执行。核心功能包括:1) 可视化管理;2) 精确调度规则;3) 全链路任务控制;4) 多类型任务支持;5) 完善监控通知。适用于自动化运维、系统监控、数据处理及业务自动化等场景。通过三步快速上手:一键部署、添加任务节点、创建定时任务。相比Crontab和Celery,Gocron更直观高效,适合个人与企业使用。项目地址:https://github.com/ouqiang/gocron。
1230 8
|
8月前
|
运维 安全 Linux
试试Linux设备命令行运维工具——Wowkey
WowKey 是一款专为 Linux 设备设计的命令行运维工具,提供自动化、批量化、标准化、简单化的运维解决方案。它简单易用、高效集成且无依赖,仅需 WIS 指令剧本文件、APT 账号密码文件和 wowkey 命令即可操作。通过分离鉴权内容与执行内容,WowKey 让运维人员专注于决策,摆脱繁琐的交互与执行细节工作,大幅提升运维效率与质量。无论是健康检查、数据采集还是配置更新,WowKey 都能助您轻松应对大规模设备运维挑战。立即从官方资源了解更多信息:https://atsight.top/training。
|
8月前
|
数据采集 运维 安全
Linux设备命令行运维工具WowKey问答
WowKey 是一款用于 Linux 设备运维的工具,可通过命令行手动或自动执行指令剧本,实现批量、标准化操作,如健康检查、数据采集、配置更新等。它简单易用,只需编写 WIS 指令剧本和 APT 帐号密码表文件,学习成本极低。支持不同流派的 Linux 系统,如 RHEL、Debian、SUSE 等,只要使用通用 Shell 命令即可通吃Linux设备。
|
11月前
|
存储 运维 安全
深入解析操作系统控制台:阿里云Alibaba Cloud Linux(Alinux)的运维利器
本文将详细介绍阿里云的Alibaba Cloud Linux操作系统控制台的功能和优势。
365 6
|
12月前
|
Prometheus 运维 监控
Prometheus+Grafana+NodeExporter:构建出色的Linux监控解决方案,让你的运维更轻松
本文介绍如何使用 Prometheus + Grafana + Node Exporter 搭建 Linux 主机监控系统。Prometheus 负责收集和存储指标数据,Grafana 用于可视化展示,Node Exporter 则采集主机的性能数据。通过 Docker 容器化部署,简化安装配置过程。完成安装后,配置 Prometheus 抓取节点数据,并在 Grafana 中添加数据源及导入仪表盘模板,实现对 Linux 主机的全面监控。整个过程简单易行,帮助运维人员轻松掌握系统状态。
1889 3
|
监控 Unix Linux
|
运维 监控 网络协议
|
运维 监控 网络协议
运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面
本文介绍了运维工程师日常工作中最常用的20个Linux命令,涵盖文件操作、目录管理、权限设置、系统监控等方面,旨在帮助读者提高工作效率。从基本的文件查看与编辑,到高级的网络配置与安全管理,这些命令是运维工作中的必备工具。
955 3
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
907 3

热门文章

最新文章