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

痛苦的年假

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

在这种情况下,我决定尝试一种新的解决方案:内网穿透。这样,公司的小伙伴们也能通过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 文件的时间字段由五个星号组成:

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

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

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

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

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

bash 复制代码
sudo service cron status

或者使用 systemctl

bash 复制代码
sudo systemctl status cron

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

bash 复制代码
sudo apt-get update 
sudo apt-get install cron

cron重启

bash 复制代码
sudo service cron restart

或者

bash 复制代码
sudo systemctl restart cron

cron应该如何使用呢?

1、编辑用户的 crontab

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

bash 复制代码
crontab -e

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

2、添加定时任务

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

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

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

bash 复制代码
0 2 * * * /path/to/your/script.sh

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

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

bash 复制代码
0 2 * * * /path/to/your/script.sh > /path/to/logfile.log 2>&1

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

4、查看现有的定时任务

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

bash 复制代码
crontab -l

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

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

bash 复制代码
crontab -r

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

相关推荐
Elias不吃糖11 分钟前
第四天学习总结:C++ 文件系统 × Linux 自动化 × Makefile 工程化
linux·c++·学习
噜啦噜啦嘞好11 分钟前
Linux进程信号
linux·运维·服务器
REDcker1 小时前
Linux 进程资源占用分析指南
linux·运维·chrome
samroom1 小时前
Linux系统管理与常用命令详解
linux·运维·服务器
一叶之秋14122 小时前
Linux基本指令
linux·运维·服务器
码割机2 小时前
Linux服务器安装jdk和maven详解
java·linux·maven
亚林瓜子2 小时前
在amazon linux 2023上面源码手动安装tesseract5.5.1
linux·运维·服务器·ocr·aws·ec2
爱学习的大牛1232 小时前
Ubuntu 24.04 安装 FreeSWITCH 完整教程
linux·freeswitch
go_bai2 小时前
Linux--进程池
linux·c++·经验分享·笔记·学习方法
人工智能训练3 小时前
在ubuntu系统中如何将docker安装在指定目录
linux·运维·服务器·人工智能·ubuntu·docker·ai编程