java 设置cron每隔一小时执行任务 cron每一小时执行一次_cron每小时执行一次


第十章 计划任务

当我们将来在企业里需要对一个服务器进行运维时,我们需要设定一些任务,这个任务可以自动执行,这就需要我们进行设置任务计划,可以让服务器在将来的某个时间点自动执行。

一、一次性调度执行

1.一次性调度执行命令:at

命令语法:at <时间空间>

时间空间的示例:

now +5min:现在的时间+5分钟 后执行任务

teatime tomorrow (teatime is 16:00) :定时执行任务

noon +4days:中午12点+4天执行任务

4:00 2019-11-27 :在将来的2019年11月27日4点钟执行任务

例:[root@localhost ~]# at now +3min //从现在起3分钟后执行下面的任务

at> ls //任务计划为查看当前目录

at> <EOT> //这里是退出的意思

这里的at> 是可以一直添加任务的,当我们继续回车可以继续输入命令,当我们按“Ctrl+D”键时则退出 at> 的编辑。

[root@localhost ~]# atq //查询任务

1 Wed Feb 26 22:41:00 2020 a root //这里显示root用户有一个at任务

二、循环调度执行

cron的概念和crontable是不可分割的,crontable全名为循环任务表。crontable是一个命令,用于设置周期性被执行的指令。该调度执行设置好以后也会被存在“cronatab”文件中,这样一来方便今后的修改和执行。

1. 循环调度执行的命令:cron

我们要先查看crond这个程序有没有开启和运行,确定开启运行了才能使用。

[root@localhost ~]# ps aux | grep crond //查看进程信息

root 1383 0.0 0.0 126292 1688 ? Ss 22:36 0:00 /usr/sbin/crond -n

root 3174 0.0 0.0 112732 968 pts/0 S+ 23:01 0:00 grep --color=auto crond

//上面显示了进程状态是Ss,说明他在后台运行。

我们查看进程的信息也可以确定进程是否运行,可以用以下方法:

[root@localhost ~]# systemctl status crond.service //查看进程状态

Active: active (running) since 三 2020-02-26 22:36:19 CST; 31min ago

//这里会显示很多行,我们只需要看重要的一行就是上面的这一行显示的是(running)就说明crond服务正常运行,crond程序可以被正常使用。当他显示没启动时,我们需要用systemctl start crond来启动它,然后再使用。

计划任务存储的位置。

计划任务存储的位置:

当我们设置好了循环调度任务时,可以在/var/spool/cron目录下查看我们设置的循环调度执行任务计划。可以用ls /var/spool/cron查看。

管理方式:

(1)创建计划:执行命令crontab -e创建然后进入一个像vim记事本的界面

我们进入以后可以编写循环调度的任务。

进入以后的标准语法:* * * * * command

第一个*:代表分钟; 第二个*:代表时; 第三个*:代表日

第四个*:代表月; 第五个*:代表周; command:代表你想要执行的循环计划 ,命令或者脚本程序

注意:前面的5个 * 在写的时候一定要注意每一个都要写,5个*一个都不能少,而且每一个 * 之间都要有空格隔开,否则系统识别不出来。当我们编辑完以后都要“:wq” 保存退出。

例:*/5 * * * * ls /tmp //意为每隔5分钟就执行一次命令ls /tmp

例:[root@localhost ~]# crontab -e //创建循环调度任务

5 * * * * /usr/bin/ls /tmp //我们在这里最好写上绝对路径下查看

~

:wq //保存退出

no crontab for root - using an empty one //退出后显示如下两行信息

crontab: installing new crontab

[root@localhost ~]# crontab -l //查看创建好的循环调度任务执行

5 * * * * ls /tmp

例:0 2 1,4,6 * * /usr/bin/ls /tmp

//这里的1,4,6意为每月的1号,4号,6号三天的两点整执行该任务

今天又是努力学习的一天,在这里鼓励自己越努力越幸运。