Bagaimana saya bisa menjalankan perintah dari terminal tanpa memblokirnya?

45

Saya menjalankan banyak program di Ubuntu dari terminal, tetapi saya ingin dapat terus menggunakan terminal setelah saya membuka program. Bagaimana saya bisa meletakkan program di latar belakang sehingga saya tidak perlu membuka jendela lain?

Salvador Dali
sumber

Jawaban:

60

Ada berbagai cara untuk menjalankan program terminal dan terus menggunakan terminal:

  • Anda dapat membuka tab terminal lain (klik kanan, lalu pilih "Buka Tab Baru").
  • Anda dapat menambahkan &perintah yang Anda jalankan. Ketahuilah bahwa Anda tidak akan melihat output teks ke terminal, seperti pesan kesalahan.
  • Anda bisa mengetik Ctrl- Zlalu jalankan bg. Ini memiliki efek yang sama dengan berlaricommand &
  • Anda dapat menjalankan nohup command &dan kemudian tekan enter. (Terima kasih kepada ccpizza , lihat komentar di bawah.)

Namun, menekan Alt- F2dan menjalankan perintah Anda dari GUI biasanya dianggap praktik terbaik - tidak ada terminal sama sekali!

Perhatikan bahwa saat menggunakan &(tidak nohup), menutup terminal masih akan menghentikan aplikasi kecuali Anda menjalankannya disownsesudahnya .

EDIT: Sepertinya menggunakan nohupterkadang akan meninggalkan kotoran kecil di folder rumah Anda. Apa yang biasanya telah dicatat ke terminal ternyata disimpan ke file di ~ /.

~~

Cara sederhana untuk menjalankan program di latar belakang adalah program-name & disown, yang akan mengantar Anda ke terminal yang dapat ditutup tanpa mematikan prosesnya.

WindowsEscapist
sumber
4
Untuk mencegah proses pembunuhan anak setelah terminal ditutup, Anda dapat memulai aplikasi sebagai nohup firefox&.
ccpizza
Keren! Saya tidak tahu itu (tetapi setelah percobaan, terminal masih "diblokir")!
WindowsEscapist
itu bukan 'diblokir', itu hanya 'terlihat' diblokir, jika Anda mengetik enter begitu Anda akan mendapatkan prompt.
ccpizza
Ah, aku tidak menyadarinya sebelumnya.
WindowsEscapist
program-name & disownadalah solusi yang bagus
Dokter Henry
8

Anda dapat menjalankan perintah dengan & setelah.

Sebagai contoh:

thunderbird &

Lihat Di Sini untuk info lebih lanjut.

Viertaxa
sumber
Ini hanya berfungsi sampai Anda menutup jendela terminal, setelah Anda menutup jendela program akan berakhir
kurdtpage
6

Anda dapat menggunakan setsiduntuk menjalankan program dalam sesi baru dengan tambahan &>/dev/nullsehingga Anda tidak akan menerima pesan log apa pun.

Jadi itu akan seperti

setsid program-name &>/dev/null

Rumid
sumber
Keren. Itu harus menjaga proses berjalan ketika pengguna keluar dan sesi saat ini ditutup.
Mikhail Moskalev
1

Menggunakan screenperintah, Anda dapat membuka beberapa sesi terminal menggunakan satu jendela dan ketuk

apt-get install screen (On Debian based Systems)

yum install screen (On RedHat based Systems)

screen (mulai layar baru)

[Your command]

Ctrl+A d untuk meninggalkan layar ... dan seterusnya

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

Ahmed Ismail
sumber
0

Anda dapat menjalankannya di terminal virtual seperti tmux(atau screentapi saya dengar itu tidak terawat lagi)

# 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 dapat melakukan lebih banyak lagi, seperti:

  • pindahkan terminal virtual Anda ke terminal lain
  • bagikan terminal virtual di beberapa terminal (pengguna lain dapat melihat apa yang Anda lakukan ;-))
  • bagi "layar" untuk memiliki beberapa terminal.
  • ...

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

Sebastien DA ROCHA
sumber