【发布时间】:2015-01-27 13:40:22
【问题描述】:
这个问题对某些人来说可能很明显,但我在整个互联网上搜索并找不到答案。我正在关注 Strut 上的安装指南。如何停止 Grunt 任务?我正在运行 Windows 7。
【问题讨论】:
-
是的,我也是这么想的,但是它没有后台进程?
这个问题对某些人来说可能很明显,但我在整个互联网上搜索并找不到答案。我正在关注 Strut 上的安装指南。如何停止 Grunt 任务?我正在运行 Windows 7。
【问题讨论】:
如果这是您当前正在运行的任务,您可以使用ctrl + c 停止它
如果它是在后台运行的任务,您可以使用 ps aux | grep grunt 找到他的进程 ID (pid),然后使用 kill {pid} 将其杀死
【讨论】:
netstat -bo 和 taskkill /PID {pid} 适用于 Windows 7。谢谢,我用 ctrl+c 解决了这个问题。没有后台进程。
kill -9 {pid},因为我的 grunt 任务陷入了无限循环
杀死当前正在运行的 grunt 任务的 liner:
kill -9 $(ps aux | grep -v "grep" | grep grunt | awk '{print $2}')
解释:
Kill是结束进程的命令
-9 选项用于ensure the process is actually killed 如果卡在循环中
ps -aux列出当前正在运行的进程
grep -v "grep" 排除任何带有单词 grep 的行,因此我们不会终止当前正在运行的 grep 命令
grep grunt 只是返回带有 grunt 的行
最后 awk '{print $2}' 返回第二列中的数字,即 pid。这就是传递给杀死的东西。
【讨论】:
一个更短的解决方案,像 Felix Eve 的巧妙技巧:
kill -9 $(ps -aux | grep "[g]runt" | awk '{print $2}')
[] 避免在 grep 中使用“grunt”一词,因此不会被意外删除。
【讨论】:
grunt 不再运行的麻烦行为,并且在没有 pid 的情况下发出 kill -9 时会出现错误。我改为这样做:ps -aux | grep '[g]runt' | awk '{print $2}' | tee >(xargs -I {} kill -9 {})。这样做的好处是,在某些东西被杀死时向我显示 PID,而在没有东西被杀死时不显示 pid - 所以这是很好的视觉反馈。
在 Powershell 中,运行 Get-Process cmdlet 以列出所有进程,或使用逗号分隔的列表进行过滤(通配符也可以)。它的别名是ps。例如:
Get-Process grunt, node
或
ps grunt, node
一旦确定了进程 ID(右起第三列,“Id”),就可以使用Stop-Process 结束它。它的别名是kill。例如:
Stop-Process 2570
或
kill 2570
我发布此内容是因为问题和评论者要求安装 Windows,而 grep 在我的 Windows 10 安装中不起作用,其 Powershell 等效项 Select-String 不能令人满意地返回完整过程信息。幸运的是 Get-Process 有自己的过滤器!
【讨论】: