1. 程式人生 > >解決Linux 無法使用userdel 刪除用戶和組的問題

解決Linux 無法使用userdel 刪除用戶和組的問題

linux user del 刪除用戶報錯 vipw

解決Linux 無法使用userdel 刪除用戶和組的問題

  1. 系統環境
    #cat /etc/redhat-release
    CentOS release 6.7 (Final)
    #getenforce
    Disabled
  2. 問題描述
    我在root賬戶下,刪除普通賬戶worker時,出現如下報錯信息:
    #userdel -r worker
    userdel: user worker is currently used by process 1973 
    我把1973這個進程kill了,再次使用userdel -r worker命令
    #userdel -r worker
    userdel: user worker is currently used by process 1986
    也就是沒有真正的kill掉
  3. 問題原因
    worker賬號上面運行著多個服務,有的進程可能是被root 在占用,我們可以通過ps -u worker|awk ‘{print $1}‘來查看該用戶下的Pid號。
  4. 解決方法
    (1)查看該用戶的pid
    #ps -u worker|awk ‘{print $1}‘
    26778
    26754
    26735
    26736
    (2)編寫腳本
    說明:如果該用戶下的pid很多,如我這次遇到了7千多個,一個一個kill是很耗費時間的,也很無聊。
    腳本形式如下:
    #ps -u worker|awk ‘{print $1}‘ > 1.txt
    #cat rm.sh
    #!/bin/bash
    for i in $(cat 1.txt)
    do kill -9 $i
    done
    echo "ok"
    執行腳本:
    #sh rm.sh
  5. 命令vipw
(1)#vipw –help
用法:vipw [選項]
選項:
-g, –group 編輯 group 數據庫 
-h, –help 顯示此幫助信息並推出 
-p, –passwd 編輯 passwd 數據庫 
-q, –quiet 安靜模式 
-R, –root CHROOT_DIR chroot 到的目錄 
-s, –shadow 編輯 shadow 或 gshadow 數據庫
(2)使用vipw原因
保證數據的一致性,不然可能會造成系統崩潰或者一些莫名其妙的問題。
(3)具體操作
#vipw
找到你用戶worker,用dd刪除那行(記得保存:wq or :x)。。之後。
#vipw -s
找到用戶worker所屬組,用dd刪除即可(記得保存:wq or :x)
(4)檢查worker是否還存在
#grep worker /etc/passwd

解決Linux 無法使用userdel 刪除用戶和組的問題