当服务在 rc.d 中被禁用时,停止该服务的启动

当服务在 rc.d 中被禁用时,停止该服务的启动

我在 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它们:

  1. 在以下位置创建脚本文件/etc/profile.d/:例如my_file.sh
  2. 写下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."
    
  3. 使文件可执行:chmod +x /etc/profile.d/my_file.sh

  4. 关机,开机,下次登录时应执行此脚本(要求您输入 root 密码)。
  5. 登录后执行:

    pgrep udhcpd
    

    只是为了确保所有实例都已被杀死。

相关内容