crontab定时执行shell脚本

步骤一    首先我们先看一下是否安装了crontab。一般情况下linux系统会自带crontab及crond。如果没有安装,请使用以下指令安装:yum install vixie-cron           yum install crontabs (PS:Ubuntu操作系统下请使用apt-get)
步骤二    然后我们写一个名字叫做miao.sh的shell脚本。很简单,就是输出一段字符。

 

 步骤三    我们的目的是每分钟执行一次这个shell脚本,所以要再建立一个存放日志的log文件,然后给予miao.sh权限

 

 步骤四   然后我们就要使用crontab了,首先进入它的配置文件,在/etc/crontab  中添加我们的调度命令。注意,该配置文件是一个只读文件,需要使用sudo vi  /etc/crontab 指令打开文件,不然有可能没有修改权限。

 

 

文件/etc/crontab中每行任务的描述格式如下: 

 
minute hour day month dayofweek command


minute - 从0到59的整数 
hour - 从0到23的整数 
day - 从1到31的整数 (必须是指定月份的有效日期)
month - 从1到12的整数 (或如Jan或Feb简写的月份)
dayofweek - 从0到7的整数,0或7用来描述周日 (或用Sun或Mon简写来表示)
command - 需要执行的命令(可用as ls /proc >> /tmp/proc或 执行自定义脚本的命令) 

 
comp表示以comp用户身份来运行

 

>>表示运行脚本后重定向到log文件中

 

对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。

 

前5个(*)星号

M(分钟0-59)

H(小时0-23)

D(天1-31)

m(月1-12)

d(一星期0-6,0为星期天)

特殊符号

* 代表所有的取值范围的数字

/ 代表每的意思,*/5就是每5个单位

- 代表从某个数字到某个数字 , 分开几个离散的数字

eg: 0 14 * * 1-5 周一到周五每天下午两点触发任务

0 10 * * 0,6 周六、周天早上十点触发任务

*/5 9-10 * * 1-5 周一到周五九点到十点每五分钟触发任务

步骤五    开启crontab服务
service crond start,出现下面情况

 

出现Redirecting to /bin/systemctl start crond.service, 即service crond start 需要替换为systemctl方式:

开始:systemctl start crond
停止:systemclt stop crond

步骤六    查看运行结果

到日志中查看是否有信息输入。

 

如何查看crontab的日志记录:看 /var/log/cron这个文件就可以,可以用tail -f /var/log/cron观察

 

报错:ERROR (getpwnam() failed)

这种一般是时间后面没加用户root导致:

/1 * * * /opt/a.sh 错误写法
/1 * * * root /opt/a.sh 正确的方式

 

posted on   不要挡着我晒太阳  阅读(8463)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

导航

统计

点击右上角即可分享
微信分享提示