如何获得进程ID来杀死一个nohup进程?
我正在服务器上运行nohup进程。 当我尝试杀死它时,我的腻子控制台closures。
这是我如何find进程ID:
ps -ef |grep nohup
这是杀人的命令
kill -9 1787 787
当使用nohup
并将任务置于后台时,后台运算符( &
)会在命令提示符下为您提供PID。 如果您的计划是手动pipe理进程,则可以保存该PID并稍后使用该进程来通过kill PID
或kill -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
僵尸进程终于停止了。