Một công việc bị dừng là một công việc đã tạm thời được đưa vào nền và không còn chạy nữa, nhưng vẫn đang sử dụng tài nguyên (tức là bộ nhớ hệ thống). Vì công việc đó không được gắn vào thiết bị đầu cuối hiện tại, nó không thể tạo đầu ra và không nhận được đầu vào từ người dùng.
Bạn có thể thấy các công việc bạn đang chạy bằng jobs
lệnh dựng sẵn trong bash, có thể là các shell khác. Thí dụ:
user@mysystem:~$ jobs
[1] + Stopped python
user@mysystem:~$
Bạn có thể tiếp tục công việc đã dừng bằng cách sử dụng fg
lệnh tích hợp bash (foreground). Nếu bạn có nhiều lệnh đã bị dừng, bạn phải chỉ định lệnh nào sẽ tiếp tục bằng cách chuyển số jobspec trên dòng lệnh với fg
. Nếu chỉ có một chương trình bị dừng, bạn có thể sử dụng fg
một mình:
user@mysystem:~$ fg 1
python
Tại thời điểm này, bạn quay lại trình thông dịch python và có thể thoát bằng cách sử dụng control-D.
Ngược lại, bạn có thể kill
ra lệnh với lệnh jobspec hoặc PID. Ví dụ:
user@mysystem:~$ ps
PID TTY TIME CMD
16174 pts/3 00:00:00 bash
17781 pts/3 00:00:00 python
18276 pts/3 00:00:00 ps
user@mysystem:~$ kill 17781
[1]+ Killed python
user@mysystem:~$
Để sử dụng jobspec, hãy đặt trước số có phím phần trăm (%):
user@mysystem:~$ kill %1
[1]+ Terminated python
Nếu bạn đưa ra lệnh thoát với các công việc đã dừng, cảnh báo bạn đã thấy sẽ được đưa ra. Các công việc sẽ được để lại cho an toàn. Điều đó để đảm bảo rằng bạn biết rằng bạn đang cố gắng giết các công việc mà bạn có thể đã quên bạn đã dừng lại. Lần thứ hai bạn sử dụng lệnh exit, các công việc bị chấm dứt và thoát khỏi trình bao. Điều này có thể gây ra sự cố cho một số chương trình không có ý định bị giết theo kiểu này.
Trong bash, có vẻ như bạn có thể sử dụng logout
lệnh sẽ giết các tiến trình đã dừng và thoát. Điều này có thể gây ra kết quả không mong muốn.
Cũng lưu ý rằng một số chương trình có thể không thoát khi bị chấm dứt theo cách này và hệ thống của bạn có thể kết thúc với rất nhiều quá trình mồ côi sử dụng hết tài nguyên nếu bạn có thói quen làm điều đó.
Lưu ý rằng bạn có thể tạo quy trình nền sẽ dừng nếu họ yêu cầu người dùng nhập liệu:
user@mysystem:~$ python &
[1] 19028
user@mysystem:~$ jobs
[1]+ Stopped python
Bạn có thể tiếp tục và tiêu diệt những công việc này giống như cách bạn đã làm những công việc mà bạn đã dừng lại với sự Ctrl-z
gián đoạn.