Bagaimana saya bisa menjalankan "apt-get install" di latar belakang?


17

Ketika saya mencoba menginstal paket, misalnya nsnake , dengan perintah sudo apt-get install nsnake &, prosesnya segera berhenti. Saya dapat membawanya ke latar depan dan memasukkan kata sandi sudo saya, menjeda (dengan Ctrl- Z), dan mengirimkannya kembali ke latar belakang. Tapi kemudian shell akan segera menghentikan proses, misalnya,

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

Apakah mungkin untuk menginstal paket di latar belakang? Saya mungkin ingin melakukan ini ketika menginstal paket besar di komputer saya SSH'ing ke.

Jawaban:


30

Ya tentu.

Lakukan apt-getperintah Anda dengan hal-hal mewah di sekitarnya

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

Penjelasan bagian:

  • Bagian ini sudo bash -cmemunculkan bashproses baru , dan berjalan apt-get -y install guake >/dev/null 2>&1 & disowndi dalam shell baru itu.

  • Perintah-perintah ini kemudian dijalankan di dalam subkulit baru:

    • apt-get -y install guake: Perintah apt-get utama yang ingin Anda jalankan.

      • >/dev/null 2>&1 pipa stdout dan stderr ke / dev / null.
    • & disown menyangkal pekerjaan sebelumnya dan keluar dari subkulit.

Apakah "ya |" dibutuhkan saat Anda menggunakan sakelar -y?
user31389

@ user31389: Tidak sepenuhnya, tetapi mungkin membantu jika suatu paket memiliki permintaan lebih lanjut selama instalasi.
kiri

Akan sangat baik untuk memahami mengapa ini bekerja (dan mengapa itu perlu)
katriel

@katriel: Tidak mudah untuk dijelaskan. Saya sudah mencoba penjelasan dalam jawaban saya.
kiri

1
@katriel: Itu karena Ctrl + Z menjeda perintah, berarti itu dijeda (dihentikan sementara).
kiri

17

Saya selalu suka menggunakan layar untuk menjalankan program di latar belakang.


2
+1 untuk layar. Sangat mudah digunakan dan bagus untuk program latar belakang yang ingin Anda akses dari waktu ke waktu, seperti klien irc atau sebagai pengganti beberapa koneksi ssh ketika Anda perlu dengan cepat mengakses serangkaian jalur atau file berulang kali
Pichan

4
Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
blade19899

1
saya lebih suka tmux ke layar.
Michael

9

Tambahkan ampersand &untuk menjalankan program apa pun dan kembali ke prompt saat program berjalan, seperti

sudo apt-get -y install nsnake &

Namun, Anda mungkin mendapatkan acara dan pemberitahuan tertentu yang muncul secara berkala di shell. Untuk menyembunyikan peristiwa ini, kirimkan ke STDOUT

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

1
Peristiwa adalah masalahnya. Solusinya tampaknya pipa mereka ke STDOUT.
katriel

-1

Ini solusi, tapi pertama kali menjalankan apa-apa dengan sudo, misalnya sudo ls. Otorisasi sudo Anda akan diingat untuk sementara waktu. Kemudian Anda bisa menjalankan sudo apt-get -y install nsnake &dan Anda tidak akan diminta kata sandi untuk kedua kalinya (kecuali beberapa waktu telah berlalu dan otorisasi telah kedaluwarsa).


Anda masih perlu mengetikkan y saat diminta, yang tidak akan dilakukan oleh komandan Anda.
kiri

@ minerz029 Oh, benar. Tetap.
user31389

Saya cukup yakin baik otorisasi sudo maupun prompt "Y / n" yang mengganggu, karena saya tidak harus melakukan keduanya jika saya membawa pekerjaan ke latar depan.
katriel
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.