概念扫盲

程序与进程
程序:未运行
进程:运行中,由cpu分配一个标识符pid(program id)=========================================================================================================
前台运行 || 后台运行
不需要交互的一般都会丢到后台去.
如果程序不是默认后台执行,我们可以手动在后面加"&",吧进程丢到后台.举个栗子:
查看运行在后台的ssh程序.
sudo netstat -lntup|grep ssh
[2017/8/15 20:40:14] tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1013/sshd
[2017/8/15 20:40:14] tcp6       0      0 :::22                   :::*                    LISTEN      1013/sshd
如上所示,pid为1013像ssh这种一直生存着,基本上与系统共存亡的,我们一般称之为守护进程(服务)
=========================================================================================================
如何控制守护进程?
crond(crontab)
与之类似的功能还有atd(当然这里他不是主角).crond每分钟会去检查系统是否存在需要执行的任务,如果存在,那么就执行那些任务.
没错,这货就是个定时器.
想想看js中的internal,TMD的道理还是相同的.crond对于秒无能为力
真想用,那就自己写个shell,
或者使用quartz(这是什么鬼东西啊,不认识)========================================================================================================
定时任务的应用
1. 举个栗子,备份
2. 发邮件
...
=========================================================================================================
定时任务分
系统自带的定时任务
自定义的定时任务=========================================================================================================

cron的格式

at绿叶1号
适用于只执行一次的任务
这货用的很少,基本没人用,了解即可
我们写入的配置会被atd服务读取执行.anacron绿叶2号
适应于非24小时开机的服务器执行的定时任务
基本也是没人用cron红花
crond是一个服务
crontab是用户用来设置规则的
常见的参数是
-l  --list
-e  --edit
corntab操作的文件是/var/spool/cron/${user}
推荐使用crontab -e,因为有语法检查,当然了你有信心,直接该文件我也没意见用户的定时任务格式是7列
系统的定时任务格式是8列,
其实列数不重要,不同版本可能有差异,
自己看着说明书搞就行了crontab的格式如下(文件来自/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
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed对应的是" 分时日月周"
*   任意值
-   一段时间范围,栗子:5-10
,   多个值之间的分割符,比如说:5,8,9,10
/n  表示每隔n单位时间执行一次

实战

小任务:
每分钟打印一次自己的名字到指定文件中.解:
添加文件
touch /home/guang/notes/test_crontab_result.log
然后直接跑到/etc/crontab中添加一行数据
*/1  *  *  *  * guang  echo "huang guang da" >> /home/guang/notes/test_crontab_result.log结果如下:
➜  notes cat test_crontab_result.log
huang guang da
huang guang danice
但是有问题,/1是多余的,本来就是每分钟,画蛇添足了,大兄弟=========================================================================================================
小任务:
每天凌晨3点执行一个脚本(内容随意,本意是备份,现在改为输出名字吧)解:
首先,添加touch /home/guang/notes/backup_result.log
然后添加脚本/home/gaung/bin/backup.sh
vi /home/gaung/bin/backup.sh
# here is the shell use to finish back up task in 3:00 everyday
# @author guang
# @date 2017-08-15
echo "huang guang da" >> /home/guang/notes/backup_result.log最后,跑到/etc/crontab中添加一行数据
*  3  *  *  * guang  /bin/sh /home/gaung/bin/backup.sh
# 这里有两个要注意的点:1 使用sh来执行脚本;2 sh 和 脚本都要写全路径

补充

上面/etc/crontab是属于系统级的任务排程
除此以外还有用户级的任务排程
用户的定时任务文件在/etc/spool/cron/{user};文件默认是不存在的,当使用crontab -e 进行任务编写时才会添加该文件
查看任务的执行情况可以去看日志/etc/log/cron
1. centos7默认每周日志轮替;
2. 分析日志可以帮助查看系统是否运行了不正常的任务,如被植入木马等
关于用户写任务排程的权限可以查看修改/etc/cron.deny和/etc/cron.allow

编写任务
[root@com]/var/spool/cron# crontab -e
no crontab for root - using an empty one
crontab: installing new crontab
[root@com]/var/spool/cron# ls
root
[root@com]/var/spool/cron# crontab -u guang -e
no crontab for guang - using an empty one
crontab: installing new crontab
[root@com]/var/spool/cron# ls
guang  root
[root@com]/var/spool/cron# 查看日志:
Oct 14 22:34:02 com CROND[4214]: (root) CMD (echo "root to huang guang da" >> /home/guang/notes/backup_result.log)
Oct 14 22:34:02 com CROND[4215]: (guang) CMD (echo "huang guang da to huang guang da " >> /home/guang/notes/backup_result.log)
Oct 14 22:34:02 com CROND[4216]: (guang) CMD ( echo "huang guang da" >> /home/guang/notes/test_crontab_result.log)
Oct 14 22:34:02 com CROND[4217]: (guang) CMD ( /bin/sh /home/guang/bin/backup.sh)
Oct 14 22:35:01 com CROND[4235]: (guang) CMD (echo "huang guang da to huang guang da " >> /home/guang/notes/backup_result.log)
Oct 14 22:35:01 com CROND[4236]: (guang) CMD ( /bin/sh /home/guang/bin/backup.sh)
Oct 14 22:35:01 com CROND[4237]: (root) CMD (echo "root to huang guang da" >> /home/guang/notes/backup_result.log)
Oct 14 22:35:01 com CROND[4238]: (guang) CMD ( echo "huang guang da" >> /home/guang/notes/test_crontab_result.log)查看权限
[root@com]/etc# ls -l cron.deny cron.allow
ls: cannot access cron.allow: No such file or directory
-rw-------. 1 root root 0 Mar 31  2016 cron.deny
[root@com]/etc# cat cron.deny
[root@com]/etc#

crontab定时任务相关推荐

  1. php定时任务为什么不好写,php解决crontab定时任务不能写入文件问题的方法分析...

    本文实例讲述了php解决crontab定时任务不能写入文件问题的方法.分享给大家供大家参考,具体如下: 今天使用crontab写的定时任务没有执行,很纳闷. crontab.php error_rep ...

  2. linux crontab 定时任务 计划任务 不执行 原因

    前言 最近在工作中遇到了一些问题,crontab定时任务居然不执行,后来我在网上找的时候发现网上主要说了这几个原因: 1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个cr ...

  3. 【Linux】crontab 定时任务 遇到几个问题

    文章目录 cron 与 crontab 区别 bash xxx.sh 可以执行,但是crontab定时任务不执行,也没有报错信息,无日志: 首先区分 crontab -e 和 /etc/crontab ...

  4. CentOS crontab定时任务不执行的解决

    crontab 配置文件 SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/ # .- minute (0 59 ...

  5. python定时任务crontab_【Python】Linux crontab定时任务配置方法(详解)

    CRONTAB概念/介绍 crontab命令用于设置周期性被执行的指令.该命令从标准输入设备读取指令,并将其存放于"crontab"文件中,以供之后读取和执行. cron 系统调度 ...

  6. crontab定时任务不生效问题解决

    导致crontab定时任务不生效问题可能的原因非常多 首先,排查一些可能会导致问题出现的简单原因. 1.Linux的时间与互联网时间不一致 2.定时执行的.sh文件无执行权限 3.crontab进程未 ...

  7. linux怎么查看定时任务有没有运行,怎么看crontab定时任务是否执行

    定时执行操作命令,每一个用户拥有自己的crontab,那么大家知道怎么看crontab定时任务是否执行呢?接下来大家跟着学习啦小编一起来了解一下的看crontab定时任务是否执行解决方法吧. 看cro ...

  8. java定时任务增删改查_python实现crontab定时任务的增删改查

    python实现crontab定时任务的增删改查 python实现crontab定时任务的增删改查 本人主要业务方向是后台,在开发不同版本迭代或者项目的部署时,每次都手动去创建cron定时任务,很不符 ...

  9. Linux crontab 定时任务命令详解

    Linux Crontab 定时任务 命令详解 [日期:2016-02-13] 来源:Linux社区 在工作中需要数据库在每天零点自动备份所以需要建立一个定时任务.我选择在Linux下使用Cronta ...

  10. crontab定时任务不执行的原因

    我在网上找的时候发现网上主要说了这5个原因: 1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止.如果停止了就无法执行任何定时 ...

最新文章

  1. python requests返回的json对象用json.loads()时转为字典时编码变为了unicode
  2. linux中间隔10ping一次脚本,linux批量ping脚本shell
  3. 反欺诈评分模型之手机终端
  4. springboot动态加载native类库
  5. 三分钟让面试官满意系列 - Bagging和Boosting 的联系及区别
  6. 解释stateless worker
  7. (转)Error launching Console Application PDFLaTeX ... 的解决方法
  8. TCP安全测试指南-魔兽3找联机0day
  9. linux安全加固技术--内核安全模块LSM
  10. 国产手机再次发力,是否可以阻击三星苹果
  11. #三、股市数学拟合理论的理论兼容
  12. 【IoT】CC2541 BLE 4.0 底层协议栈广播连接过程解析
  13. 计量芯片应用心得之硬件篇
  14. 从Antd 源码到自我实现之 Form表单
  15. 阿里巴巴实习一年之后的感悟
  16. Qt中LineEdit编辑框限制数字输入整理
  17. 下载windows10.iso
  18. AutoMapper 9.0的使用
  19. 想剑网三妹子最多服务器,女生入坑《剑网3》,首选门派是蓬莱,但千万不要碰五毒...
  20. VBScript常用函数

热门文章

  1. ARC093 F - Dark Horse
  2. TypeError: decoding str is not supported
  3. 腾讯视频显示网络连接服务器失败怎么办,腾讯视频不能投屏怎么回事 腾讯视频无法投屏的解决方法...
  4. ld链接时遇到__stack_chk_fail_local错误
  5. 【论文翻译】Clustering by fast search and find of density peaks
  6. Enhancing The Reliability of Out-of-distribution Image Detection in Neural Networks解读
  7. 短视频社交应用Socialcam关闭背后,是又一个圈钱阴谋?
  8. 《哈佛大学公开课:幸福课》 学习笔记(1)
  9. meta http-equiv 属性 详解
  10. 奔梦向前-web前端开发工具-简称DW软件适合写网页制作代码-2020-04-25