¿Hay alguna manera de ver qué comandos se ejecutan en otro shell, mientras se ejecutan? Ambos shells son bash, y tengo acceso de root, si eso importa. No puedo instalar ningún software adicional, y no quiero que el otro shell tenga que hacer nada especial como ejecutar la pantalla.
Situación: estoy conectado remotamente a una máquina Linux, y también lo es un compañero de trabajo. Me gustaría ver los comandos que está ejecutando en su caparazón. Sé que podría usar alguna combinación de watch
y ps
ver cualquier comando que demore más de un segundo en ejecutarse, pero no creo que eso ayude con comandos muy cortos.
shell
monitoring
Toma panorámica
fuente
fuente
kill
, ycd
no generan subprocesos y nunca aparecerían en la salida ps.Respuestas:
Como eres root, siempre podrías
strace -f -e execve -p her_bash_pid
. Esto-f
es necesario porque su shell bifurcará un nuevo proceso antes delexec
, pero esto también significa que también verá todo lo que los procesos secundarios ejecutan.fuente
exec
es.Si su compañero de trabajo puede modificar algunas configuraciones de historial para su shell bash, entonces puede obtener esta información en tail -f /home/user/.bash_history. Aquí está la configuración que necesitará para que .bash_history se escriba después de cada comando, en lugar de en la salida de shell:
Sin embargo, consideraría que una sesión de pantalla es una solución "ideal".
fuente
Después de una investigación rápida (y algunas reflexiones) puedo darle la siguiente lista de posibles opciones:
conspy
.screen
. Si solo quieres ayudarla y no espiarla, ella podría estar dispuesta a ejecutar su sesión dentro de la pantalla. Entonces puede simplemente adjuntar a su sesión porsudo -u herUsername screen -x
cat /dev/pts/X | tee /dev/pts/X
fue lo primero que me vino a la mente. Pero después de intentarlo realmente no funciona y es una solución muy sucia. Cada carácter solo se imprime en uno de los terminales conectados (que también es la razón para llamartee
). Al probarlo, podía espiar a cada segundo personaje. Con un poco de imaginación, podrías adivinar lo que está haciendo ...fuente
La pantalla de GNU es IMO, la mejor recomendación hasta ahora. Si la pantalla GNU (o tmux) no está disponible, ejecute a su compañero de trabajo
script -f
.Y luego puedes ver lo que está haciendo haciendo
tail -fn +0 /path/to/typescript
.fuente
Para compartir un terminal de pantalla Unix, para que pueda ver las entradas y salidas de su compañero de trabajo en tiempo real, use el
screen
comando Unix .Escribe el comando
screen -d -m -S myscreenname
screen -x myscreenname
(Por supuesto, reemplace myscreenname con lo que quiera que sea el nombre de usuario).
El compañero de trabajo teclea el comando
screen -x myscreenname
Para terminar de compartir sus terminales Unix, cualquier persona puede escribir el comando
exit
La gran característica de la pantalla es que puede escribir comandos desde su terminal Unix y el compañero de trabajo puede ver la salida en su pantalla. Es una excelente manera de hacer administración de pares y mentor de administradores junior de Unix.
fuente
Para completar la respuesta de @ jordanm ... si ambos usan la misma cuenta de usuario, es decir, la salida de
es lo mismo para usted y su compañero de trabajo, entonces podemos divertirnos un poco.
Podemos habilitar la visualización de comandos invocados en un terminal para que esté disponible instantáneamente en otro
Si invoca
history
en su terminal, verá sus comandos anteriores. De forma predeterminada, bash escribe su historial al final de cada sesión en una~/.bash_history file
, sobrescribiendo el archivo existente con una versión actualizada. Esto significa que si ha iniciado sesión con varias sesiones de bash, solo se guardará el historial de la última en salir.-------------------------------------------------- -----
Edite su
~/.bashrc
y agréguelodónde
history -a
agrega al~/.bash_history
archivo inmediatamente en lugar de al final de la sesiónhistory -c
borra el historial de la sesión actualhistory -r
lee el~/.bash_history
archivo al que hemos añadido, de nuevo en nuestro historial de sesionesNota: el
PROMPT_COMMAND
parámetro contiene comandos que se ejecutan antes de cada nuevo símbolo del sistema. entonces command1 solo se guardará en el historial cuando se ejecute command2Es posible que también desee colocar una marca de tiempo junto a cada comando para su comodidad al ver el historial. Nuevamente, edite su
~/.bashrc
y agregueTambién es un buen truco si te gusta usar múltiples terminales y te gusta tener tu historial de comandos disponibles :)
Más información
fuente