我在 BeagleBone 上运行了一个最小版本的 Ubuntu 13.04。我尝试udhcpd
永久禁用它,但我不想删除它。我希望能够在需要时启用它。我已通过执行将其从 rc.d 中删除,sudo update-rc.d -f udhcpd remove
甚至通过安装和运行对其进行了交叉验证sysv-rc-conf
。执行此操作后,如果我重新启动,一切似乎都正常工作。我执行ps -e | grep udhcpd
以验证udhcpd
尚未启动,但确实没有得到任何结果。然而,当我关闭系统并重新打开时,它又udhcpd
恢复了!您知道发生了什么事、为什么会发生以及如何解决吗?
答案1
仍然没有线索为什么这种情况正在发生,但有一个不太优雅的解决方案,即在登录时杀死所有实例,udhcpd
即编写一个简单的 bash 脚本来定位进程 IDudhcpd
并调用kill
它们:
- 在以下位置创建脚本文件
/etc/profile.d/
:例如my_file.sh
写下
my_file.sh
以下内容:#!/bin/bash TST=$(pgrep udhcpd) echo "So udhcpd has the following PIDs" echo $TST # put one PID in each element of the array, i.e split on the spaces arr=($TST) for i in "${arr[@]}" do echo "We are now going to execute kill -9 $i" sudo kill -9 $i done echo "Done."
使文件可执行:
chmod +x /etc/profile.d/my_file.sh
- 关机,开机,下次登录时应执行此脚本(要求您输入 root 密码)。
登录后执行:
pgrep udhcpd
只是为了确保所有实例都已被杀死。