¿A dónde se dirige la salida de una aplicación iniciada desde el administrador de windows?

Si inicia una aplicación desde un terminal, puede ver el resultado de stdout y stderr, pero si una aplicación se inicia desde el administrador de windows, ¿a dónde va normalmente el resultado de estos files? Para / dev / null?

La salida de una aplicación iniciada desde el administrador de window va al mismo lugar que la salida del administrador de window. (A less que la aplicación lo networkingirija, pero las aplicaciones GUI típicas no lo hacen).

Puede averiguar dónde va la salida de la WM mirando lo que tiene abierto en el descriptor de file 1 (salida estándar) y el descriptor de file 2 (error estándar); típicamente ambos irán al mismo file. Averigüe la identificación del process de su administrador de windows (intente pgrep metacity o pidof metacity si Metacity es su administrador de windows; si no conoce el nombre del process para su administrador de windows, mire la raíz de uno de los treees de process informados por ps f o pstree ). Supongamos que la identificación del process de su administrador de windows es 1234, ejecute

 lsof -p1234 

y busque las líneas correspondientes a los descriptores de files 1 y 2, o

o

 ls -l /proc/1234/fd 

Puede automatizar el filtrado de los descriptores de files relevantes:

 lsof -p1234 | awk '$4 ~ /^[12][^0-9]/' ls -l /proc/1234/fd/[12] 

(Nota: todos los commands anteriores son para Linux. pgrep es común entre otros equipos, y lsof se puede instalar prácticamente en cualquier lugar; las opciones de ps y los contenidos de /proc son diferentes en diferentes unidades).

En la situación común en la que ejecuta commands desde un shell que se ejecuta en un emulador de terminal (xterm, konsole, gnome-terminal, etc., pero no cuando se usa en pantalla o tmux), puede verificar fácilmente dónde se encuentra la salida del emulador de terminal va, ya que el emulador de terminal es el process principal de su caparazón. Esto no funciona si el emulador de terminal se ejecuta con privilegios adicionales, lo que sucede en algunos sistemas para permitir que el emulador de terminal escriba en la list de usuarios que han iniciado session (utmp).

 lsof -p$PPID ls -l /proc/$PPID/fd 

Muchas distribuciones dirigen el resultado de la session X a ~/.xsession-errors .

El administrador de windows es el elemento secundario del server X, por lo tanto, y la salida de sus hijos van al mismo lugar que el server X.

Si usted es el único usuario e inicia session gráficamente, algunos sistemas desplazan la instancia del server X de la console de salida, lo que significa que puede cambiar a ese TV y verlo. Como anécdota, la disposition suele ser que alt-ctrl-f1 es la console de salida para la instancia X y alt-ctrl-f7 es la pantalla X, pero puede verificar todas las que pueda encontrar. Los primeros 6 suelen generar inicios de session, pero hay potencialmente más que no lo hacen y aparecerán en blanco o con salida por canalización. Puede haber resultados en algunos de ellos desde init, no lo confundas con resultados de X. En mi experiencia, X y los niños siempre ladran una cantidad significativa de advertencias y posts (sobre fonts perdidas, llamadas depreciadas, etc.).

Si no inicia session a través de una GUI, será cualquier VT desde el que haya iniciado X, lo cual es un problema ya que no lo verá hasta que lo abandone. Creo que con un inicio de session GUI, XDM (el inicio de session gráfico) se ejecuta como un process privilegiado, lo que significa que puede canalizar la salida a /dev/tty7 . Usted también puede ( startx 1>&2> /dev/tty7 ) si tiene los privilegios correctos de superusuario.

Si toma que típicamente un progtwig inicia otro haciendo series de man 2 fork y man 2 execve entonces en ese process las descripciones de files pnetworkingeterminadas permanecen abiertas.

Entonces, la respuesta es que típicamente la salida / error va donde el process de salida / error de los padres estaba apuntando al momento de la bifurcación (a less que el progtwig padre haga algunas networkingirecciones por supuesto). Creo que no puede reclamar nada más específico a less que sepamos exactamente el nombre del progtwig principal. El process del administrador de windows rara vez está involucrado en el lanzamiento de otros progtwigs directamente.

Por ejemplo en mi caso

  • presionar Ctrl + P (manejado por el administrador de la window de xmonad ) comenzará dmenu_run
  • dmenu_run manejará mi input y comenzará alguna aplicación (por ejemplo, xkill )

La salida irá a /dev/tty1 porque

  • xkill fue iniciado por dmenu_run
  • dmenu_run lo inició xmonad
  • xmonad fue iniciado por X
  • X fue iniciado por startx
  • startx fue iniciado por mí manualmente desde la primera console virtual /dev/tty1

Solo como reference, si quiere saber dónde va la salida / error, o mejor diga cuáles son los descriptores de files abiertos para un process en particular (con PID conocido), haga

 $ lsof -p PID