userdel刪除用戶失敗提示:userdel: user * is currently logged in 解決方法


操作環境

  SuSE10/SuSE11

問題現象

  執行userdel -rf oracle刪除用戶失敗,提示userdel: user 'oracle' is currently logged in

問題分析

NA

問題解決

  1、ps -fu oracle查看是否還有進程在使用(也可以使用ps -ef |grep 'oracle'| grep -v grep),如果有進程在使用。kill掉相關進程

  2 、重新執行userdel -rf oracle,如果失敗,則執行步驟3

  3、刪除 /var/run/utmp文件。cd /var/run; mv utmp utmp_bak;touch utmp

  4、重新執行userdel -rf oracle。

知識延伸

為什么刪除utmp文件就可以執行刪除用戶成功?查看如下函數信息

/var/run/utmp database of currently logged-in users

src/userdel.c if(is_logged_in(remove_user)) { fprintf(stderr,_("%s:account '%s' is currently in use.\n")),program,remove_user); return E_USER_BUSY; } lib/is_logged_in.c /* Check if the user is logged in. 0:user is not logged in 1:user is logged in */
int is_logged_in(const char *user) { struct utmp *utp; setutent(); while((utp = getutent())) { if(utp->ut_type == USER_PROCESS && strncmp(utp->ut_user,user,sizeof utp->ut_user)==0) return 1 } return 0 }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM