linux之定时任务

定时任务

  • 定时执行的命令或脚本任务

1.系统定时任务配置

# 系统定时任务需要root权限
# 配置文件: /etc/crontab
# 语法结构: * * * * * root cmd 或 cmd.sh
# * 的解释
*  分	0 - 59   01或者写1表示1分钟  0表示整点
*  时    0 - 23   00或者写0 表示凌晨12点
*  日    1 - 31
*  月    1 - 12	 1-12月份
*  周	0 - 6    0或者7表示星期天 

#特殊符号表示时间:
* 表示每的意思 如果是五颗星表示每分钟都要执行一次定时任务
/ 表示间隔的意思 */5 或 */05  表示间隔5分钟执行一次
- 表示区间  7-11 表示上午7点到上午的11点
, 表示间隔  7-11,13-15 上午7点到11点和下午的1点到3点执行


#每5分钟执行一个echo hello world >>hello.txt
*/5 * * * * root echo hello world >>hello.txt

#每小时的第5分钟执行一次定时任务
05 * * * * root echo hello world >>hello.txt

#每分钟执行一次定时任务
* * * * * root echo hello world >>hello.txt

#上午的7-11点执行任务
* 7-11 * * * root echo hello world >>hello.txt #7-11点每分钟都执行
00 7-11 * * * root echo hello world >>hello.txt #7-11点整点执行

#凌晨12点执行一次命令
00 00 * * * root echo hello world >>hello.txt #每天晚上十二点执行一次

#定时任务不识别% 需要加\ 或者将命令写入到脚本中

#将脚本写入到定时任务
* * * * * root sh /server/scripts/cmd.sh

#定时任务的日志文件
centos 、kylin: /var/log/cron
ubuntu 		  : /var/log/syslog

2.用户定时任务配置

# 配置文件:/var/spool/cron/root 默认不存在,需要手动vim

# 配置用户定时任务有两种方法:
#用命令
crontab -e 直接编辑的是/var/spool/cron/root
#编辑配置文件
vim /var/spool/cron/root

#用户的定时任务默认识别的PATH变量只有/usr/bin和/bin路径 需要重新配置PATH变量
[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin

#crontab -l 查看定时任务列表
[root@localhost ~]# crontab -l
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/bin
* * * * * echo hello world >hello.txt

#定时任务定向到日志文件 或 空
* * * * * echo hello world &>>cron.log #错误的正常的都输入
* * * * * echo hello world &>/dev/null #丢给黑洞

#用户定时任务 详细报错信息查看 /var/spool/mail

#使用centos,如果关闭了邮件服务,每执行一次定时任务,会自动生成一个小文件,小文件会占用inode号码 

#/var/spool/postfix/maildrop

3.定时任务注意

1.避免一些不必要的输出 类似tar -zcf 去掉v 类似打包进入相对路径
2.多条命令使用脚本
3.直接写到定时任务配置文件中不识别% 需要加\ 或者写入脚本。
4.用户定时任务识别的路径只有/usr/bin和/bin目录 需要重新定义PATH变量

4.定时任务

1.以每天为时间+ip地址+主机名称在/opt/创建目录
2.打包/etc/passwd /etc/hosts文件名称为etc.tar.gz 放到已经创建好的目录中
3.查找/opt/目录下所有7天前被修改过的文件删除  (模拟环境使用循环生成需要的文件)

#!/bin/bash
for i in {1..9}
do 
	#修改系统时间
	date -s 2024100${i} &>/dev/null
	#创建目录
	dir_date=`date +%F`
	#获取主机IP
	ip=`hostname -I |awk '{print $1}'`
	#获取主机名称
	hostname=`hostname`
	#在/opt/下创建目录
	dir="/opt/${dir_date}-${ip}-${hostname}"
	mkdir -p "$dir"
	#echo $dir
	#创建文件
	touch ${dir}/{1..10}.txt
	#打包 passwd hosts
	tar zcfP ${dir}/etc.tar.gz /etc/passwd /etc/hosts
done
ntpdate ntp2.aliyun.com &>/dev/null
#查找7天以上的文件和目录并删除
find /opt/* -type f -o -type d -mtime +7 |xargs -i rm -rf {}
posted @ 2024-11-20 13:52  被时光移动的城市  阅读(4)  评论(0编辑  收藏  举报