我正在尝试启动一个进程,虽然ps -ef | grep myprocessname没有显示它正在运行,但是当我调用脚本启动它时它表示进程已在运行,退出。
我在互联网上搜索了大约一个小时,我找不到任何答案。有人可以帮忙吗?谢谢。
@TILO:/ var / run下没有文件,其名称甚至接近我的进程。还有其他建议吗?
@VKRAM:这是第三方软件。有什么建议?
答案 0 :(得分:2)
检查/ var / run下是否存在您尝试启动的进程的.pid文件。
e.g。 /var/run/mysqld/mysqld.pid就是这样一个文件。
该文件包含进程的PID ...
运行一个 ps -edaf | grep PID#与你在文件中找到的pid
如果找不到该过程,您可以删除pid文件 - 然后再次尝试启动您的过程
答案 1 :(得分:1)
尝试在相关程序中使用strace:
strace yourprogram
在它终止之前不久,您应该看到系统调用它用于确定另一个实例正在运行,并且可以从那里对它正在使用的方法进行反向工程。
答案 2 :(得分:0)
你说你找不到PID文件......
如果找不到PID文件(可能是因为/ var / run下的某些目录是深层嵌套的), 试试看这里所有PID文件的列表:
查找/ var / run -type f -name'* .pid'
找到/ var -type f -name'* .pid'
也许您会看到一个类似于您尝试启动的进程名称的文件名。 或者你也可以在该行的末尾放一个grep并尝试grep查看列表中的进程名称。
有些程序也使用锁文件 - 这些文件通常可以在/ var / lock /或/ var / lock / subsystem下找到
如果这样做无效,请尝试查看您正在使用的启动脚本,例如:在/etc/init.d/下 仔细查看它并查找LOCK_FILE或PID_FILE