Además de publicar -el procesamiento de la salida strace
, no hay nada disponible para ignorar las llamadas al sistema fallidas en strace
. No sería demasiado difícil de agregar, mire la función syscall_exiting_trace
ensyscall.c
.
Si prefiere seguir el ángulo de procesamiento posterior -, Ole Tange ya se ha encargado de eso por usted de una manera más completa de lo que es probable que llegue aquí :el La herramientatracefile
ejecutará strace
y filtrará la información que está buscando de una manera muy legible. Consulte Listar los archivos a los que accede un programa para obtener más detalles. Otra respuesta a esa pregunta enumera otros enfoques posibles, incluido LoggedFS que encuentro muy útil.
Otra opción es usar SystemTap ; por ejemplo
#!/usr/bin/env stap
global stored_filename, stored_path
probe syscall.open {
stored_filename = filename
}
probe syscall.open.return {
if (execname() == "cat" && $return >= 0) {
printf("opened %s\n", stored_filename)
}
}
probe syscall.openat {
stored_filename = filename
stored_path = dfd_str
}
probe syscall.openat.return {
if (execname() == "cat" && $return >= 0) {
printf("opened %s in %s\n", stored_filename, stored_path)
}
}
mostrará el nombre de cualquier archivo abierto con éxito por cualquier proceso cat
.