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 }
分类:
Linux系统管理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义