Làm cách nào để khôi phục chức năng của thiết bị đầu cuối sau khi ban hành lệnh đình chỉ trên mạng?


8

Tôi gõ suspendvào thiết bị đầu cuối của mình, và nó đình chỉ việc thực hiện.

Làm thế nào để tôi trở lại hoạt động bình thường của thiết bị đầu cuối? Tôi đã thử Ctrl+ C, Ctrl+ D, Ctrl+ Q( như được đề xuất ở đây ) và Ctrl+ Z, nhưng không có cách nào trong số này hoạt động. Tất nhiên tôi có thể đóng thiết bị đầu cuối và mở một thiết bị mới, nhưng không có cách nào để "tiếp tục" chức năng của thiết bị đầu cuối?

Tôi đang chạy Ubuntu Gnome 16.04, với vỏ (bash) mặc định.


Xin lỗi vì điều đó tôi đang hỏi ở đây, nhưng mục đích của lệnh này là gì?
pa4080

1
Để dừng thực thi một tập lệnh và để nó tiếp tục sau đó;)
Rinzwind

Câu trả lời:


10

Từ liên kết của bạn:

cho đến khi nhận được tín hiệu SIGCONT.

Vì vậy, đó sẽ là kill -SIGCONT {pid}

  • killall -CONT bash sẽ tiếp tục tất cả.
  • kill -18 {pid} sẽ giống nhau
  • và như vậy là kill -s CONT {pid}

Theo danh sách này, nó phải là control-z nhưng bạn cần sử dụng control-z để dừng quá trình:

18 - SIGCONT - Resume process, ctrl-Z (2nd)
19 - SIGSTOP - Pause the process / free command line, ctrl-Z (1st)

Bạn cần {pid} của phiên shell đang chạy trong thiết bị đầu cuối


Và cũng có các lệnh điều khiển công việc :

fg, bg

The fg command switches a job running in the background into the foreground. 
The bg command restarts a suspended job, and runs it in the background. 
If no job number is specified, then the fg or bg command acts 
upon the currently running job.

Nó cũng phải là Ctrl + Q, nhưng vì lý do nào đó không hoạt động. Tôi giả sử vì trình bao bị treo, nó không thể nhận được Ctrl + Q (SIGCONT) từ phiên bị treo. Nó hoạt động nếu, như bạn nói, bạn sử dụng kill -SIGCONT PIDnhưng tôi không thể tìm thấy một cách đơn giản để có được phiên PID bị treo khi tôi mở nhiều thiết bị đầu cuối.
terdon

Điều này không hiệu quả. Tôi đã sử dụng ps phụ | grep hạn để lấy pid của thiết bị đầu cuối, đã thử tất cả 3 biến thể của SIGCONT nhưng không có biến thể nào hoạt động. Khi tôi vừa giết pid thì thiết bị đầu cuối đã đóng, vì vậy tôi đã có đúng pid.
Cerberus

@Cerberus bạn muốn PID của phiên shell chạy trong thiết bị đầu cuối, không phải của chính thiết bị đầu cuối. Nếu bạn chỉ có một thiết bị đầu cuối mở, nó sẽ dễ dàng tìm thấy với pgrep bash. Nếu không, hãy sử dụng pstree -p, tìm PID của thiết bị đầu cuối ở đó và xem xét các PID của con của nó, một trong số đó là phiên bash của bạn.
terdon

Tôi sẽ cần phải có hai phiên cuối cùng trong kịch bản, một phiên bị đình chỉ và phiên khác để gửi SIGCONT.
Cerberus

1
SIGCONT thường bị bỏ qua, vậy tại sao không bắn killall -CONT bash? :-)
Jonas Schäfer
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.