Làm thế nào tôi có thể chạy một lệnh từ thiết bị đầu cuối mà không chặn nó?


43

Tôi chạy rất nhiều chương trình trong Ubuntu từ thiết bị đầu cuối, nhưng tôi muốn có thể tiếp tục sử dụng thiết bị đầu cuối sau khi tôi mở chương trình. Làm cách nào tôi có thể đặt các chương trình ở chế độ nền để tôi không phải mở một cửa sổ khác?

Câu trả lời:


60

Có nhiều cách khác nhau để chạy chương trình đầu cuối và tiếp tục sử dụng thiết bị đầu cuối:

  • Bạn có thể mở một tab thiết bị đầu cuối khác (nhấp chuột phải, sau đó chọn "Mở tab mới").
  • Bạn có thể nối &vào lệnh bạn chạy. Xin lưu ý rằng bạn sẽ không thấy đầu ra văn bản đến thiết bị đầu cuối, chẳng hạn như thông báo lỗi.
  • Bạn có thể gõ Ctrl- Zvà sau đó chạy bg. Điều này có tác dụng tương tự như chạycommand &
  • Bạn có thể chạy nohup command &và sau đó nhấn enter. (Cảm ơn ccpizza , xem bình luận bên dưới.)

Tuy nhiên, nhấn Alt- F2và sau đó chạy lệnh của bạn từ GUI thường được coi là thực hành tốt nhất - không có thiết bị đầu cuối nào cả!

Lưu ý rằng khi sử dụng &(không nohup), đóng thiết bị đầu cuối vẫn sẽ chấm dứt ứng dụng trừ khi bạn chạy disownsau đó .

EDIT: Có vẻ như việc sử dụng nohupđôi khi sẽ để lại một ít phân nhỏ trong thư mục nhà của bạn. Những gì thường được ghi vào thiết bị đầu cuối rõ ràng được lưu vào một tệp trong ~ /.

~ ~

Một cách đơn giản để chạy một chương trình trong nền là program-name & disown, nó sẽ đưa bạn đến một thiết bị đầu cuối có thể được đóng mà không làm hỏng quá trình.


4
Để ngăn chặn quá trình giết con sau khi đóng thiết bị đầu cuối, bạn có thể khởi động ứng dụng của mình dưới dạng nohup firefox&.
ccpizza

Mát mẻ! Tôi không biết điều đó (nhưng sau khi thử nghiệm, thiết bị đầu cuối vẫn bị "chặn")!
WindowsEscapist

nó không bị 'chặn', nó chỉ 'trông' bị chặn, nếu bạn nhập enter một lần, bạn sẽ nhận được lời nhắc.
ccpizza

Ah, tôi đã không nhận thấy điều đó trước đây.
WindowsEscapist

program-name & disownlà một giải pháp tốt
Bác sĩ Henry

8

Bạn có thể chạy lệnh với một & sau.

Ví dụ:

chim sấm sét &

Xem ở đây để biết thêm.


Điều này chỉ hoạt động cho đến khi bạn đóng cửa sổ thiết bị đầu cuối, một khi bạn đóng cửa sổ, chương trình sẽ chấm dứt
Kurdtpage

6

Bạn có thể sử dụng setsidđể chạy chương trình trong một phiên mới, ngoài ra &>/dev/nullbạn sẽ không nhận được bất kỳ thông điệp tường trình nào.

Vì vậy, nó sẽ giống như

setsid program-name &>/dev/null


Mát mẻ. Nó phải tiếp tục chạy khi đăng xuất của người dùng và phiên hiện tại đã đóng.
Mikhail Moskalev

1

Sử dụng screenlệnh, bạn có thể mở nhiều phiên cuối bằng một cửa sổ duy nhất và nhấn

apt-get install screen (On Debian based Systems)

yum install screen (On RedHat based Systems)

screen (bắt đầu màn hình mới)

[Your command]

Ctrl+A d rời khỏi màn hình ... vân vân

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


0

Bạn có thể chạy nó trong một thiết bị đầu cuối ảo như tmux(hoặc screentôi nghe nói nó không được duy trì nữa)

# 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 có thể làm nhiều hơn nữa, như:

  • di chuyển thiết bị đầu cuối ảo của bạn sang thiết bị đầu cuối khác
  • chia sẻ thiết bị đầu cuối ảo trong một số thiết bị đầu cuối (người dùng khác có thể thấy những gì bạn đang làm ;-))
  • chia "màn hình" để có một số thiết bị đầu cuối.
  • ...

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

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.