Linux计划任务:3天轮询自动执行 (linux计划任务每3天执行)

在Linux中,计划任务是一种非常常见的自动化工具,可以让用户在不必手动干预的情况下定期执行一些特定的任务。计划任务可分为周期性任务和单次任务。周期性任务指每天、每周、每月或每年定期执行某些操作;单次任务就是只执行一次的操作。

Linux计划任务是由一个名为crontab的命令来负责管理的。在Linux中,用户可以使用这个命令来添加、修改和删除计划任务,并且可以根据自己的需要制定不同的执行计划。在本文中,我们将关注一个特定的计划任务执行计划,即每隔三天自动执行某些操作。

我们需要使用以下命令来打开crontab编辑器:

“`shell

crontab -e

“`

然后,我们需要添加以下行来设置计划任务的执行计划:

“`shell

0 0 */3 * * command

“`

这行代码的意思是,任务将在每个月的第1天、第4天、第7天、第10天、第13天、第16天、第19天、第22天、第25天和第28天的午夜12点执行。在这里,我们使用的是星号操作符,表示匹配所有可能的值。

接下来,我们需要确定要执行的命令。这个命令可以是任何可执行文件,脚本或命令行命令。例如,我们可以编写一个脚本来备份数据库,然后将其指定为计划任务的命令。我们也可以使用简单的shell命令行命令来执行任何其他需要自动执行的任务。

一旦我们确定了要执行的命令,就需要使用以下格式将其添加到计划任务行:

“`shell

0 0 */3 * * /path/to/command

“`

这里,我们使用绝对路径来指定要执行的命令,以确保系统可以正确地找到它。

我们需要保存计划任务并退出crontab编辑器。只要保留这行代码,Linux系统将按照我们所指定的计划任务执行命令。如果在任何时候我们需要修改计划任务,只需要再次运行crontab -e命令即可。

使用Linux计划任务可以让我们轻松地自动化系统管理任务,节省时间和精力,提高工作效率。通过了解如何在Linux中设置计划任务,我们可以更好地管理我们的系统并更好地保护我们的数据。

相关问题拓展阅读:

linux怎么设定每个5天执行一次任务,crontab设定的在每个月一号都会执行一次

可以分成两条写也行的,关于基础和百度《Linux就该这样学》,或消书籍衫扒知不错,但目此咐前只有电子挡的,希望可以帮到你…

在linux下怎么让一个脚本定时运行

Linux中,周期执行的任务一般由cron这个守护进程来处理 ps -ef | grep cron

cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

cron的配置文件称为“crontab”,是“cron table”的简写。

一、 cron在3个地方查找配置文件(设置shell脚本):

1、/var/spool/cron/yanggang 这个目录下存放的是每个用户(包括root)的crontab任务,每个任务以创建者的名字命名,比如用户tom建的crontab任务对应的文件就是/var/spool/cron/tom

yanggang@barry$ sudo ls -l /var/spool/cron/(或有时是 /var/spool/cron/crontabs/)

-rwroot crontab19 17:20 root

-rwyanggang crontab24 11:07 yanggang

一般一个用户最多只有一个crontab文件(如:root, yanggang等),其对应日志在/var/spool/mail/root(或/var/spool/mail/yanggang)文件里

2、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。

SHELL=/bin/bash

PATH=/in:/bin:/usr/in:/usr/bin

MAILTO=root

HOME=/

# .– minute (0 – 59)

# | .hour (0 – 23)

# | | .day of month (1 – 31)

# | | | .month (1 – 12) OR jan,feb,mar,apr …

# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR

#sun,mon,tue,wed,thu,fri,sat

# | | | | |

# * * * * * command to be executed

例如:

*/5 * * * * root /usr/libexec/atrun

minute:代表一小时内的第几分,范围 0-59。

hour:代表一天中的第几小时,范围 0-23。

mday:代表一个橡虚月中的第几天,范围 1-31。

month:代表一年中第几个月,范围 1-12。

wday:代表星期几,范围 0-7 (0及7都是星期天)。

who:要使用什么身份执行该指令,当您使用 crontab -e 时,宏行不必加此字段。

command:所要执行的指令。

3、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

二、 权限

crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在

用法如下:

1、如果两个文件都不存在,则只有root用户才能使用crontab命令。

2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。

3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。

4、如果两梁绝燃个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,

以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。

AIX 中 普通用户默认都有 crontab 权限,如果要限制用户使用 crontab ,就需要编辑/var/adm/cron/cron.deny

HP-UNIX 中默认普通用户没得crontab 权限 ,要想放开普通用户的crontab 权限可以编

三、 创建cron脚本

之一步:写cron脚本文件,命名为crontest.cron。

15,30,45,59 * * * * echo “xgmtest…..” >> xgmtest.txt 表示,每隔15分钟,执行打印一次命令

第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定

第三步:”crontab -l” 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

四、 cron服务

cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。

/in/service crond start //启动服务

/in/service crond stop //关闭服务

/in/service crond restart //重启服务

/in/service crond reload //重新载入配置

/in/service crond status //查看服务状态

例如: 使用sudo停止与启动服务

yanggang@barry$sudo service cron stop

cron stop/waiting

yanggang@barry$ sudo service cron start

cron start/running, process 7502

五、 crontab用法

crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格,用户把需要执行的命令序列放到crontab文件中以获得执行。

每个用户都可以有自己的crontab文件,/var/spool/cron下的crontab文件不可以直接创建或者直接修改,该crontab文件是通过crontab -e命令创建的

在crontab文件中如何输入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。

每个域之间使用空格或者制表符分隔。格式如下:

minute hour day-of-month month-of-year day-of-week commands

合法值 (0 is sunday)

除了数字还有几个个特殊的符号就是”*”、”/”与”-“、”,”,*代表所有的取值范围内的数字

“/”代表每的意思,”/5″表示每5个单位,”-“代表从某个数字到某个数字,”,”分开几个离散的数字。

-l 在标准输出上显示当前的crontab。

-r 删除当前的crontab文件。

-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。

当结束编辑离开时,编辑后的文件将自动安装。

几个例子:

每天早上6点

0 6 * * * echo “Good morning.” >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

每两个小时

0 */2 * * * echo “Have a break now.” >> /tmp/test.txt

晚上11点到早上8点之间每两个小时和早上八点

0 23-7/2,8 * * * echo “Have a good dream” >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

* 1-3 command line

1月1日早上4点

* command line SHELL=/bin/bash PATH=/in:/bin:/usr/in:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/

每小时(之一分钟)执行/etc/cron.hourly内的脚本

01 * * * * root run-parts /etc/cron.hourly

每天(凌晨4:02)执行/etc/cron.daily内的脚本

02 4 * * * root run-parts /etc/cron.daily

每星期(周日凌晨4:22)执行/etc/cron.weekly内的脚本

22 4 * * 0 root run-parts /etc/cron.weekly

每月(1号凌晨4:42)去执行/etc/cron.monthly内的脚本

* * root run-parts /etc/cron.monthly

注意: “run-parts”这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。  

每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。

5,15,25,35,45,55 16,17,18 * * * command

每周一,三,五的下午3:00系统进入维护状态,重新启动系统。

00 15 * *1,3,5 shutdown -r +5

每小时的10分,40分执行用户目录下的innd/bbslin这个指令:

10,40 * * * * innd/bbslink

每小时的1分执行用户目录下的bin/account这个指令:

1 * * * * bin/account

每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔):

203 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)

每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。

12,,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt

六、几个问题

crond 进程没有运行

1. 启动crond进程

/etc/init.d/crond start

2. 开机自启动crond进程

chkconfig crond on

crontab 编辑:

输入编辑命令: crontab -e

# m h dom mon dow command

SHELL=/bin/bash

30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh

Ctrl + O (写入)——》enter键(保存文件名)——》Ctrl + X(退出)

输入查看命令: crontab -l

# m h dom mon dow command

SHELL=/bin/bash

30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(建议使用此方式)

语法错误:

Syntax error: “(” unexpected

路径错误:

在 /var/spool/crontab/yanggang 中,添加了如下命令,在日志文件 /var/spool/mail/yanggang 中提示找不到 .sh 路径

30 * * * * /home/barry/top800/top10/top10_fruits/top10_all.sh

30 * * * * bash /home/barry/top800/top10/top10_fruits/top10_all.sh

这是因为在crontab中使用了绝对路径执行脚本 top10_all.sh,因此在脚本 top10_all.sh 中引用的其它脚本也都需要使用绝对路径,才能被crontab找到并执行

如何避免绝对路径复杂的设置呢,如上文 六、几个问题 所示,采用如下格式:

30 * * * * cd /home/barry/top800/top10/top10_fruits/ && ./top10_all.sh(建议使用此方式,先进入该目录,然后在执行脚本;否则,执行脚本中的其它脚本都需要加绝对路径)

Linux中,周期执行的任务一般由cron这个守护进程来处理  ps -ef | grep cron

cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。

cron的配置文件称为“crontab”,是“cron table”的简写。

一、 cron在3个地方查找配置文件(设置shell脚本):

1、/var/spool/cron/yanggang 这个目录下存放的是每个用户(包括root)的crontab任务,每个任务以创建者的名字命名,比如用户tom建的crontab任务对应的文件是/var/spool/cron/tomyanggang@barry$ sudo ls -l /var/spool/cron/(或有时是 /var/spool/cron/crontabs/)

-rwroot     crontab19 17:20 root

-rwyanggang crontab24 11:07 yanggang

一般一个用户最多只有一个crontab文件(如:root, yanggang等),其对应日志在/var/spool/mail/root(或/var/spool/mail/yanggang)文件里

2、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。SHELL=/bin/bashPATH=/in:/bin:/usr/in:/usr/binMAILTO=rootHOME=/

# .– minute (0 – 59) 

# |  .hour (0 – 23)

# |  |  .day of month (1 – 31)

# |  |  |  .month (1 – 12) OR jan,feb,mar,apr … 

# |  |  |  |  .—- day of week (0 – 6) (Sunday=0 or 7)  OR

#sun,mon,tue,wed,thu,fri,sat 

# |  |  |  |  |

# *  *  *  *  *  command to be executed

例如:

*/5 * * * * root /usr/libexec/atrun

minute:代表一小时内的第几分,范围 0-59。 

hour:代表一天中的第几小时,范围 0-23。 

mday:唤缺伏代表一个月中的第几天,范围 1-31。 

month:代表一年中第几个月,范围 1-12。 和携扮燃

wday:代表星期几,范围 0-7 (0及7都是星期天)。 

who:要使用什么身份执行该指令,当您使用 crontab -e 时,不必加此字段。 

command:所要执行的指令。 

3、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

Linux有一个很好的定时任务的软件——Cron。Arch Linux的话默物滚认就会安装,其它发行版可以现在软件库搜一下cron一般可以搜到。为了能够访问这个命令,用户必罩迟余须添加到 users 用户组。

具体的命令和定时设计参考Archwiki,旦困说的很清楚。

计划任务 crontab

root@ubuntu:~# cat /etc/crontab

# /etc/橡岁crontab: system-wide crontab

# Unlike any other crontab you don’t have to run the `crontab’

# command to install the new version when you edit this file

# and files in /etc/cron.d. These files also have username fields,

# that none of the other crontabs do.

SHELL=/bin/sh

PATH=/usr/local/in:/usr/local/bin:/in:/bin:/usr/in:/usr/bin

# m h dom mon dow user command

17 * * * * root cd / && run-parts –report /etc/cron.hourly

* * * root test -x /usr/in/anacron || ( cd / && run-parts –report /etc/cron.daily )

* * 7 root test -x /历卖usr/肢如逗in/anacron || ( cd / && run-parts –report /etc/cron.weekly )

* * root test -x /usr/in/anacron || ( cd / && run-parts –report /etc/cron.monthly )

每天9点30执行这个shell

30 9 * * * sh ./my.sh

linux计划任务管理

什么是计划任务,计划任务类似于我们平时生活中的闹钟。

在Linux系统的计划任务服务crond可以满足周期性执行任务的需求。备姿颂

crond进程每分钟会处理一次计划任务, 计划任务主要是做一些周期性的任务目前最主要的用途是定时备份数据

Schedule one-time tasks with at. 一次性调度执行 at

Schedule recurring jobs with cron. 循环调度执行 cron

Schedule recurring system jobs. 所有计划任务执行中的输出都会以邮件的方式发送给指定用户, 除非重定向

// 循环调度执行cron 进程每分钟会处理一次计划任务

# systemctl status crond

# ps aux |grep crond

root..? Ss::/usr/in/crond -n

计划任务分为以下两种情况:

系统级别的定时任务:

清理系统缓存

临时文件清理

系统信息采集

日志文件切割

用户级别的定时任务:

定时同步互联网时间

定时备份系统配置册掘文件

定时备份数据库文件

文件 说明 /etc/crontab / /crontab配置文件 /etc/cron.deny / /该文件中所列用户不允许使用crontab命令 /var/spool/cron/ * // 所有用户定时文件都存放此目录,文件以用户名命名 /var/log/cron / /定时任务执行后的日志文件,可用来回溯

crond任务管理

参数 含义 指定示例

# crontab –help

-e 编辑crontab文件内容 crontab -e-l 查看crontab文件内容 crontab -l

-r 删除crontab文件内容 crontab -r

-u 管理其他用户的计划任务 crontab -u wangqing -l

注意: crontab {-l -e}实际上就是在操作/var/spool/cron/username

//如何仿郑进行计划任务的备份?

crond时间含义

# Example of job definition:# .– minute (0 – 59)

//分钟

# | .hour (0 – 23)

//小时

# | | .day of month (1 – 31)

//日期

# | | | .month (1 – 12) OR jan,feb,mar,apr

//月份

# | | | | .—- day of week (0 – 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat

//星期

# | | | | |# * * * * * command to be executed

// * 表示任意的(分、时、日、月、周)时间都执行// – 表示一个时间范围段, 如5-7点// , 表示分隔时段, 如6,0,4表示周六、日、四// */n 表示每隔n单位时间, 如*/10 每10分钟

crond编写示例

* * * command

* * command

* command

* * 7 command

* 6 5 command

* 7 command

command

* * * command* 02 * * * command* * * * * command* * 14 2 * command*/5 * * * * command

* 1,5,8 * command

* * command

crond书写规范

//1.为计划任务增加必要的注释

# crontab -l

##time sync

* /5 * * * * /u sr/in/ntpdate time1.aliyun.com &> /dev/ null

//2.规范计划任务执行脚本存放的路径/scripts/

# crontab -l

##backup www to /backup* * * /bin/ sh /scripts/www_backup.sh &> /dev/ null

//3.执行shell脚本任务前加/bin/sh, 脚本结尾加&>/dev/null//调试好后应屏蔽debug输出信息,避免产生系统垃圾占用过多inode, 如需输出日志, 可重定向至日志文件

# crontab -l

####backup www to /backup* * * /bin/ sh /scripts/www_backup.sh &> /tmp/ www_backup.log

# crontab -e

#每天凌晨切割nginx日志

* * * /bin/bash -x /scripts/cut_nginx.sh &> /scripts/ log /nginx. log

#每天5点备份数据库

* * * /bin/bash -x /scripts/dump_sql.sh &>/scripts/ log /mysql. log

//注意:

1. 我们所有的crond服务是运行的程序。而crontab命令用户用来设置定时规则的命令。 2. crond服务是企业生产工作中常用的重要服务,at很少使用,可以忽略。 3. 几乎每个服务器都会用到crond服务。

建议: 将需要定期执行的任务写入脚本中, 建立/scripts目录统一存放脚本, 脚本中命令必须使用绝对路径,手动执行脚本检测输出是否正常, 然后将脚本加入计划任务测试, 测试后无问题将脚本输出写入对应的日志文件中即可。

计划任务添加步骤:

作业:

a. 00 13,20 * 1-5 * backup.sh

b. 0 13,20 1,5 * * backup.sh

c. * 13,20 * * 1-5 backup.sh

d. 00 13,20 * * 1-5 backup.sh

说明以上答案每一行是什么含义

2.新建/scripts/httpd.sh文件,并让/scripts/httpd.sh脚本在每天的00:10分执行

3.新建/backup目录,每周一下午5:50将/backup目录下的所有文件打包成 backup.tar.gz

4.写一个定时任务,每天0点5分把/var/log/nginx下7天前的文件转移到/backup/2023_xx_xx的目录中

5.系统脚本/scripts/which.sh,如何定时每隔7分钟执行一次?

6.如何不小心删除了/var/spool/cron/root文件,该如何恢复。

linux计划任务每3天执行的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux计划任务每3天执行,Linux计划任务:3天轮询自动执行,linux怎么设定每个5天执行一次任务,crontab设定的在每个月一号都会执行一次,在linux下怎么让一个脚本定时运行,linux计划任务管理的信息别忘了在本站进行查找喔。


数据运维技术 » Linux计划任务:3天轮询自动执行 (linux计划任务每3天执行)