tôi đã bắt đầu
while true; do yad; sleep 60; done &
và đóng thiết bị đầu cuối để kiểm tra nó, bây giờ tôi gặp vấn đề tương tự.
Nếu bạn đã đóng thiết bị đầu cuối, bạn đã bắt đầu vòng lặp trong
Chúng ta hãy xem tổng quan về các quy trình đang chạy với ps fjx
, các dòng cuối cùng trên máy của tôi đọc
2226 11606 11606 19337 ? -1 S 1000 0:00 \_ /bin/bash
11606 22485 11606 19337 ? -1 S 1000 0:00 | \_ sleep 10
2226 9411 9411 8383 ? -1 S 1000 0:00 \_ /bin/bash
9411 17674 9411 8383 ? -1 Sl 1000 0:00 \_ yad
1 2215 2215 2215 ? -1 Ss 1000 0:00 /lib/systemd/systemd --user
2215 2216 2215 2215 ? -1 S 1000 0:00 \_ (sd-pam)
Bạn có thể xem yad
như là một quy trình con của /bin/bash
, nếu tôi đóng yad
nó sẽ thay đổi thành sleep 60
đầu ra của ps
. Nếu chế độ xem dạng cây quá khó hiểu, bạn cũng có thể tìm kiếm đầu ra như sau 1 :
ps fjx | grep "[y]ad" # or respectively
ps fjx | grep "[s]leep 60"
Các dòng đầu ra bắt đầu bằng hai số, số đầu tiên là PPID, ID tiến trình của quy trình mẹ và số thứ hai là PID, ID của chính quy trình. Đó là vì điều đó 9411
xuất hiện trong cả hai hàng ở đây:
2226 9411 9411 8383 ? -1 S 1000 0:00 \_ /bin/bash
9411 17674 9411 8383 ? -1 Sl 1000 0:00 \_ yad
Đó là mạng con bash
mà chúng tôi muốn giết và chúng tôi đã tìm ra PID của nó, vì vậy bây giờ mọi thứ còn lại là đơn giản
kill 9411 # replace 9411 with the PID you found out!
và subshell gây phiền nhiễu là đi cho tốt.
1 : Ký hiệu grep "[y]ad"
thay vì chỉ đơn giản grep yad
ngăn grep
quá trình tự hiển thị trong danh sách kết quả.
Nếu bạn có thiết bị đầu cuối vẫn mở
bash
cung cấp biến số $!
, mà Cameron mở rộng tới ID tiến trình của công việc được đặt gần đây nhất vào nền, vì vậy, sau đây chỉ giết chết quy trình mới nhất trong nền:
kill $!
Nếu đó không phải là quy trình mới nhất, chỉ có thể nhận danh sách các công việc đang chạy với jobs
nội dung ví dụ dựng sẵn:
[1]- Running while true; do
yad; sleep 60;
done &
[2]+ Stopped sleep 10
Có hai công việc trong danh sách công việc, để tiêu diệt một trong số chúng, bạn có thể truy cập nó bằng số công việc hoặc các phím tắt %
, %+
(Công việc hiện tại, một) và %-
(công việc trước đó, trước đó) Có thể làm
kill %1 # or
kill %-
và để giết sleep 10
công việc bị đình chỉ :
kill %2 # or
kill %+ # or
kill %
top
để giết tiến trình bằng cách nhấnk
, sau đó nhập PID, sau đó nhấn enter hai lần.