En este tutorial, profundizamos en el comando Linux Strace y demostramos algunos usos de ejemplo.
Sintaxis del comando básico
El comando strace toma la siguiente sintaxis:
Comando de Opciones de Strace
Cómo instalar el comando Linux Strace
La mayoría de las distribuciones modernas de Linux se envían con utilidad strace de forma predeterminada. Sin embargo, si Strace no está instalado en su sistema por cualquier razón, siga los pasos a continuación para instalarlo.
En Debian / Ubuntu
Si está ejecutando sistemas basados en Debian / Ubuntu, ejecute:
$ sudo apt instalación strace
En rhel / centos
$ sudo yum instalación strace
Para verificar que Strace esté instalado, puede verificar su versión como se muestra.
$ strace -version
Veamos ahora algunos usos de ejemplo.
Comando básico de Strace
En su formato más básico, el comando strace trazará y mostrará llamadas del sistema, los argumentos (encerrados en aparatos cuadrados o paréntesis) y la llamada ejecutable.
En el ejemplo a continuación, podemos ver los argumentos de ejecutar el script Hola.mierda, Llamada encerrada entre paréntesis en la primera línea.
$ Strace ./Hola.mierda
En la última línea, puede ver el estado de salida del comando, en este caso, 0. Esto implica que el comando se ejecutó con éxito sin ningún error. Un código de salida de -1 significa que se encontró un error durante la ejecución.
Contar las llamadas del sistema
Si desea obtener el número de llamadas al sistema, use el -C opción para el recuento como se muestra.
$ strace -c ./Hola.mierda
De la salida anterior, puede ver el número de llamadas del sistema realizadas, incluida la realización de llamadas.
Muestra llamadas específicas del sistema con Strace
Además, puede optar por ver la naturaleza de las llamadas del sistema realizadas con Strace utilizando el -mi opción seguida de la naturaleza de la llamada del sistema. En el fragmento que se muestra, hemos mostrado las llamadas del sistema de escritura y leído.
$ strace -e traza = escribir ./Hola.mierda
$ strace -e traza = leer ./Hola.mierda
Trace llamadas del sistema de red
Puede restringir Strace a mostrar llamadas del sistema de red especificando el tipo de llamada. Aquí. traza = red indica que tenemos la intención de obtener la llamada de red del comando de red ping 8.8.8.8 -C 4.
$ strace -e trace = network ping 8.8.8.8 -C 4
Llamadas del sistema de señal de rastreo
Para las llamadas relacionadas con el sistema, use el argumento como se indica en el comando a continuación. El comando imprime el llamador de señal para el ping 8.8.8.8 -C 4 dominio.
$ strace -e traza = ping de señal 8.8.8.8 -C 4
Impresión de la marca de tiempo de cada llamada del sistema
Para extraer la marca de tiempo para cada llamada del sistema, use el -riñonal Opción como se demuestra en el siguiente comando.
$ strace -r ping 8.8.8.8 -C 4
Como puede ver, se imprime una marca de tiempo relativa para cada llamada del sistema. Se captura y registra la diferencia horaria entre las llamadas sucesivas del sistema.
Mostrar la duración gastada en hacer llamadas al sistema
Además, puede imprimir la duración del tiempo dedicado a cada llamada del sistema utilizando el -T opción como se muestra. El tiempo dedicado se indica en la última columna como se indica.
$ strace -t ping 8.8.8.8 -C 4
Muestra la hora exacta de cada llamada del sistema
Para imprimir la hora real o exacta de las llamadas del sistema, invoca el -T opción como se muestra. El tiempo de reloj en tiempo real o de pared se imprime en la primera columna.
$ strace -t ./Hola.mierda
Muestre el puntero de instrucciones para cada llamada
Para imprimir el puntero de instrucciones para cada llamada del sistema, use el -i opción.
$ strace -i ./Hola.mierda
Guardar la salida de las llamadas del sistema a un archivo de texto
Finalmente, el comando strace le brinda la opción de guardar la salida en un archivo de texto, como se muestra.
$ strace -o sample_output.TXT ./Hola.mierda
Aquí, sample_output.TXT es el archivo de salida, mientras ./Hola.mierda es el comando cuyas llamadas del sistema estamos rastreando.
Terminando
El comando strace es una utilidad de línea de comandos útil y poderosa que ayuda a depurar aplicaciones, comandos y procesos, especialmente si no tiene el código fuente disponible. Es la herramienta de opción de elección para desarrolladores de software y administradores de sistemas.