Use Strace

strace — утилита для Linux, которая позволяет отследить выполнение системных вызовов (system call) и сигналов к ядру системы.

Пока не знаю для чего еще нужна, но я пользовался чтобы понять ошибку(свою тупость). Поехали

Ставим Strace

sudo apt install -y strace

Узнаем PIDi Nginx

#pidof nginx
8122 309

Запускаем и видим что то вроде этого

strace -p 8122 -p 309 -e trace=file -f
strace: Process 8122 attached
strace: Process 309 attached
[pid  8122] openat(AT_FDCWD, "/mnt/myhelp/files", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
[pid  8122] openat(AT_FDCWD, "/mnt/myhelp/files", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
[pid  8122] openat(AT_FDCWD, "/mnt/myhelp/files", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
[pid  8122] openat(AT_FDCWD, "/mnt/myhelp/files/index.html", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
[pid  8122] openat(AT_FDCWD, "/mnt/myhelp/files/test", O_RDONLY|O_NONBLOCK) = -1 ENOENT (No such file or directory)
^Cstrace: Process 8122 detached
strace: Process 309 detached

Данный пример синтетический, в данном случае у меня был не правильно настроен конфиг Nginx

Пример по определению адреса куда обращается приложение.

Узнаем PID процесса как вам удобно и применяем strace

 strace -p 3912601 -e trace=network -f
strace: Process 3912601 attached
--- SIGWINCH {si_signo=SIGWINCH, si_code=SI_KERNEL} ---
recvfrom(6, "\27\3\3\0\247", 5, 0, NULL, NULL) = 5
recvfrom(6, "\16\200\256\336\233\253\226`[\20,).\374\3\27>\333\253\212]\317dh\255\5;\373\16\313\302\205"..., 167, 0, NU
sendto(6, "\27\3\3\0n\22\343>\0C\267`5\3106m\\$\203\3132\275\244\226U\345n\"\300 o\334"..., 115, MSG_NOSIGNAL, NULL, 0)
recvfrom(6, "\27\3\3\0\"", 5, 0, NULL, NULL) = 5
recvfrom(6, "`\340\35\v\3W\220\276\v\0357\31\35j\266\351\202\223\353\302\351\301\365\206\305\204\266\230q|\25\312"...,
sendto(6, "\27\3\3\0\"SJ\216\217{\202\274\260\22\355\232x\f\204\20?\261\251\200\227\370\233\347w\305>\30"..., 39, MSG_N
sendto(6, "\27\3\3\0k}\373\275\317\230[\1775\352\303\331\276\356\212\6\345}H\273\347X\222/ \1777\352"..., 112, MSG_NOSI
recvfrom(6, "\27\3\3\0F", 5, 0, NULL, NULL) = 5
recvfrom(6, "~\371\231\365\0170\321w\272\217\243\231\2424\214M>\3121kN\1|\321b\270\20\31\224h\335}"..., 70, 0, NULL, NU
recvfrom(6, "\27\3\3\4\311", 5, 0, NULL, NULL) = 5
recvfrom(6, "\22\n\3063\231bn\207\224\5\351\210p\267\232\23\365U\265\30\241=\r6\340\372wH2\266\200\367"..., 1225, 0, NU
recvfrom(6, 0x55c6fa342dd3, 5, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
socketpair(AF_UNIX, SOCK_STREAM, 0, [7, 8]) = 0
strace: Process 3924331 attached
[pid 3924331] socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 9
[pid 3924331] setsockopt(9, SOL_IP, IP_RECVERR, [1], 4) = 0
[pid 3924331] connect(9, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.53")}, 16) = 0
[pid 3924331] sendto(9, "\277\266\1 \0\1\0\0\0\0\0\1\27shpd-e39a2-default-"..., 86, MSG_NOSIGNAL, NULL, 0) = 86
[pid 3924331] recvfrom(9, "\277\266\201\200\0\1\0\1\0\0\0\1\27shpd-e39a2-default-"..., 1024, 0, {sa_family=AF_INET, sin
[pid 3924331] sendto(8, "\1", 1, MSG_NOSIGNAL, NULL, 0) = 1
[pid 3924331] +++ exited with 0 +++
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 7
setsockopt(7, SOL_TCP, TCP_NODELAY, [1], 4) = 0
connect(7, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("34.107.226.223")}, 16) = -1 EINPROGRESS (Operat
getsockopt(7, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 7
setsockopt(7, SOL_TCP, TCP_NODELAY, [1], 4) = 0
connect(7, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("34.107.226.223")}, 16) = -1 EINPROGRESS (Operat
getsockopt(7, SOL_SOCKET, SO_ERROR, [ECONNREFUSED], [4]) = 0
^Cstrace: Process 3912601 detached

Добавить комментарий 0