用root启动进程之后,无法再用其他普通用户启动该进程

环境:

CentOS release 6.8 (Final)

Linux 2.6.32-642.6.2.el6.x86_64 #1 SMP


问题描述:

今天同事碰到一个问题过来问我,说他不小心用root起了进程之后,再也无法用原本的普通用户把进程拉起来。

日志报错显示SemCreate Error: File exists


问题排查:

1,追踪代码,产生这个报错的原因是此进程需要创建信号量集,但是semget失败,errno == EEXIST

2,EEXIST(信号量集已经存在,无法创建)

3,用ipcs命令查看,确实是已经存在,并且owner为root,因为key是固定的,那么用普通用户再拉进程的时候就操作不了root用户创建的信号量集。


问题修复:

1,使用命令ipcrm清除掉已经存在的信号量集

2,排查代码,发现代码缺陷,程序退出时没有调用semctl(semid, 0, IPC_RMID, 0);


总结:

操作的时候又忘了截图,下次要记得。

之前也碰到过root拉起进程之后无法再用普通用户拉起来进程的问题,

不过那次是因为文件属组为root导致普通用户无法打开,例如日志文件等,

假设用户名为test

修复方法为chown -R test:test ~/*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值