首页 文章

如何获取进程ID以杀死nohup进程?

提问于
浏览
153

我正在服务器上运行nohup进程 . 当我试图杀死它时,我的腻子控制台会关闭 .

这是我尝试查找进程ID的方法:

ps -ef |grep nohup

这是杀人的命令

kill -9 1787 787

8 回答

  • 1

    使用 nohup 并将任务放在后台时,后台运算符( & )将在命令提示符下为您提供PID . 如果您的计划是手动管理该过程,您可以保存该PID并在以后使用它来通过 kill PIDkill -9 PID (如果您需要强制终止)终止该过程 . 或者,您可以稍后通过 ps -ef | grep "command name" 找到PID并从那里找到PID . 请注意 nohup keyword / command本身不会出现在相关命令的 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 .

    如果命令定期发送输出,您可以使用 tail my.log 偶尔检查输出,或者如果您想跟随它"live",您可以使用 tail -f my.log . 最后,如果您需要终止进程,可以通过以下方式执行:

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

    我在VPS服务器上使用red hat linux(并通过SSH-putty),对我来说,以下工作:

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

    ps -ef
    

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

    • 一个是SSH连接

    • 第二个是FTP连接

    • 最后一个是nohup过程

    然后在第二列中,您可以找到nohup进程的PID,并且只键入:

    kill PID
    

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

    就是这样!

    我希望这个答案对于那些我也很擅长bash和SSH的人有用,但是我发现我需要95%的知识:)

  • 4

    假设我使用下面的命令在后台运行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
    
  • 12

    jobs -l 应该为你提供nohup进程列表的pid . 轻轻地杀死它们(-9) . ;)

  • 1

    你可以试试

    kill -9 `pgrep [command name]`
    
  • 0

    这适用于 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

    僵尸进程终于停止了 .

  • 61

    我使用以下命令启动了django服务器 .

    nohup manage.py runserver <localhost:port>
    

    这适用于CentOS:

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

    假设您正在使用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}
    

相关问题