Linux 如何获取进程ID以终止nohup进程?
我正在服务器上运行nohup进程。当我试图杀死它时,我的油灰控制台反而关闭了 以下是我如何尝试查找进程ID的方法:Linux 如何获取进程ID以终止nohup进程?,linux,bash,grep,nohup,Linux,Bash,Grep,Nohup,我正在服务器上运行nohup进程。当我试图杀死它时,我的油灰控制台反而关闭了 以下是我如何尝试查找进程ID的方法: ps -ef |grep nohup 这是杀戮的命令 kill -9 1787 787 使用nohup并将任务置于后台时,后台操作员(&)将在命令提示下为您提供PID。如果您的计划是手动管理流程,则可以保存该PID,并在需要时通过kill-PID或kill-9 PID(如果需要强制kill),稍后使用它终止流程。或者,您可以稍后通过ps-ef | grep“command
ps -ef |grep nohup
这是杀戮的命令
kill -9 1787 787
使用
nohup
并将任务置于后台时,后台操作员(&
)将在命令提示下为您提供PID。如果您的计划是手动管理流程,则可以保存该PID,并在需要时通过kill-PID
或kill-9 PID
(如果需要强制kill),稍后使用它终止流程。或者,您可以稍后通过ps-ef | grep“command name”
找到PID,并从中找到PID。请注意,nohup
关键字/命令本身不会出现在相关命令的ps
输出中
如果使用脚本,可以在脚本中执行以下操作:
nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt
这将运行my_命令
将所有输出保存到my.log
(在脚本中,$!
表示最后执行的进程的PID)。2
是标准错误(stderr
)的文件描述符,2>&1
告诉shell将标准错误输出路由到标准输出(文件描述符1
)。它需要&1
,以便shell知道它是该上下文中的文件描述符,而不仅仅是名为1
的文件。需要使用2>&1
将通常写入标准错误的任何错误消息捕获到我们的my.log
文件(来自标准输出)。有关使用shell处理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
然后在第一列中找到您的用户名;我三次发现它:
- 一个是SSH连接
- 第二个是FTP连接
- 最后一个是nohup过程
kill PID
(当然,用nohup过程的PID替换PID)
就这样
我希望这个答案对我也是bash和SSH新手的人有用,但我在这里找到了我需要的95%的知识:)你可以试试
kill -9 `pgrep [command name]`
假设我在后台使用下面的命令运行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
xxxxx 9643 0.0 0.0 14232 968 pts/2
现在,您可以使用kill命令轻松地终止进程
kill 25938
作业-l应为您提供nohup进程列表的pid。 轻轻地杀死他们。
;) 这在
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-9315
僵尸进程终于停止了。我用以下命令启动了django服务器
nohup manage.py runserver <localhost:port>
假设您正在使用nohup执行一个java程序,您可以通过
`ps aux | grep java`
输出
ubuntu 25938 25742 0 05:16 pts/0 00:00:00 ruby test.rb
xxxxx 9643 0.0 0.0 14232 968 pts/2
然后,您可以通过键入
sudo kill 9643
或者说,您需要杀死所有java进程,然后使用
sudo killall java
此命令将终止所有java进程。您可以将其与流程一起使用。只需在命令末尾给出进程名称
sudo killall {processName}
当您在nohup中创建作业时,它会告诉您进程ID
nohup sh test.sh &
输出将向您显示进程ID,如
25013
你可以杀了它:
kill 25013
今天我遇到了同样的问题。因为那是很久以前的事了,我完全忘记了我使用的是哪个命令和什么时候。我尝试了三种方法:
ps-ef
命令中显示的时间。这显示了启动进程的时间,并且很可能在关闭ssh之前(取决于您)nohup您的命令。不幸的是,我不认为最新的命令是我使用nohup运行的命令,所以这对我不起作用ps-ef
命令中。它表示父进程ID,即创建进程的进程ID。在ubuntu中,使用nohup运行的进程的ppid为1。然后可以使用ps--ppid“1”获取列表,并检查TIME(进程使用的CPU总时间)或CMD以查找进程的PIDlsof-i:port
,您将得到命令。然后就像上面的答案一样,使用ps-ef | grep命令
,您将得到PID找到进程的PID后,可以使用
kill PID
终止进程。这适用于mac上的mi fine
kill -9 `ps -ef | awk '/nohup/{ print \$2 }'`
关于失去你的
putty
:通常是ps…|awk/grep/perl/…
过程也得到了匹配!所以老派的把戏是这样的
ps -ef | grep -i [n]ohup
这样,正则表达式搜索与正则表达式搜索过程不匹配 如果您在远程服务器上,请使用
top
检查内存使用情况,并找到您的进程及其ID。然后,只需执行kill[您的进程ID]
,我经常这样做。试着这样做:
ps aux | grep script_Name
在这里,脚本名称可以是nohup运行的任何脚本/文件。
此命令将为您获取进程ID。然后使用下面的命令杀死运行在nohup上的脚本
kill -9 1787 787
这里,1787和787是作为示例的问题中提到的进程ID。
这应该符合问题中的意图。如果您的应用程序始终使用同一端口,您可以像这样终止该端口中的所有进程
kill-9$(lsof-t-i:8080)
如果你