Bagaimana cara mengirim proses ke latar belakang dan latar depan?

16

Jika saya melakukannya ping google.com &, prosesnya berjalan ke latar belakang dan terus menunjukkan kepada saya detail ping. Saya masih bisa menggunakan terminal dengan perintah lain, tetapi output dari ping dan output dari perintah lain ikut campur (yang bukan masalah), tapi saya tidak bisa menghentikan proses ping ini sama sekali.

Untuk itu saya ingin membawanya ke latar depan dan kemudian tekan ctrl + c atau sesuatu. Saya mencoba menggunakan fg, tetapi tidak berhasil juga. Jadi bagaimana cara membuat ping google.com &kembali ke latar depan setelah saya menekan tombol kembali di akhir perintah ping saya?

posixKing
sumber
2
Sepertinya masalah yang sebenarnya ingin Anda selesaikan adalah mematikan pekerjaan latar belakang; tidak perlu membawanya ke latar depan. Gunakan jobsuntuk menemukan ID Pekerjaan jiddari proses latar belakang, dan kemudian lakukan kill %jiduntuk membunuhnya.
gardenhead

Jawaban:

30

fgadalah perintah yang benar untuk latar depan pekerjaan, tetapi jika ada lebih dari satu pekerjaan berjalan Anda harus menentukan nomor pekerjaan. Jika Anda mengetik saja fg, pekerjaan dengan latar belakang terakhir (dianggap sebagai pekerjaan saat ini oleh shell) akan dibawa ke latar depan.

Dapatkan pekerjaan saat ini:

$ jobs
[1]+     ping google.com &

Foreground the job dengan menentukan nomor:

fg %1

Perintah dapat dipecah oleh output dari proses yang berjalan, tetapi masih akan berfungsi, Anda dapat mengabaikan gangguan.

Lalu tekan ctrl+ cuntuk menghentikan dan menghentikan proses

Seperti disebutkan dalam komentar, Anda juga dapat mengirim sinyal berdasarkan nomor pekerjaan, misalnya kill %1

Untuk kelengkapan, jika Anda tidak menggunakan &pada saat memanggil proses, Anda dapat mengirimnya ke latar belakang dengan membekukan pertama dengan ctrl+ zdan kemudian mengetikbg

Zanna
sumber
1
Cukup fgtanpa argumen tampaknya juga berfungsi, setidaknya ketika hanya memiliki satu pekerjaan latar belakang.
Cedric Reichenbach
1
@CedricReichenbach diedit!
Zanna
-2

Untuk menjawab pertanyaan yang diajukan, yaitu Bagaimana cara mengirim output dari suatu proses ke latar belakang dan latar depan? , teeperintahnya akan:

Dalam komputasi, tee adalah perintah dalam command-line interpreter (shells) menggunakan stream standar yang membaca input standar dan menulisnya ke output standar dan satu atau lebih file, secara efektif menggandakan inputnya. https://en.wikipedia.org/wiki/Tee_(command)

erqe4tjwtjwertjwrtj
sumber
5
Anda salah paham tentang sesuatu di sini ...
Byte Commander