2012-12-03 28 views
74

Tôi có lệnh tải tệp lên bằng git lên máy chủ từ xa từ vỏ Linux và sẽ mất nhiều giờ để hoàn tất.Làm thế nào tôi có thể đặt quá trình linux đang chạy trong nền?

Tôi làm cách nào để đặt chương trình đang chạy trong nền? Vì vậy mà tôi vẫn có thể làm việc trên vỏ và quá trình đó cũng được hoàn thành?

+0

Chỉ cần đoán nhưng bạn đã thử ctrl + z hoặc chạy lệnh của bạn như thế này; #command & – EralpB

+0

Lệnh này đã chạy nên tôi không có tùy chọn khác. Tôi không chắc chắn lệnh nào để thử. Tôi không muốn phá vỡ quá trình hiện tại vì vậy tôi đã không thử nghiệm nó – user825904

+0

Chúng ta nên chờ đợi một câu trả lời chuyên nghiệp hơn sau đó :) Tôi có nghĩa là nếu bạn có cơ hội để bắt đầu lại từ đầu. (Lệnh & điều) – EralpB

Trả lời

139

CTRL + Z rồi sử dụng lệnh bg để đặt quá trình trong nền.

EDIT

Để bắt đầu một quá trình mà bạn thậm chí có thể giết chết các thiết bị đầu cuối và nó vẫn mang về chạy

nohup [command] [-args] > [filename] 2>&1 & 

ví dụ

nohup /home/edheal/myprog -arg1 -arg2 > /home/edheal/output.txt 2>&1 & 

Để chỉ cần bỏ qua các đầu ra (không phải là rất khôn ngoan) thay đổi tên tập tin để /dev/null

Để nhận được thông báo lỗi cài đặt vào một tập tin khác nhau thay đổi &1 để một tên tập tin.

+0

tôi đã thử nó nhưng khi nó xuất ra một cái gì đó, nó một lần nữa đến tại foreground với% hiển thị bao nhiêu dữ liệu được tải lên – user825904

+0

Quá trình sẽ viết bất kỳ đầu ra cho thiết bị đầu cuối như bạn hướng dẫn quá trình để làm điều đó lúc bắt đầu. Bạn sẽ phải khởi động lại nó để có được đầu ra để ghi vào tập tin hoặc '/ dev/null'. Xem chỉnh sửa ở trên. –

+0

vì vậy nó có nghĩa là, nếu quá trình đã được bắt đầu sau đó không có cách nào chuyển hướng các ouput – user825904

Các vấn đề liên quan