ฉันจะรันคำสั่งจากเทอร์มินัลโดยไม่ปิดกั้นได้อย่างไร


43

ฉันรันโปรแกรมมากมายใน Ubuntu จากเทอร์มินัล แต่ฉันต้องการที่จะสามารถใช้งานเทอร์มินัลต่อไปหลังจากที่ฉันเปิดโปรแกรม ฉันจะวางโปรแกรมไว้ในพื้นหลังเพื่อไม่ต้องเปิดหน้าต่างอื่นได้อย่างไร

คำตอบ:


60

มีหลายวิธีในการรันโปรแกรมเทอร์มินัลและใช้งานเทอร์มินัลต่อไป:

  • คุณสามารถเปิดแท็บเทอร์มินัลอื่น (คลิกขวาจากนั้นเลือก "เปิดแท็บใหม่")
  • คุณสามารถต่อท้าย&คำสั่งที่คุณเรียกใช้ โปรดระวังว่าคุณจะไม่เห็นข้อความที่ส่งออกไปยังเทอร์มินัลเช่นข้อความแสดงข้อผิดพลาด
  • คุณสามารถพิมพ์Ctrl- และเรียกใช้แล้วZ bgสิ่งนี้มีผลเช่นเดียวกับการทำงานcommand &
  • คุณสามารถเรียกใช้nohup command &แล้วกด Enter (ขอบคุณccpizzaดูความคิดเห็นด้านล่าง)

อย่างไรก็ตามการกดAlt- F2แล้วเรียกใช้คำสั่งของคุณจาก GUI นั้นถือว่าเป็นแนวปฏิบัติที่ดีที่สุด - ไม่มีเทอร์มินัลเลย!

หมายเหตุว่าเมื่อใช้&(ไม่nohup) ปิดสถานีจะยังคงยกเลิกการสมัครเว้นแต่คุณจะทำงานdisownหลังจากนั้น

แก้ไข:ดูเหมือนว่าการใช้nohupบางครั้งจะทิ้งมูลไว้ในโฟลเดอร์บ้านของคุณ สิ่งที่ปกติจะถูกบันทึกลงในเทอร์มินัลจะถูกบันทึกเป็นไฟล์ใน ~ /

~~

วิธีง่าย ๆ ในการเรียกใช้โปรแกรมในพื้นหลังคือprogram-name & disownซึ่งจะส่งคุณไปยังเทอร์มินัลซึ่งสามารถปิดได้โดยไม่ต้องฆ่ากระบวนการ


4
nohup firefox&เพื่อป้องกันไม่ให้ฆ่ากระบวนการเด็กหลังจากที่สถานีถูกปิดคุณสามารถเริ่มต้นแอปของคุณเป็น
ccpizza

เย็น! ฉันไม่รู้ว่า (แต่เมื่อทำการทดลองเครื่องจะยังคง "ถูกบล็อก")!
WindowsEscapist

มันไม่ใช่ 'ถูกบล็อก' มันจะถูกบล็อก 'ลักษณะ' เท่านั้นหากคุณพิมพ์ป้อนเมื่อคุณจะได้รับพรอมต์
ccpizza

อาฉันไม่เคยสังเกตมาก่อนเลย
WindowsEscapist

program-name & disownเป็นทางออกที่ดี
หมอเฮนรี่

8

คุณสามารถเรียกใช้คำสั่งด้วย & หลัง

ตัวอย่างเช่น:

ธันเดอร์เบิร์ด &

ดูที่นี่สำหรับข้อมูลเพิ่มเติม


ใช้งานได้เฉพาะเมื่อคุณปิดหน้าต่างเทอร์มินัลเมื่อคุณปิดหน้าต่างโปรแกรมจะสิ้นสุด
kurdtpage

6

คุณสามารถใช้setsidเพื่อเรียกใช้โปรแกรมในเซสชั่นใหม่ด้วยนอกเหนือจาก&>/dev/nullดังนั้นคุณจะไม่ได้รับข้อความบันทึกใด ๆ

ดังนั้นมันจะเป็นเช่นนั้น

setsid program-name &>/dev/null


เย็น. จะต้องให้กระบวนการทำงานเมื่อออกจากระบบของผู้ใช้และเซสชันปัจจุบันปิด
Mikhail Moskalev

1

ใช้screenคำสั่งคุณสามารถเปิดเซสชันเทอร์มินัลหลายเซสชันโดยใช้หน้าต่างเดียวแล้วแตะ

apt-get install screen (On Debian based Systems)

yum install screen (On RedHat based Systems)

screen (เริ่มหน้าจอใหม่)

[Your command]

Ctrl+A d เพื่อออกจากหน้าจอ ... และอื่น ๆ

https://linuxize.com/post/how-to-use-linux-screen/


0

คุณสามารถเรียกใช้ในเทอร์มินัลเสมือนเช่นtmux(หรือscreenแต่ฉันได้ยินมาว่ามันไม่ได้รับการบำรุงรักษาอีกต่อไป)

# This ataches your terminal to a virtual terminal
tmux
run_your_command
# This detaches your virtual terminal (previous command can be running)
CTRL-b d
run_other_commands # on your terminal
# re-attach the virtual terminal to see the status of run_your_command
tmux a

tmux สามารถทำได้มากขึ้นเช่น:

  • ย้ายเทอร์มินัลเสมือนของคุณไปยังเทอร์มินัลอื่น
  • แชร์เทอร์มินัลเสมือนในเทอร์มินัลหลายเครื่อง (ผู้ใช้รายอื่นสามารถเห็นสิ่งที่คุณทำ ;-))
  • แยก "หน้าจอ" เพื่อให้มีหลายขั้ว
  • ...

https://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/

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