今天开始学习新内容“服务集群与自动化”--crond服务、--syslog服务以及DHCP协议
一.crond简介
1、基本介绍
crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。
系统任务调度:
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
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
注意:该文件下的“*”从左往右代表分、时、日、月、周。所以最小周期是分钟
示例:进入/etc/crontab 写入以最小周期删除/opt/下的所有内容,需等待一分钟。
[root@localhost ~]# vim /etc/crontab
SHELL=/bin/bash
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
* * * * * root rm -rf /opt/*
[root@localhost ~]# mkdir /opt/dir1
[root@localhost ~]# systemctl restart crond.service
[root@localhost opt]# ls
dir1
[root@localhost opt]# ls
[root@localhost opt]#
写入/etc/crontab文件的内容必须要systemctl restart crond.service重启一下才能生效。
用sed命令注释最后一行
[root@localhost ~]# sed -i 's/.*root rm -rf.*/#&/' /etc/crontab
[root@localhost ~]# cat /etc/crontab
SHELL=/bin/bash
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
#* * * * * root rm -rf /opt/*
删除最后一行
[root@localhost ~]# sed -i '/.*root rm -rf.*/d' /etc/crontab
[root@localhost ~]# !cat
cat /etc/crontab
SHELL=/bin/bash
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 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。下面是几个特殊的文件介绍:
文件:/etc/cron.deny 该文件中所列用户不允许使用crontab命令
文件:/etc/cron.allow 该文件中所列用户允许使用crontab命令
文件:/var/spool/cron/ 所有用户crontab文件存放的目录,以用户名命名
[root@localhost ~]# crontab -e -u root
crontab: installing new crontab
[root@localhost ~]# crontab -l -u root
* * * * * rm -rf /opt/*
注意:crontab -l -u仅限于查看用crontab -e -u 写入的内容
二、crond服务
安装crontab
[root@localhost ~]# yum install crontabs
服务操作说明
systemctl start crond #启动服务
systemctl stop crond #关闭服务
systemctl restart crond #重启服务
systemctl reload crond #重新载入配置
查看crontab服务状态
[root@localhost ~]# systemctl status crond
○ crond.service - Command Scheduler
加入开机自启动
[root@localhost ~]# systemctl enable crond
三、crontab命令详解
命令参数
-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
四、使用注意事项
1.注意环境变量
2、注意清理系统用户的邮件日志
3、系统级任务调度与用户级任务调度
4、其他注意事项
新创建的cron job,不会马上执行,至少要过2分钟才执行。
如果重启cron则马上执行。当crontab突然失效时,可以尝试/etc/init.d/crond restart解决问题。或者查看日志看某个job有没有执行/报错tail -f /var/log/cron。
千万别乱运行crontab -r。它从Crontab目录(/var/spool/cron)中删除用户的Crontab文件。删除了该用户的所有crontab都没了。
在crontab中%是有特殊含义的,表示换行的意思。如果要用的话必须进行转义\%,如经常用的date ‘+%Y%m%d’在crontab里是不会执行的,应该换成date ‘+\%Y\%m\%d
Syslog日志服务(了解一下)
日志级别(英文) | 级别值 | 含义描述 | 典型应用场景 | 示例信息 |
---|---|---|---|---|
DEBUG(调试) | 7 | 最详细的调试信息,用于开发和问题排查,记录程序内部运行细节 | 应用程序开发调试、复杂问题诊断 | "用户登录函数被调用,参数:username=admin" |
INFO(信息) | 6 | 正常运行状态信息,确认系统按预期工作,无错误 | 服务启动 / 停止、用户正常操作、定时任务执行成功 | "Nginx 服务已启动,监听端口 80" |
NOTICE(注意) | 5 | 需要注意的非严重异常,不影响系统正常运行 | 用户密码错误次数较少、非预期但轻微的事件 | "用户 admin 输入密码错误 1 次" |
WARNING(警告) | 4 | 潜在问题或异常,不处理可能导致错误,但当前系统仍可运行 | 磁盘空间不足(未达阈值)、网络连接波动、配置参数不优 | "根目录磁盘使用率达到 85%(阈值 90%)" |
ERROR2(错误) | 3 | 错误事件,导致部分功能失效,但不影响系统整体运行 | 程序模块崩溃、文件读取失败、服务子进程异常退出 | "MySQL 备份失败:无法访问 /data/backup 目录" |
CRITICAL(严重) | 2 | 严重错误,可能导致系统核心功能失效,需立即关注 | 数据库连接失败、关键服务崩溃、权限配置错误导致核心功能不可用 | "Nginx 服务崩溃,已自动重启(第 3 次)" |
ALERT(警报) | 1 | 紧急情况,必须立即手动干预,否则将产生严重后果 | 磁盘空间耗尽、root 用户登录失败多次、关键配置文件被篡改 | "根目录磁盘使用率 100%,系统无法写入数据" |
EMERGENCY(紧急) | 0 | 最高级别,系统处于不可用状态(灾难级故障),需立即处理 | 系统内核崩溃、文件系统损坏、服务器断电前的最后日志 | "系统内存耗尽,触发 OOM killer,终止了 10 个进程" |
Linux Journalctl命令
Journalctl基础使用
查看所有日志(分页输出)
journalctl或者journalctl --no-pager
[root@localhost ~]# journalctl -xe
9月 13 06:40:43 localhost.localdomain sshd[232927]: Close session: user root from 192.168.60.1 p>
查看最新的n条日志
[root@localhost ~]# journalctl -n 6
9月 13 06:51:54 localhost.localdomain sshd[232927]: Starting sessi>
9月 13 06:51:55 localhost.localdomain sshd[232927]: Close session:>
9月 13 06:52:05 localhost.localdomain sshd[232927]: Starting sessi>
9月 13 06:52:05 localhost.localdomain sshd[232927]: Close session:>
9月 13 06:52:16 localhost.localdomain sshd[232927]: Starting sessi>
9月 13 06:52:16 localhost.localdomain sshd[232927]: Close session:
实时查看新添加的日志条目
[root@localhost ~]# journalctl -f
9月 13 06:42:41 localhost.localdomain sshd[232927]: Starting session: command for root from 192.168.60.1 port 65315 id 2
根据服务名称过滤
[root@localhost ~]# journalctl -u atd.service
9月 12 14:08:15 localhost.localdomain systemd[1]: Started Deferred>
9月 12 14:08:15 localhost.localdomain (atd)[1096]: atd.service: Re>
DHCP协议(动态主机配置协议)
一、 概述
作用:动态的进行IP地址分配
服务端的监听端口 67/udp
客户端监听端口 68/udp
网络架构 C/S:client/server
DHCP的优势
提高配置效率
减少配置错误
DHCP的分配方式
手动分配:固定不变,工程师进行地址绑定
自动分配:但是不进行地址回收
动态分配:进行地址回收
注意
同一个网络环境下不允许存在多个DHCP服务器