Linux学习笔记-Ubuntu下使用Crontab设置定时任务

这篇具有很好参考价值的文章主要介绍了Linux学习笔记-Ubuntu下使用Crontab设置定时任务。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

白衣沽酒绮罗生
百代繁华一朝都,谁非过客;千秋明月吹角寒,花是主人。
ubuntu crontab,# Ubuntu,linux,学习,笔记

一、概述

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρνο),原意是时间。
通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。
通过Crontab我们可以设置按照按照固定的周期执行某一些操作。
测试用Ubuntu系统信息:

Ubuntu 22.04.3 LTS (GNU/Linux 5.15.0-83-generic x86_64)

二、基于crontab的设置

2.1 基本命令说明

crontab [-u username] filepath
crontab [-u username] [-l|-e|-r]
  • -u:此参数为root账户用于给其他用户设置周期任务使用,仅root账户可用;
  • -e:编辑crontab的内容;
  • -l:查看crontab的内容;
  • -r:移除所有crontab的内容,若紧要移除其中一项,需要使用-e进行编辑;
  • filepath:通过文件路径指定要定期致性的文件,建议使用绝对路径。

2.2 使用-e指令编辑命令

2.2.1 进入编辑模式

zero@ubuntu:/etc$ crontab -e		# 直接使用-e指令编辑信息
no crontab for zero - using an empty one		# 初次使用提示当前没有信息

Select an editor.  To change later, run 'select-editor'.		# 要求选择默认的编辑器
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 2		# 我选了了2
crontab: installing new crontab
zero@ubuntu:/etc$

设置完之后会自动打开编辑器用于编辑指令,可以看到基本的提示内容:
ubuntu crontab,# Ubuntu,linux,学习,笔记
这是vim编辑界面,编辑完成后“:wq”就可以保存退出了。

2.2.2 指令信息格式

crontab的工作内容包括6个字段,5个时间参数以及一个指令:

字段 分钟 小时 日期 月份 指令
数字范围 0-59 0-23 1-31 1-12 0-7 具体的指令

特殊字符和注意信息:

  • 周的数字代表的是星期几,0和7都代表星期天;
  • *(星号):型号标识任何的意思,就是无论什么数值都符合条件;
  • ,(逗号):标识分割时段的意思,如3,6标识的是3和6都可以;
  • -(减号):代表一定的范围段,包头尾,如3-5,标识3,4,5都可以;
  • */n(斜线):标识间隔,即间隔n致性一次,如分钟设置为*/5或者0-59/5就是标识每个5分钟执行一次。

2.2.4 开启日志

ubuntu默认没有开启crontab的日志,需要手动开启日志。
通过配置rsyslog,启用crontab的日志。

1) 修改rsyslog配置文件
# 注意修改日志配置文件需要使用root权限。
zero@ubuntu:/var/log$ sudo vim /etc/rsyslog.d/50-default.conf

去掉cron日志行签名的星号,然后“:wq”保存退出。

cron.* /var/log/cron.log 

ubuntu crontab,# Ubuntu,linux,学习,笔记

2) 重启rsyslog

使用service命令重启rsyslog服务。

zero@ubuntu:/var/log$ service rsyslog restart
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'rsyslog.service'.
Authenticating as: Zero (zero)
Password:
==== AUTHENTICATION COMPLETE ===
3) 查看日志

重启之后,crontab有操作时,会发现文件中出现了日志文件。
ubuntu crontab,# Ubuntu,linux,学习,笔记

使用tail查看日志

zero@ubuntu:/var/log$ tail /var/log/cron.log
Nov 22 03:10:01 ubuntu CRON[2030]: (root) CMD (test -e /run/systemd/system || SERVICE_MODE=1 /sbin/e2scrub_all -A -r)
Nov 22 03:10:13 ubuntu crontab[2036]: (root) BEGIN EDIT (root)
Nov 22 03:10:25 ubuntu crontab[2036]: (root) REPLACE (root)
Nov 22 03:10:25 ubuntu crontab[2036]: (root) END EDIT (root)

2.2.3 设置后之后重启服务

设置完指令之后需要重启crontab服务才能正常执行任务。

zero@ubuntu:/mnt$ service cron restart		# 重启服务的指令
==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to restart 'cron.service'.
Authenticating as: Zero (zero)
Password:
==== AUTHENTICATION COMPLETE ===
zero@ubuntu:/mnt$

**注:**亦可以通过service查看状态:

zero@ubuntu:/mnt$ service cron status
● cron.service - Regular background program processing daemon
	 #                                                 开机自启动
     Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
     # 状态:运行中
     Active: active (running) since Tue 2023-11-21 02:59:00 UTC; 22h ago
       Docs: man:cron(8)
   Main PID: 861 (cron)
      Tasks: 1 (limit: 4516)
     Memory: 500.0K
        CPU: 491ms
     CGroup: /system.slice/cron.service
             └─861 /usr/sbin/cron -f -P

Nov 22 01:12:01 ubuntu CRON[2819]: (CRON) info (No MTA installed, discarding output)
Nov 22 01:12:01 ubuntu CRON[2819]: pam_unix(cron:session): session closed for user zero
Nov 22 01:13:01 ubuntu CRON[2829]: pam_unix(cron:session): session opened for user zero(uid=1000) by (uid=0)
Nov 22 01:13:01 ubuntu CRON[2830]: (zero) CMD (sudo cat "test" >> /mnt/test.txt)
Nov 22 01:13:01 ubuntu CRON[2829]: (CRON) info (No MTA installed, discarding output)
Nov 22 01:13:01 ubuntu CRON[2829]: pam_unix(cron:session): session closed for user zero
Nov 22 01:14:01 ubuntu CRON[2832]: pam_unix(cron:session): session opened for user zero(uid=1000) by (uid=0)
Nov 22 01:14:01 ubuntu CRON[2833]: (zero) CMD (sudo cat "test" >> /mnt/test.txt)
Nov 22 01:14:01 ubuntu CRON[2832]: (CRON) info (No MTA installed, discarding output)
Nov 22 01:14:01 ubuntu CRON[2832]: pam_unix(cron:session): session closed for user zero

三、示例

3.1 每隔一分钟往文件中日期

# m h  dom mon dow   command
*/1 * * * * date >> /tmp/test.txt

几分钟之后查看文件结果如下:

zero@ubuntu:/tmp$ cat test.txt
Wed Nov 22 02:19:01 AM UTC 2023
Wed Nov 22 02:20:01 AM UTC 2023
Wed Nov 22 02:21:01 AM UTC 2023
Wed Nov 22 02:22:01 AM UTC 2023
Wed Nov 22 02:23:02 AM UTC 2023
Wed Nov 22 02:24:01 AM UTC 2023
Wed Nov 22 02:25:01 AM UTC 2023
Wed Nov 22 02:26:01 AM UTC 2023
Wed Nov 22 02:27:01 AM UTC 2023
Wed Nov 22 02:28:01 AM UTC 2023

**注:**所操作的文件需要具有权限。

3.2 使用-l查看任务列表

使用-l可以直接查看具体的任务,注意任务是按照用户划分的,不同用户查看具有不一样的结果:
这是默认用户查看:

zero@ubuntu:/tmp$ crontab -l
40 10 * * * sudo shutdown -h now

这是以管理员权限查看:

zero@ubuntu:/tmp$ sudo crontab -l
# m h  dom mon dow   command

管理员是空的。

3.3 使用-r删除所有任务

使用-r参数会删除crontab中的所有的任务清单。
删除后再次查看就会提示没有任何任务。

zero@ubuntu:/tmp$ crontab -r
zero@ubuntu:/tmp$ crontab -l
no crontab for zero

3.4 设置定时关机

关机需要使用root权限,设置时需要用sudo切换权限。

zero@ubuntu:~$ sudo crontab -l

关机指令如下:

# 分 时
  8 4 * * * shutdown -h now

总结

使用crontab可以便捷的设置定时任务,有助于执行一些定时任务,指令也可以通过脚本,这样可以一次执行多个指令并进行一些比较复杂的操作。文章来源地址https://www.toymoban.com/news/detail-761244.html

到了这里,关于Linux学习笔记-Ubuntu下使用Crontab设置定时任务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux】Linux中Crontab(定时任务)命令详解及使用教程

    Crontab介绍: Linux crontab是用来crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρ?νο?),原意是时间。通常,crontab储存的指令被守护

    2024年02月08日
    浏览(49)
  • ubuntu环境下开启定时任务crontab

    在工程化过程中遇到一个需求,需要在ubuntu环境下开启一个定时任务,定时执行sh脚本,下面参考网上的解决方案记录如下。 linux中crontab命令用于设置周期性被执行的指令,该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 可以使用

    2024年02月09日
    浏览(61)
  • Crontab定时任务运行Docker容器(Ubuntu 20)

    对于一些离线预测任务,或者D+1天的预测任务,可以简单地采用Crontab做定时调用项目代码运行项目 Crontab简介: Linux crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取

    2024年02月11日
    浏览(38)
  • 【Linux】crontab 定时任务

    当你需要在Linux系统中定期执行某些任务时,crontab(cron table)是一个非常有用的工具。它允许你根据预定的时间表创建和管理定时任务。 按照进程的功能和运行的程序分类,进程可划分为两大类。 系统进程 :可以执行 内存资源分配和进程切换等 管理工作;而且,该进程的

    2024年02月10日
    浏览(55)
  • Linux 定时任务调度(crontab)

    Crontab命令用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。 可以使用Crontab定时处理离线任务,比如每天凌晨2点更新数据等,经常用于系统任务调度。 一般Linux系统中都会装有Crontab,如果没有安装可以使

    2024年02月07日
    浏览(74)
  • Linux Crontab命令定时任务

    1,crontab:是Linux,unix的定时任务,需要系统安装crontab程序,存储的指定被守护进程crond激活,每分钟去检查一次需要执行的job, 2,新创建的cron任务,不会马上执行,至少要过 2 分钟后才可以,可以重启 cron 来马上执行。 3,检查是否安装crontab: rpm -qa | grep crontab 4,全局配置文

    2024年02月16日
    浏览(51)
  • Linux crontab命令定时任务详解

            crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件,与Windows下的计划任务类似。当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程。crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任

    2024年02月04日
    浏览(40)
  • Linux通过crontab定时执行脚本任务

    在Linux中可以使用crontab来定时执行脚本。crontab是一个用于管理定时任务的工具,可以让在特定的时间间隔内自动运行脚本或命令。 需求 : 在Linux中每分钟写入一条信息到指定文件中,使用 cron 来定期执行一个写入命令或脚本 首先,在 home 目录下创建一个名为 testscript.sh 的脚

    2024年02月17日
    浏览(50)
  • linux-crontab每分钟定时执行/定时任务调度

    本文讲解linux上如何调用定时任务,如每分钟打印日志,每日24点执行日志切割脚本等等。 在Linux系统中,crontab命令是一个用于执行定时任务的命令, crond(crontab)是系统默认自带的定时服务 。我们可以通过编辑crontab文件来设置定时任务,使系统可以自动按照设定的时间和频率

    2024年02月06日
    浏览(58)
  • celery笔记七之周期/定时任务及crontab定义

    本文首发于公众号:Hunter后端 原文链接:celery笔记七之周期/定时任务及crontab定义 periodic task,即为周期,或者定时任务,比如说每天晚上零点零分需要运行一遍某个函数,或者每隔半小时运行一遍该函数,都是这种任务的范畴。 在第一篇笔记的时候我们就介绍过 celery 的组

    2024年02月10日
    浏览(30)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包