Saya pikir saya punya solusi yang lebih sederhana di sini. Cari saja direktori yang namanya sesuai dengan PID yang Anda cari, di bawah sistem file semu yang dapat diakses di bawah /proc
jalur. Jadi jika Anda menjalankan program, dengan ID 1199, cd
ke dalamnya:
$ cd /proc/1199
Kemudian cari fd
direktori di bawahnya
$ cd fd
fd
ini direktori menyimpan objek deskriptor file yang digunakan program Anda (0:stdin, 1:stdout, 2:stderr) dan hanya tail -f
yang Anda butuhkan - dalam hal ini, stdout):
$ tail -f 1
Saya sedang mencari hal yang persis sama dan menemukan bahwa Anda dapat melakukan:
strace -ewrite -p $PID
Ini bukan yang Anda butuhkan, tapi cukup dekat.
Saya mencoba keluaran pengalihan, tetapi tidak berhasil untuk saya. Mungkin karena proses menulis ke soket, saya tidak tahu.
Bagi saya, ini berhasil:
-
Login sebagai pemilik proses (bahkan
root
ditolak izinnya)~$ su - process_owner
-
Ikuti deskriptor file seperti yang disebutkan dalam banyak jawaban lainnya.
~$ tail -f /proc/<process-id>/fd/1 # (0: stdin, 1: stdout, 2: stderr)
Ada beberapa opsi di sini. Salah satunya adalah mengarahkan output perintah ke file, lalu menggunakan 'tail' untuk melihat baris baru yang ditambahkan ke file tersebut secara real time.
Pilihan lain adalah meluncurkan program Anda di dalam 'layar', yang merupakan semacam aplikasi Terminal berbasis teks. Sesi layar dapat dilampirkan dan dilepas, tetapi secara nominal dimaksudkan hanya untuk digunakan oleh pengguna yang sama, jadi jika Anda ingin membaginya di antara pengguna, itu sangat merepotkan.