it-swarm-vi.tech

Có thể tách một quá trình từ thiết bị đầu cuối của nó? (Hoặc, "Tôi nên sử dụng màn hình!")

Có thể trùng lặp:
[.__.] Tôi có thể Nohup/sàng lọc một quy trình đã bắt đầu không?

Trên Unix (cụ thể là Linux), tôi đã bắt đầu một công việc trong một phiên ssh-> bash thông thường. Tôi muốn nghỉ việc sớm, nhưng bây giờ tôi nhận ra rằng công việc sẽ mất vài giờ.

Nếu tôi mới bắt đầu công việc này trên màn hình, tôi có thể tách ra và về nhà. Nhưng tôi đã không làm thế.

Có cách nào để ngắt kết nối công việc khỏi phiên ssh của nó không, vì vậy tôi có thể tắt máy tính của mình, (bỏ kết nối TCP và giết phiên ssh), nhưng chương trình vẫn tiếp tục chạy?

Tôi không quan tâm đến đầu ra của nó - trên thực tế, tôi đã chuyển hướng thiết bị xuất chuẩn vào một tệp. Tôi chỉ muốn nó chạy để hoàn thành.

146
mike

Bạn có thể nhấn ctrl-z để làm gián đoạn quá trình và sau đó chạy bg để làm cho nó chạy trong nền.

Bạn có thể hiển thị một danh sách được đánh số tất cả các quy trình được làm nền theo cách này với jobs.

Sau đó, bạn có thể chạy disown %1 (thay thế 1 với đầu ra số quy trình bằng jobs) để tách quy trình khỏi thiết bị đầu cuối.

Mặc dù tên, quá trình vẫn sẽ thuộc sở hữu của bạn sau khi chạy disown, nó sẽ chỉ được tách ra khỏi thiết bị đầu cuối mà bạn đã khởi động.

Câu trả lời này có nhiều thông tin hơn

201
David Pashley

Tôi tin rằng lệnh bạn đang tìm kiếm là "từ chối"

21
Seigel
[.__.] Sử dụng [.__.] Lệnh Nohup & [.__.] [.__.] Thật đẹp: [.__.] Root @ index: ~ # Nohup/usr/bin/curl localhost/begemot.php & [.___.] [1] 894 [.__.] Root @ index: ~ # Nohup: bỏ qua đầu vào và nối thêm đầu ra vào `Nohup.out '[.__.] [.__.] Và thoát khỏi thiết bị đầu cuối này, một nhiệm vụ được tiếp tục ... [.__.]
13
Aleksander Demidov

Từ trong bash Shell của bạn:

control+z

Sau đó, để tiếp tục chạy công việc trong nền:

bg

Sau đó, bạn có thể nhập jobs để xem quy trình của bạn có còn chạy không.

9
Joe

Khi sử dụng reptyr bên trong màn hình, bạn có thể di chuyển quá trình (hoặc đầu ra của nó) vào màn hình.

8
mab

Tôi đã thiết lập screen để tự động chạy khi tôi kết nối với máy chủ tôi sử dụng thường xuyên, để tránh vấn đề này.

http://tlug.dnho.net/?q=node/239 là một cách để làm điều đó, mặc dù có những biến thể khác ngoài kia.

Đã cứu tôi một hoặc hai lần khi tôi có một sự ngắt kết nối bất ngờ giữa phiên và nếu không tôi sẽ quên bắt đầu screen trước khi tôi bắt đầu một cái gì đó dài dòng.

7
David Spillett

Sử dụng crtl-Z sau đó bg hoặc sử dụng & khi chạy lệnh không đáng tin cậy ở mức 100%. Nó sẽ hoạt động trong hầu hết các trường hợp nhưng có thể không hoạt động như mong đợi trong một số trường hợp (sử dụng I/O, ...).
[.__.] Màn hình là một giải pháp đáng tin cậy.

6
radius

Nếu bạn đang sử dụng bash, bạn có thể nghi ngờ với control-Z và nền với bg.

Kiểm soát công việc (từ bash man)

 If the operating system on which bash is running supports job 
 control, bash contains facilities to use it.   Typing the  
 suspend  character  (typically ^Z, Control-Z) while a process 
 is running causes that process to be stopped and returns control 
 to bash.  Typing the delayed suspend character (typically ^Y, 
 Control-Y) causes the process  to  be stopped  when  it  
 attempts to read input from the terminal, and control to be 
 returned to bash.

giúp bg

bg: bg [job_spec ...]
    Place each JOB_SPEC in the background, as if it had been started with
    `&'.  If JOB_SPEC is not present, the Shell's notion of the current
    job is used.

công việc trợ giúp

jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.
5
Zoredache

Nếu bạn biết trước rằng bạn muốn nó chạy ở chế độ nền, lệnh unix at là một lựa chọn tốt. Nó bắt đầu các lệnh trong nền tại thời gian đã lên lịch, giống như một công việc định kỳ không lặp lại. Tùy thuộc vào bản phân phối của bạn, bạn có thể cần phải cài đặt nó và bắt đầu trình nền atd.

4
Sylvain