目前已经更新完《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. Java升级那么快,多个版本如何灵活切换和管理?

    前言 近两年,Java 版本升级频繁,感觉刚刚掌握 Java8,写本文时,已听到 java14 的消息,无论是尝鲜新特性(Java12 中 Collectors.teeing 超强功能使用),还是由于 ...

  2. 别翻了,这篇文章绝对让你深刻理解java类的加载以及ClassLoader源码分析【JVM篇二】

    目录 1.什么是类的加载(类初始化) 2.类的生命周期 3.接口的加载过程 4.解开开篇的面试题 5.理解首次主动使用 6.类加载器 7.关于命名空间 8.JVM类加载机制 9.双亲委派模型 10.C ...

  3. Spark(一)—— 大数据处理入门

    一.Spark介绍 Apache Spark is a fast and general-purpose cluster computing system. It provides high-leve ...

  4. Oracle instant client免安装Oracle客户端配置

    不想安装几个G的完整版client,可以直接通过安装包安装的时候选择instant client,如果没有安装包,也可以直接去官网下载一个即时客户端,64位的windows包大小只有78MB左右 传送 ...

  5. PHP7中的异常与错误处理

    PHP 中的 Exception, Error, Throwable PHP 中将代码自身异常(一般是环境或者语法非法所致)称作错误 Error,将运行中出现的逻辑错误称为异常 Exception 错 ...

  6. java编程思想第四版第八章总结

    1. 多态的含义 面向对象的三大基本特征: 封装,继承,多态. 多态是干什么的? 多态将做什么和怎么做分离开.从另一个角度将接口是实现类分离开. 多态的作用 消除类型之间耦合的关系 使用多态的好处? ...

  7. linux内核的tiny rcu, tree rcu

    kernel中有两个rcu的实现,一个是tiny rcu,另一个是tree rcu.这两种rcu的前身都是classic rcu.如果要阅读classic rcu的实现代码,必须找kernel 2.6 ...

  8. PHP数组具有的特性有哪些

    PHP 的数组是一种非常强大灵活的数据类型.以下是PHP数组具有的一些特性: 1.可以使用数字或字符串作为数组键值 1 $arr = [1 => 'ok', 'one' => 'hello ...

  9. JS的DOM操作语法

    整理了一下JS的DOM操作语法,这里做下记录. <!DOCTYPE html> <html> <head> <meta charset="utf-8 ...

  10. 关于JDK源码:我想聊聊如何更高效地阅读

    简介 大家好,我是彤哥,今天我想和大家再聊聊JDK源码的几个问题: 为什么要看JDK源码 JDK源码的阅读顺序 JDK源码的阅读方法 为什么要看JDK源码 一,JDK源码是其它所有源码的基础,看懂了J ...