Câu trả lời:
Bạn có thể làm điều đó bằng cách sử dụng Process Explorer .
Chỉ cần di chuột bằng chuột trong một quá trình để xem các đối số dòng lệnh được sử dụng để khởi động nó:
Ngoài ra, bạn có thể mở các thuộc tính của quy trình và kiểm tra dòng lệnh ngay tại đó:
Bạn cũng có thể làm điều đó mà không cần Process Explorer, sử dụng dịch vụ WMI của Windows. Chạy phần sau từ dấu nhắc lệnh:
WMIC path win32_process get Caption,Processid,Commandline
Nếu bạn muốn kết xuất đầu ra vào một tệp (làm cho nó dễ đọc hơn một chút), hãy sử dụng công tắc / OUTPUT:
WMIC /OUTPUT:C:\Process.txt path win32_process get Caption,Processid,Commandline
Người ta cũng có thể đạt được điều đó bằng cách sử dụng Trình quản lý tác vụ .
Trình quản lý tác vụ mở (bằng CTRL-SHIFT-ESC, CTRL-ALT-DELETE hoặc bất kỳ phương thức nào khác).
Đối với Windows 7 (và có thể là Windows XP):
Đối với Windows 8:
Một cột các dòng lệnh sẽ được thêm vào các cột hiện được hiển thị.
PowerShell để giải cứu.
Tìm thấy:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'}
Và giết như tiền thưởng:
Get-WmiObject Win32_Process -Filter "name = 'perl.exe'" | where {$_.CommandLine -eq '"C:\strawberry\perl\bin\perl.exe" t/Server_PreFork.t'} | ForEach-Object { Invoke-WmiMethod -Path $_.__Path –Name Terminate }
Bạn có thể chạy nó từ powershell trực tiếp hoặc từ ps1 nếu bạn đã thiết lập hệ thống. Tôi mô tả chi tiết thiết lập kịch bản không giới hạn về việc tôi tiêu diệt zombie bằng các quyền hạn cũng như các thủ thuật sức mạnh khác ...
Câu trả lời trước là rất tốt trong trường hợp quá trình đã chạy và sẽ không chấm dứt sớm. Tuy nhiên Nếu bạn cần (như tôi đã làm) để làm điều này có lẽ với các quy trình khởi động nhiều lần và / hoặc nhanh chóng chấm dứt, hoặc có thể ghi nhật ký xảy ra trong một khoảng thời gian dài hơn, có một cách để sử dụng Trình theo dõi quy trình này .
Về cơ bản, nó ghi nhật ký các sự kiện khác nhau trong hệ thống, trong trường hợp này chúng ta chỉ có thể lọc sự kiện "Bắt đầu quá trình" và tên của quá trình chúng ta muốn theo dõi, như được hiển thị bên dưới:
Sau đó, chỉ cần giữ cho trình giám sát quy trình chạy và làm bất cứ điều gì bạn làm để có được quá trình bạn muốn đăng nhập đang chạy. Bạn có thể thấy trong cột "Chi tiết" hoặc cột "Dòng lệnh" (tùy thuộc vào cách bạn định cấu hình chúng) các đối số dòng lệnh. Ví dụ:
Tất nhiên theo cách này, bạn có thể trích xuất nhiều thông tin liên quan hơn như thư mục làm việc là gì, biến môi trường nào đã được truyền trong quá trình, v.v ... Ngoài ra, thật dễ dàng để xuất kết quả vào một tệp.
Khi sử dụng CygWin , nếu tôi bắt đầu một quy trình Python , đây là một ví dụ về dòng lệnh:
c:\CygWin\bin\python2.7.exe /usr/local/bin/sudoserver.py
Nhưng Process Explorer chỉ thấy exe chính:
(lưu ý "đường dẫn: [Thông báo quá trình mở lỗi]" (xem EDIT-1)). Kết quả tương tự cho tasklist
:
C:\>tasklist | find "python" /i
python2.7.exe 5740 Console 1 15.312 KB
Vì vậy, mẹo duy nhất tôi biết cho đến bây giờ, là tìm nó thông qua trình bao CygWin Bash pgrep
:
Luis@Kenobi /cygdrive/c/
$ pgrep -f -l server.py
5740 /usr/bin/python2.7 /usr/local/bin/sudoserver.py
Thật hữu ích khi biết điều này, miễn là CygWin sống thử không có vấn đề gì trong Windows và bạn có thể sử dụng nó để chạy nhiều chương trình POSIX và Python.
EDIT: Trong Windows, bạn dường như không cần quyền riêng tư của quản trị viên cho danh sách tác vụ. Trong CygWin, bạn sẽ cần chúng để có thể xem quy trình của quản trị viên (điều có vẻ hợp lý hơn với tôi: dòng lệnh đầy đủ có thể có một số tham số như mật khẩu bên trong), vì vậy chúng tôi phải chạy CygWin Bash trong Chế độ quản trị viên nâng cao .
EDIT-1: Vấn đề này sẽ không xảy ra nếu bạn chạy Process Explorer với tư cách quản trị viên. Cảm ơn bạn đã chỉ, @Pacerier.
[Error opening process message]