Làm thế nào để đình chỉ và tiếp tục quá trình


143

Trong thiết bị đầu cuối bash tôi có thể nhấn Control+ Zđể tạm dừng bất kỳ quy trình đang chạy nào ... sau đó tôi có thể nhập fgđể tiếp tục quy trình.

Có thể tạm dừng một quá trình nếu tôi chỉ có nó không? Và nếu vậy, tôi nên sử dụng lệnh nào?

Tôi đang tìm kiếm một cái gì đó như:

suspend-process $PID_OF_PROCESS

và sau đó tiếp tục nó với

resume-process $PID_OF_PROCESS

Câu trả lời:


172

Bạn có thể sử dụng killđể dừng quá trình.

Để dừng 'lịch sự' đối với quy trình (thích điều này cho sử dụng bình thường), hãy gửi SIGTSTP:

kill -TSTP [pid]

Để dừng lại "khó khăn", hãy gửi SIGSTOP:

kill -STOP [pid]

Lưu ý rằng nếu quy trình bạn đang cố gắng dừng bằng PID nằm trong bảng công việc của trình bao, thì nó có thể vẫn hiển thị ở đó, nhưng chấm dứt, cho đến khi quy trình được fglặp lại.

Để tiếp tục thực hiện quy trình, đã gửi SIGCONT:

kill -CONT [pid]

25
Trừ khi có những lý do khác cho nó, tôi thích SIGTSTP hơn SIGSTOP, vì một số ứng dụng xử lý SIGTSTP đặc biệt. Ví dụ: nếu scp hiển thị thanh tiến trình, SIGTSTP sẽ khiến nó dọn sạch chế độ đầu cuối trước khi tạm dừng, nhưng nếu bạn gửi SIGSTOP, nó sẽ không có cơ hội để làm như vậy.
ephemient

3
@ephemient Tôi đã thử SIGTSTP, tôi đã thấy những gì bạn đang nói về việc làm sạch thiết bị đầu cuối. Cảm ơn lời giải thích của SIGTSTP, alawys rất tốt để học những điều mới :)
Steve Burdine

2
Cũng hữu ích để lưu ý rằng bạn có thể tham chiếu giá trị [pid] bằng cách sử dụng ký hiệu% và sau đó là số công việc (một số mà bạn có thể tìm thấy bằng cách chạy jobs). Vì vậy, bạn sẽ đi:kill -TSTP %1
Karoh


43

Bạn nên sử dụng killlệnh cho điều đó.

Để dài dòng hơn - bạn phải xác định đúng tín hiệu , nghĩa là

$ kill -TSTP $PID_OF_PROCESS

đình chỉ quá trình và

$ kill -CONT $PID_OF_PROCESS

để nối lại nó Tài liệu ở đây .


Tôi tự hỏi tai nạn nào của lịch sử đã dẫn đến câu trả lời này nhận được ít phiếu hơn? Các câu trả lời gần giống nhau và câu trả lời này xuất hiện đầu tiên ....
Wildcard

7
@Wildcard, khi tôi tạo câu trả lời, tôi hơi vội vàng, do đó, về cơ bản, nó chỉ chứa phần đầu tiên kill -TSTP(ví dụ như cách tạm dừng). 1/2 năm sau, tức là năm 2011, tôi đã xem lại câu trả lời của mình và nhận thấy sự không hoàn hảo của nó. Vì vậy, tôi chỉnh sửa nó và thêm kill -CONTphần. Điều này sẽ giải thích sự khác biệt về số phiếu so với câu trả lời của Steve.
maxschlepzig
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.