10.23 linux任务计划cron

Linux任务计划

  • crontab -u、-e、-l、-r
  • 格式:分 时 日 月 周 user command
  • 文件/var/spool/cron/username
  • 分范围0-59,时范围0-23,日范围1-31,月范围1-12,周1-7
  • 可用格式1-5表示一个范围1到5
  • 可用格式1,2,3表示1或者2或者3
  • 可用格式*/2表示被2整除的数字,比如小时,那就是每隔2小时
  • 要保证服务是启动状态
  • systemctl start crond.service

crontab命令

  • crontab -e //编辑
  • crontab -l //列出 -crontab -r //删除
  • crontab -u username -l //指定用户

任务计划

  • crontab -e //编辑
  • 在linux系统中,系统计划是必不可少的,比如备份数据,重启服务等
    • 操作过程,可能是一个脚本,有可能是一个单独的命令,在特定的时间去执行它,所以任务计划是不可缺少的
  • 在windows中都是使用的个人电脑,所以任务计划很少见,几乎用不到

linux中计划的配置文件

  • cat /etc/crontab //查看任务计划的配置文件
    • 文件中会定义几个变量
      • SHELL=/bin/bash
      • PATH环境变量,它命令的路径
      • MAILTO发邮件给谁
[root@hanfeng ~]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# 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        //星期,0或7都表示周日,也可以写成英文的简写
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed        //用户,不写用户就是root 最后一列,是你要执行的命令

[root@hanfeng ~]# 
  • crontab -e 进入到crontab的配置文件中,用法和vim一样
    • 按 i 进入编辑模式
    • 分钟,小时,日,月,星期,然后后面跟具体的命令
    • 凌晨3点去执行,* 表示所有的意思
每天凌晨三点,执行123.sh脚本文件,正确的和错误的日志都输出到123.log文件中

0 3 * * *  /bin/bash  /usr/local/sbin/123.sh >/tmp/123.log 2>/tmp/123.log

因为是每天三点执行脚本,所以可以写成追加,每天都去记录日志

0 3 * * *  /bin/bash  /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log

若想1-10号,双月去执行该脚本,后面就不在执行了——>只要 被2 整除,就符合条件

0 3 1-10 */2 *  /bin/bash  /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log

只要周2和周5执行该文件

0 3 1-10 */2 2,5  /bin/bash  /usr/local/sbin/123.sh >>/tmp/123.log 2>>/tmp/123.log
  • 为什么没有年份?
  • 用星期确定你的唯一性,比如说今年的6月18号和明年的6月18号的星期肯定是不同的,这样就可以确定某一天的唯一性

启动crond服务

  • 若想要这个任务正常使用,还需要去启动crond服务
    • systemctl start crond.service //启动crond服务
  • 若想检查服务是否成功启动,
    • 方法一:可使用ps aux |grep cron 命令查看
      • 若有这个进程,说明这个服务已经启动了
    • 方法二:使用systemctl start crond 查看状态
      • 若是 绿色 ,则表示该服务已经启动了
      • 若是该服务已经停掉了,则不会有颜色

任务计划不执行的原因分析

  • 在写了一个计划,放入到配置文件中,但就是不执行
  • 不执行的原因很有可能是你写的脚本里面,没有使用 绝对路径 的原因导致不执行
    • 因为很有可能,你在使用的命令不在PATH里面,所以要么将命令写一个绝对路径,要么将命令的路径加入到PATH变量里面去
  • 建议:在写一个脚本的时候,都要写追加一个日志,这样可以保证这个任务有据可查,再不执行的时候,查看错误日志即可

任务计划备份

  • crontab -l //列出
  • crontab文件存在位置/var/spool/cron/username
  • 在需要备份的时候,直接把这个文件,或者目录拷贝下即可

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏信安之路

web应用渗透测试流程

对于web应用的渗透测试,一般分为三个阶段:信息收集、漏洞发现以及漏洞利用。下面我们就分别谈谈每个阶段需要做的事情。

1260
来自专栏闵开慧

hadoop集群调优分两个方面,map和reduce

hadoop集群调优分两个方面,map和reduce map调优:         map 任务执行会产生中间数据,但这些中间结果并没有直接IO到磁盘上,而...

3545
来自专栏帘卷西风的专栏

Cocos2d-x 3.0 编译出错 解决 error: expected ';' at end of member declaration

   最近把项目移植到cocos2d-x 3.0,在整Android编译环境的时候,出现一大堆的编译出错,都是类似“error: expected ';' a...

842
来自专栏HappenLee的技术杂谈

P2P结构与Quorum机制------《Designing Data-Intensive Applications》读书笔记8

有些数据存储系统放弃了Leader的机制,允许任何副本直接接受用户的写操作。(如Amazon的Dynamo,FaceBook的Cassandra,虽然最终Fac...

1222
来自专栏用户2442861的专栏

2013年 腾讯笔试题:fork()

如果你对fork()的机制比较熟悉的话,这个题并不难,输出应该是6个“-”,但是,实际上这个程序会很tricky地输出8个“-”。

1131
来自专栏网络

Nginx 系列实用教程#2:性能

协作翻译 原文:Nginx Tutorial #2: Performance 链接:https://www.netguru.co/codestories/ngi...

2266
来自专栏coding for love

进程与线程,单核与多核1. 简介2. 程序3. 进程4. 线程5. 多进程与多线程的选择6. 小结参考

用户打开浏览器,其实就是打开了浏览器应用程序。那么什么是程序呢?我们常说浏览器是多线程的,JS 是单线程的,那么什么是线程呢?说到线程,和我们常说的进程有什么关...

2143
来自专栏你不就像风一样

Java性能调优工具(Linux、Windows篇)

top命令的输出可以分为两部分:前半部分是系统统计信息,后半部分是进程信息。在统计信息中,

2632
来自专栏云计算教程系列

如何在Ubuntu上使用Firefox,Siege和Sproxy对网站进行基准测试

Siege是一种可配置的基准测试和测试工具,适用于通过发出网页请求来测试Web服务器的网站。Siege请求的每秒页数可以设置为从每秒几页到网站可以处理的最大数量...

1072
来自专栏Linyb极客之路

使用Jmeter进行http接口性能测试

在进行网页或应用程序后台接口开发时,一般要及时测试开发的接口能否正确接收和返回数据,对于单次测试,Postman插件是个不错的Http请求模拟工具。

2656

扫码关注云+社区

领取腾讯云代金券