下面针对的是非ubuntu环境,会在文章末尾介绍ubuntu的一些区别。
在Linux下,经常需要定期的执行一些脚本从而来实现一些功能。
在Linux下我们用crontab来实现定期的执行脚本这个功能,下面就介绍一下crontab的使用。以及我遇到的一些问题

一. crontab的使用说明
1. crond 是linux用来定期执行程序的命令。当安装完成操作系统之后,默认便会启动此任务调度命令。crond命令每分钟会定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作。而linux任务调度的工作主要分为以下两类
a. 系统执行的工作,比如垃圾清理,备份
b. 用户自定义的工作,比如每5分钟执行一次脚本

 2. crontab是UNIX系统下定期执行任务的触发器。用户把要定期执行的任务记录在这个文件下面,然后crond定期的去检查这个定期执行列表,有要执行的工作时便自动执行。通过man crontab可以查看到下面的信息a. /etc/crond.allow 表示的是允许使用crontab的用户列表b. /etc/crond.deny 表示的是不允许使用crontab的用户列表3. crontab常用的几个命令格式crontab -l   //显示用户的crontab文件的内容crontab -e  //编辑用户的crontab文件的内容crontab -r   //删除用户的crontab文件4. crontab文件的基本格式如下所示*      *       *       *        *       command分    时     天     月     周           命令每列表示意义a. 第一个*表示的是分钟1~59分钟,默认*表示的是每分钟都执行,x-y表示的是x~y这段每分钟都执行,*/n表示每n分钟执行一次,x,y,z表示的是x,y,z分钟都执行。b. 第二个*表示的是小时1~23小时,默认*表示的是每小时都执行,x-y表示的是x~y这段每小时都执行,*/n表示每n小时执行一次,x,y,z表示的是x,y,z小时都执行。c. 第三个*表示的是天1~31,默认*表示的是每天都执行,x-y表示的是x~y这段每天都执行,*/n表示每n天执行一次,x,y,z表示的是x,y,z天都执行。d. 第四个*表示的是月1~12,默认*表示的是每个月都执行,x-y表示的是x~y这个段每月都执行,*/n表示每n分钟执行一次,x,y,z表示的是x,y,z天都执行。e. 第五个*表示的是周0~6(0表示周天),默认周一~周天都执行,x-y表示周x~周y每天都执行。5. crontab文件的一些例子a. 30 21 * * * /usr/local/etc/rc.d/lighttpd restart             //表示每天21:30重启apacheb. 45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart    //表示每月1,10,22号4:45重启apachec. 0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart    //表示每天18 : 00至23 : 00之间每隔30分钟重启apached. * */1 * * * /usr/local/etc/rc.d/lighttpd restart              //表示每一小时重启apachee. */5 * * * * /usr/local/etc/rc.d/lighttpd restart              //表示每5分钟重启apache

二. 具体例子
1. 首先我在/home/chenguolin/tmp/ 创建一个shell脚本名为s.sh。注意脚本内部的路径使用绝对路径。
这个脚本的功能就是把当前的日期输出重定向到当前目录下的out文件

  2. 然后设置每2分钟执行一次这个脚本,>/dev/null 2>&1。原因是因为系统会在每次执行完任务之后就发一个邮件告诉用户,通过这个操作可以把信息全部重定向到/dev/null中,/dev/null这个文件类似回收站过一段时间系统自动清理。*/2 * * * * sh /home/chenguolin/tmp/s.sh >/dev/null 2>&1然后发现过了n个2分钟,out文件根本就没有输出。3. 在谷歌/百度无果之后,问了同事,得到了原因是因为crontab可能有时候没有办法执行用户家目录下面的两个文件,分别是.bashrc和.bash_profile这两个文件的作用如下.bashrc作用是用于你的bash shell的bash信息,当登录时及每次打开新的shell时,该文件被读取;.bash_profile作用是每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!默认情况下,他设置一些环境变量,执行用户的.bashrc文件,因此我们要手动在crontab文件中添加source /home/chenguolin/.bashrc && source /home/chenguolin/.bash_profilesource的作用是当前bash环境下执行命令,而scripts是启动一个子shell来执行命令。这样如果把设置环境变量(或alias等等)的命令写进scripts中,就只会影响子shell,无法改变当前的BASH,所以通过文件(命令列)设置环境变量时,要用source 命令。因此crontab文件中变成*/2 * * * * source && /home/chenguolin/.bashrc && source /home/chenguolin/.bash_profile && sh /home/chenguolin/tmp/s.sh >/dev/null 2>&14. 发现可以定时的执行脚本。如果还不行,那只能通过查找log来查错。非ubuntu的Linux crond的日志文件保存在/var/log下

三. ubuntu下使用crontab定时执行脚本
注意下几个问题以
1. ubuntu下crontab的服务程序是cron,并且默认cron服务的log是没有的,我们必须手动开启
a. sudo vim /etc/rsyslog.d/50-default.conf
b. 找到cron.*那一行把注释去掉
c. 然后重启cron服务 sudo service cron restart
d. 这样就可以在/var/log里面发现有cron的日志文件了,我们就可以通过查看日志文件找到问题所在
2. ubuntu下,用户家目录下是没有.bash_profile文件的,并且会自动去执行.bashrc文件,只要写成下面这样即可
/2 * * * sh /home/chenguolin/tmp/s.sh >/dev/null 2>&1

总结:

 crontab -e
30 18 * * * /bin/sh /home/zhuyong/share/script/Blink_NS010.sh  | tee /home/zhuyong/share/Blink_NS010_build.log 2>&1

Linux下设置定期执行脚本相关推荐

  1. linux下设置定时执行脚本

    linux下设置定时执行脚本 1.首先安装所需程序并启动 crontabs是设置周期性被执行的指令 yum install vixie-cronyum install crontabsservice ...

  2. PHP 命令行模式实战之cli+mysql 模拟队列批量发送邮件(在Linux环境下PHP 异步执行脚本发送事件通知消息实际案例)...

    源码地址:https://github.com/Tinywan/PHP_Experience 测试环境配置: 环境:Windows 7系统 .PHP7.0.Apache服务器 PHP框架:ThinkP ...

  3. Linux下Crontab定时执行命令

    Linux下Crontab定时执行命令 目录 Crontab概述及安装 Crontab规则 常见例子 1. Crontab概述及安装 1. Crontab指令是Linux下执行定时任务的一个命令. 2 ...

  4. hudson linux节点,在Linux下设置Hudson进行连续集成

    在Linux下设置Hudson持续集成 哈德森监督执行重复的工作,例如建立一个软件项目或由cron运行的工作. 本文介绍如何在Linux上进行设置. 1准备 1.创建目录结构如下: /var/huds ...

  5. Linux下的lds链接脚本详解

    一. 概论 每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分 ...

  6. 手把手教学Linux下oracle11g自动化安装脚本编写

    手把手教学Linux下oracle11g自动化安装脚本编写 产品:Oracle 版本:11.2.0.4 环境:Centos7 文章目录 手把手教学Linux下oracle11g自动化安装脚本编写 0. ...

  7. linux系统中建立网络白名单,Linux下设置防火墙白名单(RHEL 6和CentOS 7)的步骤

    进入Linux 命令行,编辑防火墙规则配置文件 iptables vi /etc/sysconfig/iptables 下面是一个白名单设置的例子: # Firewall configuration ...

  8. ./ . 和#!/bin/bash 辨析Linux如何选择当前执行脚本的shell

    最近遇到一个有趣的问题,让我搞清楚Linux如何选择当前执行脚本的shell 执行cts的的 media stress test 需要安装 android-cts-media-1.0.zip 把这个文 ...

  9. Linux下Apache自动监测重启脚本

    Linux下Apache自动监测重启脚本(智能化程度较高) 本站原创 [基于 署名-非商业使用-相同方式分享 2.5 协议,转载须注明链接] 本文所述apache监控脚本已经过VPS管理百科验证 由于 ...

  10. 怎么设置linux端口权限,Linux下设置端口权限的系统调用—ioperm和iopl

    Linux 下设置端口权限的系统调用有两个: ioperm 和 iopl . 一. ioperm 和 iopl 介绍. 1.ioperm 该系统调用的介绍参考了以下链接中的内容: http://blo ...

最新文章

  1. git 从远程主服务器当中创建新分支
  2. 某程序员哀叹:二本计算机,4年开发,年包才40多万。二本真的不如985/211吗?...
  3. 计算机及网络应用基础思维导图_计算机基础/算法/面试题 PDF+思维导图下载
  4. js中执行到一个if就停止的代码_Node.JS实战64:ES6新特性:Let和Const。
  5. 正则表达式基础知识及应用(用于个人学习以及回顾)
  6. Oracle EBS-SQL (QA-1):检查超出检验周期的检验数据.sql
  7. C#趣味程序---三色球问题
  8. 数学之美:两点之间最快的路径是什么?能看到最后的都是学霸
  9. el-select下拉框组件el-option如何使用v-for动态渲染问题 - 方法篇
  10. 开课吧python全栈靠谱么-杭州Web全栈
  11. 拓端tecdat|R语言多元动态条件相关DCC-MVGARCH、常相关CCC-MVGARCH模型进行多变量股市波动率预测
  12. 分析LOIC流,判断DDoS攻击源
  13. C#--图表控件(Chart)
  14. Android network框架分析之NetworkManagementService和netd交互深入分析(二)
  15. web3调用智能合约取事件
  16. 【2020总结】脚踏实地,仰望星空
  17. 360极速浏览器的兼容模式
  18. 黑马程序员全套Java教程_Java基础入门视频教程零基础自学Java必备教程视频讲义(5)
  19. 【Java】java修炼之道
  20. 正版现货黄金怎么区分(上)

热门文章

  1. 文件读入简单操作(C#)
  2. OLAP引擎——Kylin介绍
  3. 【MFC学习笔记-作业7-小型画图软件】【】
  4. 表单元素的外观改变(webkit and IE10)
  5. 传输表空间--使用Rman方式
  6. 了解人工智能与智能系统中的先驱人物
  7. 穷人和富人在处事方式上的区别
  8. centOS6和centOS7网卡重启方法,以及关闭防火墙的方法
  9. 【路由和交换之H3C自导自演】
  10. 用友与中国互联网协会签署战略合作 共推企业互联网转型