码迷,mamicode.com
首页 > 系统相关 > 详细

Linux计划任务和日志管理

时间:2015-08-14 13:42:56      阅读:238      评论:0      收藏:0      [点我收藏+]

标签:

计划任务
日志、
搭建远程日志管理

计划任务
at  只能执行一次

语法:
at time(时间)
服务: atd 必须开启
     [root@pagoda63 ~]# /etc/init.d/atd status  #查看atd服务状态
     atd (pid  2108) is running...

创建计划任务
     [root@pagoda63 ~]# at 16:07
     at> echo `date` > /tmp/date.txt
     at> <EOT>                        #ctrl+d 结束输入
     job 1 at 2015-04-17 16:07

     [root@pagoda63 ~]# at 16:10 2015-04-17  指定具体时间
     at> echo `date` >/tmp/date.txt
     at> <EOT>
     job 2 at 2015-04-17 16:10
    
     [root@pagoda63 ~]# at now+2min   #2分钟后执行
     at> echo `date` > /tmp/date.txt
     at> <EOT>
     job 3 at 2015-04-17 16:13
    
     可以查看相应的/tmp/date.txt
    
    
at查询
     [root@pagoda63 ~]# at -l
     6     2015-04-17 16:19 a root
     5     2015-04-17 16:25 a root
    
     执行成功的at计划任务会在这个目录下成生一个可执行的脚本文件:
          [root@pagoda63 ~]# ll /var/spool/at/
          total 8
          -rwx------  1 root   root   4094 Apr 17 16:16 a00005016b7ab9

at任务删除
     atrm  at序列号
          [root@pagoda63 ~]# atrm 5


at只能执行一次而不能周期性的执行


周期性的计划任务
crontab
     配置文件:
          [root@pagoda63 ~]# vim /etc/crontab
     服务:
          crond
          [root@pagoda63 ~]# /etc/init.d/crond status  #查看服务状态
               crond (pid  2097) is running...
               You have new mail in /var/spool/mail/root
          查看服务是否开机启动,设置开机启动
               [root@pagoda63 ~]# chkconfig --list crond  #查看
               crond               0:off     1:off     2:on     3:on     4:on     5:on     6:off
               [root@pagoda63 ~]# chkconfig crond on  #设置开机启动
         
了解:对于系统级别的计划任务,需要执行的命令和脚本都放在这里:
/etc/cron.hourly   /etc/cron.daily   /etc/cron.weekly    /etc/cron.monthly

[root@pagoda63 ~]# cat /var/spool/cron/root 计划任务池spool/cron
* * * * * echo $(date) >>/tmp/time.txt
[root@pagoda63 ~]# echo "* * * * * touch /tmp/test.txt" >>/var/spool/cron/root 

[root@pagoda63 ~]# cat /etc/cron.deny 黑名单
新建个白名单 vim /etc/cron.allow
一般不会两个同时出现



针对用户级别的计划任务
     root用户
          命令:
               crontab -e 创建一个计划任务
               crontab -l 显示计划任务
               crontab -r 删除计划任务
          crontab -e的写法
               分 时 日 月 周 谁做后面的事情  命令
                    minute:表示分钟,可以是从0到59之间的任何整数。

                    hour:表示小时,可以是从0到23之间的任何整数。

                    day:表示日期,可以是从1到31之间的任何整数。

                    month:表示月份,可以是从1到12之间的任何整数。

                    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

                    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

                     技术分享    
          

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
 
 
 
     实例:
          [root@pagoda63 ~]# crontab -e
               56 16 * * * echo `date`>/tmp/date.txt
          [root@pagoda63 ~]# cat /tmp/date.txt
          Fri Apr 17 16:56:01 CST 2015
     特殊写法:
          9,18,22这几天的3点1分,开始执行备份脚本
               1  3  9,18,22  * *  /usr/bin/back.sh
          每月9-18日,这几天,3:00执行
               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 {} \;
            一条命令添加计划任务
          echo "* * * * * /bin/echo xx" >/var/spool/cron/username 
  
     使用root身份,给其它普通用户指定crontab:
     语法:crontab -u USERNAME -e/-l/-r
    
          [root@pagoda63 ~]# crontab -u pagoda -e  #创建
          [root@pagoda63 ~]# crontab -u pagoda -l     #查看
          1 * * * * touch /tmp/a.txt
          [root@pagoda63 ~]# crontab -u pagoda -r  #删除
         
          那么root自己的计划任务怎么清理
               [root@pagoda63 ~]# crontab -r

疑问:如果设置好了计划任务在任务的前1分钟服务器突然断电,过了一会
          之后又来电,计划任务还能继续执行吗
答:如果断电cron中的脚本,在下次开机将不会被执行
解决:anacron
          anacron并没有取代cron的意思,
          anacron用于,机器重启后,会侦测停机期间,
          有没有cron没有执行的计划任务,如果有,会立即,执行一下没有执行的任务
         

扩展:服务器可以在来电后自启,也可以设置定时开机
          定时开机肯定是在bios中设置
               Delet,F2进入bios设置
               一般在电源管理中:Power Management Setup
               唤醒功能:Wake Up Event Setup
              
          启用后选择好时间
         
    
    
————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————
日志管理

     日志在/var/log/下面
一:常见系统日志
     核心启动日志:/var/log/dmesg
     系统报错或重启服务等日志:/var/log/messages
     邮件系统日志:/var/log/maillog
     cron(定制任务日志)日志:/var/log/cron   #计划日志执行成功与否,在这个文件中看
     验证系统用户登录:/var/log/secure
     记录所有的登入和登出:/var/log/wtmp

    
          [root@pagoda63 ~]# last    #查看所有登录过系统的用户和IP
          [root@pagoda63 ~]# > /var/log/wtmp  #使用空覆盖wtmp,清除所有登陆日志
          [root@pagoda63 ~]# last

          wtmp begins Fri Apr 17 17:42:46 2015
    
     记录每个用戶最后的登入信息:/var/log/lastlog
          [root@pagoda63 ~]# lastlog
          Username         Port     From             Latest
          root             pts/0    192.168.8.2      Tue Apr 14 20:13:23 +0800 2015
         
     记录错误的登入尝试:/var/log/btmp
    
          [root@pagoda63 ~]# lastb      ##查看谁,尝试登录系统
          root     tty1         :0               Mon Apr 13 20:09 - 20:09  (00:00)   
          root     tty1         :0               Sun Apr 12 19:46 - 19:46  (00:00)   
          root     tty6         :0               Fri Apr 10 07:27 - 07:27  (00:00)   

          btmp begins Fri Apr 10 07:27:16 2015
         
          [root@pagoda63 ~]# ll /var/log/btmp  #当发现这个文件过大时,可能有人尝试暴力破解ssh
          -rw-------. 1 root utmp 1152 Apr 13 20:09 /var/log/btmp
         
    
    设置Linux用户连续N次输入错误密码进行登陆时,自动锁定
    一、在字符终端下,实现某一用户连续错误登陆N次后,就锁定该用户X分钟。
        执行 vi /etc/pam.d/login
        在#%PAM-1.0 下新起一行,加入
        auth required pam_tally2.so deny=3 unlock_time=5 even_deny_root root_unlock_time=10
        如果不限制root用户,则可以写成
        auth required pam_tally2.so deny=3 unlock_time=5
    诠释:
        1.even_deny_root 也限制root用户;
        2.deny 设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
        3.unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
        4.root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒;
            不同的pam版本,设置可能有所不同
    二、在图形登陆界面下,实现某一用户连续错误登陆N次后,就锁定该用户X分钟
        执行vim /etc/pam.d/gnome-screensaver
        在#%PAM-1.0 下 下新起一行,加入
             auth required pam_tally2.so even_deny_root deny=3 unlock_time=5 root_unlock_time=10
        如果不限制root用户,则可以写成
           auth required pam_tally2.so deny=3 unlock_time=5
    三、也可以直接在 system-auth 文件中直接添加这些命令,修改完成后,
         凡是调用 system-auth 文件的服务,都会生效。因为有自动解锁时间
        ,所以,不用担心全部限制后,会出现永远无法登陆的“尴尬”情况。
    备注:
        可以使用 pam_tally2 -r -u username 命令,手动清除某用户记录次数
   

二:日志记录方式

          规则:先分类,然后再在每个类中分级别
    
    
     分类:有7种日志分类
               *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个日志级别:以下排列,由轻到重

         
          debug                 排错信息。开发人
          info                  正常信息
          notice                稍微要注意的
          warn                  警告
          err(error)            错误
          crit(critical)         关键的错误
          alert                 警报警惕
          emerg(emergency)      紧急,突发事件

     日志服务:
          服务名称:
               RHEL5:syslog
               RHEL6:rsyslog
          配置文件
               RHEL5:/etc/syslog.conf
               RHEL6:/etc/rsyslog.conf
               了解配置文件(vim /etc/rsyslog.conf)
                    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 档案中;
          服务重启和开机启动:
               #service rsyslog restart;  
               #chkconfig rsyslog on

     自定义日志输入规则
          /etc/rsyslog.conf  中日志输入规则:
               . :代表『比后面还要高的等级都被记录下来』的意思
               .=  :代表所需要的等级就是后面接的等级而已, 其他的都不要!
               .!  :代表不等于, 亦即是除了该等级外的其他等级都记录。
                    如:
                         cron.none   对于cron类型日志不记录任何信息
                         cron.=err   对于cron类型日志只记录err级别的信息
                         cron.err    对于cron类型日志记录大于err级别的信息
                         cron.!err   对于cron类型日志不记录err级别的信息,其他级别都记录。
                        
     日志记录位置
          1、日志的相对路径:通常就是放在 /var/log 中
          2、 存在远程日志服务器上
          3、有时日志会直接弹出在屏幕上。类似于wall命令。
               wall--send a message to everybody’s terminal.给所有的终端发送消息
              
          解读 /etc/rsyslog.conf中的第48行
               mail.*                                                  -/var/log/maillog
               记录的档案 /var/log/maillog 前面还有个减号『 - 』是干嘛用的?
                    由于邮件所产生的讯息比较多,因此我们希望邮件产生的讯息先储存在速度较快的内存中 (buffer) ,
                    等到数据量够大了才一次性的将所有数据都填入磁盘内
                    这样将有利于减少对磁盘读写的次数,减少IO读写开销
                    另外,由于讯息是暂存在内存内,因此若不正常关机导致登录信息未写入到文档中,可能会造成部分数据的遗失\
    
    
     怎么查看日志-->日志的存储格式
          DATA TIME HOSTNAME APP (NAME)   [PID]:     MESSAGES
               DATA TIME:日志记录的日期和时间
               HOSTNAME APP (NAME)   [PID]:什么机器,什么程序(程序的PID):
         
          例:sshd+rsyslog练习(sshd单独记录一个叫sshd.log的日志文件):
               修改配置文件:#vim /etc/ssh/sshd_config
               修改:
               #SyslogFacility AUTHPRIV  
               为:
               SyslogFacility  local0
               重启:#service sshd restart
              
               修改配置文件:#vim /etc/rsyslog.conf   #在最后添加一行  指定ssh相关日志保存到sshd.log
               local0.*           /var/log/sshd.log
               重启:#service rsyslog restart
              
              
               [root@pagoda63 ~]# service sshd restart  #先重启rsyslog服务,这样后面重启sshd会产生些日志
               [root@pagoda63 ~]# cat /var/log/sshd.log
               Apr 18 00:22:11 pagoda63 sshd[3626]: Received signal 15; terminating.
               Apr 18 00:22:12 pagoda63 sshd[3669]: Server listening on 0.0.0.0 port 22.
               Apr 18 00:22:12 pagoda63 sshd[3669]: Server listening on :: port 22.
          日志产生了那我们该怎么防止日志被恶意删除呢?
               用到我们的特殊权限了
                    [root@pagoda63 ~]# chattr +a /var/log/sshd.log   #只允许追加
                    [root@pagoda63 ~]# lsattr /var/log/sshd.log  #查看
                    -----a-------e- /var/log/sshd.log
                   
                    加入了这个属性后,你的 /var/log/messages 登录档从此就仅能被增加
                    而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数后
                    才能被删除移喔
                   
                   
                    我们可以测试下
                         [root@pagoda63 ~]# tail -f /var/log/sshd.log  实时查看日志
                         我在64号机远程登陆63,产生些日志
                              Apr 18 00:30:31 pagoda63 sshd[3687]: Accepted password for root from 192.168.8.64 port 54555 ssh2
                              Apr 18 00:30:34 pagoda63 sshd[3687]: Received disconnect from 192.168.8.64: 11: disconnected by user
    
    
     日志滚动
          logrotate(日志回滚过程: 创建新文件、改名旧文件。)
          配置文件及相关目录
               #vim /etc/logrotate.conf
               #vim /etc/logrotate.d/*
        logrotate -f 强制滚动
              
          解读[root@pagoda63 ~]# 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 保留而已。 }
        日志滚动与日志防删除
            日志滚动会将日志分段存储,分段了的话,加了+a,+i还有用吗?
            +a,+i权限后不允许日志滚动

——————————————————————————————————————————————————————————————————————————————————————————————————————————————
实战:
配置远程日志服务器,实现日志集中管理:

     环境准备:
          server服务端:192.168.8.63 pagoda63 接收
          client客户端:192.168.8.64 pagoda64 发送
        64的日志发送给63

    
     配置服务端:
         
          [root@pagoda63 ~]# vim /etc/rsyslog.conf
          去掉前面的注释#,即启用它,修改后如下
          # Provides TCP syslog reception
          $ModLoad imtcp
          $InputTCPServerRun 514
         
         
          [root@pagoda63 ~]# service rsyslog restart  #重启服务
          [root@pagoda63 ~]# netstat -antup | grep 514  #检查端口号514的进程是否通信
          tcp        0      0 0.0.0.0:514                 0.0.0.0:*                   LISTEN      3783/rsyslogd      
          tcp        0      0 :::514                      :::*                        LISTEN      3783/rsyslogd 

         
     配置客户端
          [root@pagoda64 ~]# vim /etc/rsyslog.conf
               在末尾添加一行:
               *.*   @@192.168.8.63:514
               上面的声明告诉rsyslog守护进程,
               将系统上各个设备的各种日志消息路由到远程rsyslog服务器(192.168.8.63)的UDP端口514
               如果出于某种原因,你需要更为可靠的协议,如TCP,
               而rsyslog服务器也被配置为监听TCP连接,
               你必须在远程主机的IP地址前添加一个额外的@字符,像下面这样:
               *.*   @@192.168.8.63:514
    
               注意,你也可以将rsyslog服务器的IP地址替换成它的主机名(FQDN)。
          [root@pagoda64 ~]# service rsyslog restart
         
     查看:
          [root@pagoda63 ~]# tail -f /var/log/messages
               Apr 18 01:22:14 pagoda63 sshd[3669]: Received signal 15; terminating.
               Apr 18 01:22:14 pagoda63 sshd[3888]: Server listening on 0.0.0.0 port 22.
               Apr 18 01:22:14 pagoda63 sshd[3888]: Server listening on :: port 22.

对多台客户端发送的日志分类,64的日志在64下,65的在65下,以hostname命名

新建个配置文件
vim /etc/rsyslog.d/remote.conf
写入内容:
:fromhost-ip, isequal, "192.168.1.64" /var/log/xuegod64.log
:fromhost-ip, isequal, "192.168.1.64" ~

Linux计划任务和日志管理

标签:

原文地址:http://www.cnblogs.com/ylion/p/4729622.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!