GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Mengubah Pengalihan Output Dari Proses yang Berjalan?

Saya tahu cara mengarahkan ulang output dan cara menekannya di bash. Sekarang, misalkan saya secara tidak sengaja lupa menambahkan bagian pengalihan output ke perintah (mis. 2>&1 atau > /tmp/mystdout ) dan proses background saya sudah berjalan beberapa saat, apakah saya masih bisa mengubah ke mana stdout dan stderr sedang ditulis ke? Saya benar-benar tidak ingin mematikan dan memulai ulang aplikasi.

Untuk lebih spesifik seperti yang ditanyakan oleh Gilles dalam komentarnya, saya ingin mengutak-atiknya dalam skenario ini secara spesifik:

  • file keluaran salah
  • lupa mengalihkan stderr ke stdout

atau kombinasi keduanya

Misalnya. Saya menjalankan Apache dan saya dapat melihat deskriptor file:

/proc/8019/fd/0 -> /dev/null
/proc/8019/fd/1 -> /dev/null
/proc/8019/fd/2 -> /var/log/apache2/error.log

Jawaban yang Diterima:

Anda dapat melakukannya menggunakan pengalihan (https://github.com/jerome-pouiller/reredirect/).

reredirect -m /dev/null <PID>

Anda dapat memulihkan keluaran awal dari proses Anda nanti menggunakan sesuatu seperti:

reredirect -N -O <M> -E <N> <PID>

(<M> dan <N> disediakan oleh peluncuran pengalihan sebelumnya).

arahkan ulang README juga menjelaskan cara mengarahkan ulang ke perintah lain atau hanya mengarahkan ulang stdout atau stderr.


Linux
  1. Ubah Lingkungan Proses yang Berjalan?

  2. Bagaimana Cara Melihat Output Dari Proses yang Berjalan Di Sesi Bash Lain?

  3. Bagaimana Cara Mengubah Nama Host?

  1. UNIX / Linux :Bagaimana mengubah kebaikan (prioritas) suatu proses

  2. Cara mengarahkan output dari proses yang sudah berjalan

  3. Bagaimana cara mem-pipe atau mengarahkan output dari curl -v?

  1. Cara mengarahkan keluaran aplikasi di latar belakang ke /dev/null

  2. Bagaimana cara mengarahkan output dari system() ke file?

  3. Bagaimana cara mengarahkan output dari perintah waktu ke file di Linux?