linux下编写一个shell脚本 每天0点 定时执行某一可执行程序test。 刚学习shell希望大侠们给个代码参考!
概述
linux用到定时任务需要crontab的帮助
首先终端键入:crontab -e
root@sys #:crontab -e
然后进行编辑,这里操作和vim操作一至
假设,我需要定时每秒访问一次指定网页,访问网页的脚本已经写好了,叫view.sh,放在了/user目录下,那么定时脚本将需要这么些。
*/1 * * * * /bin/sh /user/view.sh
解析
crontab [-u username] [-l|-e|-r]
参数:
-u: 只有root才能进行这个任务,也即帮其他用户新建/删除crontab工作调度;
-e: 编辑crontab 的工作内容;
-l: 查阅crontab的工作内容;
-r: 删除所有的crontab的工作内容,若仅要删除一项,请用-e去编辑。
crontab -e 进入编辑模式 #此时会进入vi的编辑界面让你编辑工作。注意到,每项工作都是一行。
*/1 * * * * /bin/sh /user/view.sh
#分 时 日 月 周 |=========命令行===|
代表意义 分钟 小时 日期 月份 周 命令
数字范围 0~59 0~23 1~31 1~12 0~7 就命令啊
特殊字符 - 代表意义
*(星号) --- 代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是*,就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。
,(逗号) --- 代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:
0 3,6 * * * command
时间还是有五列,不过第二列是 3,6 ,代表3与6都适用
-(减号) --- 代表一段时间范围内,举例来说,8点到12点之间的每小时的20分都进行一项工作:
20 8-12 * * * command
仔细看到第二列变成8-12.代表 8,9,10,11,12 都适用的意思
/n(斜线) --- 那个n代表数字,即是每隔n单位间隔的意思,例如每五分钟进行一次,则:
*/5 * * * * command
用*与/5来搭配,也可以写成0-59/5,意思相同
拓展内容
linux
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。
严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU工程各种工具和数据库的操作系统。
在某个时间段执行某个程序,准确的说是“定时任务”,我这里介绍2中linux(ubuntu)下定时执行python脚本的方式。
方法一:
准备好定时启动的脚本auto.py
用root权限编辑以下文件
在文件末尾添加以下命令
以上代码的意思是每隔两分钟执行一次脚本并打印日志。
crontab编写解释
基本格式
举例说明
方法二:
APScheduler定时框架
APScheduler是一个 Python 定时任务框架,使用起来十分方便。提供了基于日期、固定时间间隔以及 crontab 类型的任务,并且可以持久化任务、并以 daemon 方式运行应用。
使用 APScheduler 需要安装
每天早上6点半执行的例子
代码中的 BlockingScheduler 是什么呢?
BlockingScheduler 是 APScheduler 中的调度器,APScheduler 中有两种常用的调度器,BlockingScheduler 和 BackgroundScheduler,当调度器是应用中唯一要运行的任务时,使用 BlockingSchedule,如果希望调度器在后台执行,使用 BackgroundScheduler。
代码中是 cron 是什么?
cron: 在特定时间周期性地触发
crontab -e 编辑定时任务,你可以加入:* 00 * * * ~/test
保存定时任务,这样就可以实现你的目的了。
我还是不太懂,是不是直接编辑crontab ,0 0 * * * /home/test
这样系统每天就在0点0分自动执行了么?
对的,关于crontab的详细用法,你可以网上搜一下,这是linux的定时管理。
# m h dom mon dow command
0 0 * * * /home/yourshell.sh
我还是不太懂,是不是直接编辑crontab ,0 0 * * * /home/test
这样系统每天就在0点0分自动执行了么
用crontab -e命令来编辑
对,自动执行。
第一个0代表0分,第二个0代表0时,接下来的3个*号表示每天每月每周都执行,command代表您要执行的脚本。