Nếu bạn ^ Z từ một quá trình, nó sẽ bị dừng lại. Làm thế nào để bạn chuyển trở lại trong?


82

Tôi vô tình "dừng" telnetquá trình của tôi . Bây giờ tôi không thể "chuyển trở lại" vào nó, tôi cũng không thể giết nó (nó sẽ không phản hồi kill 92929, trong đó 92929 là quy trình.)

Vì vậy, câu hỏi của tôi là, nếu bạn có một quá trình dừng trên dòng lệnh linux, làm thế nào để bạn chuyển trở lại vào nó, hoặc giết nó, mà không cần phải dùng đến kill -9?

Câu trả lời:


91

Cách dễ nhất là chạy fgđể đưa nó lên nền trước:

$ help fg
fg: fg [job_spec]
    Move job to the foreground.

    Place the job identified by JOB_SPEC in the foreground, making it the
    current job.  If JOB_SPEC is not present, the shell's notion of the
    current job is used.

    Exit Status:
    Status of command placed in foreground, or failure if an error occurs.

Ngoài ra, bạn có thể chạy bgđể có nó tiếp tục trong nền:

$ help bg
bg: bg [job_spec ...]
    Move jobs to the background.

    Place the jobs identified by each JOB_SPEC in the background, as if they
    had been started with `&'.  If JOB_SPEC is not present, the shell's notion
    of the current job is used.

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.

Nếu bạn vừa đánh Ctrl Z, sau đó để đưa công việc trở lại chỉ cần chạy fgmà không có đối số.


Cảm ơn!! Tôi cho rằng đây là eq của Alt + Tab. Bạn có biết những gì đã xảy ra ngay sau khi tôi đã làm fg telnet. Nó nói Terminated, có lẽ là b / c của killcmd trước đây của tôi .
bobobobo

@bobobobo có lẽ, vâng. Dù sao, fgkhông cần bất kỳ đối số. Nếu bạn vừa đánh ^Z, hãy chạy fgtrong cùng một thiết bị đầu cuối và nó sẽ mang lại công việc đầu tiên.
terdon

48

Bạn có thể sử dụng jobsđể liệt kê quá trình bị đình chỉ. Lấy ví dụ. Bắt đầu với một quá trình:

$ sleep 3000  

Sau đó, bạn tạm dừng quá trình:

^Z
[1]+  Stopped                 sleep 3000

Bạn có thể liệt kê quá trình:

$ jobs
[1]+  Stopped                 sleep 3000

và đưa nó trở lại nền trước:

$ fg %1
sleep 3000

Các %1tương ứng với [1]danh sách với jobslệnh.


18

Bạn sẽ có thể bắt đầu lại một quy trình bị đình chỉ bằng cách sử dụng killlệnh để gửi quy trình tín hiệu TIẾP TỤC, từ dòng lệnh, do đó:

kill -CONT 92929

Điều này sẽ khiến nó hoạt động trở lại, nhưng không được đưa lên nền trước.
bahamat

@bahamat Vâng, khá đúng. Một vẫn sẽ cần phải fgbên trong các thiết bị đầu cuối ban đầu. Tôi thích các chương trình -STOP và -CONT gui để tiết kiệm tài nguyên, nhưng dù sao chúng vẫn chạy hiệu quả trong nền.
Geeb

Trong trường hợp sleepđó sẽ killlà quá trình không như bạn muốn ..;)
Timo
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.