查找由nohup命令运行的进程

11

我在Centos中使用以下命令运行服务器可执行文件:"nohup server &"。现在我需要杀死进程"server",但我尝试使用"ps -a"命令获取PID,但无法找到该进程。现在该如何杀死"server"进程呢?


2
ps auxwww | grep -i 'server' 应返回所有包含 'server' 的进程。否则,server 可能已经停止了。 - Usman Saleem
@Usman Saleem,谢谢,这解决了我的问题。我还有一个疑问,“nohup server&”是正确的命令,即使我关闭终端也可以在后台运行进程吗? - 2vision2
@Mikhail 谢谢,这解决了我的问题。我还有一个疑问,“nohup server &”是正确的命令,可以在关闭终端后在后台运行进程吗? - 2vision2
1
是的,当您调用命令:“nohup server&”后跟“print $!>> server_pid_file”时,您可以确定PID。 - Usman Saleem
1
是的,使用 nohup 命令意味着您的“服务器”进程将会忽略操作系统在关闭终端时发送的“HUP”中断信号。它也会忽略“kill -HUP pid”或“kill -1 pid”命令。 - Usman Saleem
您可能也想使用“批处理”或“计划任务”来运行您的服务器。 - Basile Starynkevitch
4个回答

20

ps auxwww|grep -i 'server'会返回所有包含server的进程。否则,服务器可能已经停止。

您应该能够按以下方式确定PID(并将其存储在文件中):

nohup server &
print $! >> my_server.pid

15
如果已经创建了nohup.out文件,您可以在bash中运行以下命令:
# lsof nohup.out
它将返回创建或正在运行该文件的进程ID。 祝好!

5

使用ps命令没有确切的方式来捕获精确的进程,但您可以使用以下方法:

ps -a | grep "server"

您将获得所有以名称“server”运行的进程列表。
或者,您也可以使用任何其他关键字来grep ps输出。

1

在CentOS中启动服务器的最佳方法是使用service命令。

因此,service httpd start

有可能您想将程序编写为守护进程

守护进程(或服务)是一种后台进程,旨在自主运行,几乎不需要用户干预。Apache Web服务器http守护进程(httpd)就是这样一个例子。它在后台等待特定端口的连接,并根据请求类型提供页面或处理脚本。

请参见http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html


我只需要在后台运行可执行文件?你能给一些例子吗? - 2vision2
@2vision2,你想要编写一个像Linux守护进程一样的程序,请参考http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html。 - Mikhail

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接