cubuntu@VM-8-16-ubuntu:~$ strace redis-server
// 切换到了执行文件
execve("/usr/local/bin/redis-server", ["redis-server"], 0x7fff26814f30 /* 27 vars */) = 0
brk(NULL) = 0x5575ff3bb000
arch_prctl(0x3001 /* ARCH_??? */, 0x7ffe24c54730) = -1 EINVAL (Invalid argument)
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f1c37962000
access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3
newfstatat(3, "", {st_mode=S_IFREG|0644, st_size=24629, ...}, AT_EMPTY_PATH) = 0
mmap(NULL, 24629, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f1c3795b000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libm.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\0\0\0\0\0\0\0\0"..., 832) = 832
.............一堆系统和动态库调用逻辑................................................输出Redis启动ART图
ioctl(1, TCGETS, {B38400 opost isig icanon echo ...}) = 0
getpid() = 3420418
write(1, " _._ "..., 1024 _._
_.-``__ ''-._
_.-`` `. `_. ''-._ Redis 7.2.3 (00000000/0) 64 bit
.-`` .-```. ```\/ _.,_ ''-._
( ' , .-` | `, ) Running in standalone mode
|`-._`-...-` __...-.``-._|'` _.-'| Port: 6379
| `-._ `._ / _.-' | PID: 3420418
`-._ `-._ `-./ _.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' | https://redis.io
`-._ `-._`-.__.-'_.-' _.-'
|`-._`-._ `-.__.-' _.-'_.-'|
| `-._`-._ _.-'_.-' |
`-._ `-._`-.__.-'_.-' _.-'
`-._ `-.__.-' _.-'
`-) = 1024
write(1, "._ _.-' "..., 58._ _.-'
) = 58
write(1, " `-.__.-' "..., 70 `-.__.-'
) = 70
write(1, "\n", 1
) = 1、
...................................开始设置监听Socket.............................................
openat(AT_FDCWD, "/proc/sys/net/core/somaxconn", O_RDONLY) = 6
newfstatat(6, "", {st_mode=S_IFREG|0644, st_size=0, ...}, AT_EMPTY_PATH) = 0
read(6, "4096\n", 1024) = 5
close(6) = 0
socket(AF_INET, SOCK_STREAM, IPPROTO_TCP) = 6
setsockopt(6, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(6, {sa_family=AF_INET, sin_port=htons(6379), sin_addr=inet_addr("0.0.0.0")}, 16) = 0
listen(6, 511) = 0
fcntl(6, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(6, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl(6, F_GETFD) = 0
fcntl(6, F_SETFD, FD_CLOEXEC) = 0
socket(AF_INET6, SOCK_STREAM, IPPROTO_TCP) = 7
setsockopt(7, SOL_IPV6, IPV6_V6ONLY, [1], 4) = 0
setsockopt(7, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
bind(7, {sa_family=AF_INET6, sin6_port=htons(6379), sin6_flowinfo=htonl(0), inet_pton(AF_INET6, "::", &sin6_addr), sin6_scope_id=0}, 28) = 0
listen(7, 511) = 0
fcntl(7, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(7, F_SETFL, O_RDWR|O_NONBLOCK) = 0
fcntl(7, F_GETFD) = 0
fcntl(7, F_SETFD, FD_CLOEXEC) = 0
epoll_ctl(5, EPOLL_CTL_ADD, 6, {events=EPOLLIN, data={u32=6, u64=6}}) = 0
epoll_ctl(5, EPOLL_CTL_ADD, 7, {events=EPOLLIN, data={u32=7, u64=7}}) = 0
rt_sigaction(SIGRT_1, {sa_handler=0x7f1c376dd8f0, sa_mask=[], sa_flags=SA_RESTORER|SA_ONSTACK|SA_RESTART|SA_SIGINFO, sa_restorer=0x7f1c3768e520}, NULL, 8) = 0
rt_sigprocmask(SIG_UNBLOCK, [RTMIN RT_1], NULL, 8) = 0
mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c36316000
mprotect(0x7f1c36317000, 8388608, PROT_READ|PROT_WRITE) = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
..............................初始化Bio里面的微型线程池,默认三个,调用三次clone.................................................
# clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7f1c36b16910, parent_tid=0x7f1c36b16910, exit_signal=0, stack=0x7f1c36316000, stack_size=0x7ff480, tls=0x7f1c36b16640} => {parent_tid=[3420419]}, 88) = 3420419
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c35b15000
mprotect(0x7f1c35b16000, 8388608, PROT_READ|PROT_WRITE) = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
# clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7f1c36315910, parent_tid=0x7f1c36315910, exit_signal=0, stack=0x7f1c35b15000, stack_size=0x7ff480, tls=0x7f1c36315640} => {parent_tid=[3420420]}, 88) = 3420420
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c35314000
mprotect(0x7f1c35315000, 8388608, PROT_READ|PROT_WRITE) = 0
rt_sigprocmask(SIG_BLOCK, ~[], [], 8) = 0
clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7f1c35b14910, parent_tid=0x7f1c35b14910, exit_signal=0, stack=0x7f1c35314000, stack_size=0x7ff480, tls=0x7f1c35b14640} => {parent_tid=[3420421]}, 88) = 3420421
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, ~[RTMIN RT_1], [], 8) = 0
mmap(NULL, 8392704, PROT_NONE, MAP_PRIVATE|MAP_ANONYMOUS|MAP_STACK, -1, 0) = 0x7f1c34b13000
mprotect(0x7f1c34b14000, 8388608, PROT_READ|PROT_WRITE) = 0
rt_sigprocmask(SIG_BLOCK, ~[], ~[KILL STOP RTMIN RT_1], 8) = 0
# clone3({flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID, child_tid=0x7f1c35313910, parent_tid=0x7f1c35313910, exit_signal=0, stack=0x7f1c34b13000, stack_size=0x7ff480, tls=0x7f1c35313640} => {parent_tid=[3420422]}, 88) = 3420422
rt_sigprocmask(SIG_SETMASK, ~[KILL STOP RTMIN RT_1], NULL, 8) = 0
rt_sigprocmask(SIG_SETMASK, [], NULL, 8) = 0
getpid() = 3420418
getpid() = 3420418
write(1, "3420418:M 15 Nov 2023 10:09:24.2"..., 563420418:M 15 Nov 2023 10:09:24.217 * Server initialized
) = 56
newfstatat(AT_FDCWD, "appendonlydir", 0x7ffe24c54660, 0) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "dump.rdb", O_RDONLY) = -1 ENOENT (No such file or directory)
getpid() = 3420418
getpid() = 3420418
...........................................开始epoll_wait事件循环...................................................................
write(1, "3420418:M 15 Nov 2023 10:09:24.2"..., 693420418:M 15 Nov 2023 10:09:24.217 * Ready to accept connections tcp
) = 69
epoll_wait(5, [], 10128, 0) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
openat(AT_FDCWD, "/proc/self/stat", O_RDONLY) = 8
read(8, "3420418 (redis-server) R 3420415"..., 4095) = 341
close(8) = 0
epoll_wait(5, [], 10128, 100) = 0
..................................无限................................................
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!