2012-06-04 38 views
28

Hi tôi có quy trình sau đây mà tôi không thể giết:Làm thế nào để giết một quá trình trong Cygwin?

The process to be killed.

Tôi đang chạy Cygwin trong cửa sổ xp 32 bit.

Tôi đã cố gắng ban hành các lệnh sau:

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

Khi tôi viết/bin/giết -f 4760 tôi nhận được tin nhắn, 'giết: không thể mở pid 4760'.

Khi tôi viết/bin/kill -9 5000 tôi nhận được thông báo 'giết: 5000: Không có quy trình như vậy'.

Tôi chỉ đơn giản là không hiểu tại sao quá trình này không thể bị giết. Vì nó có WINID nên nó không bị giết bởi/bin/kill -f 4760?

hy vọng ai đó có thể giúp thx :)

+3

1. start Cygwin là người dùng quản trị 2. Sử dụng các đường dẫn/bin/kill (kill là lệnh shell trong bash shell) 3./ bin/kill -f sau đó sẽ hoạt động –

+0

1. khởi động thiết bị đầu cuối Cygwin làm người dùng Quản trị viên 2. Sử dụng đường dẫn/bin/kill (kill đặc biệt trong bash shell) 3./bin/kill -9 -f sau đó công việc 4. Có thể cho các cửa sổ quy trình ở trong trạng thái mà chúng không thể bị giết (chẳng hạn như đang được gỡ lỗi) –

Trả lời

21

Quá trình này bị khóa nhiều nhất từ ​​Windows. Lỗi bạn đang nhận được "không thể mở PID XXX" điểm này. Để xác nhận thử giết nó với các cửa sổ taskkill

taskkill /PID 4760 
+0

Khi tôi nhập taskkill/PID 4760 hoặc taskkill/PID 5000 tôi gặp lỗi: 'L ERI: Quá trình " 4760 "không tìm thấy." – Diemauerdk

+0

Ngoài ra, trong nhiệm vụ Windows quản lý tôi không thể nhìn thấy quá trình. – Diemauerdk

+0

Bạn có thấy nó khi bạn thực hiện một danh sách tác vụ | grep "dscli" từ cửa sổ dòng lệnh? – kjp

2

chương trình Windows khác nhau sẽ xử lý các tín hiệu rằng kill gửi cách khác nhau; họ chưa bao giờ được thiết kế để đối phó với chúng theo cách tương tự như các chương trình Linux/Cygwin.

Phương pháp đáng tin cậy duy nhất để tiêu diệt chương trình Windows là sử dụng công cụ cụ thể của Windows, chẳng hạn như Trình quản lý tác vụ hoặc Trình khám phá quy trình.

Điều đó nói rằng, nếu bạn chưa có, bạn có thể gặp may khi chạy thiết bị đầu cuối Cygwin ở chế độ quản trị viên (nhấp chuột phải vào phím tắt của bạn và chọn "Chạy với tư cách quản trị viên").

1

Phương pháp được trình bày bởi @Donal Tobin là đúng:

kill -f <pid>

Tuy nhiên, tôi không cần phải đăng nhập as administrator.

8

Kỳ lạ thay, các công việc sau trong Cygwin:

echo PID1 PID2 PID3 | xargs kill -f 

Ví dụ:

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

Yếu tố quan trọng đối với tôi ở đây là đối số' -f' trong 'kill' . Thêm vào đó đã dừng lỗi "Không có quá trình như vậy". Cảm ơn! –

1

Tạo một tập tin gọi killall.sh với dòng này

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

Sau đó cung cấp cho nó thực hiện quyền.

chmod 777 killall.sh 

Trong .bash_profile của bạn thêm dòng này

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

Sau đó, bạn chỉ cần gõ "killall [name]"

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