下面针对的是非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. leetcode002 add_two_numbers
  2. HDLBits 系列(19) 12小时时钟的Verilog设计
  3. 程序显示文本框_python PDF转成图片小程序
  4. [转]COM对象创建-外部机制
  5. 使用睡袋_睡袋能用几十年?!只要你照着做(一)
  6. linux驱动helloworld
  7. Android之解决androidx.appcompat.widget.Toolbar去掉左边距
  8. TCP连续ARQ协议和滑动窗口协议
  9. 7-9 根据后序和中序遍历输出先序遍历 (10 分)
  10. MiniGUI编程--列表框
  11. 20191011:冒泡排序的改良版--Shaker排序
  12. 从光波叠加到条纹分布的matlab仿真,matlab光学仿真实验 13171019
  13. 基于单片机的交通信号灯控制系统设计
  14. Source Code Pro一款堪称完美的编程字体
  15. outlook2010 pst文件过大解决办法
  16. 跨专业考计算机研究生有专业限制吗,我想跨专业考计算机专业研究生
  17. 亿道丨三防手机丨手持终端丨零售行业如何选择手持工业终端设备?
  18. 遗传算法解决tsp问题(基于python)
  19. 三菱4轴控制伺服案例,三菱PLC FX3U加三菱1PG定位模 块控制4个松下伺服,有完整的注释,结构清晰明了。伺服控制程序JOG HOME 定位 全部写成了功能块FB .你可以直接拿过去用
  20. 使用 ChatterBot 做简单的机器人

热门文章

  1. Struts框架(一)
  2. WPF版的Dock控件第二版完成
  3. .NET中栈和堆的比较
  4. kafka windows单机安装测试
  5. 使用apache benchmark(ab) 测试报错: apr_socket_recv: Connection timed out (110)
  6. 设计模式之禅——模板方法模式钩子方法
  7. 管理软raid磁盘队列
  8. 公开课视频-《第01章 规划》-大企业云桌面部署实战-在线培训-视频(奉献)
  9. DevExpress控件TExtLookupComboBox实现多列模糊匹配输入的方法
  10. 2013第44周日小结