痛苦的年假
去年年假,我身处家中,但工作却未停歇。由于公司业务需要,我需要经常连接到测试服务器,确保一切运转良好。然而,远程控制桌面软件的卡顿和电脑稳定性成了我不得不面对的问题。
在这种情况下,我决定尝试一种新的解决方案:内网穿透。这样,公司的小伙伴们也能通过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
觉得作者写的不错的,值得你们借鉴的话,就请点一个免费的赞吧!这个对我来说真的很重要。૮(˶ᵔ ᵕ ᵔ˶)ა