一.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服务器
课后实验
实验拓扑:
实验要求
1. DHCP服务器能够为两个网络分别分配IP地址。
2. 内部客户机设置为固定获得某一个IP地址。
(1)DHCP服务器的配置(单一网段)
安装:yum install -y dhcp
安装完了以后一定要把net模式换成vmnet1模式
进入目录:cd /etc/sysconfig/network-scripts
配置网关:修改BOOTPRTO=static
在最下方加入IPADDR=192.168.100.253
PREFIX=24
GATEWAY=192.168.100.254
重启网络:systemctl restart NetworkManager
查看一下IP是否配置成功:ip a
关闭防火墙且设置防火墙的工作模式为完全关闭状态
systemctl restart firewalld && systemctl disable firewalld
进入selinux安全上下文里修改其工作模式为disabled状态
vim /etc/selinux/config
将selinux=enforcing改为selinux=disabled
重启:reboot
查看selinux工作模式
getenforce ——>disabled
确定关闭防火墙后,进入/etc/dhcp
cd /etc/dhcp
复制该文件到./dhcpd.conf内
cp /usr/share/doc/dhcp-server/dhcpd.conf.example ./dhcpd.conf
询问是否覆盖
yes
编译DHCP配置文件dhcpd.conf
vim dhcpd.conf
先删除# A slightly different ......这一行上面三块部分的所有内容
然后进行编译此行下的内容
subnet 192.168.100.0 netmask 255.255.255.0 {
range 192.168.100.1 192.168.100.199;
option domain-name-servers 8.8.8.8;
option domain-name "jx.com";
option routers 192.168.100.254;
option broadcast-addrass 192.168.100.255;
default-lease-time 600;
max-lease-time 7200;
}
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.1 192.168.200.199;
option domain-name-servers 8.8.8.8;
option domain-name "jx.com";
option routers 192.168.200.254;
option broadcast-addrass 192.168.200.255;
default-lease-time 600;
max-lease-time 7200;
}
最后重启:
systemctl restart dhcpd
(2)配置路由器(配两块网卡)
先安装dhcpfuwu:
yum install -y dhcp
然后:
cd /etc/sysconfig/network-scripts/
查看网卡:
ls
ip a
nmcli c add type ethernet con-name ens224 ifname ens224
再查看网卡:
ls
开始配置ens160:
vim ifcfg-ens160
其中修改:BOOTPROTO=static
在最后添加:IPADDR=192.168.100.254
PREFIX=24
配置ens224:
vim ifcfg-ens224
其中修改:BOOTPROTO=static
在最后添加:IPADDR=192.168.200.254
PREFIX=24
重启网络:
systemctl restart NetworkManager
查看IP:ip a
nmcli c down ens160
nmcli c up ens160
ip a
再把路由功能打开
vim /etc/sysctl.conf
修改net.ipv4.ip_forward=1
查看是否打开:
sysctl -p
最后打开中继服务:
dhcrelay 192.168.100.253
(3)打开dhcp服务器和路由器进行抓包验证
dhcp:ping 192.168.200.1
路由器:tcpdump -i any (抓包)
看成果1. 2.