设为首页 收藏本站
查看: 1036|回复: 0

[经验分享] Linux下的计划任务和日志管理

[复制链接]
累计签到:1 天
连续签到:1 天
发表于 2015-7-30 08:54:08 | 显示全部楼层 |阅读模式
一:实验环境:
1:虚拟机
2:两个linux系统
二:实验目标
1:at 定制单次执行的计划任务
2:cron定制周期性计划任务
3:配置脚本实现周期性任务
4:配置公司内网服务器每天自动开关机
5:Linux系统日志记录规律
6:自定义日志记录方式
7:配置远程收集日志服务器
三:实验步骤
1):at 定制单次执行的计划任务
第一块
at 定制单次执行的计划任务
前提:服务:atd  必须开启
#查询atd是否运行,只有运行,才能工作。
[iyunv@localhost ~]# /etc/init.d/atd status
atd (pid 2410) 正在运行...
#如果要是atd没有运行的话,就执行start命令。进行激活。
[iyunv@localhost ~]# /etc/init.d/atd start
实例:
[iyunv@localhost ~]# date #查看当前时间
2015年 07月 21日星期二 08:32:32 CST
[iyunv@localhost ~]# at 08:34  #设定时间
at> echo `date`> /tmp/date.txt  #在8点34分的时候,在/tmp下建立date.txt文件,切显示“date”时间。
at> <EOT>    #按下Ctrl+D 结束
job 1 at 2015-07-21 08:34  #在8:34
查询:
[iyunv@localhost ~]# date
2015年 07月 21日星期二 08:34:21 CST
[iyunv@localhost ~]# ls /tmp/date.txt
/tmp/date.txt
[iyunv@localhost ~]# cat !$
cat /tmp/date.txt
2015年 07月 21日星期二 08:34:00 CST
#在8.34分的时候在/tmp/date.txt下出现时间“2015年 07月 21日星期二 08:34:00 CST

拓展:
第二块
执行的计划任务也可以这样写
#at  08:34 2015-7-21
#at now+10min
例子1
[iyunv@localhost ~]# date
2015年 07月 21日星期二 08:50:21 CST
[iyunv@localhost ~]# at 8:51 2015-7-21  #创建任务
at> echo abcd > /tmp/a.txt  ##在8:51分的时候,在/tmp下建立a.txt文件 ,并在文件中输入abcd
at> <EOT>
job 3 at 2015-07-21 08:51  #“job”工作,任务,指在2015年7月21日的8点51分下执行任务3
[iyunv@localhost ~]# ls /tmp/a.txt  #查看在/tmp下是否创建了/a.txt文件
/tmp/a.txt    #创建了a.txt的文件
[iyunv@localhost ~]# cat !$ #查看创建的文件里是否输入了“abcd”的内容。
cat /tmp/a.txt
abcd
例子2
[iyunv@localhost ~]# date
2015年 07月 21日星期二 09:01:36 CST
[iyunv@localhost ~]# at now+3min
at> echo abcde > /tmp/b.txt
at> <EOT>
job 4 at 2015-07-21 09:05
[iyunv@localhost ~]# at –l  #查看任务列表
4       2015-07-2109:05 a root   #在2015-07-21 09:05时候有一个四号任务
[iyunv@localhost ~]# ls /tmp/b.txt
/tmp/b.txt
[iyunv@localhost ~]# cat !$
cat /tmp/b.txt
abcde

第三块
执行成功的at计划任务会在这个目录下成生一个可执行的脚本文件:
[iyunv@localhost ~]# ll/var/spool/at/*
-rwx------  1root   root   3842 Feb 3 20:45 /var/spool/at/a00002016a5170
-rwx------  1root   root   3842 Feb 3 20:45 /var/spool/at/a000030169e127
#用vim+/var/spool/at/a00002016a5170是可以进入这个任务的,并且可以看到这个任务的内容。

at任务删除:
atrm  at序列号
[iyunv@localhost ~]#atrm 4
#这个时候任务列表会将4号任务取消,切在/var哪里的脚本也会消失。

2):cron定制周期性计划任务
第一块
周期性计划任务:
配置文件:
[iyunv@localhost ~]# vim /etc/crontab
# 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

服务:crond
[iyunv@localhost ~]# /etc/init.d/crondstatus
crond (pid 2399) 正在运行...

[iyunv@localhost ~]# chkconfig --list crond   #查看是否开机启动
crond             0:关闭      1:关闭      2:启用      3:启用      4:启用      5:启用      6:关闭
[iyunv@localhost ~]# chkconfig crond on  #如果不是开机启动,执行这条命令就会自动开启

第二块
针对用户级别的计划任务:对于root用户:
命令:
#crontab –e   创建一个计划任务  
#crontab –l    显示
#crontab –r   删除计划任务

1:#crontab –e  创建一个计划任务  
[iyunv@localhost ~]# date
2015年 07月 21日星期二 09:54:33 CST
[iyunv@localhost ~]# crontab -e
55 09 * * * echo `date` >/tmp/date.txt
[iyunv@localhost ~]# ls /tmp/date.txt
/tmp/date.txt
[iyunv@localhost ~]# cat !$
cat /tmp/date.txt
Tue Jul 21 09:55:02 CST 2015

3):配置脚本实现周期性任务
第一块
例: 特殊写法:
#9,18,22这几天的3点1分,开始执行备份脚本
1  3 9,18,22  * *  /usr/bin/back.sh  #在默认的每个月中的9.18.22号这三天的3点1分都进行备份,备份到/usr/bin/back.sh下
#每月9-18日,这几天的3点1分执行
1  3  9-18  * * /usr/bin/back.sh
#每5分钟,执行一次
*/5  *  *  * * /usr/bin/back.sh
例:
每天删除5天前的文件
1  1  * **  find /home/log/ -type f -mtime +5-exec rm {} \;

第二块
使用root身份,给其它普通用户指定crontab:
语法:crontab-u USERNAME  -e/-l/-r
例子:
[iyunv@localhost ~]# ls /home  #查看普通用户
laoyu
[iyunv@localhost ~]# crontab -u laoyu –e  #给普通用户创建一个任务
1 * * * *  touch /tmp/a.txt  #让其每分钟都在/tmp下创建一个文件
[iyunv@localhost ~]# crontab -u laoyu –l  #对创建的任务进行显示
1 * * * * touch /tmp/a.txt
[iyunv@localhost ~]# crontab -u laoyu –r  #对于创建的任务进行删除,这里的删除是所有的,不能够一条一条的删除
[iyunv@localhost ~]# crontab -u laoyu –l  #再次查看,不在存有任务
no crontab for laoyu

第三块
实例:
在“1  3  9-18  **  /usr/bin/back.sh”命令执行之后的某一天里3点钟之前突然停电,在3点10分之后才来电,那么在这个时候正好错过了备份的时间,数据又很重要,不能让数据丢失,那这个时候怎么办呢?
Anacron:2:
cron用控制循环执行例行性工作。如果我要设定机器每早8点进行备份用服务。除非我机器保证在8点这个时间点不会关机,如果关机了,cron中的脚本,在下次开机将不会被执行。anacron并没有取代cron的意思,anacron用于,机器重启后,会侦测停机期间,有没有cron没有执行的计划任务,如果有,会立即,执行一下没有执行的任务。

4):实战,配置服务器定时开机
BIOS
SVN,

通过键盘上的箭头选择PowerManagement Setup,就进入电源管理设置了。

                            wKioL1W4uxuxv381AAKHeUebiks567.jpg


1.    通过回车进入这个设置后,选择Wake Up Event Setup,回车选择Press Enter。

wKioL1W4uzXyHPdCAAIupbBiA74240.jpg


2.    最后,在这个界面内继续找到Resume By RTC Alarm,回车选择一下。

wKioL1W4u2eSYG6AAAKK3oRsxak332.jpg


3.    继续回车选择,将Disabied 更改为Enabled,然后继续回车确定。然后再继续设置时间点和日期。

wKioL1W4u-DAHXcUAAJOr83sPM8634.jpg


4.    然后选择日期,并且选择你需要电脑每天需要在几点开机,当然,要保证你的主板时间是准确的。

wKioL1W4u_vAUKFbAAIn1yXkBHc703.jpg

5.    假如你需要每天都定时开机,就选择EveryDay,,你如果想要在每天6:45开机,就通过数字键输入06:45:00,最后,一般按F10 进行保存,重启电脑后生效!

wKiom1W4ujnADkqCAAIlRZMtDHU028.jpg




5):Linux系统日志记录规律
第一块
日志管理
目录:
/var/log
常用的系统日志如下:
核心启动日志:/var/log/dmesg
系统报错或重启服务等日志:/var/log/messages
邮件系统日志:/var/log/maillog
cron(定制任务日志)日志:
/var/log/cron   #计划日志执行成功与否,在这个文件中看
/var/log/secure  #验证系统用户登录

文件 /var/log/wtmp 记录所有的登入和登出。  

例:

[iyunv@xuegod63~]# last   #查看所有登录过系统的用户和IP,会看到一系列的日志

[iyunv@xuegod63~]# > /var/log/wtmp  #清空日志

[iyunv@xuegod63~]# last #这时在查看的时候就不在看到一系列的日志了


文件 /var/log/lastlog 记录每個用戶最后的登入信息。

例:

[iyunv@xuegod63~]# lastlog

Username        Port     From             Latest

root             tty1                      Tue Dec 18 22:22:39 +08002012

文件 /var/log/btmp 记录错误的登入尝试。

[iyunv@xuegod63~]# lastb  #查看谁在尝试登录系统
root     tty1                          Tue Dec 18 09:45 - 09:45  (00:00)   
[iyunv@xuegod63~]# ll /var/log/btmp
-rw-------.1 root utmp 384 Dec 18  2012 /var/log/btmp
#当你使用这个命令查看的时候发现文件的容量过大,那么就说明有人想要登陆你的系统
测试:
[iyunv@xuegod63~]# ssh 192.168.1.63
#远程连接1.63,且故意输错密码。
[iyunv@xuegod63~]# lastb
mk       ssh:notty    xuegod63.cn      Tue Feb 3 21:28 - 21:28  (00:00)   
mk       ssh:notty    xuegod63.cn      Tue Feb 3 21:28 - 21:28  (00:00)   
mk       ssh:notty    xuegod63.cn      Tue Feb 3 21:28 - 21:28  (00:00)   
root     ssh:notty    xuegod63.cn      Tue Feb 3 21:28 - 21:28  (00:00)   
再次查看的时候,发现就会有用户登陆错误的日志提示

6):自定义日志记录方式
第一块
日志记录方式: 先分类,然后每个类中再分级别
主要7种日志分类(FACILITY):
authpriv     安全认证相关
cron       at和cron定时相关
daemon     后台进程相关
kern       内核产生
lpr        打印系统产生
mail       邮件系统相关
syslog     日志服务本身
news       新闻系统  (和BBS差不多,新闻组)
uucp       uucp系统产生 。Unix-to-Unix Copy(UNIX至UNIX的拷贝),Unix系统的一项功能,允许计算机之间以存储-转发方式交换e-mail和消息。在Internet兴起之前是Unix系统之间连网的主要方式。
local0到local7   #共8个类型,系统保留的:8个系统日志类型,给其它程序使用。或用户 自定义用
第二块
8个日志级别:以下排列,由轻到重
级别(PRIOROTY):
debug                 排错信息。开发人
info                  正常信息
notice                稍微要注意的
warn                  警告
err(error)            错误
crit(critical)         关键的错误;批评,比err更为严重
alert                 警报警惕
emerg(emergency)      紧急,突发事件

7):记录日志的位置
第一块
日志服务:
1).rhel5:
服务名称:syslog
配置文件:
#vim/etc/syslog.conf
2).RHEL6:rsyslog
配置文件:
[iyunv@localhost~]# vim /etc/rsyslog.conf #进入配置文件显示内容如下:
*.info;mail.none;authpriv.none;cron.none                /var/log/messages            
#“*”表示所有级别 “info”表示info级别以上的所有日志都记录在/var/log/messages下。但是info以上级别中的mail,authpriv等级别的日志不再记录在/messages日志中。
例:
1.kern.*  内核类型的所级别日志
2*.info;mail.none;news.none;authpriv.none;cron.none:由于mail, news, authpriv, cron 等类别产生的讯息较多,因此在/var/log/messages 里面不记录这些项目。除此其他讯息都写入 /var/log/messages中。所以messages 文件很重要
3.authpriv.* 认证方面的讯息均写入 /var/log/secure 档案;
4.mail.*:邮件方面的讯息则均写入 /var/log/maillog 档案;
5.cron.*:例行性工作排程均写入 /var/log/cron 档案;
6.local7.*:将本机开机时应该显示到屏幕的讯息写入到 /var/log/boot.log 档案中;
第二块
/etc/rsyslog.conf  中日志输入规则:
例:
.  :代表『比后面还要高的等级都被记录下来』的意思,
例如: mail.info 代表只要是mail 类型的信息,而且该信息等级高于 info (包括info 本身)时,就会被记录下来的意思。
.= :代表所需要的等级就是后面接的等级而已,其他的都不要!
.! :代表不等于,亦即是除了该等级外的其他等级都记录。
举例:
cron.none   对于cron类型日志不记录任何信息
cron.=err   对于cron类型日志只记录err级别的信息
cron.err    对于cron类型日志记录大于err级别的信息
cron.!err   对于cron类型日志不记录err级别的信息,其他级别都记录。

[iyunv@localhost~]# vim /etc/rsyslog.conf  #进入配置文件显示内容如下
#Log all the mail messages in one place.
mail.*                                                 -/var/log/maillog
问:
在上面的关于 mail 的记录中,在记录的档案 /var/log/maillog 前面还有个减号『 - 』是干嘛用的?
答:
由于邮件所产生的讯息比较多,因此我们希望邮件产生的讯息先储存在速度较快的内存中 (buffer) ,等到数据量够大了才一次性的将所有数据都填入磁盘内,这样将有利于减少对磁盘读写的次数,减少IO读写开销。另外,由于讯息是暂存在内存内,因此若不正常关机导致登录信息未写入到文档中,可能会造成部分数据的遗失。

第三块
服务重启和开机启动:
#service rsyslogrestart;   
#chkconfig rsyslog on
日志的存储格式(怎么看日志):
DATA TIME HOSTNAME APP(NAME)   [PID]:       MESSAGES
说明:
DATA TIME:日志记录的日期和时间
HOSTNAME APP(NAME)   [PID]:什么机器,什么程序(程序的PID):
[iyunv@localhost ~]# vim/var/log/messages
May 29 23:19:33localhost kernel: Initializing cgroup subsys cpuset
#在5月29号23点19分33秒 ,主机名为localhost,APP的名字为内核,发布了以下信息
第四块
例:sshd+rsyslog练习(sshd单独记录一个叫sshd.log的日志文件):
local0
修改配置文件:
[iyunv@localhost ~]# vim/etc/ssh/sshd_config修改:
SyslogFacility AUTHPRIV   
为:
#SyslogFacility  local0
重启:
[iyunv@localhost~]# service sshd restart
停止 sshd:                                               [确定]
正在启动 sshd:                                            [确定]

修改配置文件:

[iyunv@localhost ~]# vim /etc/rsyslog.conf #在最后添加一行
local0.*           /var/log/sshd.log
重启:
[iyunv@localhost ~]# service rsyslog restart
关闭系统日志记录器:                                       [确定]
启动系统日志记录器:                                       [确定]

[iyunv@localhost ~]# ls /var/log/sshd.log  #查看,在/var下产生了sshd.log日志,
/var/log/sshd.log
[iyunv@localhost ~]# cat !$  #打开查看的时候,里面根本就没任何内容
cat /var/log/sshd.log
没有内容,重启一下服务看看。
[iyunv@localhost ~]# service sshd restart
停止 sshd:                                               [确定]
正在启动 sshd:                                            [确定]
[iyunv@localhost ~]# cat /var/log/sshd.log #再次查看到 时候我们就看到产生一些日志
Jul 22 10:54:38 localhost sshd[31703]:Received signal 15; terminating.
Jul 22 10:54:38 localhost sshd[31780]: Serverlistening on 0.0.0.0 port 22.
Jul 22 10:54:38 localhost sshd[31780]: Serverlistening on :: port 22.
第五块
如何防止日志被黑客删除呢?
[iyunv@localhost~]# chattr +a /var/log/sshd.log  # 给这条日志添加一条新的命令 “+a”
[iyunv@localhost~]# rm -rf !$ #删除实验,可以看到这个时候的日志是无法删除的
rm-rf /var/log/sshd.log
rm:无法删除"/var/log/sshd.log": 不允许的操作
[iyunv@xuegod63~]# lsattr /var/log/sshd.log
-----a-------e-/var/log/sshd.log
[iyunv@xuegod63~]# tail -f /var/log/sshd.log   #下面远程连接一下,可以看到日志
[iyunv@xuegod63~]# ssh 192.168.1.63

加入了这个属性后,你的 /var/log/messages 登录档从此就仅能被增加,而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数后,才能被删除移喔!

第六块 -- 了解
日志回滚:
logrotate(日志回滚过程: 创建新文件、改名旧文件。)
配置文件:
#vim/etc/logrotate.conf
#vim /etc/logrotate.d/*  
[iyunv@localhost ~]# vim  /etc/logrotate.conf

weekly <==预设每个礼拜对日志档进行一次 rotate 的工作
rotate  4<==保留几个日志文档呢?预设是保留四个!
create <== 回滚日志后,创建一个新的空文件来存储新的数据。

/var/log/wtmp {
    monthly
    create 0664 root utmp
        minsize 1M
    rotate 1
}
说明:
/var/log/wtmp { <==仅针对 /var/log/wtmp 所设定的参数
monthly <==每个月一次,取代每周!
minsize 1M <==档案容量一定要超过 1M 后才进行rotate (略过时间参数)
create 0664 root utmp<==设定新建文件的权限 、所有者、用户组
rotate 1 <==仅保留一个,亦即仅有 wtmp.1 保留而已。 }




8):配置远程收集日志服务器
1. 配置SERVER端(接收端):xuegod63 服务端。 xuegod64做客户端
[iyunv@bogon ~]# vim/etc/rsyslog.conf
将:
# Provides TCP syslogreception
#$ModLoad imtcp.so
#$InputTCPServerRun 514
改为:
# Provides TCP syslogreception
$ModLoad imtcp.so  
$InputTCPServerRun 514
[iyunv@bogon ~]# servicersyslog  restart  
[iyunv@xuegod63 log]#netstat -anutp | grep 514
tcp        0     0 0.0.0.0:514                0.0.0.0:*                   LISTEN      7426/rsyslogd      
tcp        0     0 :::514                     :::*                       LISTEN      7426/rsyslogd

2. 配置CLIENT端(发送端):
# vim /etc/rsyslog.conf   #在最后添加
*.*   @@192.168.1.64:514
[iyunv@xuegod64 ~]#/etc/init.d/rsyslog restart
查看:
[iyunv@xuegod63 log]#tail -f /var/log/messages



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-92055-1-1.html 上篇帖子: linux vi 编辑后保存 下篇帖子: linux系统管理之ip配置、yum本地仓库搭建、密码破解 Linux 计划
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表