Katakanlah Anda memulai pekerjaan seperti ini
foo
dan kemudian ingin agar Anda menempatkannya di latar belakang. Mengetik Ctrl+ Zlalu bgmelakukan trik tetapi akan membeku foo
antara Ctrl+ Zdan bg. Bagaimana saya bisa menempatkan foo di latar belakang tanpa membekukannya terlebih dahulu?
Jawaban:
Secara teknis
foo
sudah berjalan di latar belakang. Anda dapat memulai sesi terminal kedua, dan yang pertama akan terus berjalanfoo
saat Anda melakukan hal-hal lain.Dalam X, ini hanya melibatkan memulai aplikasi terminal kedua, atau membuka tab lain jika emulator terminal pilihan Anda memiliki fitur seperti itu.
Pada konsol, jika Anda tidak berencana untuk itu, Anda harus beralih ke terminal virtual yang berbeda dan masuk lagi.
Jika Anda menggunakan terminal multiplexer suka
screen
atautmux
Anda dapat memulai sesi lain di dalamnya. Misalnya, di layar, ini dilakukan menggunakan Ctrl+ Asegera diikuti oleh Ctrl+ C. Untuk beralih di antara mereka, gunakan Ca Cn dan Ca Cp untuk bolak-balik di antara sesi terminal.sumber
foo
sendiri (tidak ada pemeriksaan khusus, yang saya kira di alam liar adalah suatu tempat antara langka dan tidak ada) tidak peduli apakah itu berjalan di jendela paling atas atau bahkan jika ada sesuatu yang menampilkan outputnya.foo
sudah berjalan di latar belakang" ... hanya ... Tidak. Secara teknis.foo
jadi sekarang apa yang harus saya lakukan?". Jika Anda merasa jawaban ini (atau jawaban lain) tidak berguna dalam menjawab pertanyaan, saya akan mendorong Anda untuk menggunakan hak suara Anda serta meninggalkan jawaban Anda sendiri menjawab pertanyaan dari apa yang Anda rasa adalah sudut yang benar, daripada berdebat tentang salah satu jawaban yang tersisa pada pertanyaan. Mungkin Anda merasa misalnya jawaban l0b0 lebih baik, tetapi jawaban saya menawarkan cara untuk melakukan setidaknya kira-kira apa yang diinginkan OP.Menambahkan
&
tanda setelah perintah (foo &
) akan langsung melatar belakanginya Tapi saya percaya tidak ada cara, dalam konfigurasi terminal / shell standar , untuk latar belakang sesuatu segera setelah itu foregrounded.sumber
Mengirim aplikasi dari latar depan ke latar belakang membutuhkan kerja sama dari terminal dan shell. Terminal tidak dapat melakukannya sendiri, karena shell harus mengatur grup proses foreground. Shell tidak dapat melakukannya sendiri, karena terminal harus memproses penekanan tombol (shell tidak berada di latar depan, sehingga tidak dapat menerima penekanan tombol).
Saya memiliki konfigurasi zsh di mana saya dapat menekan Ctrl+ Zdua kali berturut-turut dengan cepat; pers pertama menunda prosesnya, dan pers kedua melanjutkannya di latar belakang. Saya tidak tahu cara port ke bash.
Jika Anda menjalankan emulator terminal yang memungkinkan Anda menyuntikkan penekanan tombol, Anda bisa menyuntikkan
^Zbg^M
(menggunakan^
notasi untuk karakter kontrol). Misalnya, dengan emulator terminal X11, jalankan dixdotool --window 1234 Ctrl_L+Z b g Return
mana 1234 adalah ID jendela emulator terminal. Dengan Layar, jalankan discreen -S foo -p 12 -X stuff $'\032bg\r'
manafoo
nama sesi layar dan12
merupakan ID jendela.sumber
Jika pengetikan Anda tidak cukup cepat untuk kasing kemudian jalankan
kill -s SIGSTOP 1023 && kill -s SIGCONT 1023
dari shell lain, anggap 1023 sebagai PID target.PENOLAKAN: Seperti yang mungkin diketahui oleh Ruslan , urutan itu sebenarnya memulai kembali pekerjaan itu begitu cepat sehingga
bash
tidak menyadarinya.sumber