tuberias script salida redireccionar redireccionamiento por pipes mensajes los log guardar generados filtros estandar error envían entrada ejemplos dónde defecto comandos comando archivo linux supervisord child-process

script - tuberias y filtros en linux



Supervisord-Redirigir la salida del proceso a la consola (2)

Estoy planeando ejecutar varios procesos usando supervisor y encuentre mi archivo supervisord.conf a continuación:

[supervisord] [program:bash] command=xyz stdout_logfile =/tmp/bash.log redirect_stderr=true [supervisorctl] serverurl=unix:///tmp/supervisor.sock [unix_http_server] file=/tmp/supervisor.sock ; path to your socket file [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface

Deseo redireccionar la salida estándar del proceso llamado bash a la consola de supervisor para que cuando comience a usar el supervisor

/usr/bin/supervisord

comando, pude ver los registros de proceso hijo. Cómo puedo hacer esto ? Intenté poner el atributo syslog para stdout_logfile pero no funcionó.


Actualizar

Vea la siguiente transcripción de una sesión de ejemplo. Supervisord seguramente captura el stdout del ping. Que más necesitas?

(svd)08/09 16:26 [nodakai@kaidev01] ~/prog/svd$ cat supervisord.conf [supervisord] [program:ping] command=ping 8.8.8.8 stdout_logfile =/tmp/ping.log redirect_stderr=true [supervisorctl] serverurl=unix:///tmp/supervisor.sock [unix_http_server] file = /tmp/supervisor.sock [inet_http_server] port = 127.0.0.1:9001 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface (svd)08/09 16:26 [nodakai@kaidev01] ~/prog/svd$ supervisorctl -c supervisord.conf ping RUNNING pid 27365, uptime 0:02:02 supervisor> tail ping : icmp_req=97 ttl=48 time=59.1 ms 64 bytes from 8.8.8.8: icmp_req=98 ttl=48 time=59.2 ms 64 bytes from 8.8.8.8: icmp_req=99 ttl=48 time=59.1 ms 64 bytes from 8.8.8.8: icmp_req=100 ttl=48 time=59.4 ms 64 bytes from 8.8.8.8: icmp_req=101 ttl=48 time=59.8 ms 64 bytes from 8.8.8.8: icmp_req=102 ttl=48 time=59.2 ms 64 bytes from 8.8.8.8: icmp_req=103 ttl=48 time=59.4 ms 64 bytes from 8.8.8.8: icmp_req=104 ttl=48 time=59.5 ms 64 bytes from 8.8.8.8: icmp_req=105 ttl=48 time=59.6 ms 64 bytes from 8.8.8.8: icmp_req=106 ttl=48 time=59.5 ms 64 bytes from 8.8.8.8: icmp_req=107 ttl=48 time=60.1 ms 64 bytes from 8.8.8.8: icmp_req=108 ttl=48 time=59.4 ms 64 bytes from 8.8.8.8: icmp_req=109 ttl=48 time=59.5 ms 64 bytes from 8.8.8.8: icmp_req=110 ttl=48 time=59.5 ms 64 bytes from 8.8.8.8: icmp_req=111 ttl=48 time=59.4 ms 64 bytes from 8.8.8.8: icmp_req=112 ttl=48 time=59.1 ms 64 bytes from 8.8.8.8: icmp_req=113 ttl=48 time=59.3 ms 64 bytes from 8.8.8.8: icmp_req=114 ttl=48 time=59.2 ms 64 bytes from 8.8.8.8: icmp_req=115 ttl=48 time=59.4 ms 64 bytes from 8.8.8.8: icmp_req=116 ttl=48 time=59.5 ms 64 bytes from 8.8.8.8: icmp_req=117 ttl=48 time=59.5 ms 64 bytes from 8.8.8.8: icmp_req=118 ttl=48 time=59.6 ms 64 bytes from 8.8.8.8: icmp_req=119 ttl=48 time=59.4 ms 64 bytes from 8.8.8.8: icmp_req=120 ttl=48 time=59.4 ms 64 bytes from 8.8.8.8: icmp_req=121 ttl=48 time=59.2 ms 64 bytes from 8.8.8.8: icmp_req=122 ttl=48 time=59.3 ms 64 bytes from 8.8.8.8: icmp_req=123 ttl=48 time=59.5 ms 64 bytes from 8.8.8.8: icmp_req=124 ttl=48 time=59.5 ms 64 bytes from 8.8.8.8: icmp_req=125 ttl=48 time=59.3 ms supervisor>

Post original

En realidad, me quedé un poco perplejo al leer tu respuesta, porque era la función básica del demonio supervisord . Tal vez hay algunos malentendidos acerca de lo que usted llamó "consola de supervisor"? La consola de bash que utiliza para iniciar el daemon supervisord no imprimirá nada. serverurl = unix:///tmp/supervisor.sock conectarse al demonio mediante el comando supervisorctl través del socket de dominio Unix cuya ruta especificó con las serverurl = unix:///tmp/supervisor.sock y file = /tmp/supervisor.sock .

(svd)08/09 3:51 [nodakai@kaidev01] ~/prog/svd$ supervisorctl -c supervisord.conf foo FATAL Exited too quickly (process log may have details) supervisor> help default commands (type help <topic>): ===================================== add clear fg open quit remove restart start stop update avail exit maintail pid reload reread shutdown status tail version supervisor> tail foo -rw-r-- 1 nodakai nodakai 1521 8月 9 03:43 supervisord.log -rw-r--r-- 1 nodakai nodakai 6 8月 9 03:43 supervisord.pid 合計 32 drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:10 bin drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 include drwxrwxr-x 3 nodakai nodakai 4096 8月 9 03:07 lib drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 local -rw-rw-r-- 1 nodakai nodakai 346 8月 9 03:43 supervisord.conf -rw-rw-r-- 1 nodakai nodakai 340 8月 9 03:42 supervisord.conf~ -rw-rw-r-- 1 nodakai nodakai 1651 8月 9 03:43 supervisord.log -rw-r--r-- 1 nodakai nodakai 6 8月 9 03:43 supervisord.pid 合計 32 drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:10 bin drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 include drwxrwxr-x 3 nodakai nodakai 4096 8月 9 03:07 lib drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 local -rw-rw-r-- 1 nodakai nodakai 346 8月 9 03:43 supervisord.conf -rw-rw-r-- 1 nodakai nodakai 340 8月 9 03:42 supervisord.conf~ -rw-rw-r-- 1 nodakai nodakai 1781 8月 9 03:43 supervisord.log -rw-r--r-- 1 nodakai nodakai 6 8月 9 03:43 supervisord.pid 合計 32 drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:10 bin drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 include drwxrwxr-x 3 nodakai nodakai 4096 8月 9 03:07 lib drwxrwxr-x 2 nodakai nodakai 4096 8月 9 03:07 local -rw-rw-r-- 1 nodakai nodakai 346 8月 9 03:43 supervisord.conf -rw-rw-r-- 1 nodakai nodakai 340 8月 9 03:42 supervisord.conf~ -rw-rw-r-- 1 nodakai nodakai 1911 8月 9 03:43 supervisord.log -rw-r--r-- 1 nodakai nodakai 6 8月 9 03:43 supervisord.pid supervisor> status foo FATAL Exited too quickly (process log may have details) supervisor> quit (svd)08/09 3:51 [nodakai@kaidev01] ~/prog/svd$

Además, la interfaz gráfica de usuario web es muy conveniente. Agregue estas líneas a su archivo de configuración:

[inet_http_server] port = 127.0.0.1:9001

Ver el documento oficial para más detalles.


Puede redireccionar la salida estándar del programa a la salida estándar del supervisor usando las siguientes opciones de configuración:

stdout_logfile=/dev/fd/1 stdout_logfile_maxbytes=0

Explicación:

  • Cuando un proceso abre /dev/fd/1 (que es lo mismo que /proc/self/fd/1 ), el sistema en realidad clona el descriptor de archivo # 1 (stdout) de ese proceso. El uso de este como stdout_logfile por stdout_logfile tanto, hace que el supervisord redirija la stdout_logfile del programa a su propia stdout_logfile .
  • stdout_logfile_maxbytes=0 desactiva la rotación del archivo de registro, lo que obviamente no es significativo para stdout. Si no especifica esta opción, se producirá un error porque el valor predeterminado es 50 MB y el supervisor no es lo suficientemente inteligente como para detectar que el archivo de registro especificado no es un archivo normal.

Para más información:

http://veithen.github.io/2015/01/08/supervisord-redirecting-stdout.html