[root@localhost ~]# systemctl enable crond
[root@localhost ~]# ps aux|grep crond
root 6242 0.3 0.0 126380 1656 ? Ss 16:27 0:00 /usr/sbin/crond -n
-
crond
进程每分钟会处理一次计划任务 -
存储位置
[root@localhost ~]# ls /var/spool/cron
- 管理命令
[root@localhost ~]# crontab -l # 列出当前用户所有计划任务
[root@localhost ~]# crontab -r # 删除当前用户计划任务
[root@localhost ~]# crontab -e # 编辑当前用户计划任务
管理员可以使用 -u username,去管理其他用户的计划任务
[root@localhost ~]# vi /etc/cron.deny # 这个文件中加入的用户名无法使用cron
cron
语法格式
分 时 日 月 星期 命令
* 表示任何数字都符合
0 2 * * * /run.sh # 每天的2点
0 2 14 * * /run.sh # 每月14号2点
0 2 14 2 * /run.sh # 每年2月14号2点
0 2 * * 5 /run.sh # 每个星期5的2点
0 2 * 6 5 /run.sh # 每年6月份的星期5的2点
0 2 2 * 5 /run.sh # 每月2号或者星期5的2点 星期和日同时存在,那么就是或的关系
0 2 2 6 5 /run.sh # 每年6月2号或者星期5的2点
* /5 * * * * /run.sh # 每隔5分钟执行一次
0 2 1,4,6 * * /run.sh # 每月1号,4号,6号的2点
0 2 5-9 * * /run.sh # 每月5-9号的2点
* * * * * /run.sh # 每分钟
0 * * * * /run.sh # 每整点
* * 2 * * /run.sh # 每月2号的每分钟
循环调度执行cron系统级
- 临时文件的清理
/tmp
/var/tmp
- 系统信息的采集
sar
- 日志的轮转(切割)
lgrotate
- 通常不是由用户定义
- 文件的位置
[root@localhost ~]# vim /etc/crontab # 默认没有定义任何计划任务
[root@localhost ~]# ls /etc/cron.d # 定义的计划任务每个小时会执行
0hourly sysstat
[root@localhost ~]# cat /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly # 每小时01分以root身份执行/etc/cron.hourly/目录下的所有脚本
crond
仅仅会执行每小时定义的脚本/etc/cron.hourly
[root@localhost ~]# ls /etc/cron.hourly/
[root@localhost ~]# cat /etc/cron.hourly/0anacron
/usr/sbin/anacron -s # anacron是用来检查是否有错过的计划任务需要被执行
[root@localhost ~]# vi /etc/anacrontab
1 5 cron.daily nice run-parts /etc/cron.daily
#每天开机 5 分钟后就检查 /etc/cron.daily 目录内的文件是否被执行,如果今天没有被执行,那就执行
7 25 cron.weekly nice run-parts /etc/cron.weekly
#每隔 7 天开机后 25 分钟检查 /etc/cron.weekly 目录内的文件是否被执行,如果一周内没有被执行,就会执行
©monthly 45 cron.monthly nice run-parts /etc/cron.monthly
#每隔一个月开机后 45 分钟检查 /etc/cron.monthly 目录内的文件是否被执行,如果一个月内没有被执行,那就执行
日志管理基础
处理日志的进程
rsyslogd
:绝大部分日志记录,和系统操作有关,安全,认证sshd,su
,计划任务at,cron
httpd/nginx/mysql
等等应用可以以自己的方式记录日志
[root@localhost ~]# ps aux |grep rsyslogd
root 6789 0.2 0.2 216416 4068 ? Ssl 14:17 0:00 /usr/sbin/rsyslogd -n
日志可以存放在本地
日志可以存放在远程服务器
常见的日志文件(系统、进程、应用程序)
日志文件 | 作用描述 |
---|---|
tail /var/log/messages | 系统主日志文件 |
tail -20 /var/log/messages | |
tail -f /var/log/messages | 动态查看日志文件的尾部 |
tailf /var/log/secure | 认证、安全 |
tail /var/log/maillog | 和邮件postfix相关 |
tail /var/log/cron | crond、at进程产生的日志 |
tail /var/log/dmesg | 和系统启动相关 |
tail /var/log/audit/audit.log | 系统审计日志 |
tail /var/log/yum.log | yum |
tail /var/log/mysqld.log | MySQL |
tail /var/log/xferlog | 访问FTP服务器相关 |
w | 当前登录的用户 /var/log/wtmp |
last | 最近登录的用户 /var/log/btmp |
lastlog | 所有用户的登录情况 /var/log/lastlog |
案例1:统计登录失败top5
[root@localhost ~]# grep 'Fail' /var/log/secure |awk '{print $11}' |sort |uniq -c |sort -k1 -n -r |head -5
779 hadoop
501 test
261 183.240.132.21
224 user
21 195.54.160.183
案例2:统计登录成功
[root@localhost ~]# grep 'Accepted' /var/log/secure |awk '{print $(NF-3)}' |sort |uniq -c
4 117.90.214.165
2 122.194.35.187
案例3:查看网卡是否已被驱动
[root@localhost ~]# grep -i eth /var/log/dmesg
[ 2.090634] e1000 0000:02:01.0 eth0: (PCI:66MHz:32-bit) 00:0c:29:bb:9a:bb
[ 2.090642] e1000 0000:02:01.0 eth0: Intel(R) PRO/1000 Network Connection
rsyslogd子系统
[root@localhost ~]# rpm -qc rsyslog
/etc/logrotate.d/syslog # 日志轮转(切割)相关
/etc/rsyslog.conf # rsyslogd的主配置文件
/etc/sysconfig/rsyslog # rsyslogd相关文件
[root@localhost ~]# vim /etc/rsyslog.conf
# 告诉rsyslogd进程 哪个设备(facility),关于哪个级别的信息,以及如何处理
authpriv.* /var/log/secure
mail.* -/var/log/maillog
cron.* /var/log/cron
*.emerg :omusrmsg:*
authpriv.* * # 所有终端
authpriv.* @192.168.1.123 # UDP
authpriv.* @@192.168.1.123 # TCP
设备facility相关内容,查看man手册https://man7.org/linux/man-pages/man3/syslog.3.html
设备类型(表示日志类型) | 解释 |
---|---|
LOG_AUTHPRIV | 安全认证 |
LOG_CRON | cron 和 at |
LOG_DAEMON | 后台进程 |
LOG_FTP | ftp进程 |
LOG_KERN | 内核信息 |
LOG_LOCAL0 through LOG_LOCAL7 | 用户自定义设备 |
LOG_LPR | 打印机子系统 |
LOG_MAIL | 邮件系统 |
LOG_NEWS | 新闻子系统 |
LOG_SYSLOG | syslogd自身产生的日志 |
级别(日志重要级别) | 解释 |
---|---|
LOG_EMERG | 紧急,致命,服务无法继续运行,如配置文件丢失 |
LOG_ALERT | 报警,需要立即处理,如磁盘空间使用95% |
LOG_CRIT | 致命行为 |
LOG_ERR | 错误行为 |
LOG_WARNING | 警告信息 |
LOG_NOTICE | 普通 |
LOG_INFO | 标准信息 |
LOG_DEBUG | 调试信息,排错才开,一般不建议使用 |
- 案例1
- 将authpriv设备日志记录到/var/log/auth.log
- 案例2
- 改变应用程序sshd的日志设备为local5,并定义local5设备日志记录到/var/log/local5.local
- 案例3
- 使用logger程序写日志到指定的设备及级别
logger "run....."
logger -p emerg "run......"
logger -p authpriv.info "run......"
logrotate日志轮转
注:针对任何日志文件(rsyslog日志、Nginx访问或错误日志)
logrotate(轮转,日志切割)
- 如果没有日志轮转,日志文件会越来越大
- 将丢弃系统中最旧的日志文件,以节省空间
- logrotate本身不是系统守护进程,它是通过计划任务crond每天执行
[root@localhost ~]# cat /etc/cron.daily/logrotate
#!/bin/sh
/usr/sbin/logrotate -s /var/lib/logrotate/logrotate.status /etc/logrotate.conf
# 日志轮转状态/var/lib/logrotate/logrotate.status
# 日志轮转规则按照/etc/logrotate.conf中来
[root@localhost ~]# ls /etc/logrotate.conf /etc/logrotate.d/
/etc/logrotate.conf
/etc/logrotate.d/:
bootlog chrony syslog wpa_supplicant yum
- 主配置文件
[root@localhost ~]# vim /etc/logrotate.conf
weekly # 一周轮转一次
rotate 4 # 保留4份日志
create # 主动创建新的日志文件
dateext # 使用日期来作为文件名的后缀
#compress # 每次轮转需不需要进行压缩
include /etc/logrotate.d # 导入其他应用的日志轮转规则
/var/log/wtmp { # 对该日志文件设置轮转的方法
monthly # 一个月轮转一次
create 0664 root utmp # 轮转后创建新文件,并设置权限
minsize 1M # 最小达到1M才会轮转
rotate 1
}
/var/log/btmp {
missingok # 丢失不提醒
monthly
create 0600 root utmp
rotate 1
}
标签:log,cron,etc,任务,计划,var,日志,root
From: https://www.cnblogs.com/wlgzs/p/17889484.html