如何获得进程ID来杀死一个nohup进程?

我正在服务器上运行nohup进程。 当我尝试杀死它时,我的腻子控制台closures。

这是我如何find进程ID:

ps -ef |grep nohup 

这是杀人的命令

  kill -9 1787 787 

当使用nohup并将任务置于后台时,后台运算符( & )会在命令提示符下为您提供PID。 如果您的计划是手动pipe理进程,则可以保存该PID并稍后使用该进程来通过kill PIDkill -9 PID (如果需要强制执行kill)来杀死该进程(如果需要)。 或者,您可以稍后通过ps -ef | grep "command name"findPID ps -ef | grep "command name"并从那里findPID。 请注意, nohup关键字/命令本身不会出现在相关命令的ps输出中。

如果您使用脚本,您可以执行如下操作:

 nohup my_command > my.log 2>&1 & echo $! > save_pid.txt 

这将运行my_command将所有输出保存到my.log (在脚本中, $!表示执行的最后一个进程的PID)。 2是标准错误( stderr )的文件描述符, 2>&1指示shell将标准错误输出路由到标准输出(文件描述符1 )。 它需要&1以便shell知道这是文件描述符,而不仅仅是一个名为1的文件。 需要2>&1来捕获任何通常写入标准错误的错误消息到我们的my.log文件(来自标准输出)。 有关使用shell处理I / Oredirect的更多详细信息,请参阅I / Oredirect 。

如果命令定期发送输出,则可以偶尔使用tail my.log来检查输出,或者如果您想要关注“live”,可以使用tail -f my.log 。 最后,如果你需要杀死进程,你可以通过以下方式来完成:

 kill -9 `cat save_pid.txt` rm save_pid.txt 

我在VPS服务器(通过SSH – 腻子)上使用红帽linux,对我来说,以下工作:

首先,列出所有正在运行的进程:

 ps -ef 

然后在第一列中find您的用户名; 我发现它有以下三个:

  • 一个是SSH连接
  • 第二个是FTP连接
  • 最后一个是nohup进程

然后在第二列中可以findnohup进程的PID,并且只能input:

 kill PID 

(当然用nohup进程的PID代替PID)

就是这样!

我希望这个答案对于我也是非常新的bash和SSH的人来说是有用的,但是在这里我find了95%的知识。

假设我使用下面的命令在后台运行ruby脚本

 nohup ruby script.rb & 

那么我可以通过指定命令名称来获取上述后台进程的pid。 在我的情况下命令是ruby。

 ps -ef | grep ruby 

产量

 ubuntu 25938 25742 0 05:16 pts/0 00:00:00 ruby test.rb 

现在你可以使用kill命令轻松地终止进程

 kill 25938 

jobs -l应该给你nohup进程列表的pid。 杀死(-9)他们轻轻。 ;)

你可以试试

 kill -9 `pgrep [command name]` 

我用下面的命令启动了django服务器。

 nohup manage.py runserver <localhost:port> 

这适用于CentOS:

 :~ ns$netstat -ntlp :~ ns$kill -9 PID 

这在Ubuntu

input这个来找出PID

 ps aux | grep java 

所有关于java的运行过程都会显示出来

在我的情况是

 johnjoe 3315 9.1 4.0 1465240 335728 ? Sl 09:42 3:19 java -jar batch.jar 

现在杀死它kill -9 3315

僵尸进程终于停止了。