Kịch bản của tôi chấp nhận một tên quy trình làm đầu vào và giết chết nó. Tôi đã thử sử dụng pgrep nhưng nó trả về hai PID, một cho quy trình đang chạy và một cho tập lệnh chấp nhận tên quy trình làm đầu vào, vì vậy bị kẹt! Tôi cũng đã thử sử dụng pgrep
-fo
tùy chọn này nhưng điều đó cũng không giúp được gì. Bất kỳ đề nghị sẽ là hữu ích. Đây là kịch bản của tôi
#!/bin/bash
ProcessName=$1
pID= pgrep -fl $ProcessName
echo $pID
Vì vậy, khi tôi gọi tập lệnh, nó sẽ trả về hai PID:
bash-3.00$ ./dynamic_values.sh test-Process
10534 /xxx/xxo/xxx/xxe --run --propFile /application/test/test-Process_Archive.tra --innerProcess
23401 /bin/bash ./dynamic_values.sh test-Process
Tôi đã mong đợi chỉ 10534, nhưng nó cũng chọn kịch bản. Phiên bản HĐH chỉ trong trường hợp:
bash-3.00$ uname -a
Linux xxxxxx 2.6.9-67.0.1.
pkill
khi sử dụng -f
(mà anh ấy đang làm) sẽ có cùng một vấn đề.
-x
kết hợp với -f
để đảm bảo bạn phù hợp với toàn bộ? Tôi ngạc nhiên pkill
không có cách xây dựng để xử lý việc này.
pkill
tự sát trước khi giết các quá trình tôi muốn giết, vì vậy tôi luôn cho rằng việc thực hiện là tốt.
pkill
. Nó sử dụng logicpgrep
tìm kiếm quá trình tương tự như vậy vì vậy bạn đã biết cách sử dụng nó để tìm quy trình của mình, nhưng thay vì trả lại cho bạn, nó chỉ đi trước và gửi cho họ tín hiệu tiêu diệt cho bạn. Đồng thời, nó cũng quan tâm đến các chi tiết như không tự sát.