Tạm dừng một chương trình chạy dài trong thiết bị đầu cuối?


17

Có tổ hợp phím bàn phím nào mà tôi có thể sử dụng để tạm dừng chương trình đang chạy trong thiết bị đầu cuối không? Trong trường hợp có vấn đề, tôi không có ý định chạy bất cứ thứ gì khác bên trong thiết bị đầu cuối đó trong khi chương trình bị tạm dừng. Tôi chỉ muốn tạm dừng việc thực hiện chương trình, và tiếp tục lại sau. Tôi có thể làm cái này như thế nào?


Chương trình nào chính xác?
việc

@Jobin Một chương trình tôi đã viết bằng C ++. Nhưng tôi không muốn thay đổi mã nguồn.
vẫy gọi

Bạn có muốn tiếp tục quá trình sau khi khởi động lại hoặc một cái gì đó?
việc

@Jobin Không, tôi không muốn khởi động lại. Tôi muốn tiếp tục lại sau, nhưng tôi sẽ không khởi động lại hệ thống ở giữa.
vẫy gọi

Câu trả lời:


17

Nhấn Control+ Z.

Điều này sẽ đình chỉ quá trình và đưa bạn trở lại vỏ. Bạn có thể làm những việc khác ngay bây giờ nếu bạn muốn hoặc bạn có thể quay lại quá trình nền bằng cách nhập %theo sau Return.

Lưu ý rằng nếu bạn đang làm điều này với một cái gì đó cần phải phản hồi, bạn sẽ điều chỉnh hệ thống, nhưng nếu nó chỉ là một nanoví dụ như một ví dụ, mọi thứ sẽ ổn.


Có an toàn để tạm dừng quá trình thiết bị đầu cuối?
Pandya

@Pandya: Tại sao không?
việc

@Pandya Tôi chắc chắn rằng điều đó phụ thuộc vào quá trình ... Nếu một cái gì đó rất nhạy cảm với thời gian, nó có thể không bị đình chỉ nhưng hầu hết mọi thứ sẽ ổn.
Oli

15

Đây là kiểm soát công việc bash

Sử dụng CTL-Z để dừng công việc.

Sau đó, bạn có thể gõ bg để chạy nó trong nền, nếu chỉ có công việc thì nó thực hiện chính xác điều đó.

Nếu bạn có nhiều hơn một, bạn có thể sử dụng các công việc để liệt kê sau đó và sử dụng fg% Nbg% N để đạt hiệu quả mong muốn.

Thí dụ:

ubfox @ ip-10-170-59-120: ~ $ find / usr -name "* .so"
/usr/lib/python2.7/dist-packages/OpenSSL/crypto.so
/usr/lib/python2.7/dist-packages/OpenSSL/SSL.so
/usr/lib/python2.7/dist-packages/OpenSSL/rand.so
/usr/lib/python2.7/dist-packages/gi/_glib/_glib.so
/usr/lib/python2.7/dist-packages/gi/_gobject/_gobject.so
/usr/lib/python2.7/dist-packages/gi/_gi.so
/usr/lib/python2.7/config/libpython2.7.so
...
^ Z
[1] + Đã dừng tìm / usr -name 

ubfox @ ip-10-170-59-120: ~ $ công việc
[1] + Đã dừng tìm / usr -name "* .so"

ubfox @ ip-10-170-59-120: ~ $ fg% 1
tìm / usr -name "* .so"
/usr/lib/php5/20090626+lfs/apc.so
/usr/lib/php5/20090626+lfs/memcache.so
/usr/lib/php5/20090626+lfs/mysql.so
...

Đối với bất kỳ điều gì khác không được đính kèm với TTY, bạn có thể sử dụng SIGSTOP và SIGCONT . Vì vậy, ví dụ nếu bạn nghĩ rằng một daemon đang gây ra vấn đề nhưng bạn không biết đó là cái gì, bạn có thể gửi SIGSTOP, nó giống như nhấn tạm dừng, sau đó kiểm tra các thay đổi, không phải vậy, và rửa và lặp lại cho đến khi bạn tìm ra vấn đề

Hi vọng điêu nay co ich.


1
Câu trả lời tốt! Tôi chỉ có thể thêm rằng đó không chỉ là điều bash? Vỏ Korn hoạt động theo cách tương tự.
Sergiy Kolodyazhnyy

4

Tôi biết rằng câu trả lời này hơi muộn một chút, nhưng bạn có thể sử dụng phím tắt Ctrl+sđể dừng chương trình của mình (nếu bạn muốn đọc kết quả đầu ra hoặc đại loại như thế này), thì bạn có thể tiếp tục sử dụng phím tắt Ctrl+q.

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.