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 rm命令误操作的多场景防护方案与实践

《防止Linuxrm命令误操作的多场景防护方案与实践》在Linux系统中,rm命令是删除文件和目录的高效工具,但一旦误操作,如执行rm-rf/或rm-rf/*,极易导致系统数据灾难,本文针对不同场景... 目录引言理解 rm 命令及误操作风险rm 命令基础常见误操作案例防护方案使用 rm编程 别名及安全删除

Linux下MySQL数据库定时备份脚本与Crontab配置教学

《Linux下MySQL数据库定时备份脚本与Crontab配置教学》在生产环境中,数据库是核心资产之一,定期备份数据库可以有效防止意外数据丢失,本文将分享一份MySQL定时备份脚本,并讲解如何通过cr... 目录备份脚本详解脚本功能说明授权与可执行权限使用 Crontab 定时执行编辑 Crontab添加定

C++统计函数执行时间的最佳实践

《C++统计函数执行时间的最佳实践》在软件开发过程中,性能分析是优化程序的重要环节,了解函数的执行时间分布对于识别性能瓶颈至关重要,本文将分享一个C++函数执行时间统计工具,希望对大家有所帮助... 目录前言工具特性核心设计1. 数据结构设计2. 单例模式管理器3. RAII自动计时使用方法基本用法高级用法

使用docker搭建嵌入式Linux开发环境

《使用docker搭建嵌入式Linux开发环境》本文主要介绍了使用docker搭建嵌入式Linux开发环境,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录1、前言2、安装docker3、编写容器管理脚本4、创建容器1、前言在日常开发全志、rk等不同

Java实现远程执行Shell指令

《Java实现远程执行Shell指令》文章介绍使用JSch在SpringBoot项目中实现远程Shell操作,涵盖环境配置、依赖引入及工具类编写,详解分号和双与号执行多指令的区别... 目录软硬件环境说明编写执行Shell指令的工具类总结jsch(Java Secure Channel)是SSH2的一个纯J

SpringBoot集成XXL-JOB实现任务管理全流程

《SpringBoot集成XXL-JOB实现任务管理全流程》XXL-JOB是一款轻量级分布式任务调度平台,功能丰富、界面简洁、易于扩展,本文介绍如何通过SpringBoot项目,使用RestTempl... 目录一、前言二、项目结构简述三、Maven 依赖四、Controller 代码详解五、Service

linux系统上安装JDK8全过程

《linux系统上安装JDK8全过程》文章介绍安装JDK的必要性及Linux下JDK8的安装步骤,包括卸载旧版本、下载解压、配置环境变量等,强调开发需JDK,运行可选JRE,现JDK已集成JRE... 目录为什么要安装jdk?1.查看linux系统是否有自带的jdk:2.下载jdk压缩包2.解压3.配置环境

Linux搭建ftp服务器的步骤

《Linux搭建ftp服务器的步骤》本文给大家分享Linux搭建ftp服务器的步骤,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录ftp搭建1:下载vsftpd工具2:下载客户端工具3:进入配置文件目录vsftpd.conf配置文件4:

python 线程池顺序执行的方法实现

《python线程池顺序执行的方法实现》在Python中,线程池默认是并发执行任务的,但若需要实现任务的顺序执行,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋... 目录方案一:强制单线程(伪顺序执行)方案二:按提交顺序获取结果方案三:任务间依赖控制方案四:队列顺序消

Linux实现查看某一端口是否开放

《Linux实现查看某一端口是否开放》文章介绍了三种检查端口6379是否开放的方法:通过lsof查看进程占用,用netstat区分TCP/UDP监听状态,以及用telnet测试远程连接可达性... 目录1、使用lsof 命令来查看端口是否开放2、使用netstat 命令来查看端口是否开放3、使用telnet