【问题标题】:How to kill a process in cygwin?如何杀死cygwin中的进程?
【发布时间】:2012-06-08 07:27:13
【问题描述】:

您好,我有以下无法杀死的进程:

我在 windows xp 32 位中运行 cygwin。

我已尝试发出以下命令:

/bin/kill -f 4760
/bin/kill -9 5000
kill -9 5000
kill 5000

当我写 /bin/kill -f 4760 时,我收到消息“kill: 无法打开 pid 4760”。

当我写 /bin/kill -9 5000 时,我收到消息,'kill: 5000: No such process'。

我只是不明白为什么这个进程不能被杀死。 既然它有一个WINID,不应该被/bin/kill -f 4760杀死吗?

希望有人可以帮助谢谢 :)

【问题讨论】:

  • 1.以管理员用户身份启动 cygwin 2. 使用路径 /bin/kill(kill 是 bash shell 中的一个 shell 命令) 3. /bin/kill -f 然后应该可以工作
  • 1.以管理员用户身份启动 Cygwin 终端 2. 使用路径 /bin/kill(kill 在 bash shell 中是特殊的) 3. /bin/kill -9 -f 然后应该可以工作 4. Windows 进程可能是处于不能被杀死的状态(比如被调试)

标签: process cygwin kill


【解决方案1】:

该进程很可能已从 Windows 锁定。您收到“无法打开 PID XXX”的错误指出了这一点。 要确认尝试使用 windows taskkill 杀死它

    taskkill /PID 4760

【讨论】:

  • 当我输入 taskkill /PID 4760 或 taskkill /PID 5000 我得到错误:'错误:找不到进程“4760”。'
  • 做tasklist的时候看到了吗 |从 Windows 命令行 grep "dscli"?
  • 在 Windows 7 上工作,我使用 $ taskkill /F /PID <WINPID>,如果我使用 $ ps -a,则会显示 <WINPID>
【解决方案2】:

奇怪的是,以下在 Cygwin 中有效:

echo PID1 PID2 PID3 | xargs kill -f

例如:

ps -W | grep WindowsPooPoo | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done;

【讨论】:

  • 对我来说重要的因素是kill 中的-f 参数。添加停止“没有这样的过程”错误。谢谢!
【解决方案3】:

不同的Windows程序会以不同的方式处理kill发送的信号;它们从未像 Linux/Cygwin 程序那样被设计用来处理它们。

杀死 Windows 程序的唯一可靠方法是使用 Windows 特定工具,例如任务管理器或进程资源管理器。

也就是说,如果您还没有在管理员模式下运行 Cygwin 终端,您可能会很幸运(右键单击您的快捷方式并选择“以管理员身份运行”)。

【讨论】:

    【解决方案4】:

    @Donal Tobin 提出的方法是正确的:

    kill -f <pid>

    但是,我不需要以管理员身份登录。

    【讨论】:

      【解决方案5】:

      用这一行创建一个名为 killall.sh 的文件

      ps -W | grep $1 | awk '{print $1}' | while read line; do echo $line | xargs kill -f; done;
      

      然后给它执行权限。

      chmod 777 killall.sh
      

      在你的 .bash_profile 添加这一行

      alias killall="~/killall.sh"   (point it to the correct location)
      

      然后你只需输入“killall [name]”

      【讨论】:

        【解决方案6】:

        killall.sh - 按进程名称杀死。

        #/bin/bash
        ps -W | grep "$1" | awk '{print $1}' | xargs kill -f;
        

        用法:

        $ killall <process name>
        

        【讨论】:

          【解决方案7】:

          对我来说,这个命令在 Cygwin 中的 Windows 10 上工作:

          $ kill -f 15916
          bash: kill: (15916) - No such process
          

          你可以使用下一个命令来代替它:

          $ powershell kill -f 15916
          
          $ netstat -ano | grep ':8080' | awk '{print $5}' | xargs powershell kill -f
          
          $ netstat -ano | grep ':8080' | awk '{print $5}' | while read pid; do powershell kill -f $pid; done;
          
          $ netstat -ano | grep ':8080' | awk '{sub(/\r/,"",$5) ; print $5}' | while read pid; do taskkill /F /PID $pid; done;
          SUCCESS: The process with PID 15916 has been terminated.
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-01-14
            • 1970-01-01
            • 2011-12-21
            • 2019-01-07
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多