linux定时运行命令脚本crontab
简介
Linux中,周期执行的任务一般由cron这个守护进程来处理 ps -ef | grep cron
cron读取一个或多个配置文件,这些配置文件中包含了命令行及其调用时间。
cron的配置文件称为“crontab”,是“cron table”的简写。
1、/var/spool/cron/ 这个目录下存放的是每个用户(包括root)的crontab任务,每个任务以创建者的名字命名,比如用户hdfs建的crontab任务对应的文件就是/var/spool/cron/hdfs
[root@el-hadoop-1 cron]# ll
total 4
-rw------- 1 hdfs hdfs 2185 Dec 31 17:11 hdfs
[root@el-hadoop-1 cron]# pwd
/var/spool/cron
一般一个用户最多只有一个crontab文件(如:root, hdfs等),
其对应日志在/var/spool/mail/(或/var/spool/mail/hdfs)文件里,实际上它这个文件夹里边不会记录它的日志,只能自己指定目录。
/etc/crontab 这个文件负责安排由系统管理员制定的维护系统以及其他任务的crontab。
[root@el-hadoop-1 spool]# vim /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
# | | | | |
# * * * * *
cron服务
cron是一个linux下 的定时执行工具,可以在无需人工干预的情况下运行作业。
/sbin/service crond start //启动服务
/sbin/service crond stop //关闭服务
/sbin/service crond restart //重启服务
/sbin/service crond reload //重新载入配置
/sbin/service crond status //查看服务状态
crontab用法
crontab命令用于安装、删除或者列出用于驱动cron后台进程的表格,用户把需要执行的命令序列放到crontab文件中以获得执行。
每个用户都可以有自己的crontab文件,/var/spool/cron下的crontab文件不可以直接创建或者直接修改,该crontab文件是通过crontab -e命令创建的
在crontab文件中如何输入需要执行的命令和时间,该文件中每行都包括六个域,其中前五个域是指定命令被执行的时间,最后一个域是要被执行的命令。
"/"代表每的意思,"/5"表示每5个单位,"-"代表从某个数字到某个数字,","分开几个离散的数字。
-l 在标准输出上显示当前的crontab。
-r 删除当前的crontab文件。
-e 使用VISUAL或者EDITOR环境变量所指的编辑器编辑当前的crontab文件。
比如:
10 6 * * * echo "Good morning Hello World." > /tmp/test.txt #每天早上6点10分,echo会输出到/tmp/test.txt这个文件里边,记录它的日志;
>是覆盖,>>是以追加的形式写入;
*/1 * * * * echo "Have a break now." >> /tmp/test.txt #每1分钟执行一次;
0 */2 * * * echo "Have a break now." >> /tmp/test.txt #每2h执行一次;
10 1 * * * /home/hopson/apps/acitve_analysis.sh &>> /tmp/logs/acitve_analysis.log