Làm cách nào để tôi có thể chạy cài đặt apt apt-get trong nền?


17

Khi tôi cố gắng cài đặt một gói, ví dụ nsnake , với lệnh sudo apt-get install nsnake &, quá trình ngay lập tức dừng lại. Tôi có thể đưa nó lên nền trước và nhập mật khẩu sudo của mình, tạm dừng nó (với Ctrl- Z) và gửi lại vào nền. Nhưng sau đó, shell sẽ ngay lập tức tạm dừng quá trình, ví dụ,

katriel@caseylaptop:~$ bg     
[2]+ sudo apt-get install nsnake &   
[2]+  Stopped                 sudo apt-get install nsnake

Có thể cài đặt các gói trong nền? Tôi có thể muốn làm điều này trong khi cài đặt các gói lớn trên máy tính mà tôi đang SSH.

Câu trả lời:


30

Vâng, chắc chắn rồi.

Thực hiện apt-getlệnh của bạn với những điều lạ mắt xung quanh nó

sudo bash -c 'apt-get -y install guake >/dev/null 2>&1 & disown'

Phần giải thích:

  • Phần này sudo bash -csinh ra một bashquy trình mới và chạy apt-get -y install guake >/dev/null 2>&1 & disownbên trong lớp vỏ mới đó.

  • Các lệnh này sau đó được chạy bên trong lớp con mới:

    • apt-get -y install guake: Lệnh apt-get chính mà bạn muốn chạy.

      • >/dev/null 2>&1 ống stdout và stderr thành / dev / null.
    • & disown từ bỏ công việc trước đó và thoát khỏi subshell.

Là "có |" cần thiết khi bạn sử dụng công tắc -y?
dùng31389

@ user31389: Không nghiêm ngặt, nhưng nó có thể hữu ích nếu gói có thêm lời nhắc trong khi cài đặt.
kiri

Sẽ thực sự tốt đẹp để hiểu tại sao điều này hoạt động (và tại sao nó là cần thiết).
katriel

@katriel: Không dễ để giải thích. Tôi đã cố gắng giải thích trong câu trả lời của tôi, mặc dù.
kiri

1
@katriel: Đó là vì Ctrl + Z tạm dừng lệnh, nghĩa là nó bị tạm dừng (tạm thời dừng).
kiri

17

Tôi luôn thích sử dụng màn hình để chạy các chương trình trong nền.


2
+1 cho màn hình. Thỉnh thoảng dễ sử dụng và tuyệt vời cho các chương trình nền mà bạn muốn truy cập, như ứng dụng khách irc hoặc thay thế cho nhiều kết nối ssh khi bạn cần truy cập nhanh vào một tập hợp các đường dẫn hoặc tệp liên tục
Pichan

4
Trong khi về mặt lý thuyết có thể trả lời câu hỏi, tốt hơn là nên bao gồm các phần thiết yếu của câu trả lời ở đây và cung cấp liên kết để tham khảo.
lưỡi19899

1
Tôi thích tmux để sàng lọc.
Michael

9

Thêm dấu và &để chạy bất kỳ chương trình nào và quay lại dấu nhắc trong khi chương trình chạy, chẳng hạn như

sudo apt-get -y install nsnake &

Tuy nhiên, bạn có thể nhận được một số sự kiện và thông báo bật lên định kỳ trong trình bao. Để ẩn các sự kiện này, hãy đặt chúng vào STDOUT

sudo apt-get -y install nsnake >/dev/null &

1
Các sự kiện là vấn đề. Giải pháp có vẻ là đưa họ đến STDOUT.
katriel

-1

Đó là một cách giải quyết, nhưng trước tiên hãy chạy mọi thứ với sudo, vd sudo ls. Ủy quyền sudo của bạn sẽ được ghi nhớ trong một thời gian. Sau đó, bạn chỉ có thể chạy sudo apt-get -y install nsnake &và bạn sẽ không được yêu cầu nhập mật khẩu lần thứ hai (trừ khi một thời gian đã trôi qua và ủy quyền đã hết hạn).


Bạn vẫn cần phải gõ y tại dấu nhắc, mà commant của bạn sẽ không cho phép bạn làm.
kiri

@ minerz029 ơi, đúng rồi. Đã sửa.
dùng31389

Tôi khá chắc chắn rằng cả ủy quyền sudo lẫn dấu nhắc "Y / n" đều không can thiệp, vì tôi không phải làm gì nếu tôi đưa công việc lên tiền cảnh.
katriel
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.