crontab的两种配置方式,out持续累加问题
分类:pc28.am神测网

废话不多说,直接上菜了

在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grep cron]。cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。

此方法不需要修改Tomcat配置 亲测,可用

 

一、cron服务
  cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
  service crond start    //启动服务
  service crond stop     //关闭服务
  service crond restart  //重启服务
  service crond reload   //重新载入配置
  service crond status   //查看服务状态 

1.在tomcat  bin目录下添加文件clear_log.sh

第一种:在/etc/crontab下设置,指定用户名的

二、cron在3个地方查找配置文件:
1、/var/spool/cron/ 这个目录下存放的是每个用户包括root的crontab任务,每个任务以创建者的名字命名,比如tom建的crontab任务对应的文件就是/var/spool/cron/tom。一般一个用户最多只有一个crontab文件。

内容如下:

1、vim命令进入/etc/crontab

三、/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。

#!/bin/sh
d=`date %Y-%m-%d`
d7=`date -d'7 day ago' %Y-%m-%d`
cp /opt/apache-tomcat-8.5.9/logs/catalina.out /opt/apache-tomcat-8.5.9/logs/catalina.${d}.log
echo "" > /opt/apache-tomcat-8.5.9/logs/catalina.out
rm -rf /opt/apache-tomcat-8.5.9/logs/catalina.${d7}.log

2、在最后一行加上

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

2.将sh文件加入操作权限

59 23 * * * root /root/catalina.out.rm/rm_8080_8081_catalina.sh

# For details see man 4 crontabs

chmod x /opt/apache-tomcat-8.5.9/bin/clear_log.sh

如下说明:

# 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

3.修改/etc/crontab文件(定时器)在文档最下方添加(每天0点1分执行脚本):

图片 1

图片 2

1 0 * * * root /opt/apache-tomcat-8.5.9/bin/clear_log.sh

3、重启crontab,使配置生效

  • MAILTO=root:是说,当 /etc/crontab 这个档案中的例行性命令发生错误时,会将错误讯息或者是屏幕显示的讯息传给谁?由于 root 并无法再用户端收信,因此,我通常都將这个 e-mail 改成自己的账号,好让我随时了解系统的状态!
  • 01 * * * * root run-parts /etc/cron.hourly:在 #run-parts 这一行以后的命令,我们可以发现,五个数字后面接的是 root ,这一行代表的是『执行的级别为root身份』当然,你也可以将这一行改为成其他的身份!而 run-parts代表后面接的 /etc/cron.hourly 是『一个目录内(/etc/cron.hourly)的所有可执行文件』,也就是说,每个小时的01分,系统会以root身份去/etc/cron.hourly这个目录下执行所有可执行的文件!后面三行也是类似的意思!你可以到 /etc/ 底下去看看,系统本来就预设了这4个目录!你可以将每天需要执行的命令直接写到/etc/cron.daily即可,还不需要使用到crontab -e的程式!

4.加载crontab文件

图片 3

四、/etc/cron.d/ 这个目录用来存放任何要执行的crontab文件或脚本。

crontab -u root /etc/crontab

 

五、权限(?)
crontab权限问题到/var/adm/cron/下一看,文件cron.allow和cron.deny是否存在
用法如下: 
1、如果两个文件都不存在,则只有root用户才能使用crontab命令。 
2、如果cron.allow存在但cron.deny不存在,则只有列在cron.allow文件里的用户才能使用crontab命令,如果root用户也不在里面,则root用户也不能使用crontab。 
3、如果cron.allow不存在, cron.deny存在,则只有列在cron.deny文件里面的用户不能使用crontab命令,其它用户都能使用。 
4、如果两个文件都存在,则列在cron.allow文件中而且没有列在cron.deny中的用户可以使用crontab,如果两个文件中都有同一个用户,以cron.allow文件里面是否有该用户为准,如果cron.allow中有该用户,则可以使用crontab命令。 

5.重启crontab

 

AIX 中 普通用户默认都有 crontab 权限,如果要限制用户使用 crontab ,就需要编辑/var/adm/cron/cron.deny 
HP-UNIX 中默认普通用户没得crontab 权限 ,要想放开普通用户的crontab 权限可以编

/etc/init.d/crond restart

第二种:直接用crontab -e,不需要指定用户

六、创建cron脚本
第一步:写cron脚本文件,命名为crontest.cron。
15,30,45,59 * * * * echo "xgmtest....." >> xgmtest.txt  表示,每隔15分钟,执行打印一次命令 
第二步:添加定时任务。执行命令 “crontab crontest.cron”。搞定 
第三步:"crontab -l" 查看定时任务是否成功或者检测/var/spool/cron下是否生成对应cron脚本

6.查看定时任务

1、crontab -e进入

注意:这操作是直接替换该用户下的crontab,而不是新增

crontab -l

图片 4

 

2、:wq退出保存

七、crontab用法 
  crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格。用户把需要执行的命令序列放到crontab文件中以获得执行。
    每个用户都可以有自己的crontab文件。/var/spool/cron下的crontab文件不可以直接创建或者直接修改。该crontab文件是通过crontab命令创建的

3、查看上面那个脚本是否有执行权限

   在crontab文件中如何输入需要执行的命令和时间。该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
    每个域之间使用空格或者制表符分隔。格式如下: 
  minute hour day-of-month month-of-year day-of-week commands 
    合法值 00-59 00-23 01-31 01-12 0-6 (0 is sunday) 
    除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。

图片 5

    -l 在标准输出上显示当前的crontab。 
  -r 删除当前的crontab文件。 
  -e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。当结束编辑离开时,编辑后的文件将自动安装。 

4、还要看脚本里面的涉及的操作文件是否有权限

 

5、重启crontab,使配置生效

八、例子: 
每天早上6点 
0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

图片 6

每两个小时 
0 */2 * * * echo "Have a break now." >> /tmp/test.txt  

晚上11点到早上8点之间每两个小时和早上八点 
0 23-7/2,8 * * * echo "Have a good dream" >> /tmp/test.txt

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 
0 11 4 * 1-3 command line

1月1日早上4点 
0 4 1 1 * command line SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号 HOME=/ 

每小时执行/etc/cron.hourly内的脚本
01 * * * * root run-parts /etc/cron.hourly
每天执行/etc/cron.daily内的脚本
02 4 * * * root run-parts /etc/cron.daily 

每星期执行/etc/cron.weekly内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly 

每月去执行/etc/cron.monthly内的脚本 
42 4 1 * * root run-parts /etc/cron.monthly 

注意: "run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是文件夹名。   

每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。 
5,15,25,35,45,55 16,17,18 * * * command

每周一,三,五的下午3:00系统进入维护状态,重新启动系统。
00 15 * * 1,3,5 shutdown -r 5

每小时的10分,40分执行用户目录下的innd/bbslin这个指令: 
10,40 * * * * innd/bbslink 

每小时的1分执行用户目录下的bin/account这个指令: 
1 * * * * bin/account

每天早晨三点二十分执行用户目录下如下所示的两个指令(每个指令以;分隔): 
20 3 * * * (/bin/rm -f expire.ls logins.bad;bin/expire$#@62;expire.1st)  

每年的一月和四月,4号到9号的3点12分和3点55分执行/bin/rm -f expire.1st这个指令,并把结果添加在mm.txt这个文件之后(mm.txt文件位于用户自己的目录位置)。 
12,55 3 4-9 1,4 * /bin/rm -f expire.1st$#@62;$#@62;mm.txt

 

 

 

 

 今天做了个数据库的备份脚本,顺便系统得学习一下Linux下定时执行脚本的设置。Linux下的定时执行主要是使用crontab文件中加入定制计划来执行,设置比Windows略微复杂一些(因为没有图形界面嘛),但是也不是很复杂,基本上用过一遍就能记住了,关键是要记住/var/spool/cron这个目录。下面看一下具体的使用方法:

 

    首先查看一下/etc/crontab文件:

 

$ cat /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/

# run-parts
01 * * * * root run-parts /etc/cron.hourly
02 4 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

    前四行是有关设置cron任务运行的环境变量。SHELL变量的值指定系统使用的SHELL环境(该样例为bash shell),PATH变量定义了执行命令的路径。Cron的输出以电子邮件的形式发给MAILTO变量定义的用户名。如果MAILTO变量定义为空字符串(MAILTO=""),电子邮件不会被发送。执行命令或脚本时HOME变量可用来设置基目录。

    文件/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或 执行自定义脚本的命令) 

 

    root表示以root用户身份来运行
    run-parts表示后面跟着的是一个目录,要执行的是该目录下的所有脚本

 

    对于以上各语句,星号(*)表示所有可用的值。例如*在指代month时表示每月执行(需要符合其他限制条件)该命令。 
    整数间的连字号(-)表示整数列,例如1-4意思是整数1,2,3,4

    指定数值由逗号分开。如:3,4,6,8表示这四个指定整数。

    符号“/”指定步进设置。“/<interger>”表示步进值。如0-59/2定义每两分钟执行一次。步进值也可用星号表示。如*/3用来运行每三个月份运行指定任务。

 

    以“#”开头的为凝视行,不会被执行。

 

    如果一个cron任务需要定期而不是按小时,天,周,月来执行,则需要增加/etc/cron.d目录。这个目录下的所有文件和文件/etc/crontab语法相同,查看样例:

 

# record the memory usage of the system every monday 
# at 3:30AM in the file /tmp/meminfo 
30 3 * * mon cat /proc/meminfo >> /tmp/meminfo 
# run custom scrīpt the first day of every month at 4:10AM 
10 4 1 * * /root/scrīpts/backup.sh

    除了root用户之外的用户可以执行crontab配置计划任务。所实用户定义的crontab存储在目录/var/spool/cron下,任务会以创建者的身份被执行。要以特定用户创建一个crontab,先以该用户登录,执行命令crontab -e,系统会启动在VISUAL或者EDITOR中指定的的编辑软件编辑crontab。文件内容与/etc/crontab格式相同。演示例子如下:

 

0 3 * * * /home/dbbackup/db1backup.sh backup
0 4 * * * /home/dbbackup/db2backup.sh backup

 

    表示每天3点执行/home/dbbackup/db1backup.sh backup,4点执行/home/dbbackup/db2backup.sh backup,如果是每五分钟执行一次可改为:

 

*/5 * * * * /home/dbbackup/db2backup.sh backup

 

    当更改的crontab需要保存时,文件会保存在成如下文件/var/spool/cron/username。文件名会依据用户名而不同。

 

    cron服务会每分钟检查一次/etc/crontab、/etc/cron.d/、/var/spool/cron文件下的变更。如果发现变化,就会下载到存储器中。因此,即使crontab文件改变了,程序也不需要重启。推荐自定义的任务使用crontab -e命令增加,退出后用/etc/init.d/crond restart命令重启crond进程,官方文件说不用重启进程,但我遇到不重启无法运行任务的情况。开始不知道/etc/crontab文件中的run-parts是什么意思,直接把命令按照/etc/crontab的格式加上总是无法运行,后来才知道run-parts是指后面跟着的是目录。

 

 

 

 

 

 

下面再附一篇介绍:

************************************************************************************

cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。因为Cron 是Linux的内置服务,但它不自动起来,可以用下面的解决方案启动、关闭这个服务:

 

/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置

 

你也可以将这个服务在系统启动的时候自动启动:

 

在/etc/rc.d/rc.local这个脚本的末尾加上:
/sbin/service crond start

 

现在Cron这个服务已经在进程里面了,我们就可以用这个服务了,Cron服务提供下面几种接口供大家使用:

 

1.直接用crontab命令编辑

 

cron服务提供crontab命令来设定cron服务的,下面是这个命令的一些参数与说明:

 

crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数

crontab -l //列出某个用户cron服务的详细内容

crontab -r //删除没个用户的cron服务

crontab -e //编辑某个用户的cron服务

 

比如说root查看自己的cron设置:crontab -u root -l

再例如,root想删除fred的cron设置:crontab -u fred -r

在编辑cron服务时,编辑的内容有一些格式和约定,输入:crontab -u root -e

 

进入vi编辑模式,编辑的内容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

 

这个格式的前一部分是对时间的设定,后面一部分是要执行的命令,如果要执行的命令太多,可以把这些命令写到一个脚本里面,然后在这里直接调用这个脚本就可以了,调用的时候记得写出命令的完整路径。时间的设定我们有一定的约定,前面五个*号代表五个数字,数字的取值范围和含义如下:

 

分钟 (0-59)

小時(0-23)

日期(1-31)

月份(1-12)

星期(0-6) //0代表星期天

 

    除了数字还有几个个特殊的符号就是"*"、"/"和"-"、",",*代表所有的取值范围内的数字,"/"代表每的意思,"*/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。下面举几个例子说明问题:

 

每天早上6点


0 6 * * * echo "Good morning." >> /tmp/test.txt //注意单纯echo,从屏幕上看不到任何输出,因为cron把任何输出都email到root的信箱了。

 

每两个小时


0 */2 * * * echo "Have a break now." >> /tmp/test.txt

 

晚上11点到早上8点之间每两个小时,早上八点


0 23-7/28 * * * echo "Have a good dream:)" >> /tmp/test.txt

 

每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点


0 11 4 * 1-3 command line

 

1月1日早上4点


0 4 1 1 * command line

 

    每次编辑完某个用户的cron设置后,cron自动在/var/spool/cron下生成一个与此用户同名的文件,此用户的cron信息都记录在这个文件中,这个文件是不可以直接编辑的,只可以用crontab -e 来编辑。cron启动后每过一份钟读一次这个文件,检查是否要执行里面的命令。因此此文件修改后不需要重启cron服务。

 

2.编辑/etc/crontab 文件配置cron

 

    cron服务每分钟不仅要读一次/var/spool/cron内的所有文件,还需要读一次/etc/crontab,因此我们配置这个文件也能运用cron服务做一些事情。用crontab配置是针对某个用户的,而编辑/etc/crontab是针对系统的任务。此文件的文件格式是:

 

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root //如果出现错误,或者有数据输出,数据作为邮件发给这个帐号
HOME=/      //使用者运行的路径,这里是根目录
# run-parts
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly内的脚本
02 4 * * * root run-parts /etc/cron.daily //每天执行/etc/cron.daily内的脚本
22 4 * * 0 root run-parts /etc/cron.weekly //每星期执行/etc/cron.weekly内的脚本
42 4 1 * * root run-parts /etc/cron.monthly //每月去执行/etc/cron.monthly内的脚本

 

大家注意"run-parts"这个参数了,如果去掉这个参数的话,后面就可以写要运行的某个脚本名,而不是目录名了。

************************************************************************************

 

本文由pc28.am发布于pc28.am神测网,转载请注明出处:crontab的两种配置方式,out持续累加问题

上一篇:vim常用操作,vim编辑器的使用 下一篇:没有了
猜你喜欢
热门排行
精彩图文
  • crontab的两种配置方式,out持续累加问题
    crontab的两种配置方式,out持续累加问题
    废话不多说,直接上菜了 在LINUX中,周期执行的任务一般由cron这个守护进程来处理[ps -ef|grepcron]。cron读取一个或多个配置文件,这些配置文件中包含了命令
  • vim常用操作,vim编辑器的使用
    vim常用操作,vim编辑器的使用
    vim是linux下效果卓殊强劲的文书编辑器,因为是命令操作,所以读书来比较累,下边计算一下常用的几点操作。 常用情势: 经常方式(Normal mode) 插入格局
  • Debian系统的安装,OpenSUSE系统的安装
    Debian系统的安装,OpenSUSE系统的安装
                  又过了相比长的时间,基本上都是十七日一更了,这期咱们就来演示Linux系统中OpenSUSE系统的装置吧!         新的七日,新的一天又来了
  • Raspberrypi 3B  安装 php+sqlite
    Raspberrypi 3B 安装 php+sqlite
    按照网上的命令都为安装php5-fpm 和 php5-sqlite,但是发现无法找到软件,可能是系统版本比较高的缘故,原来的版本已经不支持了。 安装Ubuntu Server 16.04.1
  • 选择fdisk化解VPS上wdcp空间不足的主题素材,linu
    选择fdisk化解VPS上wdcp空间不足的主题素材,linu
    先是,我们须要效法一下碰到,下图 使用VMware为我增加一块300G(实际200M~~手动滑稽 -_-)的硬盘设备。 linux磁盘管理,linux磁盘 摘自: 查看磁盘也许目录