CentOS 7 cron 定时任务使用方法

本文共有4251个字,关键词:17nyycrontab

yum install crontab不可用?

之前一直记得使用crontab -e就可以添加定时任务了,但是提示没有这个命令,于是就想到了

[root@localhost ~]# yum install crontab
已加载插件:fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: ftp.iij.ad.jp
 * extras: mirrors.aliyun.com
 * remi-safe: mirrors.tuna.tsinghua.edu.cn
 * updates: mirror.bit.edu.cn
没有可用软件包 crontab。
错误:无须任何处理

会发现找不到可用的服务包,然后在stackoverflow.com找到了答案:

On CentOS 7 you need to use cronie:

yum install cronie On CentOS 6 you can install vixie-cron, but the
real package is cronie:

yum install vixie-cron and yum install cronie In both cases you get
the same output:

.../...
================================================================== Package Arch Version Repository Size
================================================================== Installing: cronie x86_64 1.4.4-12.el6 base
73 k Installing for dependencies: cronie-anacron x86_64
1.4.4-12.el6 base 30 k crontabs noarch 1.10-33.el6 base 10 k exim x86_64 4.72-6.el6 epel 1.2 M

Transaction Summary
================================================================== Install 4 Package(s)

Note that on 6.x yum install crontabs will also install cronie,
cronie-anacron, and exim. Be sure to remember the service is crond and
it will need to be started (and chkconfig enable on)

然后借此机会记录一下,免得以后忘记了

cron安装

就是CentOS 7 使用

yum install cronie

而 CentOS 6 需要更多一个

yum install vixie-cron cronie
或者
yum install crontabs

crontab基本使用

查看crontab服务状态

[root@localhost ~]# service crond status
[root@localhost ~]# systemctl status crond.service

开启crontab

[root@localhost ~]# service crond start
[root@localhost ~]# systemctl start crond.service

关闭crontab

[root@localhost ~]# service crond stop
[root@localhost ~]# systemctl stop crond.service

重启crontab

[root@localhost ~]# service crond restart
[root@localhost ~]# systemctl restart crond.service

开机运行

[root@localhost ~]# systemctl enable crond.service

crontab基本格式

# *  *  *  *  *  command
# |  |  |  |  |
# |  |  |  |  +---- week    星期(0 - 7) (星期天=0 or 7)
# |  |  |  +------- month   月份(1 - 12)
# |  |  +---------- day     日期(1 - 31)
# |  +------------- hour    小时(0 - 23)
# +---------------- minute  分钟(0 - 59) 每分钟用*或者 */1表示

crontab命令编辑

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab -l //查看当前用户cron服务的详细内容    
crontab -r //删除当前用户的cron服务  
crontab -e //编辑当前用户的cron服务

编辑当前用户

crontab -e
0 */1 * * * command

查看某个用户

crontab -l -u root

删除某个用户

crontab -r -u root

crontab常用示例


30 21 *  *  *  systemctl restart httpd.service
表示每晚21:30重启apache。

45 4 1,10,22  *  * systemctl restart httpd.service
表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 systemctl restart httpd.service
表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * systemctl restart httpd.service
表示在每天18 : 00至23 : 00每隔30分钟重启apache。

0 23 * * 6 systemctl restart httpd.service
表示星期六晚上11点重启apache。

* */1 * * * systemctl restart httpd.service
每一小时重启apache

* 23-7/1 * * * systemctl restart httpd.service
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed systemctl restart httpd.service
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * systemctl restart httpd.service
表示一月一号的4点重启apache 

cron信息记录在哪里

  1. 每次编辑完某个用户的cron信息后, cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的, 只可以用crontab -e 来编辑。
  2. cron启动后每过一分钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重新启动cron服务。
  3. 那如何要控制到秒级别呢??
[root@localhost cron]# clear
[root@localhost cron]# pwd
/var/spool/cron
[root@localhost cron]# ll
总用量 0
[root@localhost cron]# crontab -e
no crontab for root - using an empty one
* 2 * * * sdfsadfsd
"/tmp/crontab.JgDDT9" 1L, 20C written
crontab: installing new crontab
[root@localhost cron]# ll
总用量 4
-rw------- 1 root root 20 12月 13 07:39 root
[root@localhost cron]# 

「如果文章对您有帮助,请随意赞赏」

admin

(๑>ڡ<)☆谢谢老板~

使用微信扫描二维码完成支付

版权声明:如需转载请注明转载地址。
添加新评论
暂无评论