一、任务计划(at,batch,cron):
在未来的某个时间点执行一次某任务(at,batch)
周期性地执行某个任务(cron)
1、#at TIME(指定时间,注意是时间是未来的,命令的执行结果以邮件形式发送给安排任务的用户)
at>COMMAND
at>ctrl+d
TIME:
HH:MM(绝对时间,时:分)
MM/DD/YY或DD.MM.YY(月/日/年,日.月.年)
now+NUMBERminutes(相对时间,minutes,hours,days,weeks)
noon,midnight,teatime(模糊时间)
#batch(同at,不指定时间,仅在系统空闲时间自动执行)
例:#at now+3minutes
at>ls /var
at>cat /etc/fstab
at>ctrl+d
#at -l(显示作业,相当于命令atq)
#at -d AT_JOB_ID(删除作业,相当于命令atrm)
2、cron自身是一个不间断运行的服务,服务名crond;
anacron是cron的补充,能够实现因cron由于某种原因在过去的时间该执行而未执行的任务再恢复正常执行一次,服务名anacron;
/etc/crontab(系统cron任务,格式: * * ** * [USERNAME] COMMAND)
/var/spool/cron/USERNAME(用户cron任务,格式: * * * * *COMMAND);
注意:cron有自己的环境变量PATH(PATH=/sbin:/bin:/usr/sbin:/usr/bin),每次执行命令都在自己的PATH下去找,写命令时最好写绝对路径,若执行的是脚本也可在脚本中定义(export PATH=)否则脚本不能正常执行,若执行的是系统cron任务,可编辑文件定义PATH(/etc/crontab);
格式:
* * * * *分别表示,分 时 日 月 周
分(0-59)
时(0-23)
日(1-31)
月(1-12)
周(0-7,0和7均表示周日)
注意:月和周不要同时使用
时间通配表示:
*(对应的所有有效取值)
,(离散时间点取值)
-(连续时间)
/(对应取值范围每多久一次)
举例:
3 * * * * (每小时的第3分钟)
*/3 * * * * (每3分钟)
3 * * * 7 (每周日且每小时的第3分钟)
13 12 * * * (每天的12:13)
13 12 * * 5 (每周5的12:13)
13 12 6 * * (每月6号的12:13)
10,40 * * * * (每小时的第10分钟和第40分钟)
10,40 02 * * 2,5 (每周2周5且凌晨02:10,02,40)
10 02 * * 1-5 (周一至周五的02:10)
01 */2 * * * (每两小时执行,注意一定要指定具体时间,否则每秒都会执行)
10 04 */2 * * (每2天执行一次,注意一定要指定具体时间,否则每秒都会执行)
系统cron任务:
/etc/cron.{hourly,daily,weekly,monthly}/SCRIPT(#run-parts依次运行目录下的每个任务,要想靠前运行,脚本名前加0)
用户cron任务:
/var/spool/cron/USERNAME
$crontab -l|-e|-r(-l列出当前用户的所有cron任务,-e编辑任务(完成后可自动检查其语法),-r移除所有任务(若删除某条任务,进入编辑,删除某行即可))
#crontab -u USERNAME(管理其它用户的cron任务)
anacron任务:/etc/anacrontab有四段
1 65 cron.daily run-parts /etc/cron.daily
7 70 cron.weekly run-parts /etc/cron.weekly
30 75 cron.monthly run-parts /etc/cron.monthly
其中第1段表示过去有多少天的任务未执行;第2段表示开机后的多少分钟执行;注意最小操作单位是天,并且确保系统中crond、anacron服务正常运行。
二、日志管理:
syslog(redhat5)
syslog-ng(next generation,redhat6)
#service syslog {start|stop|status|restart|condrestart}
syslog服务包括:
syslogd,非内核产生的日志信息,如/var/log/messages有系统标准错误日志信息、非内核产生的引导信息、各子系统产生的信息,/var/log/maillog邮件系统产生的日志、/var/log/secure有谁尝试登录过此主机相关日志;
klogd,内核产生的日志信息,如/var/log/dmesg,此信息可用命令#dmesg显示;
日志切割:
命令:#logrotate
日志需要滚动,如messages messages.1 messages.2
/etc/logrotate.conf
/etc/logrotate.d/*
/etc/cron.daily/logrotate
#chkconfig --list syslog
定义格式:
/etc/syslog.conf
facility.priority action(facility表示各子系统;priority表示日志级别loglevel;action表示日志记录位置)
facility有:
auth(认证相关)
authpriv(权限、授权相关)
cron(任务计划相关)
daemon(守护进程相关)
kern(内核相关)
lpr(打印相关)
mail(邮件相关)
mark(标记相关)
news(新闻相关)
security(安全相关,与authpriv类似)
syslog(syslog自己的)
user(用户相关)
uucp(unix to unix cp相关)
local10-local17(用户自定义使用)
*(所有facility)
priority(log level)有:
debug
info
notice
warning/warn
error/err
crit
alert
emerg/panic
*
none
action有:
系统上的绝对路径,如/var/log/xxx
管道|,交至其它命令处理
终端,如/dev/console
@HOST,如@10.0.0.1(定义在远程主机上,要事先修改文件/etc/sysconfig/syslog,SYSLOGD_OPTIONS="-r -m 0")
用户,如root
*,登录到系统上的所有用户,一般这样定义emerg级别的日志
定义格式举例:
mail.info /var/log/mail.log
auth.=info @10.0.0.1
user.!=error 不包括error级别
user.!error 与user.error相反
*.info 所有日志信息的info级别
mail.* mail相关的所有级别信息
*.*
cron.info;mail.info 多个类别别用分号隔开
cron,mail.info 多个类别的另一写法,同上例
mail.*;mail.!=info mail相关的所有级别但不包括info级别
以上是学习《马哥网络视频》做的笔记。
一、1、在centos6.x中日志服务由rsyslogd取代了syslogd,新特点:基于TCP传输日志信息;更安全的网络传输方式;有日志消息的及时分析框架;后台数据库;配置文件中可写简单的逻辑判断;兼容syslogd。
2、系统中常见的日志文件:/var/log/cron、/var/log/btmp等。
二、日志服务:
1、格式:事件产生的时间 发生事件的服务器 产生事件的服务器名或程序名 事件的具体信息
2、/etc/rsyslog.conf配置文件格式:服务名称[连接符号]日志等级 日志记录位置
连接符号:. 只要比后面等级高的(包含该等级)的日志都记录下来,例:cron.info
.= 代表只记录所需等级的日志,其它等级的都不记录,例:*.=emerg
.! 代表不等于,除了该等级的日志外,其它等级的日志都记录
日志等级:debug info notice warning err crit alert emerg 依次按等级由低到高
日志记录位置:(当前日志输出到哪个日志文件中保存)
》日志文件的绝对路径,最常见的保存方法,例:/var/log/secure
》系统设备文件,/dev/lp0代表第一台打印机。
》转发给远程主机:@192.168.0.210:514(UDP协议发送至514端口,514是日志服务的默认端口);@@192.168.0.210:514(TCP协议发送)
》用户名,如root,root要在线才会把日志发送出去;"mail.* *"会把mail服务产生的所有级别的日志发送给所有在线用户,若发送给多个在线用户,用户名之间用分号隔开;“local3.* ~”若接受日志的对象是~,代表这个日志不会记录直接丢弃。
例:定义自己日志
#vi /etc/rsyslog.conf
写入 *.crit /var/log/alert.log
#service rsyslog restart
#ll /var/log/alert.log
日志服务器的设备
#vi /etc/rsysylog.conf (服务端设置
$Modload imtcp
$InputTcpserver Run 514 (取消这两行注释
#servicersyslog restart
#netstat -tuln | grep 514
#vi /etc/rsyslog.conf (客户端设置
*.* @@192.168.210:514
查看日志服务器是否设置好:
#useradd aa (在客户端)
#passwd aa
#vi /var/log/secure (查看发生事件的主机名
三、日志轮替:把旧的日志文件移动并改名,同时建立新的空白日志文件,当旧日志文件超出保存的范围之后,就会进行删除,改名依靠/etc/logrotate.conf中dateext参数。
把自己的日志加入日志轮替:
方一:直接在/etc/logrotate.conf文件中写入轮替策略;
方二:在/etc/logrotate.d/目录中建立轮替文件。
例:按方二:#chattr +a /var/log/alert.log
#vi /var/log/alert.log
/var/log/alert.log{
weekly
rotate6
sharedscripts
prerotate
/usr/bin/chattr -a /var/log/alert.log
endscript
sharescripts
postrotate
/usr/bin/chattr +a /var/log/alert.log
endscript
}
#vi /etc/cron.daily/logrotate
/usr/sbin/logrotate /etc/logrotate.conf >/dev/null 2>&1 (logrotate命令会依据配置文件判断是否已符合日志轮替的条件,日志轮替由cron发起
#logrotate 选项 配置文件名
-v (verbose显示过程
-f (force强制
四、日志分析工具:logwatch
#cp /usr/share/logwatch/default.conf/logwatch.conf /etc/logwatch/conf/logwatch.conf (注:默认配置/etc/logwatch/conf/logwatch.conf是空的,要手工生成)
#logwatch
本文转自 chaijowin 51CTO博客,原文链接:http://blog.51cto.com/jowin/1651995,如需转载请自行联系原作者