crontab 定时执行sh 2017年注册会计实务基础知识点总结(二)

例子

1.写一个测试脚本脚本time.sh

$猫时间.sh

#!/bin/bash

echo $(date +%s) >> /home/ocean/out.txt

保存后记得给权限 chmod 777 test.sh

2.添加定时任务

$ crontab -e

没有海洋的 crontab – 使用一个空的

选择一个编辑器。要稍后更改,请运行“选择编辑器”。

1. /bin/nano

2. /usr/bin/vim.tiny

3. /bin/ed

内容编辑为:每分钟执行一次

# mh dom mon dow 命令

* * * * * /home/ocean/workspaces/shell/time.sh

3.查看定时任务是否添加成功

$ crontab -l

4.重启cron:新添加的定时任务不会立即执行,一般需要一段时间,除非你重启服务器

$ sudo 服务 cron 重启

请注意,新创建的 cron 作业不会立即执行,至少需要 2 分钟才能执行。如果 cron 服务重新启动,它会立即执行。

5. 查看执行结果

$ cat out.txt

1552543807

1552543861

1552543921

1552543981

1552544041

1552544101

原则

Ubuntu默认安装了cron,它是在启动时自启动的。

当 cron 启动时,它会读取其所有配置文件,然后 cron 根据命令和执行时间安排作业。

cron有两个配置文件,一个是全局配置文件(/etc/crontab),用于系统任务;一个是crontab命令生成的配置文件(/var/spool/cron下的文件),它是针对某个每个用户的定时任务可以配置到任何一个。

每个用户的计划任务配置文件

$ ls -l /var/spool/cron/

共 4 个

drwx-wx–T 2 根 crontab 4096 2017 年 11 月 16 日 crontabs

注意:这个歌曲目录中只有一个crontab,即使添加了其他计划,也只有一个crontab。

全局配置文件

$ 猫 /etc/crontab

# /etc/crontab: 系统范围的 crontab

# 与任何其他 crontab 不同,您不必运行 `crontab’

# 编辑此文件时安装新版本的命令

# 和 /etc/cron.d 中的文件。这些文件也有用户名字段,

# 其他 crontab 都没有。

外壳=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

# mh dom mon dow 用户命令

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

25 6 * * * 根测试-x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.daily )

47 6 * * 7 根测试 -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.weekly )

52 6 1 * * 根测试 -x /usr/sbin/anacron || ( cd / && run-parts –report /etc/cron.monthly )

ununtu 通过调用 run-parts 命令定期运行四个目录中的所有脚本。

1)/etc/cron.hourly,该目录下的脚本会每小时执行一次,在每小时的第17分钟;

2)/etc/cron.dailycrontab 定时执行sh,该目录下的脚本每天执行一次,每天6点25分;

3)/etc/cron.weekly,该目录下的脚本每周执行一次,每周第七天6点47分;

4)/etc/cron.mouthly,该目录下的脚本每月执行一次,每月1日6点52分;

当然,以上时间为系统默认时间,可以根据自己的需要进行修改。

玉米程序在后台运行并检查 cron 计划以查看计划执行哪些主页。

打开和关闭 cron

命令

影响

sudo 服务 cron 状态

查看 cron 状态

sudo /etc/init.d/cron 启动

启动 cron

sudo /etc/init.d/cron 停止

关闭 cron

sudo /etc/init.d/cron 重启

重启 cron

cron 计划

以格式向 cron 计划添加条目

min hour dayofmonth month dayofweek 命令

分布代表分时日、月和星期几。数值范围为0-59:0-23:1-31:1-12:0-7

记住几个特殊符号的含义:

星号(*):表示所有可能的值,例如在小时字段中,一个星号相当于每小时;在月份字段中,星号相当于每个月。

图片[1]-crontab 定时执行sh 2017年注册会计实务基础知识点总结(二)-唐朝资源网

逗号 (,):可以用逗号分隔的值指定列表范围crontab 定时执行sh,例如“1,2,5,7,8,9”

中间条 (-):可以在整数之间使用中间条来表示整数范围,例如“2-6”表示“2,3,4,5,6”

正斜杠( / ):您可以使用正斜杠指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时,正斜杠可以和星号一起使用,比如*/10,如果用在分钟字段中,表示每十分钟执行一次。

玉米时间表示例:

* * * * * test.sh 每分钟执行一次 test.sh

*/5 * * * * test.sh 每5分钟执行一次test.sh

0 */2 * * * test .sh > out 每两小时执行一次 test.sh 并将结果存入 out

00 00 * * * /home/rich/test.sh 每天早上 0:00 执行

30 21 * * * /home/rich/test.sh 每天21:30执行

15 16 * * 1 命令每周一 16:15 运行命令

00 12 1 * * 命令 每月 1 日中午 12:00 执行命令

00 8* * * 如果 [日期 +%d -d 明天 = 01] ; 然后 ; command 每月最后一天 8:00 执行命令

可以是三字符文本值(周一、周二、周三、周四、周五、周六、周日)或数值(0 表示工作日,6 表示周六)

指定星期几条目。

cron 目录

如果脚本不需要精确的执行时间,使用预先配置好的 cron 脚本会更方便

$ ls /etc/cron.*ly

/etc/cron.daily:

0anacron apt-compat cracklib-runtime logrotate mlocate 流行度-竞赛更新-通知程序-common

支持 bsdmainutils dpkg man-db passwd ubuntu-advantage-tools

/etc/cron.hourly:

/etc/cron.monthly:

0anacron

/etc/cron.weekly:

0anacron man-db update-notifier-common

比如脚本每天运行一次,只要把脚本复制到daily目录下,cron就会每天执行【根据/etc/crontab下配置的时间】

安娜克龙

缺点:cron可以执行一些定时任务,但是如果到了这个时间点,而此时Linux系统正在关机,那么这个定时任务就无法执行了。即使系统再次开机,cron也不会执行错过的程序。

解决方法:anacron,开机时会自动运行关机期间的作业。前提是程序位于cron目录下。

应用场景:anacron 用于以天为单位运行频率的命令。它的工作方式与 cron 之间的最大区别在于它假定机器不会一直开机。

anacron 的工作原理

anacron 任务在 /etc/anacrontab 中列出

须藤猫 /etc/anacrontab

[sudo] 海洋密码:

# /etc/anacrontab: anacron 的配置文件

# 参见 anacron(8) 和 anacrontab(5) 了解详情。

外壳=/bin/sh

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

家=/根

LOGNAME=root

# 这些替换 cron 的条目

1 5 cron.daily 运行部分 –report /etc/cron.daily

7 10 cron.weekly 运行部分 –report /etc/cron.weekly

@monthly 15 cron.monthly 运行部分 –report /etc/cron.monthly

Ununtu 通过调用 run-parts 命令定期运行三个目录中的所有脚本。

从上面可以看出,anacron的运行频率最小的时间是天。[cron 是分钟]

$ ls -l /var/spool/anacron/

共 12 个

-rw——- 1 root root 9 Jun 1 10:25 cron.daily

-rw——- 1 根根 9 May 27 11:01 cron.monthly

-rw——- 1 root root 9 月 30 日 10:28 cron.weekly

anacron 程序使用自己的计划来检查工作目录

时间表格式

周期延迟标识符命令

period – 这是任务的频率,以天为单位指定,或者 @daily 、 @weekly 、 @monthly 表示每日、每周、每月。您还可以使用数字:1 – 每天、7 – 每周、30 – 每月或 N – 天。anacron 程序使用此条目来检查作业的时间戳文件

延迟 – 这是执行任务之前等待的分钟数。

标识符 – 条目是一个特殊的非空字符串,如 cron-weekly。它用于在日志消息和错误消息中唯一标识作业。

command – 这是要执行的命令或 shell 脚本。

anacron 将检查任务是否已在 period 字段中指定的时间执行。如果不是,它将等待延迟字段中指定的分钟数,然后再执行命令字段中指定的命令。

作业执行后,它会在 /var/spool/anacron 目录中的时间戳文件中记录日期,该文件的名称在作业 ID(时间戳文件名)字段中指定。

cron 与 anacron

cron 是 linux 自带的守护进程。用于重复运行具有一定运行时间的任务。如果机器处于关机​​状态,错过了任务执行时间,则无法执行任务。

crontab(cron table 的缩写)既可以指 cron 用于定期执行特定任务的列表文件,也可以指用于创建、删除和查看当前用户(或指定用户)的 crontab 文件的命令。

Anacron 不是守护进程。可以看成是cron守护进程的补充程序。Anacron 是一个独立的 Linux 程序,由 cron 守护进程或其他启动脚本启动。任务(最小单位是天)。适用于可能经常停机的机器。当机器重新启动并启动 anacron 程序时,anacron 会检查 anacron 任务是否在合适的时间段内执行。如果不执行,任务只会在anacron设置的延迟时间后执行一次。无论任务错过多少个周期。例如,如果您设置了一个每周备份文件的任务,但是您的计算机因为您外出度假而关闭了四个星期,当您回到家并打开它时,anacron 只会在一个一定的延迟。.

cron

安娜克龙

这是一个守护进程

它不是守护进程

适用于适用于台式机/笔记本电脑的服务器

允许您在几分钟内运行计划任务

仅允许您每天运行计划任务

计划任务在关机时不执行

如果定时任务到期机器下电,下次上电后会执行定时任务

普通用户和root用户都可以使用

仅对 root 用户可用(使用特定配置启动常见任务)

cron 和 anacron 之间的主要区别在于 cron 在不断运行的机器上高效运行,而 anacron 用于在一天或一周内关闭的机器。

至此,关于shell周期性脚本执行的方法示例的文章就介绍到这里了。更多相关shell周期性脚本执行,请搜索脚本之家之前的文章或继续浏览下方相关文章。希望大家以后多多支持Scripting House!

© 版权声明
THE END
喜欢就支持一下吧
点赞122 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片