我正在服务器上运行一个 nohup 进程。当我试图杀死它时,我的腻子控制台会关闭。
这就是我尝试查找进程 ID 的方式:
ps -ef |grep nohup
这是杀死的命令
kill -9 1787 787
使用nohup
并将任务置于后台时,后台运算符 ( &
) 将在命令提示符处为您提供 PID。如果您的计划是手动管理进程,您可以保存该 PID 并在需要时使用它来杀死进程,通过kill PID
or kill -9 PID
(如果您需要强制终止)。或者,您可以稍后ps -ef | grep "command name"
找到 PID 并从那里找到 PID。请注意,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/O重定向的更多详细信息,请参阅 I/O 重定向。
如果命令定期发送输出,您可以使用 偶尔检查输出tail my.log
,或者如果您想“实时”跟踪它,您可以使用tail -f my.log
. 最后,如果您需要终止该进程,您可以通过以下方式完成:
kill -9 `cat save_pid.txt`
rm save_pid.txt
我在 VPS 服务器上使用 red hat linux(并通过 SSH - putty),对我来说,以下工作:
首先,列出所有正在运行的进程:
ps -ef
然后在第一列中找到您的用户名;我找到了以下三遍:
然后在第二列中,您可以找到 nohup 进程的 PID,您只需键入:
kill PID
(当然用 nohup 进程的 PID 替换 PID)
就是这样!
我希望这个答案对我对 bash 和 SSH 也很陌生的人有用,但在这里找到了我需要的 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]`
假设您正在使用 nohup 执行 java 程序,您可以通过以下方式获取 java 进程 ID
`ps aux | grep java`
输出
xxxxx 9643 0.0 0.0 14232 968 pts/2
然后您可以通过键入来终止该进程
sudo kill 9643
或者说你需要杀死所有的java进程然后使用
sudo killall java
这个命令会杀死所有的 java 进程。您可以将其与流程一起使用。只需在命令末尾给出进程名称
sudo killall {processName}
如果您的应用程序始终使用相同的端口,您可以像这样终止该端口中的所有进程。
kill -9 $(lsof -t -i:8080)
这适用于Ubuntu
键入此内容以了解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
僵尸进程终于停止了。
当您在 nohup 中创建作业时,它会告诉您进程 ID!
nohup sh test.sh &
输出将向您显示进程 ID,例如
25013
你可以杀了它:
kill 25013
我使用以下命令启动了 django 服务器。
nohup manage.py runserver <localhost:port>
这适用于 CentOS:
:~ ns$netstat -ntlp
:~ ns$kill -9 PID
我经常这样做。试试这种方式:
ps aux | grep script_Name
在这里,script_Name可以是nohup运行的任何脚本/文件。此命令为您获取一个进程 ID。然后使用下面的这个命令来杀死在 nohup 上运行的脚本。
kill -9 1787 787
这里,1787 和 787 是问题中提到的进程 ID 作为示例。这应该做问题中的意图。
如果您不知道 PID,请先使用 TOP 命令找到它
顶部 -U 用户标识
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
您将使用 top 获取 PID,然后执行 kill 操作。
$ kill -9 <PID>
今天我遇到了同样的问题。而且由于是很久以前的事了,我完全忘记了我使用的是哪个命令以及何时使用的。我尝试了三种方法:
ps -ef
。这显示了您开始进程的时间,并且很可能在您关闭 ssh(取决于您) 之前执行命令。不幸的是,我认为最新的命令不是我使用 nohup 运行的命令,所以这对我不起作用。ps -ef
命令中。表示父进程ID,即创建进程的进程ID。对于使用 nohup 运行的进程,在 ubuntu 中 ppid 为 1。然后您可以使用ps --ppid "1"
获取列表,并检查 TIME(您的进程使用的总 CPU 时间)或 CMD 以查找进程的 PID。lsof -i:port
,您将获得命令。然后就像上面的答案一样,使用ps -ef | grep command
,您将获得 PID。一旦找到进程的PID,就可以kill pid
用来终止进程。
这适用于mac上的mi很好
kill -9 `ps -ef | awk '/nohup/{ print \$2 }'`
关于失去你的putty
:通常ps ... | awk/grep/perl/...
过程也会匹配!所以老派的把戏是这样的
ps -ef | grep -i [n]ohup
这样正则表达式搜索与正则表达式搜索过程不匹配!
如果您在远程服务器上,请检查内存使用情况top
,并找到您的进程及其 ID。之后,只需执行kill [your process ID]
.