¡Esta es una revisión vieja del documento!
Strace
strace es una utilidad que nos puede ayudar en la comprobación de errores en procesos en el sistema operativo GNU/Linux. La misma sirve para monitorear las llamadas al sistema usadas por un determinado programa y todas las señales que éste recibe. Esto es posible por una característica del núcleo linux llamada ptrace.
Su uso más común consiste en arrancarlo junto al programa al que se le efectúa el trazado, el cual imprime una lista de llamadas al sistema que dicho programa ejecuta. Es útil para averiguar la causa del fallo de un programa determinado porque informa de situaciones en las que por ejemplo, el programa está intentando acceder a un fichero que no existe o que no tiene permiso de lectura.
Uso
En simples palabras su ejecución mas simple es strace -p pid
Si ejecutamos un strace al numero de proceso del squid obtendríamos algo como esto
22118289675}}, {EPOLLOUT, {u32=227, u64=227}}, {EPOLLOUT, {u32=287, u64=287}}}, 256, 10) = 5 gettimeofday({1266513451, 218933}, NULL) = 0 write(299, "HTTP/1.0 200 OK\r\nServer: Apache/"..., 558) = 558 msgsnd(65536, {3, "\316\254H\0\245o\257\1\330\300\325\v\0\20\0\0\5\2\0\0\377\377\377\377\0\0\0\0"}, 28, IPC_NOWAIT) = 0 epoll_ctl(4, EPOLL_CTL_MOD, 299, {EPOLLIN|EPOLLERR|EPOLLHUP, {u32=299, u64=299}}) = 0 accept(94, {sa_family=AF_INET, sin_port=htons(40369), sin_addr=inet_addr("192.168.16.2")}, [16]) = 418 getsockname(418, {sa_family=AF_INET, sin_port=htons(8080), sin_addr=inet_addr("192.168.2.100")}, [16]) = 0 fcntl64(418, F_GETFL) = 0x2 (flags O_RDWR) fcntl64(418, F_SETFD, FD_CLOEXEC|0x2) = 0 fcntl64(418, F_GETFL) = 0x2 (flags O_RDWR) fcntl64(418, F_SETFL, O_RDWR|O_NONBLOCK) = 0 epoll_ctl(4, EPOLL_CTL_ADD, 418, {EPOLLIN|EPOLLERR|EPOLLHUP, {u32=418, u64=578448656441541026}}) = 0 accept(94, 0xbfe9e758, [16]) = -1 EAGAIN (Resource temporarily unavailable) read(267, "UBX cayu16@hotmail.com 1 "..., 65535) = 442 epoll_ctl(4, EPOLL_CTL_MOD, 229, {EPOLLIN|EPOLLOUT|EPOLLERR|EPOLLHUP, {u32=229, u64=578448763815723237}}) = 0 write(227, "GIF89a\t\0\27\0\263\0\0\0\0\0\377\377\377\377\377\373\376\346\0\376\352+\376\353/\376"..., 111) = 111 write(7, "1266513451.218 19 10.248.2.1"..., 139) = 139
Esto es útil por ejemplo si creemos que los helpers de autenticación no se están ejecutando correctamente
f = hace un traceo del proceso y de sus forks
p = numero de PID (process ID)
strace -fp PID
strace -fp processID -o outputfile
r = agregar timestamp a cada línea
strace -fp processID -o outputfile -r