简述

最近遇到一个dhcp相关的问题,就是我的设计模式有两种一种是自动获取ip服务,另一个种是手动配置ip服务;当我切换自动获取ip时会向服务器申请一个动态的ip,通常做法是使用命令在后台打开一个udhcpc客户端,然后通过客户端向服务器申请租约;当我切换手动配置ip时,通常是手动输入一个ip然后检测这个ip是否被占用,没有被占用则配置;

现在的想法是由于之前是自动获取ip的,后台有一个udhcpc客户端进程存在,而且路由器中的DHCP设备列表中也存在之前动态申请的ip地址;当我从自动获取ip切换到手动配置ip时,想要释放租约并且从路由器中的DHCP设备列表中移除已申请的ip地址,然后再关闭udhcpc客户端(为什么不是先关闭udhcpc客户端再解除租约,因为解除租约是依靠udhcpc客户端与路由器的服务端通信);

动态申请IP

首先使用udhcpc动态申请一个ip:

udhcpc -b -i eth0 -R
-q:表示得到组月后退出;
-b:表示在后台运行;
-i:如果存在多网卡时需要指定网卡名;
-R:表示udhcpc客户端程序退出后通知服务器释放租约;

释放租约

可能有人会疑惑使用kill、pkill或者killall杀死udhcpc客户端时不会通知服务器释放租约吗,明明申请ip的时候带了-R参数?正常情况下比如申请的时候带了-q参数,得到租约后自动退出前会通知服务器释放租约;但是使用kill、pkill或者killall杀死udhcpc客户端并不是正常的退出,而是强制关闭,所以不会通知服务器释放租约;

正确释放租约可以通过给udhcpc客户端进程发送一个USR2(开发板平台)或者SIGUSR2(linux平台)信号,然后再通过kill(通过pid关闭单个进程)或者killall(通过进程名称关闭这个名称下的所有进程):

// 开发板平台下:先通过USR2信号释放租约,然后再通过第二条命令关闭进程
kill -SR2 pid;kill pid
killall -SR2 udhcpc;killall udhcpc// linux平台下:先通过SIGUSR2信号释放租约,然后再通过第二条命令关闭进程
kill -SIGUSR2 pid;kill pid
killall -SIGUSR2 udhcpc;killall udhcpc

Linux下关闭udhcpc客户端时,通知服务器释放租约相关推荐

  1. linux 影院 ftp客户端20端口号,Linux下的ftp客户端说明文档

    Linux下的ftp客户端说明文档 发布时间:2006-09-24 00:20:41来源:红联作者:userhq l 软件功能: 本程序基于linux下的socket函数,利用ftp 协议,实现lin ...

  2. linux搭建mcpe服务器_Ubuntu Linux下搭建Minecraft我的世界服务器

    总结一下在Ubuntu Linux下搭建Minecraft我的世界服务器的方法,其实非常简单直接. (1).把当前的软件都更新到最新 sudo apt-get update Minecraft服务器需 ...

  3. Linux下select函数实现的聊天服务器

    转载: http://blog.csdn.net/microtong/article/details/4989902 Linux下select函数实现的聊天服务器  佟强 http://blog.cs ...

  4. linux系统我的世界开服,Ubuntu Linux下搭建Minecraft我的世界服务器

    总结一下在Ubuntu Linux下搭建Minecraft我的世界服务器的方法,其实非常简单直接. (1).把当前的软件都更新到最新 sudo apt-get update Minecraft服务器需 ...

  5. Linux下程序崩溃dump时的 core文件的使用方法

    Linux下程序崩溃dump时的 core文件的使用方法 1.在启动程序前执行 ulimit -c unlimited unlimited 表示生成文件的大小限制,也可以修改为自定义的大小,例如: u ...

  6. linux下安装mysql客户端client

    1. 下载mysql客户端 MySQL的Linux客户端官网下载地址 根据Linux的系统版本选择下载对应的rpm安装包(如下所示),这里选择的是mysql8.0.27版本的redhat8系列的MyS ...

  7. linux 读取飞信信息,Linux下安装飞信客户端(OpenFetion)

    主机平台:Gentoo 11.2 内核版本:Linux Kernel 3.2.1 1.首先下载OpenFetion源代码 具体下载目录在 /2012年资料/3月/22日/Linux下安装飞信客户端(O ...

  8. linux搭建ca服务器搭建,linux下安装EJBCA 搭建私有CA服务器

    linux下安装EJBCA 搭建私有CA服务器 EJBCA是一个全功能的JAVA的CA系统软件,我们可以用此搭建私有CA服务器: 一:首先我的测试环境: 1.  linux mint18.3 62位: ...

  9. linux安装DNS服务命令,Linux下的安装和配置DNS服务器

    Linux下的安装和配置DNS服务器 发布时间:2008-09-08 17:03:00   作者:佚名   我要评论 在Linux操作系统中使用BIND (Berkeley Internet Name ...

  10. 在linux 下编译c程序时“ error:dereferencing pointer to incomplete type”的问题

    在linux 下编译c程序时经常会遇到" error:dereferencing pointer to incomplete type"的问题,该问题的原因是:结构体定义不规范造成 ...

最新文章

  1. linux C函数之strdup函数分析【转】
  2. 测试wifi软件 最大容量,使用VulcanCompact应用层测试仪评估测试WiFi6无线路由器的最大支持设备数及并发连接数...
  3. 模板资源管理器的使用
  4. 【专访】PP租车创业故事二:为什么要创业?
  5. python matplotlib 绘图
  6. linux DTS介绍
  7. eth_type_trans的处理流程图
  8. DBArtist之Oracle入门第1步: 如何安装Oracle 11g
  9. 杀死系统中的进程kill和killall命令
  10. [数据结构]二叉搜索树概念及基本操作
  11. Clickhouse:日志表占用大量磁盘空间怎么办?
  12. 使用Flying Saucer生成pdf
  13. python2代码转换python3(2018新)
  14. 吴恩达卷积神经网络 笔记,吴恩达 深度神经网络
  15. 超3成医院未通过等保测评?亚信安全终端一体化赋能医疗行业安全
  16. 解决百度云主机(BCH)wordpress程序伪静态和后台打开404问题(创客互联)
  17. Mathematica中将多个动态图合并在一起(包括自动与手动)
  18. python与金融工程的区别_统计学和金融工程的区别
  19. 【计组】设计大型DMP系统--《深入浅出计算机组成原理》(十四)
  20. Charles抓包使用

热门文章

  1. [项目管理]-第三章:需求分析
  2. 移动机械硬盘测试软件,硬盘检测工具HDTune使用教程
  3. pdf factory pro7序列号教你如何打印转换PDF教程
  4. 滴滴技术专家任玉刚:让你的职业迷茫从哪来回哪去
  5. Visual Studio Community 2017安装步骤(只装C++)
  6. 动态硬盘转基本盘转换器
  7. 指派问题程序c语言,指派问题lingo程序样例
  8. 前端在H5页面唤起微信支付(H5支付)
  9. 三大电商(淘宝、京东、拼多多)开放平台 服务市场 过程中常用文件和注意事项(PRD,MRD)
  10. 2021年PMP考试模拟题2(含答案)