linux创建定时任务权限,Linux定时任务(1)— crontab

执行定时任务

crontab 执行循环任务

at 执行一次性任务

crontab简介

Linux 系统有个 crond 程序,对应 cron 这个守护进程[ps -ef |grep cron]。它在系统中会每分钟扫描定时任务,读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。cron的配置文件称为“crontab”,是“cron table”的简写。crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。

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

crontab -u username -e #创建定时任务,

-u #后面跟创建此任务的用户名

-e #是进入编辑任务

-r #删除定时任务

-l #查看定时任务

1、crontab服务控制

service crond start //启动服务

service crond stop //关闭服务

service crond restart //重启服务

service crond reload //重新载入配置

service crond status //查看服务状态

2、查看 crontab 定时任务配置文件

/var/spool/cron/

这个目录下存放的是每个用户包括 root 的 crontab 任务;

每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom;

一般一个用户最多只有一个crontab文件。

/etc/crontab

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

cat /etc/crontab查看内容如下:

SHELL=/bin/bash

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

MAILTO=root

HOME=/

# For details see man 4 crontabs

# 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

# | | | | |

# * * * * * user-name command to be executed

内容说明

MAILTO=root 是说,当 /etc/crontab 这个档案中的例行性命令发生错误时,会将错误讯息或者是屏幕显示的讯息传给谁?由于 root 并无法再用户端收信,因此,通常都將这个 e-mail 改成自己的账号,好让我随时了解系统的状态!

“*”代表取值范围内的数字, “/”代表”每”, “-”代表从某个数字到某个数字, “,”分开几个离散的数字

在 “分 时 天 月 周 命令“ 这些字段里,除了“命令”是每次都必须指定的字段以外,其它字段皆为可选,视需要决定。对于不指定的字段,要用“*”来填补其位置。 举例如下:

minute (0-59)

hour (0-23)

day (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

*/15(每15分钟)

6(每天6点)

10,20(每月10号及20号)

8(每年的8月)

0 (每个星期天)

每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。

5 * * * * ls #指定每小时的第5分钟执行一次ls命令

30 5 * * * ls # 指定每天的 5:30 执行ls命令

30 7 8 * * ls #指定每月8号的7:30分执行ls命令

30 5 8 6 * ls #指定每年的6月8日5:30执行ls命令

30 6 * * 0 ls # 指定每星期日的6:30执行ls命令[注:0表示星期天,1表示星期1,

30 3 10,20 * * ls #每月10号及20号的3:30执行ls命令[注:“,”用来连接多个不连续的时段]

25 8-11 * * * ls #每天8-11点的第25分钟执行ls命令[注:“-”用来连接连续的时段]

*/15 * * * * ls #每15分钟执行一次ls命令 [即每个小时的第0 15 30 45 60分钟执行ls命令]

30 6 */10 * * ls # 每个月中,每隔10天6:30执行一次ls命令[即每月的1、11、21、31日是的6:30执行一次ls 命令。

50 7 * * * root #每天7:50以root 身份执行/etc/cron.daily目录中的所有可执行文件。

3、创建一个定期命令

第一种:crontab -u username -e 系统自动打开vi编辑器,输入需要执行的定时任务。如果出现如下提示:crontab: must be privileged to use -u ,请使用 sudo 执行。示例如下:

`* */2 * * * root rm /var/log/test/* `

第二种:用编辑文件的方式来创建定期命令,在/etc/cron.d/filename 下创建一个文件,vi 打开编辑文件的位置: /etc/cron.d/filename 。/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

4、查看任务、删除任务

crontab -l #查看任务

crontab -u root -r #删除任务

5、定时任务创建权限的设定

方式:编辑文件

/etc/crond.deny #编辑cron 创建定期任务的黑名单

/etc/crond.allow #编辑cron 创建定期任务的白名单

系统默认没有白名单,可以自己创建,注意,创建后,只有白名单上的用户才又权限创建任务。

6、创建cron脚本

第一步:写cron脚本文件,命名为crontest.cron,内容如下:

15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt

表示,每隔15分钟,执行打印一次命令

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

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

注意:这操作是直接替换该用户下的crontab,而不是新增

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值