ฉันจะรัน“ apt-get install” ในพื้นหลังได้อย่างไร?


17

เมื่อฉันพยายามติดตั้งแพคเกจเช่นnsnakeด้วยคำสั่ง sudo apt-get install nsnake &กระบวนการจะหยุดทันที ฉันสามารถนำมาไว้ด้านหน้าและป้อนรหัสผ่าน sudo ของฉันหยุดชั่วคราว (ด้วยCtrl- Z) แล้วส่งกลับไปที่พื้นหลังอีกครั้ง แต่จากนั้นเชลล์จะหยุดกระบวนการในทันทีเช่น

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

เป็นไปได้หรือไม่ที่จะติดตั้งแพ็คเกจในพื้นหลัง? ฉันอาจต้องการทำสิ่งนี้ขณะติดตั้งแพคเกจขนาดใหญ่บนคอมพิวเตอร์ที่ฉันกำลังเข้า SSH

คำตอบ:


30

แน่นอน.

ทำตามapt-getคำสั่งของคุณด้วยสิ่งที่แปลกใหม่

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

คำอธิบายส่วนหนึ่ง:

  • sudo bash -cส่วน spawns ใหม่bashกระบวนการและการวิ่งapt-get -y install guake >/dev/null 2>&1 & disownภายในที่เปลือกใหม่

  • คำสั่งเหล่านี้จะทำงานภายใน subshell ใหม่:

    • apt-get -y install guake: คำสั่ง apt-get หลักที่คุณต้องการรัน

      • >/dev/null 2>&1 pipes stdout และ stderr ถึง / dev / null
    • & disown ปฏิเสธงานก่อนหน้าและออกจาก subshell

คือ "ใช่ |" จำเป็นเมื่อคุณใช้สวิตช์ -y
user31389

@ user31389: ไม่เคร่งครัด แต่มันอาจช่วยได้ถ้าแพ็คเกจได้รับแจ้งเพิ่มเติมระหว่างการติดตั้ง
kiri

จะดีจริง ๆ ที่จะเข้าใจว่าทำไมงานนี้ (และทำไมมันจำเป็น)
katriel

@katriel: มันไม่ง่ายที่จะอธิบาย ฉันพยายามอธิบายในคำตอบของฉันแล้ว
kiri

1
@katriel: เป็นเพราะ Ctrl + Z หยุดคำสั่งชั่วคราวหมายความว่าหยุดชั่วคราว (หยุดชั่วคราว)
kiri

17

ฉันมักจะชอบใช้หน้าจอเพื่อเรียกใช้โปรแกรมในพื้นหลัง


2
+1 สำหรับหน้าจอ มันใช้งานง่ายและยอดเยี่ยมสำหรับโปรแกรมพื้นหลังที่คุณต้องการเข้าถึงเป็นครั้งคราวเช่นไคลเอนต์ irc หรือใช้แทนการเชื่อมต่อหลาย ssh เมื่อคุณต้องการเข้าถึงชุดพา ธ หรือไฟล์ซ้ำ ๆ อย่างรวดเร็ว
Pichan

4
ในขณะที่สิ่งนี้อาจตอบคำถามในทางทฤษฎีมันก็ควรที่จะรวมส่วนที่สำคัญของคำตอบที่นี่และให้ลิงค์สำหรับการอ้างอิง
blade19899

1
ฉันชอบtmuxไปที่หน้าจอ
ไมเคิล

9

เพิ่มเครื่องหมายและ&เพื่อเรียกใช้โปรแกรมใด ๆและกลับไปที่พรอมต์ขณะที่โปรแกรมทำงานเช่น

sudo apt-get -y install nsnake &

อย่างไรก็ตามคุณอาจได้รับเหตุการณ์และการแจ้งเตือนปรากฏขึ้นเป็นระยะในเชลล์ หากต้องการซ่อนกิจกรรมเหล่านี้ให้ไปที่ STDOUT

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

1
เหตุการณ์ต่าง ๆ เป็นปัญหา การแก้ปัญหาดูเหมือนจะไปป์พวกเขาไปยัง STDOUT
katriel

-1

มันเป็นวิธีแก้ปัญหา แต่อะไรกับ sudo sudo lsเช่นทำงานครั้งแรก การอนุมัติ sudo ของคุณจะถูกจดจำเป็นระยะเวลาหนึ่ง จากนั้นคุณสามารถเรียกใช้sudo apt-get -y install nsnake &และคุณจะไม่ถูกถามถึงรหัสผ่านครั้งที่สอง (ยกเว้นบางเวลาผ่านไปและการให้สิทธิ์หมดอายุแล้ว)


คุณยังคงต้องพิมพ์ y ที่พรอมต์ซึ่งผู้เดินทางของคุณจะไม่ยอมให้คุณทำ
kiri

@ minerz029 โอ้ถูกต้อง แก้ไขแล้ว.
user31389

ฉันค่อนข้างแน่ใจว่าการอนุญาต sudo หรือพรอมต์ "Y / n" ที่รบกวนเนื่องจากฉันไม่ต้องทำอย่างใดอย่างหนึ่งถ้าฉันนำงานไปยังเบื้องหน้า
katriel
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.