GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana cara melampirkan terminal ke proses yang terpisah?

Ya itu. Pertama, buat pipa:mkfifo /tmp/fifo .Gunakan gdb untuk melampirkan ke proses:gdb -p PID

Kemudian tutup stdin:call close (0); dan buka lagi:call open ("/tmp/fifo", 0600)

Terakhir, hapus (dari terminal lain, karena gdb mungkin akan hang):

echo blah > /tmp/fifo


Ketika terminal asli tidak lagi dapat diakses...

reptyr mungkin yang Anda inginkan, lihat https://serverfault.com/a/284795/187998

Kutipan dari sana:

Lihat reptyr, yang melakukan hal itu. Halaman github memiliki semua informasi.

reptyr - Alat untuk program "re-ptying".

reptyr adalah utilitas untuk mengambil program yang sedang berjalan dan melampirkannya ke terminal baru. Memulai proses yang berjalan lama melalui ssh, tetapi harus keluar dan tidak ingin mengganggunya? Mulai saja layar, usereptyr untuk mengambilnya, lalu hentikan sesi ssh dan langsung menuju beranda.

PENGGUNAAN

reptyr PID

"reptyr PID" akan mengambil proses dengan id PID dan melampirkannya ke terminal Anda saat ini.

Setelah melampirkan, proses akan mengambil input dari dan menulis output ke terminal baru, termasuk ^C dan ^Z.(Sayangnya, jika Anda menjalankannya di latar belakang, Anda masih harus menjalankan "bg" atau "fg" di terminal lama. Ini kemungkinan besar tidak mungkin diperbaiki dengan cara yang masuk akal tanpa menambal cangkang Anda.)


Saya cukup yakin Anda tidak bisa.

Periksa menggunakan ps x . Jika suatu proses memiliki ? sebagai mengontrol tty , Anda tidak dapat mengirim masukan lagi.

9942 ?        S      0:00 tail -F /var/log/messages
9947 pts/1    S      0:00 tail -F /var/log/messages

Dalam contoh ini, Anda dapat mengirimkan input ke 9947 melakukan sesuatu seperti echo "test" > /dev/pts/1 . Proses lainnya (9942 ) tidak dapat dijangkau.

Lain kali, Anda dapat menggunakan screen atau tmux untuk menghindari situasi ini.


Linux
  1. Bagaimana menjalankan proses Rsync di latar belakang

  2. Bagaimana cara mendapatkan ID proses dari proses latar belakang?

  3. Bagaimana cara memeriksa HZ di terminal?

  1. Cara membunuh proses zombie

  2. Bagaimana cara melepaskan sesi ssh tanpa mematikan proses yang sedang berjalan?

  3. Cara membaca variabel lingkungan dari suatu proses

  1. Cara mematikan proses zombie di Linux

  2. Cara Memulai Perintah Linux di Latar Belakang dan Melepaskan Proses di Terminal

  3. Cara menginstal vtop di Linux