使用crontab设置服务器定时任务

橘子 发布于 2024-11-19 85 次阅读


如果可以偷懒就好了……那为什么不使用定时任务减少自己的工作量呢?

linux中常用的定时任务软件是crontab,这玩意一般是安装好了的,不用自己安装。可以使用如下命令查看它的状态:

sudo service cron status

常见的服务命令:

# 查看状态
sudo  service cron status
# 启动服务
sudo service cron start
# 停止服务
sudo service cron stop
# 重启服务
sudo service cron restart

查看现有任务

这功能还挺重要的,我有一个朋友——之前服务器中了挖矿病毒,就是顺着corntab的任务列表去排查的。所以快检查一下小破站有没有奇怪的定时任务吧~使用如下命令查看:

crontab -l

这里默认省去了-u参数,-u参数可以指定用户名。所以上述命令是在查询当前登录用户注册的定时任务。如果想看其他的比如有管理员权限的,加上sudo吧。这步,就查到一个奇怪的玩意:

*/5 * * * * flock -xn /tmp/stargate.lock -c '/usr/local/qcloud/stargate/admin/start.sh > /dev/null 2>&1 &'

好家伙,不会是病毒吧——其实不是,这玩意是是腾讯云的云资源监控,如果卸了这玩意就不能在控制面板看占用了,留着吧,非要卸载可以参考这篇笔记

配置任务

接下来就要配置一个新任务,解放双手啦~

如果是大佬,可能会去修改/etc/下crontab的默认周期执行的计划,但是不是很推荐,因为这种方法直接操作文件,改坏了可不行,而且他没有语法检查。接下来的方法避免了直接操作文件可能带来的权限和格式问题,而且可以确保文件格式正确,避免格式错乱。

使用如下命令来编辑crontab文件,注意这将会打开默认的文本编辑器比如vim,最好提前学一下怎么用:

crontab -e

第一次使用会进入下面这个界面,就是选择编辑器的:

no crontab for ubuntu - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 

这里我自己选用的是vim, 进入vim界面后会看到一个文件(如果进入的不是vim,比如如果是nano,原理也差不多,但需要额外去学下操作),它包含了一大段注释,按i进入插入模式,在这片注释的末尾写入具体需要执行的任务,比如:

0 4 * * * /bin/bash /home/ubuntu/xxx/auto.sh

这个命令的意思是:在每天的4:00,利用/bin/bash执行这个脚本。那当然还需要继续介绍一下这几个星号都是什么玩意啦,这个是crontab任务的时间信息,依次是:

  • 分钟,取值范围为 0 - 59
  • 小时,取值范围为 0 - 23
  • 日,取值范围为 1 - 31
  • 月,取值范围为 1 - 12 或者英文缩写:jan,feb,mar,apr …
  • 星期,取值范围为 0 - 6,其中7也能代表星期天;或者英文缩写:sun,mon,tue,wed,thu,fri,sat

那么星号(*)自然就是作为通配符了。上述规则在/etc/crontab文件得注释中也能看到——如果你没乱改它的话。最后,按ESC退出编辑,打出冒号(按shift+分号)后输入wq来写入并保存退出。

以后如果要修改/删除任务,也都是编辑这个文件了~

编辑器选择后悔了?

哎,一失足成千古恨,哎不对,不都已经给提示了吗~就输入这个命令就能重新选择默认编辑器了:

select-editor