Có tiện ích dòng lệnh nào giết chết tất cả các quy trình với một dòng lệnh cụ thể không?
Ví dụ: giết tất cả các quy trình có tên "java.exe" bằng một dòng lệnh có chứa "-jar selenium-server.jar". Điều này có thể thông qua quá trình thám hiểm.
Có tiện ích dòng lệnh nào giết chết tất cả các quy trình với một dòng lệnh cụ thể không?
Ví dụ: giết tất cả các quy trình có tên "java.exe" bằng một dòng lệnh có chứa "-jar selenium-server.jar". Điều này có thể thông qua quá trình thám hiểm.
Câu trả lời:
Trong Windows XP, bạn có thể thực hiện điều này một cách dễ dàng với WMIC, Bảng điều khiển WMI . Từ một propt lệnh, gõ như sau:
wmic Path win32_process Where "CommandLine Like '%-jar selenium-server.jar%'" Call Terminate
Chỉnh sửa:
Tôi đã thay thế bí danh ' process ' bằng đường dẫn đầy đủ (' path win32_ process ') như cổng Aviator. Bí danh này có thể không được khai báo trên mọi HĐH.
Nếu bạn đang sử dụng phiên bản Windows có lệnh WMIC. Bạn có thể thử cái này
wmic path win32_process Where "Caption Like '%java.exe%' AND CommandLine Like '%selenium.jar%'" get ProcessId|more +1
Dòng này more +1
loại bỏ dòng đầu tiên chứa tiêu đề và chỉ in một mình PID. Nếu có nhiều hơn một quy trình java có chứa selenium.jar thì điều này sẽ trả về một PID trên mỗi dòng.
Tôi tin rằng bạn có thể làm điều này với PowerShell bằng cách sử dụng Get-Process và StartInfo.Argument về quy trình bạn muốn.
$procs = Get-Process java
foreach($proc in $procs)
{
if($proc.StartInfo.Arguments -contains "-jar selenium-server.jar")
{
kill $proc
}
}
(Tôi chưa kiểm tra hoàn toàn điều đó, nhưng bạn sẽ có thể điều chỉnh nó để làm cho nó hoạt động)
Quyền hạn: -
$oProcs = get-process explorer;foreach ($oProc in $oProcs){if ($oProc.Path.Contains('C:\Windows')) {Stop-Process $oProc.Id}}
Tôi sử dụng một biến thể của tập lệnh PowerShell của Brain .
Điều này xuất ra dòng lệnh và thông tin khác là tốt.
$processes = Get-WmiObject Win32_Process -Filter "name = 'java.exe'"
foreach($proc in $processes)
{
if($proc.CommandLine.Contains("selenium-server.jar"))
{
Write-Host "stopping proccess $($proc.ProcessId) with $($proc.ThreadCount) threads; $($proc.CommandLine.Substring(0, 50))..."
Stop-Process -F $proc.ProcessId
} else
{
Write-Host "skipping proccess $($proc.ProcessId) with $($proc.ThreadCount) threads; $($proc.CommandLine.Substring(0, 50))..."
}
}
Một biến thể quyền hạn khác. Về cơ bản là giống nhau, có lẽ dễ gõ và nhớ hơn. -match thực sự có thể có một biểu thức thông thường.
get-wmiobject win32_process | where commandline -match selenium-server.jar
| remove-wmiobject