2013-10-23 11 views
6

nếu tôi sử dụng "ps -efW", nó liệt kê các quy trình cửa sổ nhưng không có đối số dòng lệnh.Cách xem quy trình với đối số trong cửa sổ bằng cách sử dụng bất kỳ tiện ích cygwin nào

tôi đã xem 3 liên kết được yêu cầu sử dụng "pstree", "/ proc/PID/cmdline", "procps".

http://cygwin.com/ml/cygwin/2007-04/msg00813.html

http://cygwin.com/ml/cygwin/2007-04/msg00817.html

http://cygwin.com/ml/cygwin/2007-04/msg00821.html

nhưng tôi không tìm thấy trừ procps trong gói 32 bit Cygwin.

ngay cả sau khi cài đặt procps, tôi không biết cách sử dụng. đọc trang người đàn ông. nhưng không nhận được bất kỳ đầu mối nào.

ai đó có thể giúp bạn không?

ví dụ:

sử dụng lệnh wmic tôi có thể xem quy trình hoàn chỉnh với đối số.

C:\Users\test1>wmic process get ProcessID, Commandline /format:csv |grep cmd 
OSWIN7VC10-32B1,"C:\Windows\system32\cmd.exe" ,2904 
OSWIN7VC10-32B1,C:\Windows\system32\cmd.exe /c c:\ostore74\src\osci\scripts\buil 
d_test\nt\batch_conf\winnt_vc100_weekly.bat >C:\Users\test1\AppData\Local\Tem 
p\s1io.4 2>C:\Users\test1\AppData\Local\Temp\s1io.5,3968 
OSWIN7VC10-32B1,C:\Windows\system32\cmd.exe /c C:\apache-ant-1.7.1\bin\ant.bat - 
Djboss.home=C:\ostore74\tmp\javaee\jboss-4.2.3.GA -emacs -k -f C:\ostore74\src\j 
mtl\build.xml overnight >> \\ostorenas\odi\ostore_platform_logs\ostore\7.4 
.0\test1\winnt_vc100\2013-10-18-1720\unit_retail_jmtl.log 2>&1,1864 
OSWIN7VC10-32B1,"C:\Windows\system32\cmd.exe" ,604 
OSWIN7VC10-32B1,grep cmd,2064 

nhưng sử dụng lệnh ps Cygwin.

C:\Users\test1>ps -efW |grep cmd 
     0 2904  0 ?   Oct 17 C:\Windows\System32\cmd.exe 
     0 3968  0 ?   Oct 18 C:\Windows\System32\cmd.exe 
     0 1864  0 ?   Oct 18 C:\Windows\System32\cmd.exe 
     0 3200  0 ?  08:39:43 C:\Windows\System32\cmd.exe 

Trả lời

6

Nếu bạn cần lập luận duy nhất cho quá trình Cygwin, bạn có thể sử dụng

procps -wwFAH 

hoặc

pstree -a 

(pstree là một phần của gói psmisc).

Nếu bạn cần đối số cho quy trình Windows, bạn cũng có thể sử dụng wmic (nó hoạt động trong trình bao Cygwin). Hoặc bạn có thể thử vá process.c của win7util package để bao gồm dòng lệnh đầy đủ.

1

Lời nói đầu: Ok ... Vì vậy, đây thực sự là một điều gây phiền nhiễu. Có vẻ như không có cách nào khả thi để lập trình thông tin này vào Cygwin. Bất cứ khi nào tôi bắt đầu một giải pháp, phải mất hơn 20 phút, loại bỏ đường dẫn/giải pháp và ghi lại nó. Sử dụng WMI, Wmic, thậm chí kéo từ registry, trở nên vô lý. Không có gì được cung cấp đáng tin cậy, và hầu hết thời gian ngay cả WMI cũng không liệt kê dòng CMD. Luôn luôn kết thúc việc xây dựng một máy phân tích dll/exe.

Sau đó, hôm nay tôi đã làm một số công việc DLL, không phân biệt Cygwin và gõ "listdlls". Lúc đầu, tôi nghĩ rằng nó chỉ là một số chức năng cuộn hoặc bí danh, rất có thể là của Nirsoft RegDLLView. Nhưng nhanh chóng nhận ra nó có lẽ là listdlls.exe của Sysinternal, đó là dòng lệnh!

Giải pháp:

  • nhìn lên và lưu trữ pid cho tên thực thi thuật ngữ tìm kiếm
  • cửa hàng kết quả của "listdlls.exe"
  • lặp qua mảng của PID \
  • tra cứu tên quá trình pid \
  • in dòng lệnh phù hợp cho tên quá trình chống lại listdlls quả

Ví dụ thô (phụ thuộc = listdlls.exe, grep , awk, ps "procps"):

__getexecmd() { 
    [ -z "[email protected]" ] && return 1 
    local term="[email protected]" 
    hash listdlls || return 1 
    local dlls="$(listdlls)" 
    for i in $(ps -Wa | awk '/'"$term"'/ {print $1}'); do 
     echo "$dlls" | grep -A1 "$i" | awk '/Command\ line\:/{gsub(/Command\ line\:\ /,"");print $0}' 
    done 
    return 0 
} 

tôi thực sự nghĩ rằng đây là những gì bạn đang theo đuổi Hãy cho tôi biết Cheers

..
+0

Chức năng "__getexeccmd" này là gì? Đó không phải là một hàm bash. Làm thế nào là ai đó phải sử dụng này? –

+0

Sử dụng nó tuy nhiên bạn muốn ... Bạn có thể tải nó vào hồ sơ bash của bạn, có thể là một tên thân thiện .... Bạn có thể dễ dàng chuyển đổi nó thành một kịch bản bash, ném nó trong "usr/bin" hoặc bí danh nó. – jonretting

Các vấn đề liên quan