linux定时任务--crontab

哎,说起这个crontab,我真是又爱又恨。
我这混迹问答论坛这么多年,见过太多新手被它搞的头昏脑胀。
说实话,这个工具在Linux系统里就像是定时任务的神器,能帮你把那些重复性的工作自动化,省心省力。

咱们先来聊聊基本命令和作用。
这个crontab啊,你用得最多的就是那几个参数了。
比如“-u”指定用户,默认是当前用户,你不用写也能用。
要是你想查看某个用户的定时任务列表,就用“-l”,编辑任务列表就用“-e”,要删除某个用户的任务列表,就用“-r”。

以前在CentOS6 系统里,关闭定时任务就是“service crond stop”,开启定时任务就是“service crond start”,重启定时任务就是“service crond restart”。
现在转到CentOS7 ,操作就有点复杂了。
你想知道cron任务是否启用,就用“systemctl is-enabled crond.service”,如果看到“enable”就说明已经启用了,要是“disable”那就没启用。

关闭cron自启动任务,就用“systemctl disable crond.service”,开启自启动任务就用“systemctlenable crond.service”。
查看cron服务启动状态,就用“systemctl status crond.service”,启动cron服务就是“systemctl start crond.service”,关闭cron服务就是“systemctl stop crond.service”,重启cron服务就是“systemctl restart crond.service”,重新加载cron服务就是“systemctl reload crond.service”。

说到编辑定时任务,这个crontab文件里的每一行都代表一项任务,每行的每个字段都有讲究。
前五个字段是时间设定,最后一个字段是要执行的命令。
比如“minute hour day month week command”,这个minute就是分钟,hour就是小时,day就是日期,month就是月份,week就是星期几。

这前五个字段,你可以用星号()代表所有可能的值,比如month字段如果是星号,那就表示在满足其他字段的条件下,每月都会执行这个命令。
你还可以用逗号(,)指定一个列表范围,比如“1 ,2 ,5 ,7 ,8 ,9 ”。
中杠(-)可以表示一个整数范围,比如“2 -6 ”表示“2 ,3 ,4 ,5 ,6 ”。
正斜线(/)可以指定时间的间隔频率,比如“0-2 3 /2 ”表示每两小时执行一次。

我当时刚开始用的时候,就被这些符号搞晕了,后来慢慢研究,才发现这些特殊字符真是太实用了。
可能有点偏激,但我觉得crontab这个工具,对于需要自动化重复性工作的Linux用户来说,真的是不可或缺的。

linux 怎么开启一个定时任务

哎,说起来我上次就是在Linux系统上设置定时任务的时候踩了个坑。
那会儿我在公司服务器上配置了一个脚本,想着每小时自动备份一次数据,结果你猜怎么着?定时任务根本没按点执行,我那数据备份差点就成笑话了。

具体问题就在那个crontab文件上。
我当时用“crontab -e”编辑文件,设置成了“0 /path/to/script.sh”,想着每小时就执行一次那个脚本。
结果后来一看,发现脚本根本没运行。
一查才知道,问题就出在“0 ”这个时间设置上。

这个设置的意思是每一小时的开始执行,但服务器上的服务器时间有时候会因为网络问题或者手动调整而不同,这就导致脚本没有按时执行。
后来我改成了根据服务器时间来设置,比如“3 0 1 -2 3 ”,这样脚本就在每个小时的第3 0分钟执行。

还有个事就是,crontab的语法确实挺严格的,一个小小的符号错位就能让任务失效。
记得有一次我在脚本里写成了“/1 0”,结果定时任务变成了每1 0秒执行一次,把我吓了一跳。

最后,得提一句,如果遇到复杂的定时任务或者需要长期运行的任务,我还是推荐用systemd。
它在Linux系统上管理服务更方便,功能也更强大。
上次我用systemd定时重启服务器,就比用crontab省心多了。

反正,设置定时任务这种事情,得多留点心。
你看着办吧,记得检查时间设置,还有语法,别像我一样踩坑。

如何在Linux中定时执行任务?使用cron命令设置计划任务自动化

前些天,我有个小习惯,每天晚上都会检查一下服务器日志,看看有没有异常。
有一次,凌晨三点,我接到系统管理员的通知,说服务器负载突然升高,我立刻想到是不是定时任务出了问题。
打开终端,我输入crontab -l,一看,果然,有一个任务被错误地设置为每分钟执行,而这个任务本身是用来清理大量临时文件的,结果就导致了系统资源的大量消耗。

这个经历让我意识到,虽然cron是个强大的工具,但是配置不当也会带来意想不到的问题。
比如,那个错误的任务是在/etc/crontab中定义的,所以需要root权限才能修改。
我还记得,当时我花了半小时才找到那个任务的正确位置,并且修改了它。

现在,每当我配置新的cron任务时,我都会格外小心,首先检查任务的执行时间是否合理,其次确保脚本有执行权限,并且输出已经被重定向到日志文件,而不是发到邮件,以免影响邮箱的使用。

等等,我还突然想到,其实除了cron,Linux还有其他定时任务工具,比如anacron和atd,它们在某些情况下可能更合适。
不过,今天我们先聊cron吧。