上海古都建筑设计集团,上海办公室装修设计公司,上海装修公司高质量的内容分享社区,上海装修公司我们不是内容生产者,我们只是上海办公室装修设计公司内容的搬运工平台

【Linux-Ubuntu】定时任务 cron 详解

guduadmin311月前

theme: channing-cyan

痛苦的年假

去年年假,我身处家中,但工作却未停歇。由于公司业务需要,我需要经常连接到测试服务器,确保一切运转良好。然而,远程控制桌面软件的卡顿和电脑稳定性成了我不得不面对的问题。

在这种情况下,我决定尝试一种新的解决方案:内网穿透。这样,公司的小伙伴们也能通过SSH连接到测试服务器,而不用担心我的电脑问题或远程桌面卡顿的困扰。

然而,新问题接踵而至。测试服务器并非高可用(其实就是几台旧电脑),性能还不如我在家中使用的电脑。谁也不能保证它不会出现卡顿或关机的情况。这就给了我一个新的挑战:如何保证测试服务器的高可用性,尤其是在我不在公司的时候?

为了确保一个宁静而不被打扰的年假,我决定给测试机配置一个定时任务。每天凌晨,服务器会自动关机,然后重启,重新开启内网穿透和运行所有项目。这样一来,我就可以强行保证测试服务器的高可用性,而不必担心在年假期间出现任何问题。

如何配置内网穿透?

请参考 【Linux-Ubuntu】内网穿透工具 FRP (Fast Reverse Proxy)

如何让 Linux 执行定时任务呢?

这就说到重点了,接下来我会一步一步的带着大家配置和使用Linux-Ubuntu中一个非常强大的定时任务管理器 corn。

首先我们的环境是

  • Linux Ubuntu 20.04.2 LTS x86_64

    我们要使用的计划任务cron

    1. 什么是 cron?

    cron 是一种后台服务,其名称源自"Chronos"(希腊语中的时间之神)。它允许用户在特定的时间、日期或时间间隔内运行特定的命令,从而实现计划任务的自动化执行。cron 为系统管理员和开发人员提供了方便的方式,让任务按照既定的计划自动完成。

    2. cron的工作原理

    cron 依赖于 crontab 文件,该文件包含了用户定义的计划任务列表。这些任务将按照用户指定的时间表执行。crontab 文件可以包含多个任务,每个任务都在文件的一行中描述,并遵循特定的时间格式。

    3. cron的时间格式

    crontab 文件的时间字段由五个星号组成:

    * * * * *  task
    
    • 第一个 * 代表分钟(0-59)
    • 第二个 * 代表小时(0-23)
    • 第三个 * 代表日期(1-31)
    • 第四个 * 代表月份(1-12)
    • 第五个 * 代表星期几(0-6,0 表示星期天)

      这些星号可以使用特定的数字或通配符来表示时间。例如,* 表示 “每一个”,*/2 表示 “每隔 2”。

      说了这么多 cron应该如何安装呢?

      在大多数基于 Debian 或 Ubuntu 的 Linux 系统上,cron 已经默认安装。

      你可以通过以下方法来检查 cron 是否安装在系统上:

      sudo service cron status
      

      或者使用 systemctl:

      sudo systemctl status cron
      

      如果 cron 未安装,你可以使用以下命令安装:

      sudo apt-get update 
      sudo apt-get install cron
      

      cron重启

      sudo service cron restart
      

      或者

      sudo systemctl restart cron
      

      cron应该如何使用呢?

      1、编辑用户的 crontab

      使用下面的命令来编辑当前用户的 crontab:

      crontab -e
      

      这会打开一个文本编辑器,你可以在其中添加定时任务。

      2、添加定时任务

      crontab 文件的每一行都表示一个定时任务,其格式如下:

      * * * * *  task
      
      • 第一个 * 代表分钟(0-59)
      • 第二个 * 代表小时(0-23)
      • 第三个 * 代表日期(1-31)
      • 第四个 * 代表月份(1-12)
      • 第五个 * 代表星期几(0-6,0 为星期天)
      • * 可以用来表示 “每一个”,例如:
      • * 表示 “每一个”,在分钟字段上表示每分钟。
      • */2 表示 “每隔 2”,在分钟字段上表示每两分钟。
      • task 实际命令或脚本

        例如,在每天凌晨 2 点执行一个脚本:

        0 2 * * * /path/to/your/script.sh
        

        3、定时任务的输出 & 捕获异常

        如果你想要捕获任务的输出,可以将输出重定向到文件。例如:

        0 2 * * * /path/to/your/script.sh > /path/to/logfile.log 2>&1
        

        这将把脚本的标准输出和标准错误都追加到指定的日志文件中。

        4、查看现有的定时任务

        使用以下命令可以查看当前用户的所有定时任务:

        crontab -l
        

        5、移除所有的定时任务:

        使用以下命令可以删除当前用户的所有定时任务:

        crontab -r
        

        觉得作者写的不错的,值得你们借鉴的话,就请点一个免费的赞吧!这个对我来说真的很重要。૮(˶ᵔ ᵕ ᵔ˶)ა

网友评论

搜索
最新文章
热门文章
热门标签
 
 周公解梦梦见狗咬人  着床成功下面会流清水状吗  周公解梦大全梦见牙齿掉了