Mar 05 20:27:41 node-1 systemd[1]: Started Job spooling tools.
Mar 05 20:27:41 node-1 systemd[1]: Starting Job spooling tools...
[root@node-1 ~]# date
Thu Mar 5 20:28:39 CST 2020
[root@node-1 ~]# at 20:28
at> mkdir /opt/test
at> cp /etc/hosts /opt/
at> <EOT>
job 1 at Fri Mar 6 20:28:00 2020
[root@node-1 ~]# at -l
1 Fri Mar 6 20:28:00 2020 a root
[root@node-1 ~]# ll /opt
total 0
检查at计划任务运行结果:
[root@node-1 ~]# ll /opt/
total 12
-rw-r--r-- 1 root root 158 Mar 5 20:35 hosts
-rw-r--r-- 1 root root 370 Mar 5 20:35 hosts.allow
-rw-r--r-- 1 root root 460 Mar 5 20:35 hosts.deny
drwxr-xr-x 2 root root 6 Mar 5 20:35 test
删除at计划任务
语法: atrm 任务编号
[root@node-1 ~]# at -l
1 Fri Mar 6 20:28:00 2020 a root
[root@node-1 ~]# atrm 1
2)contab定时任务的使用
crond命令定期检查是否有要执行的工作,如果有要执行的工作便会自动执行该工作
cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业。
linux任务调度的工作主要分为以下两类:
系统执行的工作:系统周期性所要执行的工作,如更新whatis数据库 updatedb数据库,日志定期切割,收集系统状态信息,/tmp定期清理
启动crond服务:
[root@node-1 ~]# systemctl start crond
cron命令参数介绍:
-u 用户名 #指定用户名cron服务
-l #列出当前用户的cron服务的详细内容
-u 用户名 -l #列出指定用户的cron服务的详细内容
-r #删除已建立的计划任务
-e #编辑已建立的计划任务
如:
crontab -u root -l # root查看自己的cron计划任务
crontab -u wangtao -r # root想删除wangtao的cron计划任务
crontab -e #编辑时的语法
如:定时同步时间的计划任务
/3 /sbin/ntpdate -u times.aliyun.com &> /dev/null
"五星"的含义:
第一颗"星":分钟 0-59
第二颗"星":小时 0-23
第三颗"星":日期 1-31
第四颗"星":月份 1-12
第五颗"星":星期 0-7
特殊用法:
[root@node-1 ~]#crontab -e
0 2 /root/backmysql.sh & > /dev/null
说明:
删除7天前的备份有好几种写法
(1)rm -rf /backup/mysqldata/mysqldata.$(date -d ‘7 days ago‘ +%Y%m%d).sql.gz
(2)find /backup/mysqldata -name "mysqldata.gz" -mtime +7 -exec rm -f {} \;
(3)find /backup/mysqldata -name "mysqldata*.gz" -mtime +7 | xargs rm -f
16.2 日志的种类和记录的方式-自定义ssh服务日志类型和存储位置
16.2.1 常见日志文件的作用
系统日志文件概述:/var/log目录保管由rsyslog维护的,里面存放的一些特定于系统和服务的日志文件
[root@node-1 ~]# systemctl status rsyslog
● rsyslog.service - System Logging Service
Loaded: loaded (/usr/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2020-03-06 19:42:03 CST; 7h left
Docs: man:rsyslogd(8)
http://www.rsyslog.com/doc/
Main PID: 828 (rsyslogd)
CGroup: /system.slice/rsyslog.service
└─828 /usr/sbin/rsyslogd -n
Mar 06 19:42:02 node-1 systemd[1]: Starting System Logging Service...
Mar 06 19:42:03 node-1 rsyslogd[828]: [origin software="rsyslogd" swVersion="8.24.0" x-pid="828" x-...tart
Mar 06 19:42:03 node-1 systemd[1]: Started System Logging Service.
Hint: Some lines were ellipsized, use -l to show in full.
日志文件 用途
/var/log/message 大多数系统日志消息记录在此处
/var/log/secure 安全和身份验证相关的消息和登录失败的日志文件。 ssh远程连接产生的日志
/var/log/maillog 与邮件服务器相关的消息日志文件
/var/log/cron 与定期执行任务相关的日志文件
/var/log/boot.log 与系统启动相关的消息记录
/var/log/dmesg 与系统启动相关的消息记录
统计登录系统失败的IP与次数
[root@node-1 ~]# grep Failed /var/log/secure | awk ‘{print $11}‘|uniq -c
6 192.168.26.1
1)/var/log/wtmp也是一个二进制文件,记录每个用户的登录次数和持续时间等信息,这个是登录成功的记录
[root@node-1 ~]# last -f /var/log/wtmp
root pts/0 192.168.26.1 Wed Mar 4 22:43 - crash (19:14)
.......
2)/var/log/btmp文件是记录错误登录系统的日志。如果发现/var/log/btmp日志文件大于1M,就说明很多人在暴力破解ssh服务,此日志需要使用lastb程序查看
[root@node-1 ~]# lastb | awk ‘{ print $3}‘ | sort | uniq -c | sort -n
1
1 Fri
4 192.168.26.1
此时可以用防火墙也可用hosts.deny来处理
16.2.2在centos7中的rsyslog日志服务
rhel6-7 ->服务名称rsyslog ->配置文件 /etc/rsyslog.conf
[root@node-1 ~]# egrep -v "^$|^#" /etc/rsyslog.conf
$ModLoad ommysql
. :ommysql:localhost,Syslog,rsyslog,wangtao
$ModLoad imuxsock # provides support for local system
logging (e.g. via logger command)$ModLoad imjournal # provides access to the systemd j
ournal$ModLoad immark # provides --MARK-- message capabili
ty$ModLoad imudp
$UDPServerRun 514
.......
在此不详细说明每个配置文件的作用,用实战来实现体现配置文件作用
实战1:对于主从同步数据库日志处理
说明:mysql的log型的同步对数据库的日志管理很重要,见过log-bin日志高达20G的服务器
解决方法:
在【mysqld】下加入以下两行
expire_logs_days=10 --日志文件只保留10个
max_binlog_size=50M --日志文件不超过50M
实战2:使用logrotate 进行nginx日志分割
日志的切割:在linux下的日志会定期进行滚动增加,我们可以在线对正在进行回滚的日志进行指定大小的切割。
logrotate配置文件主要有:
【/etc/logrotate.conf 以及 /etc/logrotate.d/ 这个子目录下的明细配置文件】
logrotate的执行由crond服务调用的。实际生产环境一般把需要切割的日志配置文件都写在/etc/logrotate.d/目录下
[root@node-1 ~]#vim /etc/logrotate.d/nginx
添加下下内容
/usr/local/nginx/logs/*.log { #指定日志文件位置,可用正则匹配
daily #调用频率,有:daily,weekly,monthly可选
rotate 7 #一次将存储7个归档日志。对于第8个归档,时间最久的归档将被删除。
sharedscripts #所有的日志文件都轮转完毕后统一执行一次脚本
postrotate #执行命令的开始标志
if [ -f /usr/local/nginx/logs/nginx.pid ];
then #判断nginx是否启动
/usr/local/nginx/sbin/nginx -s reload
fi
endscript #执行命令的结束标志
}
实际部署项目的时候是根据客户对日志保存的需求进行调整的,如access.log这个访问日志一般保留一个月,error.log一般保留一周。
--对于apache日志也可以这样配置,注意文件路径即可。
实战3:部署Rsyslog+LogAnalyzer+MySQL中央日志服务器
链接:https://blog.51cto.com/450955/2476250
实战4:部署ELK日志服务群集
这部分是自费购买”实践哥“学习的,会在以后的博文中写出来,这里链接此学习的地址:https://edu.51cto.com/course/17248.html
购买了这位老师的7部学习视频,如redis这个在上个项目中已经实际使用,很有帮助,
原文:https://blog.51cto.com/450955/2476208