linux服务器ubuntu定时任务cron设置每秒执行

 更新时间:2024年02月04日 14:58:35   作者:莫忘初心丶  
这篇文章主要介绍了linux服务器ubuntu定时任务cron设置每秒执行,使用 cron 时,有一些注意事项可以帮助你确保任务按预期执行,并减少潜在的问题,本文给大家介绍的非常详细,需要的朋友参考下吧

前言

后端的同学经常会遇到在服务器做一些定时脚本处理,比如定时清理日志,定时请求某个接口做特殊的业务处理,大多数linux版本都会带cron服务,以ubuntu服务器做个示例。

一、cron介绍

cron 是一个在 Unix-like 操作系统中用于定时执行任务的工具。它是 “Chronos”(希腊语,意为时间)的缩写。cron 允许用户根据一定的时间间隔、日期或特定的时间点自动运行预定的任务,这些任务通常是脚本或命令。

以下是 cron 的基本概念和使用方法:

1.Cron 表达式: 用户通过编写称为 “Cron 表达式” 的字符串来指定任务的执行时间。这个表达式包含了分钟、小时、日期、月份和星期几等信息,以及需要运行的命令或脚本。Cron 表达式的格式为:

分钟(0-59) 小时(0-23) 日期(1-31) 月份(1-12) 星期几(0-6) 命令

例如,0 2 * * * /usr/bin/my_script 表示在每天凌晨 2 点执行 /usr/bin/my_script

2.用户的 Crontab 文件: 每个用户都可以有自己的 crontab 文件,用于定义该用户的定时任务。通过 crontab 命令,用户可以编辑、添加、删除自己的定时任务。

  • crontab -e:编辑当前用户的 crontab 文件。
  • crontab -l:列出当前用户的 crontab 内容。
  • crontab -r:删除当前用户的 crontab 文件。

3.系统的 Crontab 文件: 除了每个用户的 crontab 文件,系统还可以有一个全局的 crontab 文件,通常存储在 /etc/crontab/etc/cron.d/ 中。这些任务是以 root 用户的身份执行的,因此可以用于执行系统级别的任务。

4.Anacron: 有时,由于系统关机或休眠等原因,定时任务可能错过执行时间。为了解决这个问题,anacron 工具被引入,允许在系统启动时执行错过的任务。

5.日志: cron 会将执行的任务的输出信息发送到指定的用户邮件,如果任务产生输出的话。这可以通过在 crontab 文件中设置 MAILTO 变量来配置,也可以在命令行中使用 MAILTO=user@example.com

cron` 是一个强大的工具,使得在 Linux 系统上自动化任务变得简单。它在系统管理、日常维护和数据处理等方面都有广泛的应用。

二、添加定时任务进行测试

1.编写脚本

# 在/opt目录下创建一个test目录做测试
cd /opt && mkdir test && cd test 
# 创建一个sh脚本,并且添加可执行权限
touch test.sh && chmod +x ./test.sh
# 给脚本添加内容简单输出一个hello
vim test.sh
#下面这些都是加入到脚本里面的,如果对于bash脚本不熟悉的,先熟悉下bash脚本
#!/usr/bin/env bash
echo "hello"
# 调用test.sh 进行测试

2. 添加cron进行测试

# 执行crontable -e 进入定时器编辑
crontable -e
# 添加定时任务,我这里添加一个每分钟执行一次,并输出结果到test.log,方便看下是否添加成功
*/1 * * * * /opt/test/test.sh > /opt/test/test.log
# 执行:wq保存退出
:wq

执行结果

3. cron最小的到每分钟执行一次,可以通过bash脚本,添加一个循环,实现每秒,或者几秒进行对应的操作,我设置的每5秒执行一次

#!/usr/bin/env bash
step=5 #间隔秒数
for ((i = 0; i < 60; i = (i + step))); do
    # 获取当前时间
    current_time=$(date +"%Y-%m-%d %H:%M:%S")
    # 打印当前时间
    echo "当前时间是: $current_time"    
    sleep $step
done
exit 0

总结

使用 cron 时,有一些注意事项可以帮助你确保任务按预期执行,并减少潜在的问题。以下是一些建议:

  • 路径问题: cron 执行任务时可能不会设置与你的用户 shell 环境相同的环境变量。因此,确保你的脚本中使用的所有命令和文件路径都是绝对路径,或者在脚本开头设置合适的环境变量。
  • 日志记录:cron 任务中,问题可能不容易被察觉,因此要确保你的任务会记录输出。在脚本中使用 echo 或者将输出重定向到文件,以便查看任务是否执行成功,或者在出现问题时查找错误信息。
  • 用户权限: 如果 cron 任务依赖于某个用户的特权,请确保任务以正确的用户身份运行。你可以使用 sudo 或者在 crontab 文件中指定任务的用户。
  • 相对路径: 当你使用相对路径时,确保 cron 执行任务的当前工作目录是你所期望的。最好使用绝对路径,以防止不同的工作目录导致问题。
  • 安全性: 避免在 crontab 文件中设置过于频繁的任务,以免影响系统性能。此外,确保只有授权用户可以编辑 crontab 文件,以防止未经授权的修改。
  • 任务执行时间: 考虑任务执行的时间,确保它不会与系统重启、备份或其他关键任务冲突。此外,注意任务的执行频率,确保不会产生不必要的负载。
  • 环境变量: 如果你的任务依赖于特定的环境变量,最好在 crontab 文件中明确设置这些变量。这可以通过在 crontab 文件的顶部添加类似于 SHELL=/bin/bash 和其他环境变量的行来完成。
  • 注意 crontab 语法: 使用正确的 crontab 语法是非常重要的。检查你的 crontab 表达式确保它符合预期。可以使用在线的 crontab 表达式生成器来帮助创建正确的语法。
  • 重启 cron 服务: 如果你修改了 /etc/crontab 文件或者其他系统级别的 crontab 文件,可能需要重启 cron 服务以使更改生效。
  • 考虑邮件通知: 如果你希望在任务执行时收到通知,可以通过在 crontab 文件中设置 MAILTO 变量来配置邮件通知。这样,任何任务的输出都会通过邮件发送给指定的用户。

通过注意这些事项,你可以更好地管理和调试 cron 任务,确保它们按照预期执行。

到此这篇关于linux服务器ubuntu定时任务cron设置每秒执行的文章就介绍到这了,更多相关linux定时任务cron设置每秒执行内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • 深入理解Apache RocketMQ 中Message 消息的核心概念

    深入理解Apache RocketMQ 中Message 消息的核心概念

    深入理解一下Apache RocketMQ中Message(消息)这个核心概念,这份文档详细阐述了消息的定义、在模型中的位置、内部属性、约束和使用建议,感兴趣的朋友跟随小编一起学习吧
    2025-08-08
  • linux wget下载tomcat方式

    linux wget下载tomcat方式

    这篇文章主要介绍了linux wget下载tomcat方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Linux中实现开机自启动的几种常见方式及区别详解

    Linux中实现开机自启动的几种常见方式及区别详解

    在Linux中,有多个机制可以实现开机自启动,它们在不同的初始化系统(如SysVinit、systemd)下有不同的表现,以下是一些常见的自启动方法及其区别,需要的朋友可以参考下
    2025-11-11
  • 详解Centos7扩展磁盘空间(LVM管理)

    详解Centos7扩展磁盘空间(LVM管理)

    本篇文章主要介绍了详解Centos7扩展磁盘空间(LVM管理),小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-03-03
  • Linux动态加载并调用动态库(.so)实现方式

    Linux动态加载并调用动态库(.so)实现方式

    本文介绍了加载动态链接库的过程以及引用计数机制,并详细描述了头文件中相关函数的作用,还提供了编译动态库和主程序的命令,强调了链接选项的重要性
    2026-04-04
  • Linux利用lsof/extundelete工具恢复误删除的文件或目录

    Linux利用lsof/extundelete工具恢复误删除的文件或目录

    这篇文章主要给大家介绍了关于Linux利用lsof/extundelete工具恢复误删除的文件或目录的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • linux中设置nexus开机自启动的方法

    linux中设置nexus开机自启动的方法

    这篇文章主要介绍了linux中设置nexus开机自启动的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-02-02
  • Linux调试工具GDB使用简易教程

    Linux调试工具GDB使用简易教程

    这篇文章主要介绍了Linux调试工具GDB使用简易教程,小编觉得还是挺不错的,具有一定借鉴价值,需要的朋友可以参考下
    2018-01-01
  • Apache mod_rewrite实现HTTP和HTTPS重定向跳转

    Apache mod_rewrite实现HTTP和HTTPS重定向跳转

    这篇文章主要介绍了Apache mod_rewrite实现HTTP和HTTPS重定向跳转,本文分别给出了HTTP重定向HTTPS和HTTPS重定向HTTP配置参考,需要的朋友可以参考下
    2015-06-06
  • linux中xargs命令的各种使用技巧

    linux中xargs命令的各种使用技巧

    xargs是给命令传递参数的一个过滤器,也是组合多个命令的一个工具。下面这篇文章主要给大家介绍了关于linux中xargs命令用法的相关资料,需要的朋友可以参考借鉴,下面来跟着小编一起看看吧。
    2017-05-05

最新评论