Linux计划任务和日志管理

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

计划任务
at  只能执行一次

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

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

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

at任务删除
     atrm  at序列号
          [[email protected] ~]# atrm 5

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

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

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

[[email protected] ~]# 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字段,表示每十分钟执行一次。

实例:
          [[email protected] ~]# crontab -e
               56 16 * * * echo `date`>/tmp/date.txt
          [[email protected] ~]# 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
    
          [[email protected] ~]# crontab -u pagoda -e  #创建
          [[email protected] ~]# crontab -u pagoda -l     #查看
          1 * * * * touch /tmp/a.txt
          [[email protected] ~]# crontab -u pagoda -r  #删除
         
          那么root自己的计划任务怎么清理
               [[email protected] ~]# 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

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

wtmp begins Fri Apr 17 17:42:46 2015
    
     记录每个用戶最后的登入信息:/var/log/lastlog
          [[email protected] ~]# lastlog
          Username         Port     From             Latest
          root             pts/0    192.168.8.2      Tue Apr 14 20:13:23 +0800 2015
         
     记录错误的登入尝试:/var/log/btmp
    
          [[email protected] ~]# 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
         
          [[email protected] ~]# 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
              
              
               [[email protected] ~]# service sshd restart  #先重启rsyslog服务,这样后面重启sshd会产生些日志
               [[email protected] ~]# 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.
          日志产生了那我们该怎么防止日志被恶意删除呢?
               用到我们的特殊权限了
                    [[email protected] ~]# chattr +a /var/log/sshd.log   #只允许追加
                    [[email protected] ~]# lsattr /var/log/sshd.log  #查看
                    -----a-------e- /var/log/sshd.log
                   
                    加入了这个属性后,你的 /var/log/messages 登录档从此就仅能被增加
                    而不能被删除,直到 root 以『 chattr -a /var/log/messages 』取消这个 a 的参数后
                    才能被删除移喔
                   
                   
                    我们可以测试下
                         [[email protected] ~]# 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 强制滚动
              
          解读[[email protected] ~]# 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

配置服务端:
         
          [[email protected] ~]# vim /etc/rsyslog.conf
          去掉前面的注释#,即启用它,修改后如下
          # Provides TCP syslog reception
          $ModLoad imtcp
          $InputTCPServerRun 514
         
         
          [[email protected] ~]# service rsyslog restart  #重启服务
          [[email protected] ~]# 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

配置客户端
          [[email protected] ~]# 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)。
          [[email protected] ~]# service rsyslog restart
         
     查看:
          [[email protected] ~]# 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" ~

时间: 2024-10-05 05:00:00

Linux计划任务和日志管理的相关文章

Linux下的计划任务和日志管理

Linux下的计划任务和日志管理   一:实验环境: 1:虚拟机 2:两个linux系统 二:实验目标 1:at 定制单次执行的计划任务 2:cron定制周期性计划任务 3:配置脚本实现周期性任务 4:配置公司内网服务器每天自动开关机 5:Linux系统日志记录规律 6:自定义日志记录方式 7:配置远程收集日志服务器 三:实验步骤 1):at 定制单次执行的计划任务 第一块 at 定制单次执行的计划任务 前提:服务:atd  必须开启 #查询atd是否运行,只有运行,才能工作. [[email 

Linux学习之路--日志管理【17】---20180113

一.日志介绍 日志:    历史事件:时间,地点,人物,事件    日志级别:事件的关键性程度,Loglevel 系统日志服务: sysklogd :CentOS 5之前版本        syslogd:   system application     记录应用日志        klogd:     linux kernel           记录内核日志    事件记录格式:        日期时间 主机 进程[pid]  事件内容    C/S架构:通过TCP或UDP协议的服务完成日

Linux的日志管理

Linux日志的管理 日志:记录了你几乎所有的操作记录,用于系统的审核,故障的排除.日志文件永久存放在日志目录中,系统日志保存在/var/log中 rsyslog 按照日志类型分类,把所有日志记录到/var/log目录下. /var/log/messages是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵. /var/log/secure 与安全相关的日志. /var/log/cron 与计划任务相关的日志. /var/log/boot.log与系统启动的相关日志,只保留本次系

linux 学习 14 日志管理

第十四讲 日志管理 14.1 日志管理-简介 1.日志服务 ?在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致. ?rsyslogd的新特点: ?基于TCP网络协议传输日志信息; ?更安全的网络传输方式: ?有日志消息的及时分析框架: ?后台数据库: ?配置文件中可以写简单的逻辑判断: ?与sysl

第13章 Linux日志管理

1. 日志管理 (1)简介 在CentOS 6.x中日志服务己经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式其实都是和syslogd相兼容的. (2)rsyslogd的新特点 ①基于TCP网络协议传输日志信息 ②更安全的网络传输方式 ③有日志消息的及时分析框架 ④后台数据库 ⑤配置文件中可以写简单的逻辑判断. ⑥与syslogd配置文件相兼容 (3)查看rsyslogd服务是否启动: ①#ps aux |

Linux服务器管理: 日志管理(一)

1.日志管理介绍: a.日志服务:在CentOS6.x中日志服务以及由rsyslogd取代了原有的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日子文件的格式其实都是和syslogd服务相兼容的,所以会了syslogd也就会了rsyslod服务. b.rsyslogd的新特点: 基于TCP网络协议传输日志信息 更安全的网络传输方式 有日志消息的及时分析框架 后台数据库 配置文件中可以写简单的逻辑判断 与syslog配置文件相兼容 3.系统默认是启动的:

linux下日志管理工具--logrotate

配置 /usr/local/nginx/logs/*.log { daily dateext rotate 1 olddir /usr/local/nginx/other/logs missingok notifempty compress sharedscripts postrotate /bin/kill -USR1 $(cat /var/run/nginx.pid 2>/dev/null) 2>/dev/null ||: endscript } dateext:文件后缀是日期格式,也就是

Linux日志管理与分类

Linux默认系统日志   /var/log/messages 这是Linux最核心的日志文件,假若某个服务没有定义日志文件,那么该服务产生的日志文件就会记录到这个文件中,该日志每周归档一次,默认只保留5次.归档的方法都是由"/etc/logrotate.conf"这个文件来控制的.这个日志也有个守护进程"rsyslogd"如果把这个服务停止掉,就不会产生日志,在centos6之前的版本是由"syslogd"这个守护进程来管理的,不管是"

Linux学习笔记(21) Linux日志管理

1. 简介 (1) 日志服务 在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务.rsyslogd日志服务更加先进,功能更多.但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致. rsyslogd的新特点: 基于TCP网络协议传输日志信息:更安全的网络传输方式:有日志消息的及时分析框架:后台数据库:配置文件中可以写简单的逻辑判断:与syslogd配置文件相兼容. 1)确定服务启动 ps aux