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,那么任务就是常驻程序,这对你的程序要求比 ...
随机推荐
- 鸿蒙HarmonyOS实战-ArkUI组件(Swiper)
一.Swiper 1.概述 Swiper可以实现手机.平板等移动端设备上的图片轮播效果,支持无缝轮播.自动播放.响应式布局等功能.Swiper轮播图具有使用简单.样式可定制.功能丰富.兼容性好等优点, ...
- #FFT#P4173 残缺的字符串
题目 有一个长度为 \(m\) 的字符串 \(A\) 和 一个长度为 \(n\) 的字符串 \(B\), 它们有若干位置为通配符,现在问 \(B\) 的每一个后缀是否存在前缀为 \(A\). 分析 考 ...
- #容斥,完全背包#洛谷 1450 [HAOI2008]硬币购物
题目 分析 直接多重背包应该会T掉,考虑硬币的种类比较少. 如果没有硬币数量的限制直接完全背包就可以了, 不然如果限制了硬币的数量那么第 \(d+1\) 次取这个硬币就不合法, 所以要减去 \(dp[ ...
- #高精度,模拟,vector#C 前缀
From 2020牛客NOIP赛前集训营-提高组(第二场) 传送门 分析 像我这么菜就只会模拟呀(考场CE全部爆零QWQ) 题意就是不断跳到下一个字母问总共跳的长度有多长, 首先用一个变量存下初始位置 ...
- 小师妹学JavaIO之:File文件系统
目录 简介 文件权限和文件系统 文件的创建 代码中文件的权限 总结 简介 小师妹又遇到难题了,这次的问题是有关文件的创建,文件权限和文件系统相关的问题,还好这些问题的答案都在我的脑子里面,一起来看看吧 ...
- OpenHarmony Meetup 深圳站招募令
OpenHarmony Meetup城市巡回深圳站火热来袭!! 日期:2023年10月15日14:00 地点:深圳市福田区上步路中路1003号 深圳市科学馆 与OpenHarmony技术大咖近距离 ...
- 聊聊ChatGLM3多用户并发API调用的问题
转载请备注出处:https://www.cnblogs.com/zhiyong-ITNote 背景 目前在公司内部4张A10的GPU服务器上部署了ChatGLM3开源模型:然后部署了官方默认的web_ ...
- 安装pnpm 和报错解决,亲测可行
安装pnpm 和报错解决,亲测可行 pnpm 是一款磁盘空间高效的软件包管理器. 当使用 npm 或 Yarn 时,如果你有 1000个项目,并且所有项目都有一个相同的依赖包,那么, 你在硬盘上就需要 ...
- 一个.NET开源的功能丰富、灵活易用的 Windows 窗口增强神器
前言 通常情况下 Windows 中的软件窗口界面一般只包含还原.移动.大小.最大化.最小化.关闭等几个基本的操作: 今天大姚给大家推荐一个.NET开源.免费(MIT License).功能丰富.灵活 ...
- kkfileview搭建实战
kkfileview可以与nginx搭建的文件服务器配合实现预览工作,也可以通过自身的文件系统机制免搭建nginx文件服务器来实现预览工作. nginx 创建nginx # 创建初始容器,获得容器内部 ...