linux-crontab定时执行shell脚本

本文详细介绍了Linux下crontab命令的使用方法,包括语法、选项、参数及编辑定时任务的具体格式。同时,提供了多个实例帮助理解如何设置周期性执行的任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定时器crontab

linux下使用crontab命令被用来提交和管理用户需要周期性执行的任务。

1.crontab语法
crontab  (选项)(参数)
例如:crontab -e
2.crontab选项
-e:修改 crontab 文件,如果文件不存在会自动创建。 
-l:显示 crontab 文件。 
-r:删除 crontab 文件。(慎用!)
-ir : 删除 crontab 文件前提醒用户。
-u<用户名称>:指定crontab 文件用户名称。
3.crontab参数
crontab文件:指定包含待执行任务的crontab文件。
例如:shell脚本,python脚本,cron脚本文件等。。。
4.cron服务
CentOS
查看crontab状态
service crond status 

开启crontab
service crond start

关闭crontab
service crond stop

重启crontab
service crond restart
Ubuntu
查看crontab状态
service cron status 

开启crontab
service cron start

关闭crontab
service cron stop

重启crontab
service cron restart
5.编辑定时任务
  • 在crontab文件中写入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。每个域之间使用空格或者制表符分隔。格式如下:

    minute hour day-of-month month-of-year day-of-week commands
    分 时 日 月 星期几 要执行的命令

示例:

30 21 * * * /etc/init.d/smb restart 	每晚的21:30重启smb

0 12 * * * /home/gim/project/hello.sh	每天中午12点的执行shell脚本

0 13 * * 0 /home/gim/project/hello.sh	每周日13点的执行shell脚本

0 4 1 1 * command line		1月1日早上4点

0 11 4 * 1-3 command line	每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点

02 4 * * * root run-parts /etc/cron.daily	每天(凌晨4:02)执行/etc/cron.daily内的脚本 - root用户执行

15 */2 * * * echo "Have a break now." >> /tmp/test.txt	每两个小时(第一个为15,指明没两个小时的第15min中执行一次)

0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt	晚上11点到早上8点之间每两个小时和早上八点

30 12 * * * /usr/local/bin/python3 /home/gim/project/calculate_summary4pro.py 0 >> /home/gim/project/logs/python3/python$(date +\%Y\%m\%d).log 2>&1	每天中午12点半执行一次python脚本,并把执行的日志结果追加到当天的日志文件中。

合法值为:00-59 00-23 01-31 01-12 0-6 (0 is sunday)

  • 除了数字还有几个特殊的符号:

    *代表所有的取值范围内的数字
    "/“代表每的意思,”/5"表示每5个单位
    "-"代表从某个数字到某个数字
    ","分开几个离散的数字

【 知识扩展】

Linux下的任务调度分为两类:系统任务调度和用户任务调度。
系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。
在oracle 中可以利用dbms_job包定时执行pl/sql、sql过程,在像备份等需要在操作系统级定时任务只能采用crontab来完成。

【注意事项】
  • %
    在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义%
    59 1 1-7 4 * test 'date +\%w' -eq 0 && /root/a.sh
  • 注:commands(参数文件)注意以下几点
    要是存在文件,要写绝对路径。
    即使是打印也不会显示在显示屏,在后台运行,最好重定向日志。
  • 环境变量
    环境变量的值,在crontab 文件中获取不到,所以要注意,可以写脚本。
  • 文件或用户权限
    查看当前用户是否有权限执行参数文件,当前命令是否有权限。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值