linux定时任务crontab 周期执行任务
1. crontab主要作用
比如我们每天需要清空日志记录文件,我们可以执行一段指令去完成,每天都需要手动输入就比较麻烦,让系统每天去帮我们完成就比较轻松了,
根据你自己的定义 可以定位到月 日 时 分 星期 ,
以前有个很有名的病毒 '黑色星期五'
每到了周五就发作,计划任务和它一样的道理,只不过没有破坏性,
2. 如何添加crontab 定时任务
方式一:
]# crontab –e
# 每天早上5点运行 /root/bin/backup.sh
0 5 * * * /root/bin/backup.sh
方式二(不常用):
]# vi /etc/crontab
# 每天早上5点运行 /root/bin/backup.sh
0 5 * * * /root/bin/backup.sh
3. 计划任务,crontab命令选项:
* * * * * command
minute hour day month week command
分 时 日 月 星期 命令
0-59 0-23 1-31 1-12 0-6 command `
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
Crontab 选项
以下是 crontab 的有效选项:
crontab -u : 指定一个用户。
crontab –e : 修改 crontab 文件. 如果文件不存在会自动创建。
crontab –l : 显示 crontab 文件。 列出某个用户的任务计划,
crontab -r : 删除 crontab 文件。列出某个用户的任务计划,
crontab -ir : 删除 crontab 文件前提醒用户。
4. cron文件语法:
可用crontab -e命令来编辑,编辑的是/var/spool/cron下对应用户的cron文件,也可以直接修改/etc/crontab文件
"*"代表取值范围内的数字,
"/"代表"每",
"-"代表从某个数字到某个数字,
","分开几个离散的数字
举例如下:
5 * * * * ls /*指定每小时的第5分钟执行一次ls命令*/
30 5 * * * ls /*指定每天的 5:30 执行ls命令*/
30 7 8 * * ls /*指定每月8号的7:30分执行ls命令*/
50 7 * * * root run-parts /etc/cron.daily /*每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件*/
每五分钟执行 */5 * * * *
每小时执行 0 * * * *
每天执行 0 0 * * *
每周执行 0 0 * * 0
每月执行 0 0 1 * *
每年执行 0 0 1 1 *
5. 查看计划任务
查看调度任务
crontab -l //列出当前的所有调度任务
crontab -l -u jp //列出用户jp的所有调度任务
实例1:
(1)在当前家目录下创建shell脚本123.sh(实现排序)如下
#!/bin/bash
arr=(1 5 4 5 6 7 0)
for (( i=0 ; i<${#arr[@]} ; i++ ))
do
for (( j=${#arr[@]} - 1 ; j>i ; j-- ))
do
#echo $j
if [[ ${arr[j]} -lt ${arr[j-1]} ]]
then
t=${arr[j]}
arr[j]=${arr[j-1]}
arr[j-1]=$t
fi
done
done
echo "排序后:"
echo ${arr[@]}
(2)输入crontab -e 添加计划任务(不指定用户就是当前用户)
第一次会让你选择编译器,如果选错编译器了要更改编译器 输入 select-editor 重新选择
ubuntu截图用shift+PrintScreen 选择 ’复制到剪切板‘ 就可以了
我选的是vim ,看个人习惯
(3)在文本最后输入我们要执行的shell脚本命令
* * * * * 代表每分钟执行一次
按esc 输入:wq 保存退出
(4)重启cron服务:
service cron restart
(5)查看结果
用户家目录下查看任务有没有执行,如果执行了应该是有pa.txt文件的(任务有重定向到文件)
查看文件内容
如果你要周期执行python脚本,你只需要把脚本写好,然后将cron那里的执行命令写成 python3 脚本目录文件名就可以
比如 :
* * * * * python3 ~/hello.py > 123.txt
总结:
linux中将一个脚本文件作为一个计划任务小结,以python脚本为例:
1 创建脚本文件test.py,在文件开头需要加上下面一行
#!/usr/bin/python
上面这行的作用是说明使用那个解释器来执行该文件,如果不知道python解释器在哪,可以使用命令which python来查看
2 给该文件添加可执行的权限
chmod +x test.py
3 添加计划任务
crontab -e
在文件中追加一行,*/2 * * * * /usr/bin/python /home/pc/work/ENV/project/test.py
保存退出,:wq
4 重启cron服务
service cron restart
常用命令:
cron的配置文件称为“crontab”,是“cron table”的简写
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看服务状态
要把cron设为在开机的时候自动启动,在 /etc/rc.d/rc.local 脚本中加入 /sbin/service crond start 即可
查看当前用户的crontab,输入 crontab -l;
编辑crontab,输入 crontab -e;
删除crontab,输入 crontab -r
查看crontab运行状态
service crond status
crontab踩坑(二):Unit crond.service could not be found.
这是因为Ubuntu上的服务名称是cron不是crond。所以你的命令应该是:
sudo service cron start
6. 示例
# 在 12:01 a.m 运行,即每天凌晨过一分钟。这是一个恰当的进行备份的时间,因为此时系统负载不大。
1 0 * * * /root/bin/backup.sh
# 每个工作日(Mon – Fri) 11:59 p.m 都进行备份作业。
59 11 * * 1,2,3,4,5 /root/bin/backup.sh
# 下面例子与上面的例子效果一样:
59 11 * * 1-5 /root/bin/backup.sh
# 每5分钟运行一次命令
*/5 * * * * /root/bin/check-status.sh
# 每个月的第一天 1:10 p.m 运行
10 13 1 * * /root/bin/full-backup.sh
# 每个工作日 11 p.m 运行。
0 23 * * 1-5 /root/bin/incremental-backup.sh
# 每隔一分钟执行一次脚本 /opt/bin/test-cron.sh
*/1 * * * * root /opt/bin/test-cron.sh
# 每周六、周日的3点10分执行hello程序。
10 3 * * 0,6 hello
# 从周四到周六的4点15分执行hello程序。
15 4 * * 4-6 hello
# 每周日凌晨4点,更新系统
0 4 * * 0 root emerge --sync && emerge -uD world
#每月1号凌晨2点,清理/tmp下的文件
0 2 1 * * root rm -f /tmp/*
#每年5月6日给robin发信祝他生日快乐
0 8 6 5 * root mail robin < /home/galeki/happy.txt
假如,我想每隔2分钟就要执行某个命令,或者我想在每天的6点、12点、18点执行命令,诸如此类的周期,可以通过 “ / ” 和 “ , ” 来设置:
# 每两分钟就执行
*/2 * * * * hello
# 每天6点、12点、18点执行hello
0 6,12,18 * * * hello
# 晚上11点到早上8点之间每两个小时,早上八点执行一个命令
0 23-7/2,8 * * * echo "have a good dream:)" >> /tmp/test.txt
# 每个月的4号与每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * 1-3 command line
# 每晚的21:30重启apache。
30 21 * * * /usr/local/etc/rc.d/lighttpd restart
# 每月1、10、22日的4 : 45重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
# 每周六、周日的1 : 10重启apache
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
# 每天18 : 00至23 : 00之间每隔30分钟重启apache。
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
# 每一小时重启apache
* */1 * * * /usr/local/etc/rc.d/lighttpd restart
# 晚上11点到早上7点之间,每隔一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
# 在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
# 周一到周五每天下午 5:00 寄一封信给
0 17 * * 1-5 mail -s "hi" < /tmp/maildata
# 每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
# 每天早上6点10分
10 6 * * * date
# 每两个小时
0 */2 * * * date
# 晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
# 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
# 1月份日早上4点
0 4 1 jan * date
linux定时任务crontab 周期执行任务的更多相关文章
- linux定时任务crontab怎样执行root命令
在/var/spool/cron/文件夹下放置了所有定时任务文件, 1.运行crontab -u $用户名 -e会显示$用户的所有定时任务: 2.运行sudo crontab -e会显示root用户所 ...
- 如何让linux定时任务crontab按秒执行
如何让linux定时任务crontab按秒执行? linux定时任务crontab最小执行时间单位为分钟如果想以秒为单位执行,应该如何设置呢?思路 正常情况是在crontab中直接定义要执行的任务,现 ...
- Linux使用crontab定时执行Python脚本清理日志
Linux中,周期执行的任务一般由crond这个守护进程来处理.cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间.crond的配置文件称为"crontab", ...
- 【转帖】Linux定时任务Crontab命令详解
Linux定时任务Crontab命令详解 https://www.cnblogs.com/intval/p/5763929.html 知道有crontab 以及 at 命令 改天仔细学习一下 讲sys ...
- Linux定时任务Crontab命令详解_转
转自:Linux定时任务Crontab命令详解 (部分修改) linux 定时系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工作,因此这个系统服 ...
- linux定时任务crontab的设置
linux定时任务crontab的设置http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html vi /etc/cronta ...
- Linux中crontab无法执行java程序的问题
Linux中crontab无法执行java程序的问题 jdk环境变量配置问题:可以用全路径来解决: 竟然是kill -9之后,后面的脚本都不运行,这个还没有找到原因啊: 即便是系统级别的 ls 命令, ...
- Linux定时任务Crontab执行PHP脚本
http://blog.chinaunix.net/uid-7552018-id-182133.html crontab执行php脚本 http://www.jb51.net/article/2913 ...
- shell 之 用linux定时任务crontab和watchdog.sh脚本做软件看门狗
1.简介 看门狗的作用是定期检测服务正常运行,如果发现服务不在了,会重新拉起服务:linux中可以利用系统的定时任务功能crontab定期的去执行watchdog.sh脚本,而watchdog.sh脚 ...
- Linux 定时任务 Crontab命令 详解
前言 crontab是Unix和Linux用于设置周期性被执行的指令,是互联网很常用的技术,很多任务都会设置在crontab循环执行,如果不使用crontab,那么任务就是常驻程序,这对你的程序要求比 ...
随机推荐
- KingbaseES错误unsupported for database link处理
KingbaseES使用dblink查询报错:unsupported for database link 适用于: KingbaseES所有版本. 问题现象: KingbaseES创建kingbase ...
- 程序员必备上传服务器Xftp及连接服务器工具Xshell
1.下面截图为破解工具,点击执行就可以用了 压缩包放云盘了,私信我即可 (不知道咋上传,有点尴尬Q.Q)
- HMS Core分析服务智能运营,“智能时机”上线,轻松提升Push点击
对于运营者来说,消息推送一直是提升用户活跃与转化的重要工具,如何在提升转化的情况下,同时不降低用户的接受程度,这一直是运营不断追求的目标. 好的推送不只在于优质的推送内容,还需要把握合适的时机.在合适 ...
- 部署javaweb项目到阿里云ecs(centos7)
阿里云文档 https://help.aliyun.com/document_detail/51376.html?spm=5176.12901015.0.i12901015.af8f525cCPi8Q ...
- HarmonyOS应用开发Web组件基本属性应用和事件
一.Web组件概述 Web组件用于在应用程序中显示Web页面内容,为开发者提供页面加载.页面交互.页面调试等能力. ● 页面加载:Web组件提供基础的前端页面加载的能力,包括加载网络页面.本地页面 ...
- allure常用
overview:概述页面:categories:分类目录:suites:按套件和类分组的已执行测试的标准结构:graphs:图表:timeline:时间线:behaviors:可根据epic.fea ...
- 解决跨域问题之fetch的使用
一.介绍 fetch 提供了一个获取资源的接口 (包括跨域). fetch 的核心主要包括:Request , Response , Header , Body 利用了请求的异步特性 --- 它是基于 ...
- LRU缓存及其实现
缓存是我们日常开发中来提高性能最直接的方式,经常会听到有人说:性能不行?是因为你没加缓存!常见的缓存有外部缓存服务以及程序内部缓存,外部缓存服务包括:Redis.Memcached等,内部缓存就是我们 ...
- 使用ollama + AnythingLLM快速且简单的在本地部署llm3
使用ollama + AnythingLLM快速且简单的在本地部署llm3 不多说,直接开始 一.安装ollama ollama官网:https://ollama.com/ 下载地址:https:// ...
- HarmonyOS NEXT应用开发案例—自定义日历选择器
介绍 本示例介绍通过CustomDialogController类显示自定义日历选择器. 效果图预览 使用说明 加载完成后显示主界面,点当前日期后会弹出日历选择器,选择日期后会关闭弹窗,主页面日期会变 ...