自学内容网 自学内容网

linux crontab命令(linux定时任务)

1. 在CentOS 7.0上,crontab命令通常是默认安装的

2. 确认crontab是否已经安装:

使用which命令:which命令用于显示给定命令的完整路径。可以使用which命令来确定是否可以找到crontab可执行文件的路径。

which crontab

[user1@192 ~]$ which crontab
/usr/bin/crontab
[user1@192 ~]$ 

3. 定时任务的写法

 4. crontab 命令常用选项及功能

表 crontab 命令常用选项及功能
选项功能
-u user用来设定某个用户的 crontab 服务,例如 "-u demo" 表示设备 demo
用户的 crontab 服务,此选项一般有 root 用户来运行。
-e编辑某个用户的 crontab 文件内容。如果不指定用户,则表示编辑当前用户的 crontab 文件。
-l显示某用户的 crontab 文件内容,如果不指定用户,则表示显示当前用户的 crontab 文件内容。
-r 从 /var/spool/cron 删除某用户的 crontab 文件,如果不指定用户,则默认删除当前用户的 crontab 文件。 
-i在删除用户的 crontab 文件时,给确认提示。

5. 执行“crontab -e”命令,然后输入想要定时执行的任务即可。当执行“crontab -e”命令时,打开的是一个空文件,而且操作方法和 Vim 是一致的。

例如:在每天的17点到20点(包含20点),每隔2分钟执行一次 $HOME/test2.sh脚本,并把脚本执行结果输出到$HOME/test2.log

[user1@192 ~]$ crontab -e
# 进入编辑界面
*/2 17-20  *  *  * $HOME/test2.sh  >>  $HOME/test2.log

6. 当“crontab -e”编辑完成之后,一旦保存退出,那么这个定时任务实际就会写入 /var/spool/cron/ 目录中,每个用户的定时任务用自己的用户名进行区分。而且 crontab 命令只要保存就会生效,只要 crond 服务是启动的。

在书写 crontab 定时任务时,需要注意以下几个事项:

  • 6 个选项都不能为空,必须填写。如果不确定,则使用“*”代表任意时间。
  • crontab 定时任务的最小有效时间是分钟,最大有效时间是月。像 2018 年某时执行、3 点 30 分 30 秒这样的时间都不能被识别。
  • 在定义时间时,日期和星期最好不要在一条定时任务中出现,因为它们都以天为单位,非常容易让管理员混淆。
  • 在定时任务中,不管是直接写命令,还是在脚本中写命令,最好都使用绝对路径。有时使用相对路径的命令会报错。

7. “crontab -e”是每个用户都可以执行的命令,也就是说,不同的用户身份可以执行自己的定时任务。但是有些定时任务需要系统执行,这时就需要编辑 /etc/crontab 这个配置文件了。

8. 当然,并不是说写入 /etc/crontab 配置文件中的定时任务在执行时不需要用户身份,而是“crontab -e”命令在定义定时任务时,默认用户身份是当前登录用户。而在修改 /etc/crontab 配置文件时,定时任务的执行者身份是可以手工指定的。这样定时任务的执行会更加灵活,修改起来也更加方便。 这就需要在root用户下更改了。

例如:在16点的时候,root用户每隔一分钟执行一次/root/test.sh脚本

[root@192 ~]# vim  /etc/crontab 
# 编辑 /etc/crontab文件
  1 SHELL=/bin/bash
  2 PATH=/sbin:/bin:/usr/sbin:/usr/bin
  3 MAILTO=root
  4 
  5 # For details see man 4 crontabs
  6 
  7 # Example of job definition:
  8 # .---------------- minute (0 - 59)
  9 # |  .------------- hour (0 - 23)
 10 # |  |  .---------- day of month (1 - 31)
 11 # |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
 12 # |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
 13 # |  |  |  |  |
 14 # *  *  *  *  * user-name  command to be executed
 15 
 16 */1 16  *  *  * root /root/test.sh  >>  /root/test.log

9. 定时任务相关命令

对于Centos 7

systemctl stop crond        //关闭

systemctl start crond        //开启

systemctl reload crond        //重新加载

systemctl restart crond        //重启

systemctl enable crond        //开机自动启动

10. 定时任务相关文件

  • 定时任务 服务配置文件目录:/var/spool/cron

  • 定时任务 运行记录日志文件:/var/log/cron

  • 定时任务 禁止用户运行名单:/etc/cron.deny

Note. 运行过程一些报错信息,例如

报错 no crontab for root

root用户下 输入 crontab -l 显示

no crontab for root  例如:

[root@192 ~]# crontab -l
no crontab for root

这个问题非常简单,同样在 root 用户下输入 crontab -e

[root@192 ~]# crontab -e

按 Esc 按: wq   回车

在输入 crontab -l 就没有问题了

主要原因是由于这个liunx服务器 第一次使用 crontab ,还没有生成对应的文件导致的,执行了 编辑(crontab -e)后 就生成了这个文件。

 参考文档:

https://c.biancheng.net/view/1092.html

https://www.cnblogs.com/software-develop/articles/18099690

 


原文地址:https://blog.csdn.net/qq_25715863/article/details/142901678

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!