目前已经更新完《Java并发编程》,《Docker教程》和《JVM性能优化》,欢迎关注【后端精进之路】,轻松阅读全部文章。

Java并发编程:

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

参考链接:

在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

参考链接:


本文由『后端精进之路』原创,首发于博客 http://teckee.github.io/ , 转载请注明出处

搜索『后端精进之路』关注公众号,立刻获取最新文章和价值2000元的BATJ精品面试课程。

Linux基础 - Crontab定时任务的更多相关文章

  1. linux的crontab定时任务命令

    linux的crontab定时任务命令 cron是一个linux下的定时执行工具. 启动.停止.重启.重新载入配置/sbin/service crond start|stop|restart|relo ...

  2. linux ( crontab 定时任务命令)

    linux ( crontab 定时任务命令)    crontab 定时任务命令 linux 系统则是由 cron (crond) 这个系统服务来控制的.Linux 系统上面原本就有非常多的计划性工 ...

  3. Linux下Crontab定时任务的使用教程 以及 无法执行定时任务的解决方案

     前言 本文学习思路:Linux的corntab定时任务的使用教程  --> 定时任务无效的解决方案  Linux的corntab定时任务的使用教程 1. 首先,输入命令 打开crontab定时 ...

  4. Linux基础 - crontab

    列出当前用户设置的定时任务 crontab -l 编辑定时任务 crontab -e 用法 m h dom mon dow * * * * * command 字段详解: *:any m: minut ...

  5. linux,crontab定时任务中为脚本指定使用参数,crontab的脚本中是否可以带参数

    需求描述: 今天在写脚本的时候,脚本的运行需要给出几个参数,那么就考虑 在crontab写定时任务的时候,是否也是能够在脚本中,增加参数呢, 因为以前没有这么用过,所以呢,就进行一次测试. 测试过程: ...

  6. Linux之crontab定时任务

    ****crontab简介**** 简而言之呢,crontab就是一个自定义定时器. ****crontab配置文件**** 其一:/var/spool/cron/ 该目录下存放的是每个用户(包括ro ...

  7. 《前端运维》一、Linux基础--10定时任务

    一.进程管理 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础.在早期面向进程设计的计算机结构中,进程是程序的基本执行实体 ...

  8. 【Linux】crontab 定时任务

    7月份,公司海外运营国发生数据库联接未释放,造成连接池连接不足的情况, 当时查询并没有及时解决问题, 为了避免现场同事多次人工重启系统的,因此写了个shell脚本,通过crontab 实现系统重启,但 ...

  9. linux添加crontab定时任务

    1.crontab -e命令进入linux定时任务编辑界面,举个简单的例子,比如我要定时往txt文件写入 */ * * * * .txt */1就是每隔一分钟像文件写入,其他一些详细的操作大家可以去网 ...

随机推荐

  1. 监听器以及在监听类里面获得bean的方法

    1实现HttpSessionListener和ServletContextListener,2个接口 2然后在contextInitialized初始化方法里面: ServletContext app ...

  2. nyoj 95-众数问题 (map)

    95-众数问题 内存限制:64MB 时间限制:3000ms 特判: No 通过数:16 提交数:29 难度:3 题目描述: 所谓众数,就是对于给定的含有N个元素的多重集合,每个元素在S中出现次数最多的 ...

  3. 利用tomcat搭建图片服务器

    今天来教大家如何使用 tomcat 来搭建一个图片的服务器 1.先将tomcat解压一份并改名 2.此时apache-tomcat-8.5.43-windows-x64-file为图片服务器 依次打开 ...

  4. 借汇编之力窥探String背后的数据结构奥秘

    熟悉C++.java.VB等编程语言的朋友都知道String(字符串),它是编程语言中表示文本的数据类型,字符串由若干字符组成的,是所有编程语⾔中⾮常重要的成员.可能很多朋友平时只是使用它,没有仔细研 ...

  5. 树莓派SSH篇

    开启好树莓派后发现一个问题,怎么才可以输入进树莓派里面呢? 一.你需要和我一样准备一个无线(有线)键盘

  6. 内核升级在线安装报错:Could not retrieve mirrorlist http://mirrors.elrepo.org/mirrors-elrepo-kernel.el7 error was14: curl#6 - "Could not resolve host: mirrors.elrepo.org; 未知的错误"

    修改网卡配置 [root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32 BOOTPROTO="none" ...

  7. 不要再造轮子了:聊一聊 JavaScript 的 URL 对象是什么?

    本文由葡萄城技术团队于博客园翻译并首发 转载请注明出处:葡萄城官网,葡萄城为开发者提供专业的开发工具.解决方案和服务,赋能开发者. 如果我们自己编写从URL中分析和提取元素的代码,那么有可能会比较痛苦 ...

  8. 使用WireMock进行更好的集成测试

    无论您是遵循传统的测试金字塔还是采用诸如"测试蜂窝"这样的较新方法,都应该在开发过程中的某个时候开始编写集成测试用例. 您可以编写不同类型的集成测试.从持久性测试开始,您可以检查组 ...

  9. zabbix自动发现 url 以及对http返回状态码监控实现 告警

    2019-06-04 18:39:12 目的:批量监控业务URL的返回状态码,通过zabbix监控判断业务好坏. 1.zabbix安装 请查看此永久链接:https://www.cnblogs.com ...

  10. FBV与CBV 及CBV源码分析

    FBV与CBV 及CBV源码分析 FBV(Function Based View) 基于函数的视图 基于函数的视图,我们一直在用没啥好讲的,就是导入模块调用函数执行业务 CBV(Class Based ...