当前位置: 首页 > news >正文

Linux系统的系统服务与DHCP服务

一、系统服务

一、crond介绍

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类,系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。/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

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。第六至九行表示的含义将在下个小节详细讲述。这里不在多说。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab 文件都被保存在 /var/spool/cron目录中。其文件名与用户名一致。下面是几个特殊的文件介绍:

  • 文件:/etc/cron.deny                该文件中所列用户不允许使用crontab命令

  • 文件:/etc/cron.allow                该文件中所列用户允许使用crontab命令

  • 文件:/var/spool/cron/              所有用户crontab文件存放的目录,以用户名命名

二、crontab 文件格式

crontab 文件中每一行代表一项任务,分为六个字段,格式如下:

plaintext

minute hour day month week command

各字段含义

  • minute:分钟(0-59)
  • hour:小时(0-23)
  • day:日期(1-31)
  • month:月份(1-12 或 jan,feb 等)
  • week:星期(0-7,0 或 7 代表星期日,或 sun,mon 等)
  • command:要执行的命令或脚本

特殊字符用法

  • *:代表所有可能的值
  • ,:指定列表范围,如 "1,3,5"
  • -:表示整数范围,如 "2-6"
  • /:指定时间间隔频率,如 "*/10" 表示每 10 分钟

三、crond 服务管理

安装 crontab

bash

yum install crontabs

服务基本操作

bash

systemctl start crond    # 启动服务
systemctl stop crond     # 关闭服务
systemctl restart crond  # 重启服务
systemctl reload crond   # 重新载入配置
systemctl status crond   # 查看服务状态

开机启动设置

bash

systemctl enable crond   # 加入开机自动启动
ntsysv                   # 查看是否已设置为开机启动

四、crontab 命令详解

命令格式

bash

crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]

主要参数

  • -u user:设定指定用户的 crontab 服务(一般 root 使用)
  • file:将文件作为 crontab 任务列表文件载入
  • -e:编辑 crontab 文件内容(默认当前用户)
  • -l:显示 crontab 文件内容(默认当前用户)
  • -r:删除 crontab 文件(默认当前用户)

二、DHCP服务

一、DHCP 协议基础认知

什么是 DHCP

DHCP(Dynamic Host Configuration Protocol)即动态主机配置协议,是一种用于动态分配 IP 地址的网络协议,采用 C/S(客户端 / 服务器)架构。

核心端口信息

  • 服务端监听端口:67/udp
  • 客户端监听端口:68/udp

主要优势

  • 大幅提高网络配置效率
  • 有效减少手动配置带来的错误

三种分配方式

  1. 手动分配:工程师进行地址绑定,IP 地址固定不变
  2. 自动分配:一次性分配后不进行地址回收
  3. 动态分配:最常用方式,会进行地址回收和重复利用

应用场景

  • 需要准确配置网络参数的环境
  • 大型网络环境中(减少管理成本)

注意:同一网络环境下不允许存在多个 DHCP 服务器,会导致地址分配冲突

二、DHCP 工作流程详解

  1. 发现阶段:客户端发送 discover 广播包,寻找网络中的 DHCP 服务器
  2. 邀约阶段:DHCP 服务器回应 Offer 广播包,携带可用 IP 地址信息
  3. 请求阶段:客户端选择 IP 地址后,发送 Request 广播包确认请求
  4. 确认阶段:服务端发送 Ack 广播包,确认 IP 地址分配并告知租约期

租约管理

  • 租约更新时机:当租约期达到 50% 时,客户端主动请求更新
  • 客户端重启后:
    • 若原 IP 地址空闲,服务端直接回应 Ack
    • 若原 IP 地址被占用,服务端回应 noAck,客户端需重新执行完整流程

不同系统客户端特性

  • Linux 系统:DHCP 服务器不存在时,没有 IP 地址
  • Windows 系统:DHCP 服务器不存在时,会启用备用 IP(169.254.0.0/16 ~ 168.254.255.255/16)

三、DHCP 服务部署与配置

基础环境准备

  1. 关闭防火墙及 SElinux

shell

# 关闭防火墙
[root@dhcpserver ~]# systemctl stop firewalld && systemctl disable firewalld# 临时关闭SElinux
[root@dhcpserver ~]# setenforce 0# 永久关闭SElinux(需重启)
[root@dhcpserver ~]# vim /etc/selinux/config
SELINUX=enforcing 改为 SELINUX=disabled

  1. 配置静态 IP 地址

shell

# 关闭网络图形化工具
[root@dhcpserver ~]# systemctl stop NetworkManager ; systemctl disable NetworkManager# 配置网卡信息
[root@dhcpserver ~]# cd /etc/sysconfig/network-scripts/
[root@dhcpserver ~]# cat ifcfg-ens34
TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.100.254
PREFIX=24# 重启网络服务
[root@dhcpserver ~]# systemctl restart network

安装 DHCP 服务

shell

[root@localhost ~]# yum install -y dhcp-server

核心配置文件路径

  • 配置文件存储:/etc/dhcp
  • 默认配置文件副本:/usr/share/doc/dhcp-4.2.5/
  • 数据文件存储:/var/lib/dhcpd
  • 核心配置文件:/etc/dhcp/dhcpd.conf

配置文件初始化

shell

[root@dhcpserver ~]# cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/
[root@dhcpserver ~]# cd /etc/dhcp/
[root@dhcpserver ~]# cp dhcpd.conf.example dhcpd.conf

四、常见配置场景

1. 单一地址池配置

shell

[root@dhcpserver dhcp]# cat dhcpd.conf | grep -v "^#" | grep -v "^$"
option domain-name "example.org";
option domain-name-servers ns1.example.org, ns2.example.org;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.100.0 netmask 255.255.255.0 {range 192.168.100.100 192.168.100.200;  # 地址范围option domain-name-servers ns1.internal.example.org;option domain-name "internal.example.org";option routers 192.168.100.254;  # 网关地址option broadcast-address 192.168.100.255;  # 广播地址default-lease-time 600;max-lease-time 7200;
}

2. 地址绑定配置(固定 IP 分配)

shell

# 在配置文件中添加
host s1 {hardware ethernet 00:0c:29:dd:24:41;  # 客户端MAC地址fixed-address 192.168.100.110;  # 绑定的IP地址
}# 重启服务生效
[root@dhcpserver dhcp]# systemctl restart dhcpd

3. 多地址池配置(跨网段分配)

路由器配置(中继代理)

shell

# 安装dhcp中继工具
[root@nginx1 ~]# yum install -y dhcp# 开启路由转发功能
[root@nginx1 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@nginx1 ~]# sysctl -p# 配置双网卡IP
[root@nginx1 ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens34 
TYPE=Ethernet
BOOTPROTO=static
NAME=ens34
DEVICE=ens34
ONBOOT=yes
IPADDR=192.168.100.253
PREFIX=24# 启动DHCP中继
[root@nginx1 ~]# dhcrelay 192.168.100.254  # 指定DHCP服务器地址
DHCP 服务器多网段配置

shell

# 在dhcpd.conf中添加第二个网段配置
subnet 192.168.200.0 netmask 255.255.255.0 {
range 192.168.200.100 192.168.200.200;
option domain-name-servers ns1.internal.example.org;
option domain-name "internal.example.org";
option routers 192.168.200.253;  # 对应网段网关
option broadcast-address 192.168.200.255;
default-lease-time 600;
max-lease-time 7200;
} # 重启服务
[root@dhcpserver ~]# systemctl restart dhcpd

五、服务管理与验证

重启 DHCP 服务

shell

[root@dhcpserver dhcp]# systemctl restart dhcpd

验证服务监听状态

shell

[root@dhcpserver dhcp]# netstat -anptu | grep :67
udp        0      0 0.0.0.0:67              0.0.0.0:*                           28005/dhcpd

客户端获取 IP 验证

shell

# 重新获取IP
[root@client ~]# ifdown ens34 ; ifup ens34# 查看获取的IP地址
[root@client ~]# ip a

六、常见故障排查

  1. 服务启动异常:重点排查配置文件语法错误,检查修改的配置段
  2. 地址分配异常
    • 先检查网络连接是否正常
    • 再检查 subnet 字段配置是否与实际网络匹配
    • 确认租约是否过期或 IP 地址池是否耗尽

文章转载自:

http://A2PBrB5U.sjqmL.cn
http://URWTfiKu.sjqmL.cn
http://nhRYHeBn.sjqmL.cn
http://W0gwLnd6.sjqmL.cn
http://q3205pGb.sjqmL.cn
http://1Cj66U6N.sjqmL.cn
http://cxJpXLnz.sjqmL.cn
http://fHah5Di0.sjqmL.cn
http://c5Opxe7A.sjqmL.cn
http://YK1iH0ii.sjqmL.cn
http://aAn906wB.sjqmL.cn
http://WzkZiqjl.sjqmL.cn
http://riRd45Pc.sjqmL.cn
http://ptjr7gSu.sjqmL.cn
http://4gkFi2Ib.sjqmL.cn
http://AhXz5VqG.sjqmL.cn
http://kqUQ857T.sjqmL.cn
http://tJ8VZXvR.sjqmL.cn
http://Phgy6m4l.sjqmL.cn
http://Wp84iSJ1.sjqmL.cn
http://0rKyJkyA.sjqmL.cn
http://E4fhF66X.sjqmL.cn
http://1M9xCVAv.sjqmL.cn
http://ierI6Mvo.sjqmL.cn
http://BvHc1trF.sjqmL.cn
http://FbWwUAkD.sjqmL.cn
http://KP54CEOs.sjqmL.cn
http://BNKVwjkA.sjqmL.cn
http://kBOw2EBA.sjqmL.cn
http://SDn6dxrl.sjqmL.cn
http://www.dtcms.com/a/385223.html

相关文章:

  • 高系分五:数据库系统
  • 高效精准的全基因组谱系贝叶斯推断方法SINGER
  • NetSuite Landed Cost到岸成本功能包
  • linux的停止自动休眠
  • 继承与组合:C++面向对象的核心
  • Java进阶教程,全面剖析Java多线程编程,多线程的实现方式,继承Thread类方式,笔记03
  • 猫头虎开源AI分享:一款CSV to Chat AI工具,上传CSV文件提问,它可以即时返回统计结果和可视化图表
  • Android中怎么使用C语言, 以及打包/使用SO动态库
  • 信刻光盘加密刻录系统,保护光盘分发数据安全保密!
  • 自由学习记录(99)
  • 【开题答辩全过程】以 C语言程序设计课程网站为例,包含答辩的问题和答案
  • RocketMQ 消息幂等性实战经验分享
  • [SC]SystemC中,一个namespace中调用了其他namespace中的函数,需要显示include那个函数所在的.h文件吗?
  • Origin气泡图画相关性系数图
  • 基于SpringBoot+Uniapp的儿童疫苗接种预约小程序(qq邮箱、二维码识别)
  • 基于HugeGraph构建法律知识图谱(一)
  • C语言常用字符串函数
  • 【STM32项目开源】STM32单片机智能饮水机控制系统
  • 新质生产力背景下基于“开源链动2+1模式+AI智能名片+S2B2C商城小程序”的商业机会挖掘研究
  • html隐藏文本利用原理,实现点击隐藏功能
  • Java vs Python Web 开发深度对比:从传统同步到现代异步的全面演进
  • Redis 不只是缓存:深入解析 Redis Stack 与实时 AI 推理
  • IPv4地址类型
  • Deepin 25 系统安装 Docker:完整教程 + 常见问题解决
  • 虚拟机因网络导致域名解析出现问题
  • 群内靶机-Next
  • 【系统分析师】2025年上半年真题:论文及解题思路
  • 绿色出行新选择:圆梦交通联合卡的环保实践
  • 协程+连接池:高并发Python爬虫的底层优化逻辑
  • 深入理解 CAS:并发编程的原子操作基石