我正在服务器上运行nohup进程 . 当我试图杀死它时,我的腻子控制台会关闭 .
这是我尝试查找进程ID的方法:
ps -ef |grep nohup
这是杀人的命令
kill -9 1787 787
使用 nohup 并将任务放在后台时,后台运算符( & )将在命令提示符下为您提供PID . 如果您的计划是手动管理该过程,您可以保存该PID并在以后使用它来通过 kill PID 或 kill -9 PID (如果您需要强制终止)终止该过程 . 或者,您可以稍后通过 ps -ef | grep "command name" 找到PID并从那里找到PID . 请注意 nohup keyword / command本身不会出现在相关命令的 ps 输出中 .
nohup
&
kill PID
kill -9 PID
ps -ef | grep "command name"
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 Redirection .
my_command
my.log
$!
2
stderr
2>&1
1
&1
如果命令定期发送输出,您可以使用 tail my.log 偶尔检查输出,或者如果您想跟随它"live",您可以使用 tail -f my.log . 最后,如果您需要终止进程,可以通过以下方式执行:
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过程
然后在第二列中,您可以找到nohup进程的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]`
这适用于 Ubuntu
Ubuntu
输入以查找 PID
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
kill -9 3315
僵尸进程终于停止了 .
我使用以下命令启动了django服务器 .
nohup manage.py runserver <localhost:port>
这适用于CentOS:
:~ ns$netstat -ntlp :~ ns$kill -9 PID
假设您正在使用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}
8 回答
使用
nohup
并将任务放在后台时,后台运算符(&
)将在命令提示符下为您提供PID . 如果您的计划是手动管理该过程,您可以保存该PID并在以后使用它来通过kill PID
或kill -9 PID
(如果您需要强制终止)终止该过程 . 或者,您可以稍后通过ps -ef | grep "command name"
找到PID并从那里找到PID . 请注意nohup
keyword / command本身不会出现在相关命令的ps
输出中 .如果您使用了脚本,则可以执行以下操作:
这将运行
my_command
将所有输出保存到my.log
(在脚本中,$!
表示执行的最后一个进程的PID) .2
是标准错误(stderr
)的文件描述符,2>&1
告诉shell将标准错误输出路由到标准输出(文件描述符1
) . 它需要&1
,以便shell知道它是该上下文中的文件描述符,而不仅仅是名为1
的文件 . 需要2>&1
来捕获通常写入标准错误的任何错误消息到我们的my.log
文件(来自标准输出) . 有关使用shell处理I / O重定向的更多详细信息,请参阅I/O Redirection .如果命令定期发送输出,您可以使用
tail my.log
偶尔检查输出,或者如果您想跟随它"live",您可以使用tail -f my.log
. 最后,如果您需要终止进程,可以通过以下方式执行:我在VPS服务器上使用red hat linux(并通过SSH-putty),对我来说,以下工作:
首先,列出所有正在运行的进程:
然后在第一列中找到您的用户名;我发现它有以下三次:
一个是SSH连接
第二个是FTP连接
最后一个是nohup过程
然后在第二列中,您可以找到nohup进程的PID,并且只键入:
(当然用nohup进程的PID替换PID)
就是这样!
我希望这个答案对于那些我也很擅长bash和SSH的人有用,但是我发现我需要95%的知识:)
假设我使用下面的命令在后台运行ruby脚本
然后我可以通过指定命令名来获得上述后台进程的pid . 在我的情况下命令是ruby .
产量
现在,您可以使用kill命令轻松终止进程
jobs -l 应该为你提供nohup进程列表的pid . 轻轻地杀死它们(-9) . ;)
你可以试试
这适用于
Ubuntu
输入以查找
PID
将显示有关java的所有运行过程
在我的情况下是
现在杀了它
kill -9 3315
僵尸进程终于停止了 .
我使用以下命令启动了django服务器 .
这适用于CentOS:
假设您正在使用nohup执行java程序,您可以获取java进程ID
产量
然后你可以通过输入来杀死进程
或者让我们说你需要杀死所有的java进程然后才使用
此命令会杀死所有Java处理器 . 你可以用这个过程 . 只需在命令末尾给出进程名称