计划任务以及日志管理

1、计划任务

简单介绍:

计划任务:就是在计划内的任务,比如说什么时候做什么样的意见事情;就是提前就已经是规划好了,在Linux的世界面也会存在这种计划性的任务,而且,在Linux系统中在创建的时候就已经默认了很多的计划任务,仅仅是我们不知道而已;属实打脸,学习统居然还不知道系统是如何的?扯远了,那么在Linux系统中,通常使用两个服务器来实现计划性的任务

  • atd:一次性计划任务
  • crond:周期性计划任务

简单的理解就是计划性任务就是做一些周期性的工作内容,比如说是备份,又比如说切割系统日志等等;

crond:守护进程是为了周期性执行任务或者是出出力等待处理事件;

任务的调度:可以是系统自带的,也可以是人为的;简单的说就是系统任务调度、用户任务调度;

计划性任务的实现方式:

  • 定时性的计划任务:就是按照一定周期执行的
  • 突发性的计划任务,临时安排的,临时设置的计划性任务;

at一次性计划任务

at计划性任务:它是仅仅使用一次,用于突发的,突然想定时执行的一次任务调度的工具;

at计划是由atd这个服务管理;

at命令

作用:指定一次性计划任务

语法:at+时间

服务名:atd

选项:

  • -l:查看at的任务列表
  • atq:查看任务列表
  • -c:查看具体的任务内容
  • -u:指定at命令的用户
  • atrm:删除任务
#查看是否有at服务
[root@node0 ~]# systemctl status atd
Unit atd.service could not be found.#安装atd服务
[root@node0 ~]# yum -y install at#再次查看
[root@node0 ~]# systemctl status atd
● atd.service - Job spooling toolsLoaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)Active: inactive (dead)#启动atd服务
[root@node0 ~]# systemctl start atd
[root@node0 ~]# systemctl status atd
● atd.service - Job spooling toolsLoaded: loaded (/usr/lib/systemd/system/atd.service; enabled; vendor preset: enabled)Active: active (running) since 二 2021-09-21 10:50:20 CST; 3s agoMain PID: 7480 (atd)CGroup: /system.slice/atd.service└─7480 /usr/sbin/atd -f#查看开机是否自启动的命令-->centos7以上的命令
[root@node0 ~]# systemctl is-enabled atd
enabled#查看计划任务是否开机自启动-->centos6
[root@node0 ~]# chkconfig --list | grep atd

at指定计划任务

  • 确定系统时间
  • 指定在当天晚上8:00执行查看命令
#查看一下当天的时间
[root@node0 ~]# date
2021年 09月 21日 星期二 14:32:29 CST#指定计划性任务
[root@node0 ~]# at 8:00pm
at> cat /etc/fstab
at> <EOT>                              #结束计划性任务的是ctrl+d
job 1 at Tue Sep 21 20:00:00 2021#查看一下计划性任务
[root@node0 ~]# atq
1   Tue Sep 21 20:00:00 2021 a root
[root@node0 ~]# at -l
1   Tue Sep 21 20:00:00 2021 a root#atq输出信息讲解:任务的编号+执行的时间+队列+执行者

如果真在执行命令:ctrl+d,但是错误的按到了ctrl+s,应该如何处理?

#在linux的世界里面,错误的按了ctrl+s表示的是锁定屏幕的意思,如果按了不能正常的输入,
#需要使用ctrl+q来退出

如果说有人设置了计划任务,通常的情况下会保存到/var/spool/at/的目录下

通过-c可以直接查看任务的命令

[root@node0 ~]# ls /var/spool/at/
a00002019f1e50  spool
您在 /var/spool/mail/root 中有邮件

at任务的几种写法:

[root@node0 ~]# at 21:00 2021-09-30     #定义具体的某一天什么时候执行
[root@node0 ~]# at now +10min         #从现在开始十分后执行
[root@node0 ~]# at  16:00 tomorrow     #指定明天的16点开始执行
[root@node0 ~]# at  16:00 +3days      #指定三天后的几点执行
[root@node0 ~]# at  16:00 < a.txt#删除任务
[root@node0 ~]# atrm 2
[root@node0 ~]# atq
3   Thu Sep 30 21:00:00 2021 a root

crontab定时任务

crond命令是定时检查是否有需要执行的工作,如果有周期性的工作就会自动执行该工作;

cron是Linux下的定时执行工具,无需人工干预操作

系统常见的周期性工作:

更新whatis数据库、updatedb数据库、日志定期切割等等

#crond服务
[root@node0 ~]# systemctl status crond     #查看是否有开启crond
#设置开机自启动
[root@node0 ~]# systemctl enable crond

crontab命令

作用:指定定制任务

语法:crontab+选项

选项

  • -u:指定用户使用cron服务
  • -l:查看当前用户下的cron任务
  • -r:删除cron任务
  • -e:编辑cron任务–>这个是常用选项

crontab的编写的语法格式

[root@node0 ~]# crontab -e
no crontab for root - using an empty one
* * * * * command#使用方法说明
分、时、日、月、周+命令
分:0-59
时:0-23
日:1-31
月:1-12
周:1-7
命令:shell命令#特殊字符的含义
*   代表取值范围内的数字      (任意/每)
/   指定时间的间隔频率       */10   0-23/2
-   代表从某个数字到某个数字        8-17
,    分开几个离散的数字       6,10-13,20

cron计划任务案例

每天凌晨2点开始备份数据

[root@node0 ~]# crontab -e
no crontab for root - using an empty one
* 2 * * * tar -zcvf /opt/grub2.tar.gz /boot/grub2#查看一下计划任务
[root@node0 ~]# crontab -l
* 2 * * * tar -zcvf /opt/grub2.tar.gz /boot/grub2

指定用户执行计划性任务

[root@node0 ~]# crontab -u bin -e
no crontab for bin - using an empty one
2 * 2 * * echo "haha" >> /opt/a.txt#查看指定用户
[root@node0 ~]# crontab -l -u bin
2 * 2 * * echo "haha" >> /opt/a.txt

我们应该如何排查所有用户的计划性任务?

  • 首先我们必须理解:所有用户的计划任务都会在/var/spool/cron/下产生对应的文件;因此查看这个目录下的文件数就是对应的文件列表
[root@node0 ~]# ll /var/spool/cron/
总用量 8
-rw------- 1 root root 36 9月  22 14:14 bin
-rw------- 1 root root 50 9月  22 14:06 root

系统级别的计划性任务

系统中有默认的计划任务列表,因此我们需要知道大概的系统任务调度的配置文件

#/etc/crontab这个文件定义了crontab的用法
[root@node0 ~]# ll /etc/crontab
-rw-r--r--. 1 root root 451 6月  10 2014 /etc/crontab
[root@node0 ~]# vim /etc/crontab
SHELL=/bin/bash                #定义了操作系统使用的shell
PATH=/sbin:/bin:/usr/sbin:/usr/bin     #命令的路径
MAILTO=root                                #邮件发送的用户# 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命令的注意事项注意的是变量问题定时清理邮件日志,使用重定向到>/dev/null 2>&1

那么系统定义了哪些的计划性任务?

[root@node0 ~]# ls /etc/cron            #这里按两下tab键
cron.d/       cron.deny     cron.monthly/ cron.weekly/
cron.daily/   cron.hourly/  crontab  [root@node0 ~]# ls -ld /etc/cron*
drwxr-xr-x. 2 root root  21 8月  27 23:31 /etc/cron.d            #这里定义的是系统自动定期需要执行的任务,但是又不是按小时,按天,按星期,按月来执行的,那么就放在这个目录下面。
drwxr-xr-x. 2 root root  42 8月  27 23:32 /etc/cron.daily    #每天执行的脚本;
-rw-------. 1 root root   0 4月  11 2018 /etc/cron.deny      #控制用户是否能做计划任务的文件;
drwxr-xr-x. 2 root root  22 8月  27 23:31 /etc/cron.hourly   #每小时执行的脚本;
drwxr-xr-x. 2 root root   6 6月  10 2014 /etc/cron.monthly   #每月执行的脚本;
-rw-r--r--. 1 root root 451 6月  10 2014 /etc/crontab        #主配置文件 也可添加任务;
drwxr-xr-x. 2 root root   6 6月  10 2014 /etc/cron.weekly    #每周执行的脚本;

计划任务的作业

每天晚上21:00 重启apache0 21 * * * /etc/init.d/httpd  restart
每月1、10、22日的4 : 45重启apache。45 4 1,10,22 * *  /etc/init.d/httpd  restart
每月1到10日的4 : 45重启apache。45 4 1-10 * *   /etc/init.d/httpd  restart
每隔两天的上午8点到11点的第3和第15分钟重启apach3,15 8-11 */2 * *  /etc/init.d/httpd  restart
晚上11点到早上7点之间,每隔一小时重启apach0 23-7/1 * * * /etc/init.d/apach restart
周一到周五每天晚上 21:15 寄一封信给 root@panda:15 21 * * 1-5  mail -s "hi" root@panda < /etc/fstab

问题:

计划任务中是没有秒的,如果需要按照每2秒执行一次命令该如何实现?

在脚本的死循环中,添加命令 sleep 2 ,执行30次自动退出,然后添加,计划任务:* * * * *  /back.sh 案例要求:每天2:00备份/etc/目录到/tmp/backup下面将备份命令写入一个脚本中每天备份文件名要求格式: 2017-08-19_etc.tar.gz在执行计划任务时,不要输出任务信息存放备份内容的目录要求只保留三天的数据操作:
vim a.sh#!/bin/bashmkdir -p /tmp/backuptar -zcf etc.tar.gz /etc#find /tmp/backup -name "*.tar.gz" -mtime +3 -exec rm -rf {}\;find /tmp/backup -name "*.tar.gz" -mtime +3 |xargs  rm -rf
crontab -e0 2 * * * /bin/bash a.sh这里需要注意的一个点就是不要把所有的信息放入/tmp目录,因为计划任务中会定时清理/tmp目录下的内容;

2、日志管理

在centos7中,系统日志消息由两个服务负责处理的,一个是systemd-journald和rsyslog

常见的日志文件

通常系统日志文件都会放到/var/log目录下,并且是有rsyslog维护与管理,

[root@node0 ~]# ll /var/log/    #取几个重要的进行分析
/var/log/message    #大多数系统日志消息记录在此处。有也例外的:如与身份验证,电子邮件处理相关的定期作业任务等
/var/log/secure     #安全和身份验证相关的消息和登录失败的日志文件。  ssh远程连接产生的日志
/var/log/maillog    #与邮件服务器相关的消息日志文件
/var/log/cron       #与定期执行任务相关的日志文件
/var/log/boot.log   #与系统启动相关的消息记录
/var/log/dmesg      #与系统启动相关的消息记录

案例:

查看那个ip经常暴力破解系统用户密码

#启动一台设备,并且多次输入错得密码来登陆130服务器
[root@Node1 ~]# ssh root@192.168.75.130
Permission denied, please try again.
root@192.168.75.130's password:
Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
[root@node1 ~]# #在130的服务器就从secure的文件中能够查看到
[root@node0 ~]# grep Fail  /var/log/secure
Sep 25 11:34:24 node0 sshd[7487]: Failed password for root from 192.168.75.131 port 42004 ssh2
[root@node0 ~]# #上面就能够准确看出哪台设备登陆失败
[root@node0 ~]# grep Fail  /var/log/secure  | awk '{print $11}' |uniq -c1 192.168.75.131#uniq命令就是统计这个ip尝试了多少次#awk命令就是用于取列,取出第11列的数值就是ip的数值

/var/log/wtmp文件的作用

​ 这个文件也是可以记录每个用户登录的次数和登录的时间

​ 通常last命令输出wtmp中的内容

[root@node0 ~]# last
root     pts/1        192.168.75.131   Sat Sep 25 11:34   still logged in
root     pts/0        192.168.75.1     Sat Sep 25 10:58   still logged in
reboot   system boot  3.10.0-957.el7.x Sat Sep 25 10:41 - 11:39  (00:57)

案例:

使用/var/log/btmp文件查看暴力破解系统的用户

那么需要提前知道/var/log/btmp这个文件是用来干什么的,它是记录错误登录系统的日志,如果发现/var/log/btmp这个文件的大小比较大,大于1M那么代表你的系统很可能遭到别人的暴力破解了;

也可以使用lastb命令查看

[root@node0 ~]# lastb
root     ssh:notty    192.168.75.130   Sat Sep 25 11:42 - 11:42  (00:00)
root     ssh:notty    192.168.75.130   Sat Sep 25 11:42 - 11:42  (00:00)
root     ssh:notty    192.168.75.130   Sat Sep 25 11:42 - 11:42  (00:00)
root     ssh:notty    192.168.75.131   Sat Sep 25 11:34 - 11:34  (00:00)
root     tty1                          Fri Aug 27 23:37 - 23:37  (00:00)    btmp begins Fri Aug 27 23:37:15 2021#如果发现了这个ip那么就可以使用防火长来拒绝登录
[root@node0 ~]# iptables -A INPUT -i ens32 -s 192.168.75.131 -j DROP#查看一下恶意ip登录的次数
[root@node0 ~]# lastb |awk '{print $3}' | sort|uniq -c | sort -n1 1 192.168.75.1312 Fri3 192.168.75.130

作为黑客:如果登录了系统,然后需要洗干净里面的日志应该如何处理?

[root@node0 ~]# > /var/log/btmp
[root@node0 ~]# rm -rf /var/log/btmp && touch /var/log/btmp #这两个方法有什么区别?
使用方法2,因为创建了新的文件,而正在运行的服务,还用着原来文件的inode号和文件描述码,所需要重启一下rsyslog服务。建议使用方法1  > /var/log/btmp

日志的记录方式

日志是分类记录的,也可以是分级别记录的

日志的分类

  • daemon 后台进程相关
  • kern 内核产生的信息
  • lpr 打印系统产生的
  • authpriv 安全认证
  • cron 定时相关
  • mail 邮件相关
  • syslog 日志服务本身的
  • news 新闻系统
  • local0~7 自定义的日志设备
  • local0-local7 8个系统保留的类, 供其它的程序使用或者是用户自定义

如果日志按照级别来分类

  • debug 信息对开发人员调试应用程序有用,在操作过程中无用
  • info 正常的操作信息,可以收集报告,测量吞吐量等
  • notice 注意,正常但重要的事件,
  • warning 警告,提示如果不采取行动。将会发生错误。比如文件系统使用90%
  • err 错误,阻止某个模块或程序的功能不能正常使用
  • crit 关键的错误,已经影响了整个系统或软件不能正常工作的信息
  • alert 警报,需要立刻修改的信息
  • emerg 紧急,内核崩溃等严重信息

rsyslog日志服务讲解

rhel5:使用的是syslog服务名,配置文件是/etc/syslog.conf

rhel6-7:使用的是rsyslog服务名,配置文件就是/etc/rsyslog.conf

#查看一下定义的内容
[root@node0 ~]# vim /etc/rsyslog.conf #里面有很多内容
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log#注释:
#$UDPServerRun 514  #允许514端口接收使用UDP协议转发过来的日志
#$InputTCPServerRun  514  ##允许514端口接收使用TCP协议转发过来的日志
#所有的类别级别是info以上 除了mail,authpriv,cron (产生的日志太多,不易于查看) 类别.级别
authpriv.*      认证的信息存放                  /var/log/secure
mail.*         邮件相关的信息 存放             -/var/log/maillog
cron.*         计划任务相关的信息 存放            /var/log/cron
local7.*        开机时显示的信息存放-->             /var/log/boot.log
注:“- ”号: 邮件的信息比较多,现将数据存储到内存,达到一定大小,全部写到硬盘.有利于减少I/O进程的开销
数据存储在内存,如果关机不当数据消失

日志输入的规则

. info       大于等于info级别的信息全部记录到某个文件
.=级别    仅记录等于某个级别的日志例:.=info  只记录info级别的日志
.! 级别   除了某个级别意外,记录所有的级别信息例.!err  除了err外记录所有
.none  指的是排除某个类别  例: mail.none  所有mail类别的日志都不记录

实战:

自定义ssh服务的日志类型和存储位置

如果是自定义日志类型和存储位置的话,我们就得修改配置文件/etc/rsyslog.conf

@rsyslog服务是管理日志类型的,所以需要指定一下位置[root@node0 ~]# vim /etc/rsyslog.conf #修改配置文件,大概位置在73行,添加新的内容
local7.*                             /var/log/boot.log
local0.*                /var/log/sshd.log       #添加这一行#把local0类别的日志,保存到/var/log/sshd.log的文件中

然后在把ssh服务的配置文件重新定义路径

[root@node0 ~]# vim /etc/ssh/sshd_config #搜索找到SyslogFacility AUTHPRIV这一行#把这一行改为:
SyslogFacility local0#然后重启rsyslog服务-->优先重启
[root@node0 ~]# systemctl restart rsyslog.service #然后在重启sshd服务
[root@node0 ~]# systemctl restart sshd#ssh登陆测试
[liangjiawei@node0 ~]$
[root@node0 ~]# cat /var/log/sshd.log
Oct  8 09:43:19 node0 sshd[7640]: Server listening on 0.0.0.0 port 22.
Oct  8 09:43:19 node0 sshd[7640]: Server listening on :: port 22.
Oct  8 09:44:58 node0 sshd[7641]: Accepted password for liangjiawei from 192.168.75.1 port 50616 ssh2#信息如下:时间、主机、服务 、进程id  相关信息

如何防止日志删除?

#之前学过隐藏属性-a或者-i
[root@node0 ~]# chattr  +a /var/log/sshd.log #这个功能我们很少用了;
[root@node0 ~]# chattr -a /var/log/sshd.log

3、实战

日志切割-搭建远程日志收集服务器

那么什么是日志切割

在Linux下的日志会定期进行滚动增加,因此时间久了日志就会越来越多,因此我们可以通过日志定期的时间或者指定的大小进行切割,这个是动态的;

如果是今天的日志文件,也可以使用split工具进行切割;

这里引入logrotate支持按照时间和大小来自动切分,以防止日志文件太大

logrotate配置文件

[root@node0 ~]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d
/etc/rwtab.d/logrotate
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.8.6
/usr/share/doc/logrotate-3.8.6/CHANGES
/usr/share/doc/logrotate-3.8.6/COPYING
/usr/share/man/man5/logrotate.conf.5.gz
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate
/var/lib/logrotate/logrotate.status

logrotate的执行由crond服务调用的;

查看一下logrotate脚本的内容;

这里发现logrotate程序每天都是由cron在指定的时间(/etc/crontab)启动

日志每天积累就会变成很大如果你需要及时查看出某一天的日志信息的话就需要使用到日志切割

[root@node0 ~]# vim /etc/cron.daily/logrotate
#!/bin/sh/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
EXITVALUE=$?
if [ $EXITVALUE != 0 ]; then/usr/bin/logger -t logrotate "ALERT exited abnormally with [$EXITVALUE]"
fi
exit 0

日志切割的说明

/var/lib/logrotate/status文件中记录了logrotate上次轮换日志文件的时间;

#编写日志的配置文件logrotate
[root@node0 ~]# vim /etc/logrotate.conf #通常编辑配置文件我们都需要备份一份,以免改错
[root@node0 ~]# cp /etc/logrotate.conf  /backup/
[root@node0 ~]# ls /backup/
logrotate.conf[root@node0 ~]# grep -vE "^#|^$" /etc/logrotate.conf
weekly
rotate 4
create
dateext
include /etc/logrotate.d
/var/log/wtmp {monthlycreate 0664 root utmpminsize 1Mrotate 1
}
/var/log/btmp {missingokmonthlycreate 0600 root utmprotate 1
}#全局参数说明如下:
[root@node0 ~]# grep -vE "^#|^$" /etc/logrotate.conf
weekly              #每周执行回滚,或者是每周执行一次日志回滚;
rotate 4            #表示日志切分后历史文件最多保存离现在最近的多少份,旋转
create              #指定新创建的文件的权限以及所有者与所属组
dateext             #使用日期为后缀的回滚文件,也可以去/var/log目录下看看
include /etc/logrotate.d
/var/log/wtmp {monthly                  #日志文件按照月份来轮询;daily、weekly、yearlycreate 0664 root utmpminsize 1Mrotate 1
}
/var/log/btmp {             #指定的日志文件名称missingok             #如果文件丢失不会报错monthly                  #每月轮换一次create 0600 root utmp    #设置btmp这个日志文件的权限,所有者以及所属组rotate 1                #日志切分后历史文件最多保存一份,不会涵盖当前使用的日志
}#还有其他的选项说明
compress: 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。
delaycompress: 总是与compress选项一起用,delaycompress选项指示logrotate不要将最近的归档压缩,压缩将在下一次轮循周期进行。这在你或任何软件仍然需要读取最新归档时很有用。
missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。
notifempty: 如果日志文件为空,轮循不会进行。
create 644 root root: 以指定的权限创建全新的日志文件,同时logrotate也会重命名原始日志文件。
postrotate/endscript: 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。
/var/lib/logrotate/status中默认记录logrotate上次轮换日志文件的时间。

实战-使用logrotate进行ssh日志切割

这里需要定义ssh日志存储在/var/log/sshd的基础之上

#首先需要创建一个sshd的配置文件,指定切割的规则
[root@node0 ~]# vim /etc/logrotate.d/sshd
/var/log/sshd.log{missingok         #定义了文件丢失不会报错weekly              #定义了一周轮换一次create 0600 root root #设置btmp这个日志文件的权限,所有者以及所属组minsize 1M          #定义了日志的大小最小1Mrotete 3           #备份的数量为3分
}#重启rsyslog服务
[root@node0 ~]# systemctl restart rsyslog#使用logrotate命令来预演日志轮询
[root@node0 ~]# logrotate -d /etc/logrotate.d/sshd
reading config file /etc/logrotate.d/sshd
Allocating hash table for state file, size 15360 B
Handling 1 logs
rotating pattern: /var/log/sshd.log weekly (3 rotations)
empty log files are rotated, only log files >= 1048576 bytes are rotated, old logs are removed
considering log /var/log/sshd.loglog does not need rotating ('misinze' directive is used and the log size is smaller than the minsize value#强制轮询,也就是说即使轮询条件没有满足也可以通过加-f强制让logrotate轮询日志文件
-v:显示指令执行过程
-f:强制执行
[root@node0 ~]# logrotate -vf /etc/logrotate.d/sshd [root@node0 ~]# ls /var/log/sshd.log
sshd.log    sshd.log.1
#再次查看日志文件,文嘉大小为0
[root@node0 ~]# ls /var/log/sshd.log -l
-rw------- 1 root root 0 10月 17 08:03 /var/log/sshd.log

实战-使用logrotate进行nginx日志切割

使用nginx的日志切割与使用sshd的日志切割的方法是一样的;需要在/etc/logrotate.d/目录下新建一个nginx,并且制定切割规则

[root@node0 ~]# vim /etc/logrotate.d/nginx  #编写切割日志规则
/usr/local/nginx/logs/*.log{        #指定日志文件位置,可用正则匹配daily                        #调用频率,有:daily,weekly,monthly可选rotate  5                 #一次将存储5个归档日志,对于第六个归档,时间最久的归档将被删除;sharedscripts             #所有的日志文件都轮转完毕后统一执行一次脚本postrotate                    #执行脚本的开始标志
if [ -f /usr/local/nginx/logs/nginx.pid ];then      #判断nginx是否启动/usr/local/nginx/sbin/nginx -s reload       #重载配置文件
fi
endscript
}

实战:远程日志日志服务器日志集中管理

这里需要两台服务器,一台是server,一台是client

规划:

server:192.168.75.131

client:192.168.75.130–>客户端把自己的日志发送;

server端的配置如下:

#编辑配置文件
[root@Node1 ~]# vim /etc/rsyslog.conf #使用TCP协议方式,收集日志#把19行和20行的内容19 #$ModLoad imtcp20 #$InputTCPServerRun 514
#注意:使用UDP协议-->速度快,但是不保证数据的完整性,使用TCP协议就安全可靠,完整
改为:19 $ModLoad imtcp20 $InputTCPServerRun 514#然后重新启动rsyslog服务
[root@server ~]# systemctl restart rsyslog#查看服务监听的状态:
[root@server ~]# netstat -anlpt |grep 514
tcp        0      0 0.0.0.0:514             0.0.0.0:*               LISTEN      8366/rsyslogd
tcp6       0      0 :::514                  :::*                    LISTEN      8366/rsyslogd    #在服务端关闭selinux和防火墙
[root@server ~]# getenforce
Disabled
[root@server ~]# systemctl stop firewalld
[root@server ~]# systemctl status firewalld

客户端配置

[root@client ~]# vim /etc/rsyslog.conf #在末行添加92 *.*     @@192.168.75.131:514#*.*代表的是所有类别和级别的日志#后面的是远程TCP协议的日志服务端IP和端口#然后重启rsyslog服务[root@client ~]# systemctl restart rsyslog.service 

验证:

#动态监测server端的日志
[root@server ~]# tail -f /var/log/messages | grep client --color#然后在client端发送点东西给到server端
[root@client ~]# logger "hello the word"
#然后服务器端就会有东西
[root@server ~]# tail -f /var/log/messages | grep client --color
Oct 17 08:33:37 client systemd: Stopping System Logging Service...

总结一下:

服务器使用UDP协议,客户端只能使用配置文件中的这一行只能有一个@
*.* @192.168.75.131:514
服务器使用的tcp协议,客户端只能使用的配置文件中这一行必须有两个@@
*.* @@192.168.75.131:514

计划任务以及日志管理相关推荐

  1. Linux计划任务与日志管理

    计划任务-at-cron-计划任务使用方法 日志的种类和记录方式-自定义ssh服务日志类型和存储位置 实战-日志切割-搭建远程日志收集服务器 实战-配置公司内网服务器每天定时自动开关机 1.计划任务- ...

  2. linux计划任务与日志管理(日志分割/切割)

    计划任务-at-cron-计划任务使用方法 总结:在我们 LINUX 中,我们可以通过 crontab 和 at 这两个东西来实现这些功能的 计划任务的作用:是做一些周期性的任务,在生产中的主要用来定 ...

  3. Linux系统配置及服务管理_第10章_计划任务日志管理

    一.计划任务 简介: 作用:计划任务主要是做一些周期性的任务,目前最主要的用途是定期备份数据. 分类: 一次性调度执行 at 循环调度执行 cron 1.一次性调度执行 at (1)安装 yum -y ...

  4. Linux 日志管理(RHEL7)

    日志管理 系统和程序的日记本 记录系统,程序运行中发生的各种事件 通过查看日志,了解及排除故障 信息安全控制的依据 内核及系统日志 由系统服务rsyslog统一记录/管理 日志消息采用文本格式 主要记 ...

  5. 《构建高可用Linux服务器 第3版》—— 1.4 Linux服务器的日志管理

    本节书摘来自华章出版社<构建高可用Linux服务器 第3版>一 书中的第1章,第1.4节,作者:余洪春 ,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 1.4 ...

  6. Linux系统的日志管理

    Linux系统的日志管理 一.systemd-journald服务 1.systemd-journald介绍 2.系统日志默认保存路径 3.systemd-journald的配置文件修改 ①配置文件目 ...

  7. DNS服务器分离解析 RAID阵列 进程管理 日志管理 systemd作用

    目录 分离解析 什么是分离解析 BIND的view视图 案例 案例2 RAID阵列概述 • 廉价冗余磁盘阵列 • RAID 0,条带模式 • RAID 1,镜像模式 • RAID5,高性价比模式 ​• ...

  8. 数据库(二)tab补全功能,使数据库支持简体中文,日志管理,备份脚本

    一.如何在MySQL数据库中使用tab键补全功能 1.修改主配置文件/etc/my.cnf vim /etc/my.cnf [mysql] #no-auto-rehash auto-rehash 2. ...

  9. 6个您需要了解的日志管理工具(以及如何使用它们)

    如果没有正确的工具来汇总和解析日志数据,则几乎不可能找到并了解您正在寻找的信息. 日志有无穷无尽的用途,因为日志本身是无止境的. 应用程序日志,安全日志,BI日志, 林肯日志 (好吧,也许不是)- 暂 ...

最新文章

  1. 前端面试题整理(js)
  2. vue Watcher分类 computed watch
  3. 供来宾访问计算机打开安全吗,计算机安全设置操作手册(22页)-原创力文档
  4. r语言rank降序_R语言rank函数详细解析
  5. 浅谈多重背包及其优化
  6. hive复合数据类型之array
  7. 《编程珠玑(续)(修订版)》—第2章2.1节Awk中的关联数组
  8. 上海东海学院计算机,上海东海职业技术学院
  9. 常见NetBackup通讯问题及排错一般步骤
  10. html canvas drawrect 变形,canvas图形变换
  11. 加粉软件直接把你的银行卡信息给泄露了
  12. FileSplit简单使用
  13. lsb信息隐藏算法matlab,利用LSB算法隐藏文字信息的MATLAB实现
  14. CSDN中用Markdown如何给文本加下划线(可延长下划线)
  15. 码流 / 码率 / 比特率 / 帧速率 / 分辨率 / 高清的区别
  16. UE4编辑器ToolBar扩展
  17. 信息学奥赛一本通 1196:踩方格 | OpenJudge NOI 2.6 4982:踩方格
  18. CnOpenData中国上市公司全部公告数据
  19. Pig 调优实践经验总结
  20. Cmake在Windows下安装Opencv3.2遇到的问题

热门文章

  1. matlab上的神经网络模型导出成C文件
  2. 通过sql截取查询到的数据
  3. main.c(5): warning C206: ‘ds1302_ready‘: missing function-prototype
  4. Retrofit 一次个请求下载多个图片
  5. 动态规划法求最大子段和问题C++
  6. IBM服务器修改时间为24小时制,产品国际化——日期和时间格式(二)
  7. 简易ajax,简单的AJAX实现(HELLO AJAX)
  8. 计算机在我们日常生活中越来越重要英语翻译,职高英语翻译练习 翻译练习二...
  9. .NET Book Zero 读书笔记(三)(从C++的使用者角度学习C#)
  10. 推荐52个堪称神器的学习网站,每天坚持一小时,让你受益一生【上】