Linux crontab 定时执行任务

2024-06-21 06:32

本文主要是介绍Linux crontab 定时执行任务,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一、crontab使用方式

crontab file [-u user]-用指定的文件替代目前的定时任务。
crontab -u user]-用标准输入替代目前的定时任务.
crontab -l [user]-列出用户目前的定时任务.
crontab -e [user]-编辑用户目前的定时任务.
crontab -d [user]-删除用户目前的定时任务.
crontab -c dir- 指定crontab的目录。

使用实例:
1、查看所有的定时任务
这里写图片描述
2、编辑当前的定时任务
这里写图片描述

二、定时任务基本格式

基本格式 :
* * * * * command
分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用或者 /1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

使用实例:

# 每天2点重启tomcat
0 2 * * * /homw/work/apache-tomcat-01/bin/restart.sh

三、crontab定时任务不执行或者执行不生效

1、定时任务未启动

首先,确认服务器是否开启定时任务计划服务。
【注:只有root用户才能对crond服务进行开启和关闭】

[root@……]# service crond status
crond is stopped
[root@……]# service crond start
Starting crond:                                            [  OK  ]
[root@……]# service crond status
crond (pid 774) is running

请确保crond状态为 is running…

2、shell语法错误

解决方法:指定shell解释器命令:SHELL=/bin/bash
例如:

# 每天2点重启tomcat
SHELL=/bin/bash
0 2 * * * /homw/work/apache-tomcat-01/bin/restart.sh

3、执行不生效,很多情况下是路径错误

如果你在crontab中使用绝对路径执行脚本,那么在脚本中引用的其他脚本也需要使用绝对路径。那么该如何避免绝对路径呢,推荐采用如下格式:

# 先进入该目录,然后在执行脚本;否则,执行脚本中的其它脚本都需要加绝对路径。
SHELL=/bin/bash
0 2 * * * /homw/work/porsche/bin/ && ./appctl.sh

可以参考:https://www.cnblogs.com/cuisi/p/6251848.html

四、查看crontab日志

crontab中的定时任务有时候没有成功执行,什么原因呢?这时就需要去日志里去分析一下了,那该如何查看crontab的日志记录呢?

  1. linux
    看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察
  2. unix
    在 /var/spool/cron/tmp文件中,有croutXXX001864的tmp文件,tail 这些文件就可以看到正在执行的任务了。
  3. mail任务
    在 /var/spool/mail/[username] 文件中,有crontab执行日志的记录,用tail -f /var/spool/mail/[username] 即可查看最近的crontab执行情况。

例如服务器下admin用户有如下的计划任务

[admin@……]$ crontab -l
0 2 * * * /homw/work/apache-tomcat-01/bin/restart.sh

关于系统的计划任务都会先在/var/log

[root@localhost ~]# cd /var/log/
[root@localhost log]# less cron
此处省略10000行……

上面的/var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息则linux会每次都发邮件到该用户下。

如上述admin的计划任务执行信息,linux会发邮件到/var/spool/mail下面

[root@localhost6 log]# cd /var/spool/mail/
[root@localhost6 mail]# less admin
此处省略10000行……

此时我们就能很好的判断crontab脚本是否执行,已经执行过程中是否正确以及一些错误的信息,希望这个可以帮助有些朋友很好的了解crontab的原理和诊断crontab的问题。

这篇关于Linux crontab 定时执行任务的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1080458

相关文章

Linux使用nload监控网络流量的方法

《Linux使用nload监控网络流量的方法》Linux中的nload命令是一个用于实时监控网络流量的工具,它提供了传入和传出流量的可视化表示,帮助用户一目了然地了解网络活动,本文给大家介绍了Linu... 目录简介安装示例用法基础用法指定网络接口限制显示特定流量类型指定刷新率设置流量速率的显示单位监控多个

ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法

《ElasticSearch+Kibana通过Docker部署到Linux服务器中操作方法》本文介绍了Elasticsearch的基本概念,包括文档和字段、索引和映射,还详细描述了如何通过Docker... 目录1、ElasticSearch概念2、ElasticSearch、Kibana和IK分词器部署

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程

Linux流媒体服务器部署流程

《Linux流媒体服务器部署流程》文章详细介绍了流媒体服务器的部署步骤,包括更新系统、安装依赖组件、编译安装Nginx和RTMP模块、配置Nginx和FFmpeg,以及测试流媒体服务器的搭建... 目录流媒体服务器部署部署安装1.更新系统2.安装依赖组件3.解压4.编译安装(添加RTMP和openssl模块

linux下多个硬盘划分到同一挂载点问题

《linux下多个硬盘划分到同一挂载点问题》在Linux系统中,将多个硬盘划分到同一挂载点需要通过逻辑卷管理(LVM)来实现,首先,需要将物理存储设备(如硬盘分区)创建为物理卷,然后,将这些物理卷组成... 目录linux下多个硬盘划分到同一挂载点需要明确的几个概念硬盘插上默认的是非lvm总结Linux下多

在MySQL执行UPDATE语句时遇到的错误1175的解决方案

《在MySQL执行UPDATE语句时遇到的错误1175的解决方案》MySQL安全更新模式(SafeUpdateMode)限制了UPDATE和DELETE操作,要求使用WHERE子句时必须基于主键或索引... mysql 中遇到的 Error Code: 1175 是由于启用了 安全更新模式(Safe Upd

linux进程D状态的解决思路分享

《linux进程D状态的解决思路分享》在Linux系统中,进程在内核模式下等待I/O完成时会进入不间断睡眠状态(D状态),这种状态下,进程无法通过普通方式被杀死,本文通过实验模拟了这种状态,并分析了如... 目录1. 问题描述2. 问题分析3. 实验模拟3.1 使用losetup创建一个卷作为pv的磁盘3.

Linux环境变量&&进程地址空间详解

《Linux环境变量&&进程地址空间详解》本文介绍了Linux环境变量、命令行参数、进程地址空间以及Linux内核进程调度队列的相关知识,环境变量是系统运行环境的参数,命令行参数用于传递给程序的参数,... 目录一、初步认识环境变量1.1常见的环境变量1.2环境变量的基本概念二、命令行参数2.1通过命令编程

Linux之进程状态&&进程优先级详解

《Linux之进程状态&&进程优先级详解》文章介绍了操作系统中进程的状态,包括运行状态、阻塞状态和挂起状态,并详细解释了Linux下进程的具体状态及其管理,此外,文章还讨论了进程的优先级、查看和修改进... 目录一、操作系统的进程状态1.1运行状态1.2阻塞状态1.3挂起二、linux下具体的状态三、进程的

Linux编译器--gcc/g++使用方式

《Linux编译器--gcc/g++使用方式》文章主要介绍了C/C++程序的编译过程,包括预编译、编译、汇编和链接四个阶段,并详细解释了每个阶段的作用和具体操作,同时,还介绍了调试和发布版本的概念... 目录一、预编译指令1.1预处理功能1.2指令1.3问题扩展二、编译(生成汇编)三、汇编(生成二进制机器语