03.31 Linux定时任务

来源:互联网 发布:q20 软件 编辑:程序博客网 时间:2024/05/17 08:10

第一章 开机启动项的优化

  1. crond(定时任务)
  2. rsyslog(系统日志服务)
  3. sysstat(查看系统运行状态)
  4. sshd(远程连接)
  5. network(网络服务)
[root@Never-downtime ~]# chkconfig | egrep -v "crond|rsyslog|sysstat|sshd|network"[root@Never-downtime ~]# chkconfig | egrep -v "crond|rsyslog|sysstat|sshd|network"|awk '{print "chkconfig "$1" off"}' |bash如果使用sed命令操作?[root@Never-downtime oldboy]# chkconfig | egrep "rsyslog|sysstat|sshd|network|crond" |sed -r 's#(.*)0:.*$#chkconfig \1on#g' |bash

第二章 程序/进程/守护进程

程序(文件):放在磁盘里的,程序代码组成,但是没有在计算机内执行,当前没有执行。
进程:所谓进程就是计算机中正在执行/运行的程序。运行起来的程序。
守护进程:一直运行的程序

[root@Never-downtime ~]# ps -ef|egrep sshdroot       1422      1  0 Mar30 ?        00:00:00 /usr/sbin/sshdroot       4014   1422  0 11:30 ?        00:00:01 sshd: root@pts/1 root       5805   1422  0 14:12 ?        00:00:01 sshd: root@pts/0 root       6162   5807  0 14:45 pts/0    00:00:00 egrep --color=auto sshd[root@Never-downtime ~]# ps -ef|egrep crondroot       1542      1  0 Mar30 ?        00:00:00 crondroot       6170   5807  0 14:46 pts/0    00:00:00 egrep --color=auto crond

第三章 什么是crond?

crond的含义
Crond是Linux系统中用来定期执行命令/脚本或指定程序的一种服务或软件。一般情况下,我们安装完Centos操作系统之后,默认便会启动Crond任务调度服务,在我们前面的系统安装及开机启动优化的设置中,我么也设置保留了Crond开机自启动。Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的工作。如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作。这个Crond定时任务服务就相当于我们平时早起使用的闹钟一样。

crontab命令
这里写图片描述

系统任务调度
系统周期性索要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

系统任务调度存放路径

/etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# 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# |  |  |  |  |# *  *  *  *  * user-name command to be executed

用户任务调度
用户定期执行的工作,比如数据备份、定时邮件提醒等。用户可以使用crontab工具来定制自己的计划任务,所有用户定义的crontab文件都被保存在/var/spool/cron目录中,其文件名与用户名一致。

用户任务调度存放路径

/etc/cron.deny  该文件中所列用户不允许使用crontab命令。/var/spool/cron 所有用户crontab文件存放目录,以用户名命名。

crontab文件的含义
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段表示一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段。
存放路径 /var/spool/cron/root
日志查看路径/var/log/cron
这里写图片描述


第四章 定时任务案例【1】

案例:设置一个定时任务显示ip地址和日期?
创建环境

[root@Never-downtime ~]# mkdir -p /server/scripts/

命令行测试

方法1[root@Never-downtime ~]# ifconfig eth0 |awk -F "[ :]+" 'NR==2{print $4}'192.168.56.129方法2[root@Never-downtime ~]# ifconfig eth0 |sed -n '2p' | awk -F '[addr:| Bca]+' '{print $3}'192.168.56.129[root@Never-downtime scripts]# touch /server/scripts/ip.sh[root@Never-downtime scripts]# cd /server/scripts && cat ip.sh /bin/hostname -I;/bin/date +%F#%T

创建脚本写入定时任务

[root@Never-downtime ~]# crontab -e##ip+date 2017-04-01* * * * * /bin/sh /server/scripts/ip.sh>/data/ip.txt

检查结果

[root@Never-downtime scripts]# cat /data/ip.txt 192.168.56.129 2017-04-01#20:06:01

查看定时任务日志

Apr  1 20:16:01 Never-downtime CROND[8182]: (root) CMD (/bin/sh /server/scripts/ip.sh>/data/ip.txt)Apr  1 20:17:01 Never-downtime CROND[8189]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1)Apr  1 20:17:01 Never-downtime CROND[8190]: (root) CMD (/bin/sh /server/scripts/ip.sh>/data/ip.txt)Apr  1 20:18:01 Never-downtime CROND[8197]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com >/dev/null 2>&1)Apr  1 20:18:01 Never-downtime CROND[8198]: (root) CMD (/bin/sh /server/scripts/ip.sh>/data/ip.txt)

第五章 定时任务案例【2】

定时打包
命令行测试

[root@Never-downtime /]# cd /etc/ && tar cf /tmp/services$(date +%F).tar.gz services

创建并写入脚本

[root@Never-downtime /]# vim /server/scripts/tar+date.sh cd /etc/ && /bin/tar  cf /tmp/services$(date +%F).tar.gz services

创建定时任务

##tar+date* * * * * /bin/sh /server/scripts/tar+date.sh >/dev/null 2>&1

查看定时任务系统日志

[root@Never-downtime ~]# tail /var/log/cronApr  2 15:00:01 Never-downtime CROND[12529]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1)Apr  2 15:00:01 Never-downtime CROND[12530]: (root) CMD (/usr/lib64/sa/sa1 1 1)Apr  2 15:00:01 Never-downtime CROND[12531]: (root) CMD (/bin/echo  "guoqunchao">>/data/myname.txt 2>&1)Apr  2 15:01:01 Never-downtime CROND[12563]: (root) CMD (/usr/sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1)Apr  2 15:01:01 Never-downtime CROND[12564]: (root) CMD (/bin/sh /server/scripts/tar+date.sh >/dev/null 2>&1)Apr  2 15:01:01 Never-downtime CROND[12565]: (root) CMD (/bin/echo  "guoqunchao">>/data/myname.txt 2>&1)Apr  2 15:01:01 Never-downtime CROND[12566]: (root) CMD (/bin/sh /server/scripts/ip.sh>/data/ip.txt  2>&1)Apr  2 15:01:01 Never-downtime CROND[12568]: (root) CMD (run-parts /etc/cron.hourly)Apr  2 15:01:01 Never-downtime run-parts(/etc/cron.hourly)[12568]: starting 0anacronApr  2 15:01:01 Never-downtime run-parts(/etc/cron.hourly)[12584]: finished 0anacron

第六章 其它案例如下

###每分钟矫正时间:*/1 * * * *  /usr/sbin/ntpdate  ntp1.aliyun.com >/dev/null 2>&1###每分钟向文件写入文本   */1 * * * *  /bin/echo "guoqunchao" >>/server/log/name.log >/dev/null 2>&1###定时关机 49 19 31 * * /sbin/shutdown -h now >/dev/null 2>&1###每分钟显示一个+追加到/server/log/jiahao.log* * * * * /bin/echo   + >> /server/log/jiahao.log

第七章 重定向详解

把数据/文件的内容,放到你想要的地方,箭头的方向表示水流的方向数据的方向。
<这个功能在Linux里可是经常用的,实际上就是你看到的下面的屏幕上的数据,传输到其他地方,执行命令时,这个命令可能会通过文件读入数据,经过处理之后,再将数据输出到屏幕。

>或1>   追加重定向:把前面输出的东西输入到后边的文件中,会删除文件原有内容。>>或1>>  追加重定向:把前面输出的东西追加到后边的文件中,不会删除文件原有内容。<或<0    输入重定向:输入重定向用于改变命令的输入,指定输入内容,后跟文件名。<<或<<0  输入重定向:后跟字符串,用来表示“输入结束”,也可以用ctrl+d来结束输入。2>      错误重定向:把错误信息输入到后面的文件中,会删除文件原有内容。2>>     错误追加重定向:把错误信息追加到后边的文件中。不会删除文件原有内容。

正确和错误重定向

>/tmp/oldboy.txt  2>/tmp/oldboy.txt   ###比较长>/tmp/oldboy.txt  2>&1                ###最常用&>/tmp/oldboy.txt                     ###个人比较喜欢

第八章 定时任务案例【7】

如果定时任务规则结尾不加>/dev/null 2>&1或者追加到文件中>>/tmp/oldboy 2>&1,很容易导致硬盘inode空间被占满,从而系统服务不正常。>/dev/null 2>&1>>/tmp/oldboy 2>&11)删除大量的小文件/var/spool/postfix/maildrop/下所有的文件。(2)ls |grep rm(3)删除上级目录(看好目录的属性,所有者 属组 权限)(4)临时开启postfix(sendmail)服务

第九章 常见报错注释

这里写图片描述


第十章 crond章节重点

  1. 用户的定时任务,使用crontab -e 自定义定时任务项目,分为六段,分、时、日、月、周、指令。
  2. 系统的/etc/crontab定时任务项目分为7段 ,分、时、日、月、周、执行者、指令。
  3. crontab定时任务的10个生产基本要领和调试技巧,尤其是要学会看服务日志来调试。
  4. 生产环境使用crontab定时任务要注意的10点箴言。
  5. 重视生产的案例及通过案例为载体来学习巩固技术知识(磁盘空间满了系列)。

inode满

df -i查看[root@Never-downtime /]# du -sh /*[root@Never-downtime /]# du -sh /usr/[root@Never-downtime /]# du -sh /usr/*定时任务没有定向到空或文件,如没有定向会向root用户发送邮件,长久下来会生成很多的文件,导致inode被占用完

block满

空间被使用完:空间被大量数据文件占用完文件硬链接数为0,但是进程调用,block没有完全释放。[root@Never-downtime /]# lsof |egrep deletecrontab定时任务的10个生产基本要领和调试技巧,尤其是要学会看服务日志来调试。

总结

要领1:为定时任务规则加必要的注释要领2:执行shell脚本任务前加/bin/sh要领3:定时任务命令或脚本结尾加>dev/null 2>&1  &>dev/null                    1>/dev/null    2>/dev/null 2>&1要领4:定时任务命令或程序最好写到脚本里执行。要领5:在制定用户下执行相关的定时任务。要领6:生产任务程序不要随意打印输出信息。要领7:定时任务执行的脚本要规范路径(/server/scripts)要领8:配置定时任务规范操作过程。要领9:crond服务必须首先开启要领10:查看定时任务日志 tail /var/log/cron
原创粉丝点击