2013-06-11 35 views
10

Tôi muốn giết tất cả các quy trình công cụ đang chạy. Tôi đang sử dụng này:Giết một quá trình nếu nó tồn tại

sudo killall instruments

Tôi đang sử dụng này trong một kịch bản và đôi khi quá trình này không hoạt động và nó dừng lại kịch bản của tôi nói rằng không có tiến trình với tên đó đang chạy.

Làm cách nào để kiểm tra xem một quy trình cụ thể có đang chạy không? Dụng cụ trong trường hợp của tôi.

+2

'ps -ax | grep cụ | grep -v grep | wc -l' sẽ là phi không nếu có một quá trình với 'instruments' trong tên. –

Trả lời

8
sudo killall instruments 2>/dev/null 

chưa đủ?

+0

"killall" rất hữu ích =) – IvanM

6

Bạn có thể sử dụng pgrep <proc> để tìm kiếm một quá trình có tên <proc>

if pgrep instruments &> /dev/null ; then sudo killall instruments ; fi
+4

Nếu bạn đang sử dụng 'pgrep', cũng có thể sử dụng' pkill' –

+0

@glennjackman tất nhiên, cảm ơn! Tôi vừa chỉ ra cách người ta có thể tìm kiếm một quá trình, để giết một quá trình bằng tên của mình 'killall' là đủ và OP biết nó. – giordano

19

Nếu kịch bản của bạn đang kết thúc, bạn có nhiều khả năng kích hoạt set -e, để thoát ra khi một lệnh thất bại.

Nếu bạn không quan tâm về tình trạng này, bạn chỉ có thể nối thêm || true để lệnh:

sudo killall instruments || true 
Các vấn đề liên quan