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,那么任务就是常驻程序,这对你的程序要求比 ...
随机推荐
- C 语言用户输入详解:scanf、fgets、内存地址解析及实用指南
C 语言中的用户输入 您已经学习了 printf() 函数用于在 C 语言中输出值. 要获取用户输入,可以使用 scanf() 函数: // 声明一个整数变量,用于存储我们从用户那里获得的数字 int ...
- C++ 多线程编程和同步机制:详解和实例演示
C++中的多线程编程和同步机制使得程序员可以利用计算机的多核心来提高程序的运行效率和性能.本文将介绍多线程编程和同步机制的基本概念和使用方法. 多线程编程基础 在C++中,使用<thread&g ...
- 详讲openGauss 5.0 单点企业版如何部署_Centos7_x86
本文分享自华为云社区<openGauss 5.0 单点企业版部署_Centos7_x86>,本文作者:董小姐 本文档环境:CentOS7.9 x86_64 4G1C40G python2. ...
- 千字干货分享:一文教你ABI增强分析,BI的未来就在这里!
自2017年以来,智能概念开始出现,各类商业智能BI应用的使用门槛逐渐降低,商业智能BI制造商主要竞争增强分析的能力.<2020年Gartner分析与BI平台魔法象限报告>指出,2020年 ...
- Excel 分组后计算
分组后的计算都类似,仍然采用 groups 函数,分组并同时计算出各洲的 GDP 总量,然后再求一遍各洲的 GDP 总量占全球 GDP 的百分比值. SPL 代码如下: A B 1 =clipbo ...
- docker 应用篇————es[八]
前言 简单介绍一下es镜像. 正文 首先安装一下: elasticSearch. 启动一下: 然后就可以访问了. 使用一下docker stats 然后你就发现了这个docker 容器启动的时候要1. ...
- CF1995E Long Inversions(贪心 + 差分)
见代码 点击查看代码 //背景:夸一下自己,CF1955A~E均是自己想出来的,这道题思路是自己想的,唯一没想到用差分数组维护 //原理:贪心(想最左边的1开始,不可能对其左边包括自己操作了,否则又要 ...
- 力扣495(java)-提莫攻击(简单)
题目: 在<英雄联盟>的世界中,有一个叫 "提莫" 的英雄,他的攻击可以让敌方英雄艾希(编者注:寒冰射手)进入中毒状态.现在,给出提莫对艾希的攻击时间序列和提莫攻击的中 ...
- 传统 Web 框架部署与迁移
简介: 与其说 Serverless 架构是一个新的概念,不如说它是一种全新的思路,一种新的编程范式. 与其说 Serverless 架构是一个新的概念,不如说它是一种全新的思路,一种新的编程范式. ...
- 21克:仅需3天,我们就用Quick BI搭建起数据驾驶舱
简介:数智化并不仅仅是大型企业才需要去思考的课题,而是摆在所有企业面前的一个可选项.借助Quick BI搭建的数据分析体系,21克实现了销售.财务.供应链等多部门业务的数据化支撑,从一份份本地化的E ...