Linux基础 - Crontab定时任务
目前已经更新完《Java并发编程》,《Docker教程》和《JVM性能优化》,欢迎关注【后端精进之路】,轻松阅读全部文章。
Java并发编程:
- Java并发编程系列-(1) 并发编程基础
- Java并发编程系列-(2) 线程的并发工具类
- Java并发编程系列-(3) 原子操作与CAS
- Java并发编程系列-(4) 显式锁与AQS
- Java并发编程系列-(5) Java并发容器
- Java并发编程系列-(6) Java线程池
- Java并发编程系列-(7) Java线程安全
- Java并发编程系列-(8) JMM和底层实现原理
- Java并发编程系列-(9) JDK 8/9/10中的并发
Docker教程:
JVM性能优化:
在Linux上,通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
设置Cron任务
创建任务
可以通过如下指令来创建或者修改你自己的crontab文件,
crontab -e
设置运行周期
cron job是周期性运行的,我们按如下格式来进行设置,
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
当然有更简单的方法,你可以在 https://crontab.guru/ 网站进行在线设置,设置好了直接拷贝过来。网页提供了图形化的操作界面,对新手特别友好。

配置命令
直接在运行周期后面输入想要运行的任务即可。
这样就配置好了,最好是设置一个最近的时间进行测试,测试正常后就可以换到真实的周期了。
注意到编辑命令的时候,可能使用到nano编辑器,记住保存的快捷键是Ctrl+X,保存好了直接退出,cron任务会自动安装好,不需要额外的重启操作。
常见问题
如何列出所有的Cron任务
可以使用-l参数列出crontab文件:
$ crontab -l
0 15 30 45 18-06 * * * /bin/echo `date` > dev/tty1
如何查看Cron任务运行log
可以在系统log中进行查找,
tail -f /var/log/syslog | grep CRON
如何配置带有虚拟venv的Python脚本
在Python开发过程中,可能使用virtualenv进行环境的配置,来隔离真实环境,防止污染。在这种情况下,如果想成功在Cron Job中运行开发好的Python脚本,推荐使用shell脚本的方式,将运行的脚本进行封装,如下例子所示:
#! /bin/bash
cd my/virtual/env/root/dir
source bin/activate
# virtualenv is now active, which means your PATH has been modified.
# Don't try to run python from /usr/bin/python, just run "python" and
# let the PATH figure out which version to run (based on what your
# virtualenv has configured).
python myScript.py
保存好以后,比如为myShell.sh, 使用chmod指令赋予可执行权限即可,
chmod a+x myShell.sh
最后将shell脚本放在cron配置中即可,
1 * * * * /path/to/your/shell/script/myShell.sh
如何在Cron 任务中发送邮件通知
第一步,设置邮件地址、端口等信息:
https://www.nixtutor.com/linux/send-mail-with-gmail-and-ssmtp/
第二步,在Cron任务中加上发送邮件的指令,
1 * * * * script.sh | mail -s "Subject of Mail" someother@address.com
参考链接:
- https://stackoverflow.com/questions/4150671/how-to-set-virtualenv-for-a-crontab/12848443
- https://www.nixtutor.com/linux/sending-email-alerts-through-cron/
在Linux上,通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。这个命令非常适合周期性的日志分析或数据备份等工作。
设置Cron任务
创建任务
可以通过如下指令来创建或者修改你自己的crontab文件,
crontab -e
设置运行周期
cron job是周期性运行的,我们按如下格式来进行设置,
* * * * * command to be executed
- - - - -
| | | | |
| | | | ----- Day of week (0 - 7) (Sunday=0 or 7)
| | | ------- Month (1 - 12)
| | --------- Day of month (1 - 31)
| ----------- Hour (0 - 23)
------------- Minute (0 - 59)
当然有更简单的方法,你可以在 https://crontab.guru/ 网站进行在线设置,设置好了直接拷贝过来。网页提供了图形化的操作界面,对新手特别友好。

配置命令
直接在运行周期后面输入想要运行的任务即可。
这样就配置好了,最好是设置一个最近的时间进行测试,测试正常后就可以换到真实的周期了。
注意到编辑命令的时候,可能使用到nano编辑器,记住保存的快捷键是Ctrl+X,保存好了直接退出,cron任务会自动安装好,不需要额外的重启操作。
常见问题
如何列出所有的Cron任务
可以使用-l参数列出crontab文件:
$ crontab -l
0 15 30 45 18-06 * * * /bin/echo `date` > dev/tty1
如何查看Cron任务运行log
可以在系统log中进行查找,
tail -f /var/log/syslog | grep CRON
如何配置带有虚拟venv的Python脚本
在Python开发过程中,可能使用virtualenv进行环境的配置,来隔离真实环境,防止污染。在这种情况下,如果想成功在Cron Job中运行开发好的Python脚本,推荐使用shell脚本的方式,将运行的脚本进行封装,如下例子所示:
#! /bin/bash
cd my/virtual/env/root/dir
source bin/activate
# virtualenv is now active, which means your PATH has been modified.
# Don't try to run python from /usr/bin/python, just run "python" and
# let the PATH figure out which version to run (based on what your
# virtualenv has configured).
python myScript.py
保存好以后,比如为myShell.sh, 使用chmod指令赋予可执行权限即可,
chmod a+x myShell.sh
最后将shell脚本放在cron配置中即可,
1 * * * * /path/to/your/shell/script/myShell.sh
如何在Cron 任务中发送邮件通知
第一步,设置邮件地址、端口等信息:
https://www.nixtutor.com/linux/send-mail-with-gmail-and-ssmtp/
第二步,在Cron任务中加上发送邮件的指令,
1 * * * * script.sh | mail -s "Subject of Mail" someother@address.com
参考链接:
- https://stackoverflow.com/questions/4150671/how-to-set-virtualenv-for-a-crontab/12848443
- https://www.nixtutor.com/linux/sending-email-alerts-through-cron/
本文由『后端精进之路』原创,首发于博客 http://teckee.github.io/ , 转载请注明出处
搜索『后端精进之路』关注公众号,立刻获取最新文章和价值2000元的BATJ精品面试课程。
Linux基础 - Crontab定时任务的更多相关文章
- linux的crontab定时任务命令
linux的crontab定时任务命令 cron是一个linux下的定时执行工具. 启动.停止.重启.重新载入配置/sbin/service crond start|stop|restart|relo ...
- linux ( crontab 定时任务命令)
linux ( crontab 定时任务命令) crontab 定时任务命令 linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工 ...
- Linux下Crontab定时任务的使用教程 以及 无法执行定时任务的解决方案
前言 本文学习思路:Linux的corntab定时任务的使用教程 --> 定时任务无效的解决方案 Linux的corntab定时任务的使用教程 1. 首先,输入命令 打开crontab定时 ...
- Linux基础 - crontab
列出当前用户设置的定时任务 crontab -l 编辑定时任务 crontab -e 用法 m h dom mon dow * * * * * command 字段详解: *:any m: minut ...
- linux,crontab定时任务中为脚本指定使用参数,crontab的脚本中是否可以带参数
需求描述: 今天在写脚本的时候,脚本的运行需要给出几个参数,那么就考虑 在crontab写定时任务的时候,是否也是能够在脚本中,增加参数呢, 因为以前没有这么用过,所以呢,就进行一次测试. 测试过程: ...
- Linux之crontab定时任务
****crontab简介**** 简而言之呢,crontab就是一个自定义定时器. ****crontab配置文件**** 其一:/var/spool/cron/ 该目录下存放的是每个用户(包括ro ...
- 《前端运维》一、Linux基础--10定时任务
一.进程管理 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体 ...
- 【Linux】crontab 定时任务
7月份,公司海外运营国发生数据库联接未释放,造成连接池连接不足的情况, 当时查询并没有及时解决问题, 为了避免现场同事多次人工重启系统的,因此写了个shell脚本,通过crontab 实现系统重启,但 ...
- linux添加crontab定时任务
1.crontab -e命令进入linux定时任务编辑界面,举个简单的例子,比如我要定时往txt文件写入 */ * * * * .txt */1就是每隔一分钟像文件写入,其他一些详细的操作大家可以去网 ...
随机推荐
- [复现论文程序图]High Speed Continuous Variable Source-Independent Quantum Random Number Generation
这次的任务是复现该文章的图2(C),过程如下. ①翻译了整篇文章,断断续续,花了3-4天时间. ②阅读文章,并且记录下每个符号的意义,记在单独的1个word文档里. ③开始编程,用的matlab201 ...
- nyoj 115-城市平乱 (BFS)
115-城市平乱 内存限制:64MB 时间限制:1000ms 特判: No 通过数:5 提交数:8 难度:4 题目描述: 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维 ...
- Bootstrap——面包屑导航(Breadcrumbs)
面包屑导航(Breadcrumbs)是一种基于网站层次信息的显示方式. Bootstrap 中的面包屑导航(Breadcrumbs)是一个简单的带有 .breadcrumb 类的无序列表. <o ...
- 京东物流出问题了?褥了30块羊毛 & 浅析系统架构
本人亲身经历,但后续的流程分析都是个人猜测的,毕竟没有实际做过这块的业务. 订单物流阻塞经过 火热的双11刚刚退去,截止今日,我在京东购买的矿泉水终于到货啦,下单两箱还只收到了一箱 :( ,从下单到收 ...
- ArcGIS Server10.4安装教程
准备内容 安装环境:win10*64位专业版 安装文件:ArcGIS_Server_Ent_Windows_1041_150998.iso 破解文件:Lic10.4.1.ecp #安装Server前, ...
- 20191010-9 alpha week 1/2 Scrum立会报告+燃尽图 07
此作业要求参见https://edu.cnblogs.com/campus/nenu/2019fall/homework/8752 一.小组情况 队名:扛把子 组长:迟俊文 组员:宋晓丽 梁梦瑶 韩昊 ...
- Java基础面试题及答案(六)
异常 74. throw 和 throws 的区别? throws是用来声明一个方法可能抛出的所有异常信息,throws是将异常声明但是不处理,而是将异常往上传,谁调用我就交给谁处理.而throw则是 ...
- Streams:深入理解Redis5.0新特性
概述 相较于Redis4.0,Redis5.0增加了很多新的特性,而streams是其中最重要的特性之一.streams是redis 的一种基本数据结构,它是一个新的强大的支持多播的可持久化的消息队列 ...
- Git实战指南----跟着haibiscuit学Git(第一篇)
笔名: haibiscuit 博客园: https://www.cnblogs.com/haibiscuit/ Git地址: https://github.com/haibiscuit?tab=re ...
- 是谁,在敲打我窗-CSS雨滴动画效果
1.扯闲篇 是谁在敲打我窗 是谁在撩动琴弦 那一段被遗忘的时光 渐渐地回升出我心坎 是谁在敲打我窗 是谁在撩动琴弦 记忆中那欢乐的情景 慢慢地浮现在我的脑海 那缓缓飘落的小雨 不停地打在我 ...
