Linux定时任务

摘要:
每间隔5分钟进行一次时间同步命令?在加定时任务的时候在12点03的时候加上的下次的执行时间是?
1. 定时任务服务名称
crond 
默认开机自动运行 自动启动 默认有系统的定时任务
2. 定时任务的相关文件
两个

用户的定时任务文件
/var/spool/cron/用户名   # 普通用户定义定时任务的配置文件

管理员的定时任务文件
/etc/crontab 
3. 定时任务书写方式
格式  使用的/etc/crontab 管理员定时任务

	* * * * * 
	分 时 日 月 周
	第一颗星: 表示分钟 0-59  0表示整点
	第二颗星: 表示小时 0-23  0表示凌晨12点
	第三颗星: 表示天   1-31
	第四颗星: 表示月   1-12
	第五课星: 星期几   0-6  0表示周日 7表示周日 
	
      * 表示每分钟 
      */n
        */5 * * * * cmd
      - 区间
           上午的5点到11点执行 cmd命令
	   00 5-11 * * * cmd
      ,分隔
            上午的5点到11点 下午的15点执行cmd命令
	     00 5-11,15 * * * cmd
案例:

每天早上8点整来学校上车
      如何表示8点
      0 8 * * * root echo "sc"	 ##  00 08 * * * root echo "sc"

调试定时任务
      * * * * *  每分钟执行1次
		 
如何查看定时任务是否执行成功
      俩文件:
      [root@oldboyedu ~]# tailf /var/log/cron   # 只是查看有没有运行 但里面的定时任务有没有成功 不显示
      [root@oldboyedu ~]# cat /var/spool/mail/root  # 开启了邮件服务  可以查看定时任务有没有成功 postfix 默认开启
	
      每天晚上11点30分 回家开车
      30  23 * * * root echo "kc"
4. 使用用户定时任务
两种:

直接修改配置文件
      vim /var/spool/cron/root
			 
使用命令编辑配置文件
      crontab -e  编辑文件 ---> vim /var/spool/cron/root    # 语法检查 书写是否正确
      crontab -e ===== vim /var/spool/cron/root(当前登录系统的用户名)
      crontab -l  查看用户的定时任务
      crontab -r 删除用户定时任务 危险!
			 	
每间隔5分钟进行一次时间同步命令  ? 在加定时任务的时候 在12点03的时候加上的 下次的执行时间是?
      */n
      */5 * * * * root ntpdate ntp1.aliyun.com  
5. 定时任务规范

5.1 定时任务规则之前加注释

# Author oldboy date 11.10  备份 QQ110
* * * * * sh /server/scripts/tar.sh

5.2 使用脚本替代命令行定时任务

1) 在命令行测试

2) 写入脚本测试 使用-x 查看脚本的执行过程
      [root@oldboyedu scripts]# sh -x tar.sh 
      ++ ifconfig eth0
      ++ awk 'NR==2{print $2}'
      + IP=10.0.0.200
      ++ date +%F-%H-%M-%S
      + TIME=2020-11-12-11-26-18
      + mkdir -p /root/10.0.0.200
      + cd /etc
      + tar zcf /root/10.0.0.200/2020-11-12-11-26-18_etc.tar.gz hosts passwd

-------------
      [root@oldboyedu ~]# cat /server/scripts/tar.sh 
      ###1. 获取IP地址 定义变量
      IP=`ifconfig eth0|awk 'NR==2{print $2}'`
      TIME=`date +%F-%H-%M-%S`

      ###2. 创建以IP命名的目录
      [ -d /root/$IP ] || mkdir  /root/$IP	# 判断目录是否存在 如果成功 执行&& 后面的内容 如果失败执行||

      ###3. 打包文件并放入目录 
      cd /etc
      tar zcf /root/$IP/${TIME}_etc.tar.gz hosts passwd
      
      ---------------
      [root@oldboyedu ~]# [ -d /etc ] && echo "目录存在" || echo "目录不存在"
      目录存在
      [root@oldboyedu ~]# [ -d /etccccc ] && echo "目录存在" || echo "目录不存在"
      目录不存在

5.3 定时任务中date命令%百分号

默认crontab不识别% 特殊含义的字符 需要转义
* * * * * tar zcf /opt/`date +\%F`_etc.tar.gz /etc/hosts &>/tmp/error.log
* * * * * date +\%F &>/tmp/test.log

第二种方式 写入脚本 
[root@oldboyedu scripts]# cat test.sh 
tar zcf /opt/`date +%F`_etc.tar.gz /etc/hosts &>/tmp/error.log

5.4 运行脚本一定要用/bin/sh或sh

1.如果定义了环境变量PATH 不需要加/bin /usr/bin
2.如果没有定义 建议全路径执行

5.5 定时任务中-命令或脚本结果(正确及错误)定向到黑洞(>/dev/null 2>&1)或追加到文件中 >>/tmp/oldboy.txt 2>&1

每执行一个定时任务 每次都会把执行结果发送到邮件系统中 /var/spool/mail/root # 前提是postfix开启状态
公司中大量的服务器是关闭postfix服务 邮件无法接收到定时任务的结果. 憋着发布出去 会产生大量小文件
大量的小文件会占用大量的inode 导致无法往磁盘中写入数据

   解决方法1:
      执行结果 定向到黑洞或者定向到文件中
   解决方法2:
      开启邮件系统 不建议
   解决方法3:
      定时删除小文件
			
   默认小文件的位置:
      /var/spool/postfix/maildrop/
   
   测试生成小文件
      systemctl stop postfix  # 关闭邮件服务
      定义多个定时任务 生成小文件

5.6 避免不必要的程序及命令输出

打包进入相对路径 /etc/hosts  cd /etc 
tar zcvf 去掉 v

5.7 打包压缩使用相对路径(切到目标目录的上一级打包目标)

5.8 定时任务脚本中的程序文件 ,尽量用绝对路径

前提是没有定义PATH变量

5.9 系统与命令位置有关的环境变量问题

PATH="echo $PATH:/usr/local/maven/bin"
/usr/local/maven/bin:

免责声明:文章转载自《Linux定时任务》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇类和类的六种关系Java File类的简单使用下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

linux命令--tar

tar:压缩和解压缩文件,压缩后文件后缀:.tar.gz 参数说明: f:指定备份文件。 z:通过gzip指令处理备份文件。 v:显示指令执行过程 c:建立新的备份文件。 x:从备份文件中还原文件。 举例说明: 解压:tar zxvf FileName.tar.gz压缩:tar zcvf FileName.tar.gz DirName 压缩: [root@...

linux expect详解(ssh自动登录)

shell脚本实现ssh自动登录远程服务器示例: #!/usr/bin/expect spawn ssh root@192.168.22.194 expect "*password:" send "123 " expect "*#" interact 原文链接:http://www.xuanhao360.com/linux-expects...

Linux系统备份-----Respin

一,Respin方法(respin为remastersys的替代品,因为remastersys已经不再维护): 1.添加下载源: sudo add-apt-repository ppa:sergiomejia666/respin sudo add-apt-repository ppa:sergiomejia666/xresprobe 2.更新软件库...

Linux ifconfig查看网卡信息

查看所有网卡的信息ifconfig (不包括down状态的网卡) [root@mysql ~]# ifconfig eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.0.111 netmask 255.255.255.0 bro...

Linux进程间通信(1):管道

接上一篇的内容——Linux任务、进程和线程 参考书籍:《从实践中学嵌入式linux应用程序开发》(华清远见嵌入式学院) 资料下载:http://download.csdn.net/detail/klcf0220/5332477 参考链接:http://www.cnblogs.com/zhouyinhui/archive/2010/10/13/184920...

linux centos8 安装 composer2.0

1 安装前准备 先安装php 再安装php-json扩展 yum install php-json  参考 https://blog.csdn.net/alinathz/article/details/105885254 2 安装 官网安装方法 https://getcomposer.org/download/ php -r "copy('https:/...