目前已经更新完《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. T-SQL, Part I: LIKE Pattern

    The basic usage of LIKE pattern: %: it would be placed at the end and/or the beginning of a string. ...

  2. [WPF] Caliburn Micro学习三 Binding

    Caliburn Micro学习一 Installation Caliburn Micro学习二 Infrastructure 如果说WPF推崇的Binding开辟了一条UI开发新的方式——让写代码的 ...

  3. nyoj 51-管闲事的小明(遍历,比较)

    51-管闲事的小明 内存限制:64MB 时间限制:4000ms Special Judge: No accepted:9 submit:20 题目描述: 某校大门外长度为L的马路上有一排树,每两棵相邻 ...

  4. javescript 的 对象

    一,定义:对象是JavaScript的一个基本数据类型,是一种复合值,它将很多值(原始值或者其他对象)聚合在一起,可通过名字(name/作为属性名)访问这些值.即属性的无序集合. 关键是name属性名 ...

  5. windows anaconda python3.7 import ssl,psycopg2报错

    使用anaconda,本来是为了减少装第三方模块依赖出错问题的. 但是,今天发现,也是有坑啊. 首先 import ssl 报错,import _ssl 说DLL load failed 解决办法:用 ...

  6. goland_beego框架学习--api实现

    goland_beego框架学习--api实现 完成一项api实现的流程 (1)beego框架的router层里面注册路由 正则路由 为了用户更加方便的路由设置,beego 参考了 sinatra 的 ...

  7. 使用OpenMP加快OpenCV图像处理性能 | speed up opencv image processing with openmp

    本文首发于个人博客https://kezunlin.me/post/7a6ba82e/,欢迎阅读! speed up opencv image processing with openmp Serie ...

  8. 学习完vue指令 做的一个学生信息录入系统

    一.demo实现原理 输入完个人信息后  点击创建用户  数据就会显示在下面的表格中 用到了vue中的数据双向绑定 v-model v-for 还要js正则 数组的unshift splice 等方法 ...

  9. Hadoop运行模式

    Hadoop运行模式 (1)本地模式(默认模式): 不需要启用单独进程,直接可以运行,测试和开发时使用. 即在一台机器上进行操作,仅为单机版. 本地运行Hadoop官方MapReduce案例 操作命令 ...

  10. Java流程控制之(一)条件

    目录 条件语句 单if情况 单if/else情况 if/else多分支情况 switch条件语句 条件语句+循环语句,直接甩图甩代码! 条件语句 Java希望在某个条件为真时执行相应的语句. 单if情 ...