ืืืึทื ืืึธื ืึทืจืืขื ืืื ืืขืจืกืื ืก ืืืืืืืืืจื ืืืคึผืืืืืึทื ื, ืืืึธืก ืืืื ืืื ืคืึทืจืืจืขื ืืขื ืึท ืคึผืืึทืฅ ืคืื ืฆืืื ืฆื ืคึผืจืืืืจื ืฆื ืขื ืืคึฟืขืจื ืคึฟืจืืื ืืื:
- ืื ืืืืืืืืืจื ืึทืจืืขื ืคึฟืึทืจ ืื ืืขืืืขืืึธืคึผืขืจ, ืึธืืขืจ ื ืืฉื ืคึฟืึทืจ ืืืจ. ืคืืจืืืืก?
- ื ืขืืื ืืขื ืืืืืืืืืจื ืืขืืจืืขื ืคึฟืึทืจ ืืืจ, ืึธืืขืจ ืืืึทื ื ืขืก ืืื ื ืืฉื. ืคืืจืืืืก?
ืืึธืก ืืื ืึท ืืื ืคืื ืืืืึทืืื ื ืืืึธืก ืืื ืึท ืืืกื ืึทื ืืขืจืฉ ืคืื ืจืขืืืืขืจ ืืืืืืืืืจื ืืืืึทืืื ื. ืจืขืืืืขืจ ืืืืึทืืื ื ืืื ืืืขืื ืื ืืึธืืืง ืคืื ืื ืงืึธื, ืึธืืขืจ ืืืคึผืืืืืึทื ื ืืืืึทืืื ื ืืื ืืืขืื ืื ืื ืืขืจืึทืงืฉืึทื ืฆืืืืฉื ืื ืงืึธื ืืื ืื ืกืืืืืืข. ืืคืืื ืืืื ืืขืจ ืฉืืจืฉ ืคืื ืืขื ืคึผืจืึธืืืขื ืืื ืึท ืืึทืืืฉืืงืึทื ืืขืืช, ืืขืจ ืคืึทืงื ืึทื ืึทืืฅ ืึทืจืืขื ืืืืฃ ืืืื ืืึทืฉืื ืืื ื ืืฉื ืืืืฃ ืื ืื ืืขืจ ืืืื ืึทื ืืขืจ ืคึผืจืึธืืืขื ืืื ืขืคืขืก ืืื ืืขืจ ืกืืืืืืข.
ืึทืืื ืึทื ืฉืืึธื ืคืื ืื ืืขืืืืื ืืืขื ืืืืึทืืื ื ืืืฉืืจืื ืืื ืืื ืืื ืืึธืื ืึท ืึทื ืืขืจืฉ ืืึทื ื ืคืื ืืืฉืืจืื ืคึฟืึทืจ ืืืืึทืืื ื ืืืคึผืืืืืึทื ื. ืืื ืืืื ืืึทืืืืกืืข ืืขืฆืืึทื ืคึฟืึทืจ ืืืืื ื ืืื ืืขื ืคึผืจืึธืืืขื ืืื "ืคืืจืืืืก ืืื ืื ืืืืืืืืืจื ื ืืฉื ืึทืจืืขืื ืคึฟืึทืจ ืืืจ?" ืืขืจืืคื ืฉืืจืขื ื.
ืืืึธืก ืืื ืกืืจืึทืกืข?
ืื ืืงืขืจืืืง ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืืืขืจ ืคึผืฉืื. ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืฆื ืืืืคื ืกืืจืึทืกืข ืืื ืงืืื ืืึทืคึฟืขื ืืื ืขืก ืืืขื ืืึทืืคึผ ืึทืืข ืกืืกืืขื ืจืืคื (ืืึธืืฉ ืขืจืฉืืขืจ ืืืจ ืืืขื ืืืกืืึธืืข ืืึธืื ืฆื ืื ืกืืึทืืืจื ืขืก ืืื ืฉืืจืขื ื):
$ strace echo Hello
...Snip lots of stuff...
write(1, "Hellon", 6) = 6
close(1) = 0
close(2) = 0
exit_group(0) = ?
+++ exited with 0 +++
ืืืึธืก ืืขื ืขื ืื ืกืืกืืขื ืจืืคื? ืืึธืก ืืื ืขืคึผืขืก ืืื ืึทื ืึทืคึผื ืคึฟืึทืจ ืื ืึธืคึผืขืจืืืืื ื ืกืืกืืขื ืงืขืจื. ืึทืืึธื ืืืืฃ ืึท ืฆืืึทื, ืืืืืืืืืจื ืืื ืืืจืขืงื ืึทืงืกืขืก ืฆื ืื ืืึทืื ืืืึทืจื ืขืก ืืขืืืคื ืืืืฃ. ืืืื, ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืขืก ืืืจืฃ ืฆื ืืืืึทืื ืขืคึผืขืก ืืืืฃ ืืขื ืขืงืจืึทื, ืขืก ืคึผืืืึทืขื ืืื ืคึผืึธืจืฅ ืึธืืขืจ ืืึผืจืื-ืืึทืคึผื ืจืขืืืฉืืกืืขืจื ืคึฟืึทืจ ืืืืืขื ืืขืืืืกืขืก. ืืืขื ืืึทืืืืืึทืกืงืื ื ืงืึธืืคึผืืืืขืจ ืกืืกืืขืืขื ืืขืืืืจื ืคืึธืืงืก, ืืึทืึธืก ืืขืืขืจืฉื ืืื ืคืึทืจืฉืืื ืึทืคึผืืึทืงืืืฉืึทื ื ืืขืงืขืืคื ืืืืขืจ ืื ืืึทืื ืืืึทืจื. ืขืจืจืึธืจืก ืืื ืืืื ืึทืคึผืืึทืงืืืฉืึทื ืงืขื ืืจืขื ืืขื ืึทืจืึธืคึผ ืื ืืขืจืข, ืืืื ื ืืฉื ืื ืืื ืฆืข ืกืืกืืขื. ืืขืจื ืึธื ืคึผืจืืืืืืขืืืข ืืึธืืขืก (ืึธืืขืจ "ืจืื ื ืฉืืฅ") ืืจืืืก ืืื ืื ืงืคึผื. ืืขืจ ืงืขืจื ืืื ืืขืืืืจื ืื ืืขืจืกื ืคึผืจืืืืืืืืฉื: ืขืก ืืืงืืืขื ืคืื ืึทืงืกืขืก ืฆื ืื ืืึทืื ืืืึทืจื, ืกืคึผืึธื ืื ื ืืืืื ืืงืขืจ ืคึผืจืืืืืืืืฉื ืึทืคึผืืึทืงืืืฉืึทื ื ืืืึธืก ืฉืืื ืืึธืื ืฆื ืืขืื ืึทืงืกืขืก ืคืื ืื ืงืขืจื ืฆื ืื ืืขืจืึทืงื ืืื ืื ืืึทืื ืืืึทืจื ืืืจื ืกืืกืืขื ืจืืคื.
ืืื ืื ืืืื ืขืจื ืืืจืื, ืึท ืกืืกืืขื ืจืืคื ืืื ืึท ืืืกื ืึทื ืืขืจืฉ ืคืื ืึท ืคึผืฉืื ืคึฟืื ืงืฆืืข ืจืืคื, ืึธืืขืจ ืจืืึฟ ืืืืื ื ืืฆื ืึท ืจืึทืคึผืขืจ ืืื ืื ื ืึธืจืืึทื ืืืืืืึธืืขืง. ืืขื ืข. ืื POSIX C ื ืึธืจืืึทื ืืืืืืึธืืขืง ืึผืืื ืึท ืคืื ืงืฆืืข ืจืืคื ืฉืจืืึทืื (), ืืืึธืก ืึผืืื ืึทืืข ืื ืึทืจืงืึทืืขืงืืฉืขืจ-ืกืคึผืขืฆืืคืืฉ ืงืึธื ืคึฟืึทืจ ืื ืกืืกืืขื ืจืืคื ืฉืจืืึทืื.
ืืื ืงืืจืฅ, ืงืืื ืื ืืขืจืึทืงืฉืึทื ืฆืืืืฉื ืึท ืึทืคึผืืึทืงืืืฉืึทื ืืื ืืืึทื ืกืืืืืืข (ืงืึธืืคึผืืืืขืจ ืกืืกืืขืืขื) ืืื ืืืจืืืขืงืึธืื ืืืจื ืกืืกืืขื ืจืืคื. ืืขืจืืืขืจ, ืืืขื ืืืืืืืืืจื ืึทืจืืขื ืืืืฃ ืืืื ืืึทืฉืื ืึธืืขืจ ื ืืฉื ืืืืฃ ืื ืืขืจื, ืขืก ืืืึธืื ืืืื ืืื ืฆื ืงืืงื ืืื ืื ืกืืกืืขื ืจืืคื ืืจืืืกืื ื ืจืขืืืืืึทืื. ืืขืจ ืกืคึผืึทืกืืคืืงืื, ืืึธ ืืื ืึท ืจืฉืืื ืคืื ืืืคึผืืฉ ืคืื ืงืื ืืืึธืก ืงืขื ืขื ืืืื ืึทื ืึทืืืืื ืืื ืึท ืกืืกืืขื ืจืืคื ืฉืคึผืืจ:
- ืงืึทื ืกืึธืื ืืื / ืึธ
- ื ืขืฅ ืืื / ืึธ
- ืืขืงืข ืกืืกืืขื ืึทืงืกืขืก ืืื ืืขืงืข ื / ืึธ
- ืึธื ืคืืจืื ื ืื ืืขืื ืคืื ืึท ืคึผืจืึธืฆืขืก ืคืึธืืขื
- ื ืืืขืจืืง-ืืืจืื ืืึผืจืื ืคืึทืจืืืึทืืืื ื
- ืึทืงืกืขืก ืฆื ืกืคึผืขืฆืืคืืฉ ืืืื ืืจืืืืขืจืก
ืืืขื ืฆื ื ืืฆื ืกืืจืึทืกืข?
ืืื ืืขืึธืจืืข, ืฉืืจืขื ื ืืขืืืืื ื ืืื ืงืืื ืคึผืจืึธืืจืึทื ืืื ืืึทื ืืฆืขืจ ืคึผืืึทืฅ, ืืืืึทื ืงืืื ืคึผืจืึธืืจืึทื ืืื ืืึทื ืืฆืขืจ ืคึผืืึทืฅ ืืืื ืืึทืื ืกืืกืืขื ืงืึทืืืก. ืขืก ืึทืจืืขื ืืขืจ ืืคืืฉืึทื ืืื ืืื ืงืึทืืคึผืืืื, ื ืืืขืจืืง-ืืืจืื ืืืืื, ืึธืืขืจ ืขืก ืืืื ืึทืจืืขื ืืื ืืืื-ืืืจืื ืฉืคึผืจืึทืื ืืื Python ืืืื ืืืจ ืงืขื ืขื ืฉื ืืึทืื ืืืจื ืื ื ืึธื ืจืึทืฉ ืคืื ืื ืจืื ืืืืข ืืื ืืืขืจืืขืฆืขืจ.
ืืื ืืฒึทื ืืึทื ืฆื ืคึผืจืึทืื ืฉืืจืขื ื ืื ืืคืืขืงื ืืื ืืื ืืืืึทืืื ื ืคืื ืืืืืืืืืจื ืืืึธืก ืึทืจืืขื ืืื ืืืืฃ ืืืื ืืึทืฉืื, ืึธืืขืจ ืคึผืืืฆืืื ื ืกืืึทืคึผืก ืืจืืขืื ืืืืฃ ืื ืืขืจื, ืคึผืจืึธืืืฆืืจื ืืืืื ืึทืจืืืงืืขื ืืืขืื ืืขืงืขืก, ืคึผืขืจืืืฉืึทื ื, ืึธืืขืจ ื ืื ืืขืจืึธืื ืคึผืจืืืื ืฆื ืืืกืคืืจื ืขืืืขืืข ืงืึทืืึทื ืื ืึธืืขืจ ืขืคึผืขืก ืึทื ืืขืจืฉ... ืขืก ืืื ืึท ืฉืึธื, ืึธืืขืจ ืขืก ืืื ื ืืฉื ืคืึทืจืืื ืื ืึทืืื ืืื ืืื ืืืื-ืืืจืื ืคึผืจืึธืืืขืืก ืึทืืึท ืืื ืืึทืืืืึทืื ืืืขืจืึทืคืึทืงืืืฉืึทื ืขืจืจืึธืจืก. ืืืืฉืึทืืืึทืื ืืึธืก ืจืืงืืืืืขืจื ืึท ืงืึธืืืื ืึทืฆืืข ืฉืืจืขื ืืืื
ืืืจ ืืืขืื ื ืืฆื ืึท ืกืืึทื ืืึทืืึธื ืข ืกืขืจืืืขืจ ืืื ืึท ืืืึทืฉืคึผืื, ืึธืืขืจ ืกืืกืืขื ืจืืคื ืืจืืืกืื ื ืงืขื ืขื ืึธืคื ืืืื ืืขืืื ืืืืฃ ืืขืจ ืงืึธืืคึผืืืฆืืจื ืืืคึผืืืืืึทื ื ืคึผืืึทืืคืึธืจืืก. ืืืจ ื ืึธืจ ืืึทืจืคึฟื ืฆื ืงืืืึทืื ืื ืจืขืื ืืืฉืืจืื.
ืคึผืฉืื ืืืืึทืืื ื ืืืึทืฉืคึผืื
ืืื ืก ืืึธืื ืืืจ ืืืืื ืฆื ืืืืคื ืื ืึทืืืืืื ื ืกืขืจืืืขืจ ืึทืคึผืืึทืงืืืฉืึทื ืคืึธืึธ, ืืื ืืึธืก ืืื ืืืึธืก ืืืจ ืขื ืืืงื ืืื:
$ foo
Error opening configuration file: No such file or directory
ืืฉืืขืืช ืขืก ืงืขื ื ืืฉื ืืขืคึฟืื ืขื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืืืจ ืืขืฉืจืืื. ืืึธืก ืืึทืคึผืึทื ื ืืืืึทื ืืื ืืืขื ืคึผืขืงื ืืึทื ืึทืืืฉืขืจื ืฆืื ืืืคื ืขืืขื ืึท ืึทืคึผืืึทืงืืืฉืึทื, ืืื ืึธืืืืขืจืจืืื ืื ืืขืจืืืึทืจื ืืขืงืข ืืึธืืงืืืฉืึทื ื. ืืื ืืืื ืืืจ ื ืึธืืคืึธืืื ืื ืืึทื ืืึธื ืืืจืื ื ืคืืจืขืจ ืคึฟืึทืจ ืืืื ืคืึทืจืฉืคึผืจืืืืื ื, ืืื ืื ืืขืจื ืืืจ ืืขืคึฟืื ืขื ืืขืงืขืก ืืึธืจ ืึทื ืืขืจืฉ ืคืื ืืื ืืืจ ืืขืจืืืึทืจื. ืืขืจ ืคึผืจืึธืืืขื ืงืขื ืืืื ืกืึทืืืื ืืื ืึท ืคึผืึธืจ ืคืื ืกืขืงืื ืืขืก ืืืื ืืขืจ ืืขืืช ืึธื ืืึธื ืืขืจืฆืืืื ืืื ืฆื ืงืืงื ืคึฟืึทืจ ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข, ืึธืืขืจ ืืึธืก ืืื ื ืืฉื. ืึทืืื ืืื ืฆื ืงืืงื?
ืืืื ืืืจ ืืึธื ืฆืืืจืื ืฆื ืื ืืงืืจ ืงืึธื, ืืืจ ืงืขื ืขื ืืืืขื ืขื ืขืก ืืื ืืขืคึฟืื ืขื ืึทืืฅ. ื ืืื ืืึทืงืึทืคึผ ืคึผืืึทื, ืึธืืขืจ ื ืืฉื ืื ืคืึทืกืืึทืกื ืืืืืื ื. ืืืจ ืงืขื ืขื ืจืืืึธืจื ืฆื ืึท ืฉืจืื-ืืืจื-ืฉืจืื ืืขืืืืืขืจ ืืื ืืื ืืื ืืขื ืืืึธืก ืื ืคึผืจืึธืืจืึทื ืืื, ืึธืืขืจ ืขืก ืืื ืคืื ืืขืจ ืขืคืขืงืืืื ืฆื ื ืืฆื ืึท ืืขืฆืืึทื ืืืึธืก ืืื ืกืคึผืึทืกืืคืืงืื ืืืืืื ื ืฆื ืืืืึทืื ืื ืืขืจืึทืงืฉืึทื ืืื ืื ืกืืืืืืข: ืฉืืจืขื ื.
ืจืขืืืืืึทื ืฉืืจืขื ื ืงืขื ืืืกืงืืืขื ืืืขืจืืง, ืึธืืขืจ ืื ืืืืข ื ืืึทืขืก ืืื ืึทื ืจืืึฟ ืคืื ืขืก ืงืขื ืขื ืืืื ืืขืฉืึธืืขื ืืืื ืึธืจืืจื. ืขืก ืืื ืึธืคื ื ืืฆืืง ืฆื ื ืืฆื ืื -o ืึธืคึผืขืจืึทืืึธืจ ืฆื ืจืึทืืขืืืขื ืฉืคึผืืจ ืจืขืืืืืึทืื ืฆื ืึท ืืึทืืื ืืขืจ ืืขืงืข:
$ strace -o /tmp/trace foo
Error opening configuration file: No such file or directory
$ cat /tmp/trace
execve("foo", ["foo"], 0x7ffce98dc010 /* 16 vars */) = 0
brk(NULL) = 0x56363b3fb000
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
fstat(3, {st_mode=S_IFREG|0644, st_size=25186, ...}) = 0
mmap(NULL, 25186, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f2f12cf1000
close(3) = 0
openat(AT_FDCWD, "/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3
read(3, "177ELF2113 3 > 1 260A2 "..., 832) = 832
fstat(3, {st_mode=S_IFREG|0755, st_size=1824496, ...}) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f2f12cef000
mmap(NULL, 1837056, PROT_READ, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x7f2f12b2e000
mprotect(0x7f2f12b50000, 1658880, PROT_NONE) = 0
mmap(0x7f2f12b50000, 1343488, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x22000) = 0x7f2f12b50000
mmap(0x7f2f12c98000, 311296, PROT_READ, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x16a000) = 0x7f2f12c98000
mmap(0x7f2f12ce5000, 24576, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x1b6000) = 0x7f2f12ce5000
mmap(0x7f2f12ceb000, 14336, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x7f2f12ceb000
close(3) = 0
arch_prctl(ARCH_SET_FS, 0x7f2f12cf0500) = 0
mprotect(0x7f2f12ce5000, 16384, PROT_READ) = 0
mprotect(0x56363b08b000, 4096, PROT_READ) = 0
mprotect(0x7f2f12d1f000, 4096, PROT_READ) = 0
munmap(0x7f2f12cf1000, 25186) = 0
openat(AT_FDCWD, "/etc/foo/config.json", O_RDONLY) = -1 ENOENT (No such file or directory)
dup(2) = 3
fcntl(3, F_GETFL) = 0x2 (flags O_RDWR)
brk(NULL) = 0x56363b3fb000
brk(0x56363b41c000) = 0x56363b41c000
fstat(3, {st_mode=S_IFCHR|0620, st_rdev=makedev(0x88, 0x8), ...}) = 0
write(3, "Error opening configuration file"..., 60) = 60
close(3) = 0
exit_group(1) = ?
+++ exited with 1 +++
ืืขืขืจืขื ืืขืจ ืขืจืฉืืขืจ ืืืึทื ืคืื ืคึผืจืึธืืืงืฆืืข ืฉืืจืขื ื - ืืึธืก ืืื ืืืืฉืึทืืืึทืื ื ืืืขืจืืง-ืืืจืื ืฆืืืจืืืืื ื ืคึฟืึทืจ ืงืึทืืขืจ. (ืคืืืข ืจืืคื ืืืึทืคึผ, ืืคึผืคึผืจืึธืืขืงื, ืคืขืืขืจ ืคึฟืึทืจ ืืืื ืืื ืืืืขืงืืื ื ื ืืืขืจืืง-ืืืจืื ืืึผืจืื ืืื ืืืืึทืื ืืืง ืืื ืึทืืืฉ ืืืืืจืขืจืื.) ืึทืงืืืึทืืื, ืืขืฉืึทืก ืืืืึทืืื ื ืื ืจืขืืืืืึทื ืฉืืจืขื ื ืขืก ืืื ืืขืกืขืจ ืฆื ืืืืขื ืขื ืคืื ืื ืกืืฃ. ืขืก ืืืขื ืืืื ืึท ืึทืจืืืกืจืืคื ืืื ืื ืฉืจืืึทืื, ืืืึธืก ืืืกืคึผืืืื ืึท ืืขืืช ืึธื ืืึธื. ืืืจ ืงืืงื ืืืืื ืืื ืืขื ืื ืขืจืฉืืขืจ ืืขืืช ืกืืกืืขื ืจืืคื - ืื ืจืืคื openat, ืืืึธืก ืืืืจืคื ืขืจ ืึท ืืขืืช ENOENT ("ืืขืงืข ืึธืืขืจ ืืืขืืืืืึทืืขืจ ื ืื ืืขืคึฟืื ืขื") ืืจืืื ื ืฆื ืขืคึฟืขื ืขื /etc/foo/config.json. ืืึธืก ืืื ืืื ืื ืงืึทื ืคืืืืขืจืืืฉืึทื ืืขืงืข ืืึธื ืืืื.
ืืึธืก ืืื ืืขืืืขื ืืืืื ืึท ืืืืฉืคึผืื, ืึธืืขืจ ืืื ืืืึธืื ืืึธืื 90% ืคืื ืื ืฆืืื ืืืึธืก ืืื ื ืืฆื ืฉืืจืขื ื, ืขืก ืืื ืืึธืจื ืืฉื ืคืื ืืขืจ ืฉืืืขืจ ืฆื ืืึธื ืืื ืืขื. ืื ืืขืจ ืืื ืึท ืืึทื ืฅ ืฉืจืื-ืืืจื-ืฉืจืื ืืืืึทืืื ื ืคืืจืขืจ:
- ืืึทืงืืืขื ืืืขืจืงืขืจื ืืืืึทื ืคืื ืึท ืืืืื ืึธื ืืึธื ืืืขืื ืึท ืกืืกืืขื-ื ืืขืืช ืคืื ืึท ืคึผืจืึธืืจืึทื
- ืจืืกืืึทืจื ืื ืคึผืจืึธืืจืึทื ืืื ืฉืืจืขื ื
- ืืขืคึฟืื ืขื ืื ืืขืืช ืึธื ืืึธื ืืื ืื ืฉืคึผืืจ ืจืขืืืืืึทืื
- ืืืื ืืขืืขืจ ืืื ืืืจ ืฉืืึธืื ืื ืขืจืฉืืขืจ ืืืจืืคืึทื ืกืืกืืขื ืจืืคื
ืขืก ืืื ืืืืขืจ ืืกืชึผืื ืึทื ืื ืกืืกืืขื ืจืืคื ืืื ืฉืจืื 4 ืืืขื ืึทื ืืืขืงื ืืืึธืก ืืื ืคืึทืืฉ.
ืขืฆืืช
ืืืืืขืจ ืืืจ ืืืืึทืื ืึท ืืืืฉืคึผืื ืคืื ืืขืจ ืงืึธืืคึผืืืฆืืจื ืืืืึทืืื ื, ืืื ืืืขื ืืืืึทืื ืืืจ ืขืืืขืืข ืืจืืงืก ืคึฟืึทืจ ืขืคืขืงืืืื ื ืืฆื ืฉืืจืขื ื:
ืืขื ืืฉ ืืื ืืืื ืคืจืืึทื ื
ืืืืฃ ืคืืืข * ื ืืงืก ืกืืกืืขืืขื, ืึท ืืึทื ืฅ ืจืฉืืื ืคืื ืกืืกืืขื ืจืืคื ืฆื ืื ืงืขืจื ืงืขื ืขื ืืืื ืืืงืืืขื ืืืจื ืคืืืกื ืืืง ืืขื ืืฉ ืกืืืงืึทืื. ืืืจ ืืืขื ืืขื ืืืื ืืื ืืจืง(2), ืืืึธืก ืืืื ืืขืจ ืืื ืคึฟืึธืจืืึทืฆืืข ืงืขื ืขื ืืืื ืืืงืืืขื ืืืจื ืคืืืกื ืืืง ืืขื ืืฉ 2 ืืจืง.
ืงืืืื ืจืืืืข: ืืขื ืืฉ 2 ืืึธืคึผื ืืืืืื ืืืจ ืื ืืืึทื ืคึฟืึทืจ ืื ืฉืึธื ืืึธืคึผื () ะฒ GNU libc, ืืืึธืก, ืขืก ืืืจื ืก ืืืืก, ืืื ืืืคึผืืึทืืขื ืึทื ืืืจื ืคืึทื ืงืืึธืื (). ืจืืคื ืกืขืืึทื ืืืงืก ืืึธืคึผื ืืืืืื ืื ืืขืืืข ืืืื ืืืจ ืฉืจืืึทืื ืึท ืคึผืจืึธืืจืึทื ื ืืฆื ืืึธืคึผื (), ืืื ืืืืคื ืึท ืฉืคึผืืจ - ืืื ืืืขื ื ืืฉื ืืขืคึฟืื ืขื ืงืืื ืจืืคื ืืึธืคึผื, ืื ืฉืืื ืืื ืืืขื ืืืื ืงืืึธืื (). ืึทืืึท ืจืึทืงืขืก ื ืึธืจ ืฆืขืืืฉื ืืืจ ืืืื ืืืจ ืึธื ืืืืื ืงืึทืืคึผืขืจืื ื ืื ืืงืืจ ืืื ืื ืจืขืืืืืึทื ืฉืืจืขื ื.
ื ืืฆื -o ืฆื ืจืึทืืขืืืขื ืื ืจืขืืืืืึทื ืฆื ืึท ืืขืงืข
ืฉืืจืขื ื ืงืขื ืขื ืืืฉืขื ืขืจืืื ืืจืืื ืจืขืืืืืึทื, ืึทืืื ืขืก ืืื ืึธืคื ื ืืฆืืง ืฆื ืงืจืึธื ืฉืคึผืืจ ืจืขืืืืืึทืื ืืื ืืึทืืื ืืขืจ ืืขืงืขืก (ืืื ืืื ืืขื ืืืึทืฉืคึผืื ืืืืื). ืืึธืก ืืืื ืืขืืคึผืก ืฆื ืืืกืืืืื ืงืึทื ืคืืืืื ื ืคึผืจืึธืืจืึทื ืจืขืืืืืึทื ืืื ืจืขืืืืืึทื ืฉืืจืขื ื ืืื ืื ืงืึทื ืกืึธืื.
ื ืืฆื -s ืฆื ืืขื ืืขืจ ืึทืจืืืืขื ื ืืึทืื
ืืืจ ืงืขื ืืึธืื ืืืืขืจืงื ืึทื ืื ืจืืข ืืขืืคื ืคืื ืื ืืขืืช ืึธื ืืึธื ืืื ื ืืฉื ืืขืืืืื ืืื ืืขื ืืืึทืฉืคึผืื ืฉืคึผืืจ ืืืืื. ืขืก ืืื ืืืืึทื ืฉืืจืขื ื ืคืขืืืงืืึทื ืืืืืื ืืืืื ืื ืขืจืฉืืขืจ 32 ืืืืขืก ืคืื ืื ืฉืืจืืงื ืึทืจืืืืขื ื. ืืืื ืืืจ ืืืืื ืฆื ืืขื ืืขืจ, ืืืืื ืขืคึผืขืก ืืื -ืก 128 ืฆื ืื ืจืืคื ืฉืืจืขื ื.
-ื ืืืื ืขืก ืืจืื ืืขืจ ืฆื ืฉืคึผืืจ ืืขืงืขืก, ืกืึทืงืึทืฅ, ืขืืง.
"ืึทืืข ืืื ืืขืงืข" ืืืื ืึทื * ื ืืงืก ืกืืกืืขืืขื ืืึธื ืึทืืข ื / ืึธ ื ืืฆื ืืขืงืข ืืืกืงืจืืคึผืืึธืจืก, ืฆื ืืึธืก ืึทืคึผืืืื ืฆื ืึท ืืขืงืข ืึธืืขืจ ืึท ื ืขืฅ ืึธืืขืจ ืื ืืขืจืคึผืจืึธืกืขืกืก ืคึผืืืคึผืก. ืืึธืก ืืื ืืึทืงืืืขื ืคึฟืึทืจ ืคึผืจืึธืืจืึทืืืื ื, ืึธืืขืจ ืืืื ืขืก ืฉืืืขืจ ืฆื ืืึทืืื ืฉืคึผืืจ ืคืื ืืืึธืก ืืื ืืึทืงืข ืืขืฉืขืขื ืืฉ ืืืขื ืืืจ ืืขื ืคึผืจืึธืกื ืืืืขื ืขื ะธ ืฉืจืืึทืื ืืื ืื ืกืืกืืขื ืจืืคื ืฉืคึผืืจ ืจืขืืืืืึทืื.
ืืืจื ืึทืืื ื ืึทื ืึธืคึผืขืจืึทืืึธืจ ืืึธ, ืืืจ ืืืขื ืฆืืืื ืืขื ืฉืืจืขื ื ืึทื ืึทืืืื ืืขืืขืจ ืืขืงืข ืืืกืงืจืืคึผืืึธืจ ืืื ืืขืจ ืจืขืืืืืึทื ืืื ืึท ืืึธื ืคืื ืืืึธืก ืขืก ืืืืืื.
ืฆืืืฉืขืคึผืขื ืฆื ืึท ืฉืืื ืคืืืกื ืืืง ืคึผืจืึธืฆืขืก ืืื -p**
ืืื ืืืจ ืืืขื ืืขื ืคึฟืื ืื ืืืืฉืคึผืื ืืื ืื, ืืื ืืืจ ืืึทืจืคึฟื ืฆื ืฉืคึผืืจ ืึท ืคึผืจืึธืืจืึทื ืืืึธืก ืืื ืฉืืื ืคืืืกื ืืืง. ืืืื ืขืก ืืื ืืืงืื ื ืึทื ืขืก ืืื ืคืืืกื ืืืง ืืื ืคึผืจืึธืฆืขืก 1337 (ืืึธืื, ืคึฟืื ืืขืจ ืจืขืืืืืึทื ps), ืืื ืืืจ ืงืขื ืขื ืฉืคึผืืจ ืขืก ืืื ืืึธืก:
$ strace -p 1337
...system call trace output...
ืืืจ ืงืขื ืืึทืจืคึฟื ืืืึธืจืฆื ืจืขืื.
ื ืืฆื -f ืฆื ืืึธื ืืืึธืจ ืงืื ื ืคึผืจืึทืกืขืกืึทื
ืฉืืจืขื ื ืืืจื ืคืขืืืงืืึทื, ืขืก ืืจืึทืกืขืก ืืืืื ืืืื ืคึผืจืึธืฆืขืก. ืืืื ืืขืจ ืคึผืจืึธืฆืขืก ืกืคึผืึธื ื ืงืื ื ืคึผืจืึทืกืขืกืึทื, ืื ืกืืกืืขื ืจืืคื ืฆื ืจืืื ืืขื ืงืื ื ืคึผืจืึธืฆืขืก ืงืขื ืขื ืืืื ืืขืืขื, ืึธืืขืจ ืื ืงืื ื ืคึผืจืึธืฆืขืก ืก ืกืืกืืขื ืงืึทืืืก ืืืขื ื ืืฉื ืืืื ืืขืืืืื.
ืืืื ืืืจ ืืจืึทืืื ืื ืืขืืช ืืื ืืื ืึท ืงืื ื ืคึผืจืึธืฆืขืก, ื ืืฆื ืื ืืขืจืงืืขืจืื ื -f, ืืึธืก ืืืขื ืืขืื ืืืื ืืจืืืกืื ื. ืื ืืึทืื ืกืืื ืฆื ืืขื ืืื ืึทื ืืขืจ ืจืขืืืืืึทื ืืืขื ืฆืขืืืฉื ืืืจ ืืคืืื ืืขืจ. ืืืขื ืฉืืจืขื ื ืืจืึทืกืขืก ืืืื ืคึผืจืึธืฆืขืก ืึธืืขืจ ืืืื ืคืึธืืขื, ืขืก ืืืืืื ืึท ืืืื ืืืึทื ืคืื ืจืืคื ืืขืฉืขืขื ืืฉื. ืืืขื ืขืก ืืจืึทืกืขืก ืงืืืคื ืคึผืจืึทืกืขืกืึทื ืืื ืึทืืึธื, ืืืจ ืงืขื ืืขื ืื ืึธื ืืืื ืคืื ืึท ืจืืคื ืื ืืขืจืึทืคึผืืื ืืืจื ืึท ืึธื ืืึธื , ืืขืืึธืื - ืึท ืืื ืื ืคืื ืจืืคื ืคึฟืึทืจ ืื ืืขืจืข ืืืจืืคืืจืื ื ืฆืืืืืื, ืืื ืืืืื ืืขืืึธืื - ืืขืจ ืกืืฃ ืคืื ืืขืจ ืขืจืฉืืขืจ ืืืื ืขืจ <...ืคืึธืึธืงืึทืื ืจืืืืื>. ืึธืืขืจ ืฉืคึผืึทืืื ืึทืืข ืฉืคึผืืจ ืจืขืืืืืึทืื ืืื ืคืึทืจืฉืืืขื ืข ืืขืงืขืก, ืืืื ื ืืฆื ืื ืึธืคึผืขืจืึทืืึธืจ -ืคืค (ืคืจืืื ืืื
ืคืืืืขืจ ืืจืึทืกืขืก ื ืืฆื -E
ืืื ืืืจ ืงืขื ืขื ืืขื, ืืขืจ ืจืขืืืืืึทื ืคืื ืื ืฉืคึผืืจ ืืื ืึท ืคืึทืงืืืฉ ืืืืคื ืคืื ืึทืืข ืืขืืืขื ืกืืกืืขื ืจืืคื. ืคืึธื -e ืืืจ ืงืขื ืขื ืคืืืืขืจ ืื ืฉืคึผืืจ (ืืขื
ื ืื ืึทืืข ืืืกืืืืงืก ืืขื ืขื ืฉืืขืื
ื ืคึผืฉืื ืืื ืคึผืจืึธืกื ืืืึทืฉืคึผืื ืืื ืึท ืคึผืจืึธืืจืึทื ืืืึธืก ืืืื ืคึฟืึทืจ ืึท ืืขืงืข ืืื ืขืืืขืืข ืขืจืืขืจ ืืื ืึทืืึธื, ืืื ืึท ืฉืึธื ืืืึธืก ืืืื ืคึฟืึทืจ ืึท ืืืขืืืืืึทืืขืจ ืืืึธืก ืึผืืื ืึท ืขืงืกืขืงืืืึทืืืข ืืขืงืข:
$ strace sh -c uname
...
stat("/home/user/bin/uname", 0x7ffceb817820) = -1 ENOENT (No such file or directory)
stat("/usr/local/bin/uname", 0x7ffceb817820) = -1 ENOENT (No such file or directory)
stat("/usr/bin/uname", {st_mode=S_IFREG|0755, st_size=39584, ...}) = 0
...
ืืขืจืืกืืืงืก ืืื "ืืขืฆืืข ื ืื ืึทื ืืขืจืฉ ืืขืื ืืืืืขืจ ืจืืคึผืึธืจืืื ื ืึท ืืขืืช" ืืื ืืื ืฆื ืืขืคึฟืื ืขื ืืึทืืืึทืืืง ืขืจืจืึธืจืก. ืืื ืขืก ืงืขื ืืืื, ืขืก ืืื ืืึทืืืฉืืงืึทื ืฆื ืึธื ืืืืื ืคึฟืื ืื ืกืืฃ.
C ืคึผืจืึธืืจืึทืืืื ื ืืืืึธืจืืึทืื ืงืขื ืขื ืืขืืคึฟื ืืืจ ืคึฟืึทืจืฉืืืื ืกืืกืืขื ืจืืคื.
ื ืึธืจืืึทื ืงืึทืืืก ืฆื C ืืืืืจืขืจืื ืืขื ืขื ื ืืฉื ืกืืกืืขื ืจืืคื, ืึธืืขืจ ืืืืื ืึท ืืื ืืืืขืจืคืืึทื ืฉืืืืข. ืึทืืื, ืืืื ืืืจ ืคึฟืึทืจืฉืืืื ืืื ืืื ืืกืืขืจ ืึท ืืืกื ืืื ืืื ืืืึธืก ืฆื ืืึธื ืืื C, ืขืก ืืืขื ืืืื ืืจืื ืืขืจ ืคึฟืึทืจ ืืืจ ืฆื ืคึฟืึทืจืฉืืืื ืื ืจืขืืืืืึทืื ืคืื ืื ืกืืกืืขื ืจืืคื ืฉืคึผืืจ. ืคึฟืึทืจ ืืืึทืฉืคึผืื, ืืืจ ืืึธืื ืงืึธื ืคืืืงื ืืื ืืืืึทืืื ื ืงืึทืืืก ืฆื ื ืขืฅ ืกืืกืืขืืขื, ืงืืง ืืื ืืขืจ ืืขืืืืงืขืจ ืงืืึทืกืืฉ
ื ืืขืจ ืงืึธืืคึผืืืฆืืจื ืืืืึทืืื ื ืืืึทืฉืคึผืื
ืืื ืืื ืฉืืื ืืขืืืื ืึทื ืืขืจ ืืืืฉืคึผืื ืคืื ืคึผืฉืื ืืืืึทืืื ื ืืื ืึท ืืืืฉืคึผืื ืคืื ืืืึธืก ืืื ืืขืจืกืื ืก ืืึธืื ืฆื ืืึทื ืืืขื ืืื ืืืขื ืืื ืึทืจืืขื ืืื ืฉืืจืขื ื. ืึธืืขืจ, ืืื ืึท ืคืึทืงืืืฉ ืืืกืคืึธืจืฉืื ื ืืื ืคืืจืืื ืื, ืึทืืื ืืึธ ืก ืึท ืคืึทืงืืืฉ-ืืขืื ืืืึทืฉืคึผืื ืคืื ืืขืจ ืึทืืืึทื ืกืืจืืข ืืืืึทืืื ื.
# crontab -e -u logs
bcrontab: Fatal: Could not create temporary file
ืึธืืงืื, ืึทื ืืืื bcron ืืขืคืจืืืื ืฆื ืฉืจืืึทืื ืึท ืืืืขืจ ืืขืงืข, ืึธืืขืจ ืขืก ืืื ื ืืฉื ืึทืจืืขืื ืืืืก, ืืื ืขืจ ืืืขื ื ืืฉื ืึทืจืืึทื ืืึธืื ืืืึธืก. ืึทื ืืืขืงื ืฉืืจืขื ื:
# strace -o /tmp/trace crontab -e -u logs
bcrontab: Fatal: Could not create temporary file
# cat /tmp/trace
...
openat(AT_FDCWD, "bcrontab.14779.1573691864.847933", O_RDONLY) = 3
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f82049b4000
read(3, "#Ansible: logsaggn20 14 * * * lo"..., 8192) = 150
read(3, "", 8192) = 0
munmap(0x7f82049b4000, 8192) = 0
close(3) = 0
socket(AF_UNIX, SOCK_STREAM, 0) = 3
connect(3, {sa_family=AF_UNIX, sun_path="/var/run/bcron-spool"}, 110) = 0
mmap(NULL, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f82049b4000
write(3, "156:Slogs #Ansible: logsaggn20 1"..., 161) = 161
read(3, "32:ZCould not create temporary f"..., 8192) = 36
munmap(0x7f82049b4000, 8192) = 0
close(3) = 0
write(2, "bcrontab: Fatal: Could not creat"..., 49) = 49
unlink("bcrontab.14779.1573691864.847933") = 0
exit_group(111) = ?
+++ exited with 111 +++
ืขืก ืืื ืึท ืืขืืช ืึธื ืืึธื ืืขืื ืื ืกืืฃ ืฉืจืืึทืื, ืึธืืขืจ ืืึธืก ืืึธื ืขืคึผืขืก ืืื ืึทื ืืขืจืฉ. ืขืจืฉืืขืจ, ืขืก ืืื ืงืืื ืืึทืืืึทืืืง ืกืืกืืขื ืจืืคื ืืขืืช, ืืืึธืก ืืืืฉืึทืืืึทืื ืึทืงืขืจื ืืืืืขืจ ืืขื. ืฆืืืืืื ืก, ืขืก ืืื ืงืืึธืจ ืึทื ืขืจืืขืฅ ืขืืขืฆืขืจ ืืื ืฉืืื ืืืืขื ืขื ืื ืืขืืช ืึธื ืืึธื. ืขืก ืงืืงื ืืื ืืขืจ ืขืืขืก ืคึผืจืึธืืืขื ืืื ืขืจืืขืฅ ืึทื ืืขืจืฉ, ืืื bcrontab ืคืฉืื ืคืืขืกืขืก ืฆืืจืืง ืื ืึธื ืืึธื.
ืืืื ืืืจ ืงืืง ืืืึท ืืขื ืืฉ 2 ืืืืขื ืขื, ืืืจ ืงืขื ืขื ืืขื ืึทื ืืขืจ ืขืจืฉืืขืจ ืึทืจืืืืขื ื (3) ืืื ืึท ืืขืงืข ืืืกืงืจืืคึผืืึธืจ, ืืืึธืก * ื ืืงืก ื ืืฆื ืคึฟืึทืจ ืึทืืข ื / ืึธ ืคึผืจืึทืกืขืกืื ื. ืืื ืืึธื ืืื ืืขืคึฟืื ืขื ืืืึธืก ืืขืงืข ืืืกืงืจืืคึผืืึธืจ 3 ืจืขืคึผืจืึทืืขื ืฅ? ืืื ืืขื ืืึทืืื ืืขืจ ืคืึทื, ืืืจ ืงืขื ืขื ืืืืคื ืฉืืจืขื ื ืืื ืึธืคึผืขืจืึทืืึธืจ ืืึธ (ืืขื ืืืืื) ืืื ืขืก ืืืขื ืืืืืึธืืึทืืืฉ ืืึธืื ืืืจ, ืึธืืขืจ ืฆื ืืขืคึฟืื ืขื ืขืคึผืขืก ืืื ืืึธืก, ืขืก ืืื ื ืืฆืืง ืฆื ืืืืกื ืืื ืฆื ืืืืขื ืขื ืืื ืคึผืึทืจืก ืฉืคึผืืจ ืจืขืืืืืึทืื.
ืืขืจ ืืงืืจ ืคืื ืึท ืืขืงืข ืืขืกืงืจืืคึผืืึธืจ ืงืขื ืขื ืืืื ืืืื ืขืจ ืคืื ืคืืืข ืกืืกืืขื ืจืืคื (ืขืก ืึทืืข ืืขืคึผืขื ืืก ืืืืฃ ืืืึธืก ืื ืืขืกืงืจืืคึผืืึธืจ ืืื ืคึฟืึทืจ - ืึท ืงืึทื ืกืึธืื, ืึท ื ืขืฅ ืืึธืืขื, ืื ืืขืงืข ืืื ืึธืืขืจ ืขืคึผืขืก ืึทื ืืขืจืฉ), ืึธืืขืจ ืืื ืขืก ืงืขื, ืืืจ ืงืืงื ืคึฟืึทืจ ืจืืคื ืืืจื ืฆืืจืืงืงืืืขื 3 (ื"ื ืืืจ ืงืืงื ืคึฟืึทืจ "= 3" ืืื ืื ืืจืืืกืื ื ืจืขืืืืืึทืื). ืืื ืืขื ืจืขืืืืืึทื ืขืก ืืขื ืขื 2 ืคืื ืืื: openat ืืื ืืขืจ ืืืืขืจ ืฉืคึผืืฅ ืืื ืืึธืืขื ืืื ืืืื. openat ืขืคืขื ืขื ืื ืืขืงืข ืึธืืขืจ ื ืึธืขื ื(3) ืืืขื ืืขืืึธืื ืืืืึทืื ืึทื ืขืก ืงืืึธืืืื ืืืืืขืจ. (ืืจืืืก: ืืขืงืข ืืืกืงืจืืคึผืืึธืจืก ืงืขื ืขื ืืืื ืจืืืื ืืืขื ืืื ืืขื ืขื ืืขืขืคื ื ืืื ืคืืจืืืื). ืจืืคื ืืึธืืขื () ืคึผืึทืกืืง ืืืืึทื ืขืก ืืื ืื ืืขืฆืืข ืคืจืืขืจ ืืืืขื ืขื (), ืืื ืขืก ืืืจื ืก ืืืืก ืึทื bcrontab ืึทืจืืขื ืืื ืขืคึผืขืก ืืืจื ืึท ืืึธืืขื. ืืขืจ ืืืืึทืืขืจ ืฉืืจื ืืืืืื ืึทื ืืขืจ ืืขืงืข ืืืกืงืจืืคึผืืึธืจ ืืื ืคืืจืืื ืื ืืื ืืื ืืงืก ืคืขืื ืืึธืืขื ืืืืฃ ืื ืืืขื /var/run/bcron-spool.
ืึทืืื, ืืืจ ืืึทืจืคึฟื ืฆื ืืขืคึฟืื ืขื ืืขื ืคึผืจืึธืฆืขืก ืคึฟืึทืจืืื ืื ืืื ืืื ืืงืก ืืึธืืขื ืืืืฃ ืื ืื ืืขืจืข ืืืื. ืขืก ืืขื ืขื ืึท ืคึผืึธืจ ืคืื ืฆืืืืืง ืืจืืงืก ืคึฟืึทืจ ืืขื ืฆืืืขืง, ืืืึธืก ืืืืืข ืืขื ืขื ื ืืฆืืง ืคึฟืึทืจ ืืืืึทืืื ื ืกืขืจืืืขืจ ืืืคึผืืืืืึทื ืฅ. ืืขืจ ืขืจืฉืืขืจ ืืื ืฆื ื ืืฆื netstat ืึธืืขืจ ื ืืึทืขืจ ss (ืืึธืืขื ืกืืึทืืืก). ืืืืืข ืงืึทืืึทื ืื ืืืืึทืื ืื ืกืืกืืขื ืก ืึทืงืืืื ื ืขืฅ ืงืึทื ืขืงืฉืึทื ื ืืื ื ืขืืขื ืื ืืขืจืงืืขืจืื ื -l ืฆื ืืึทืฉืจืืึทืื ืฆืืืขืืขืจื ืกืึทืงืึทืฅ, ืืื ืืขืืื ื ืืื ืืขืจ ืึธืคึผืขืจืึทืืึธืจ -p ืฆื ืืืืึทืื ืืืืื ืคืืจืืื ืื ืฆื ืื ืืึธืืขื ืืื ืึท ืงืืืขื ื. (ืขืก ืืขื ืขื ืคืืืข ืืขืจ ื ืืฆืืง ืึธืคึผืฆืืขืก, ืึธืืขืจ ืื ืฆืืืื ืืขื ืขื ืืขื ืื ืคึฟืึทืจ ืืขื ืึทืจืืขื.)
# ss -pl | grep /var/run/bcron-spool
u_str LISTEN 0 128 /var/run/bcron-spool 1466637 * 0 users:(("unixserver",pid=20629,fd=3))
ืืึธืก ืกืึทืืืืฉืขืกืฅ ืึทื ืืขืจ ืฆืืืขืจืขืจ ืืื ืืขืจ ืืึทืคึฟืขื inixserver, ืคืืืกื ืืืง ืืื ืคึผืจืึธืฆืขืก ืฉืืึทื 20629. (ืืื, ืฆืืคืึทื, ืขืก ื ืืฆื ืืขืงืข ืืืกืงืจืืคึผืืึธืจ 3 ืืื ืื ืืึธืืขื.)
ืืขืจ ืฆืืืืืืขืจ ืืึทืงืข ื ืืฆืืง ืืขืฆืืึทื ืคึฟืึทืจ ืืขืจืืืืื ื ืื ืืขืืืข ืืื ืคึฟืึธืจืืึทืฆืืข ืืื ืืขืจืืคื ืืกืึธืฃ. ืขืก ืืืกืืขื ืึทืืข ืขืคืขื ืขื ืืขืงืขืก (ืึธืืขืจ ืืขืงืข ืืืกืงืจืืคึผืืึธืจืก) ืืืืฃ ืื ืกืืกืืขื. ืึธืืขืจ ืืืจ ืงืขื ืขื ืืึทืงืืืขื ืืื ืคึฟืึธืจืืึทืฆืืข ืืืขืื ืืืื ืกืคึผืขืฆืืคืืฉ ืืขืงืข:
# lsof /var/run/bcron-spool
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
unixserve 20629 cron 3u unix 0x000000005ac4bd83 0t0 1466637 /var/run/bcron-spool type=STREAM
ืคึผืจืึธืฆืขืก 20629 ืืื ืึท ืืึทื ื-ืืขืืขืื ืกืขืจืืืขืจ, ืึทืืื ืืืจ ืงืขื ืขื ืฆืืืฉืขืคึผืขื ืขืก ืฆื ืฉืืจืขื ื ื ืืฆื ืขืคึผืขืก ืืื strace -o /tmp/trace -p 20629. ืืืื ืืืจ ืจืขืืึทืืืจื ืึท ืงืจืึทื ืึทืจืืขื ืืื ืื ืื ืืขืจ ืืืึธืงืืึทื, ืืืจ ืืืขื ืืึทืงืืืขื ืึท ืฉืคึผืืจ ืจืขืืืืืึทื ืืื ืึท ืืขืืช. ืืื ืืึธ ืืื ืืขืจ ืจืขืืืืืึทื:
accept(3, NULL, NULL) = 4
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7faa47c44810) = 21181
close(4) = 0
accept(3, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=21181, si_uid=998, si_status=0, si_utime=0, si_stime=0} ---
wait4(0, [{WIFEXITED(s) && WEXITSTATUS(s) == 0}], WNOHANG|WSTOPPED, NULL) = 21181
wait4(0, 0x7ffe6bc36764, WNOHANG|WSTOPPED, NULL) = -1 ECHILD (No child processes)
rt_sigaction(SIGCHLD, {sa_handler=0x55d244bdb690, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faa47ab9840}, {sa_handler=0x55d244bdb690, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faa47ab9840}, 8) = 0
rt_sigreturn({mask=[]}) = 43
accept(3, NULL, NULL) = 4
clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7faa47c44810) = 21200
close(4) = 0
accept(3, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=21200, si_uid=998, si_status=111, si_utime=0, si_stime=0} ---
wait4(0, [{WIFEXITED(s) && WEXITSTATUS(s) == 111}], WNOHANG|WSTOPPED, NULL) = 21200
wait4(0, 0x7ffe6bc36764, WNOHANG|WSTOPPED, NULL) = -1 ECHILD (No child processes)
rt_sigaction(SIGCHLD, {sa_handler=0x55d244bdb690, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faa47ab9840}, {sa_handler=0x55d244bdb690, sa_mask=[CHLD], sa_flags=SA_RESTORER|SA_RESTART, sa_restorer=0x7faa47ab9840}, 8) = 0
rt_sigreturn({mask=[]}) = 43
accept(3, NULL, NULL
(ืืขืฆืืข ืึธื ื ืขืืขื () ืืืขื ื ืื ืืืื ืืขืขื ืืืงื ืืืขื ืืจืืืกืื ื.) ืืืืืขืจ, ืืืืืขืจ, ืืขืจ ืจืขืืืืืึทื ืืื ื ืืฉื ืึทื ืืืึทืืื ืืขื ืืขืืช ืืืจ ืืขื ืขื ืงืืงื ืคึฟืึทืจ. ืืืจ ืืึธื ื ืื ืืขื ืงืืื ืึทืจืืืงืืขื ืืืึธืก bcrontag ืกืขื ืื ืฆื ืึธืืขืจ ื ืขืื ืคึฟืื ืื ืืึธืืขื. ืึทื ืฉืืึธื, ืืึทื ืฅ ืคึผืจืึธืฆืขืก ืงืึธื ืืจืึธื (ืงืืึธืื, wait4, SIGCHLD ืืื"ื ื) ืืขืจ ืคึผืจืึธืฆืขืก ืฉืคึผืึทื ืื ื ืึท ืงืื ื ืคึผืจืึธืฆืขืก, ืืืึธืก, ืืื ืืืจ ืืื ืืจืขืคื, ืืื ืื ืคืึทืงืืืฉ ืึทืจืืขื. ืืื ืืืื ืืืจ ืืึทืจืคึฟื ืฆื ืืึทืคึผื ืืืจ ืฉืืขื, ืืืืื ืฆื ืื ืจืืคื strace -f. ืืึธืก ืืื ืืืึธืก ืืืจ ืืืขืื ืืขืคึฟืื ืขื ืืืขื ืืืจ ืืืื ืคึฟืึทืจ ืื ืืขืืช ืึธื ืืึธื ืืื ืื ื ืืึทืข ืจืขืืืืืึทื ืืื ืกืืจืึทืกืข -ืค -ืึธ /ืืืคึผ/ืืจืึทืกืข -ืคึผ 20629:
21470 openat(AT_FDCWD, "tmp/spool.21470.1573692319.854640", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
21470 write(1, "32:ZCould not create temporary f"..., 36) = 36
21470 write(2, "bcron-spool[21470]: Fatal: logs:"..., 84) = 84
21470 unlink("tmp/spool.21470.1573692319.854640") = -1 ENOENT (No such file or directory)
21470 exit_group(111) = ?
21470 +++ exited with 111 +++
ืืืฆื, ืืึธืก ืืื ืขืคึผืขืก. ืคึผืจืึธืฆืขืก 21470 ืืืงืืื ืึท "ืึทืงืกืขืก ืืขืืืืงื ื" ืืขืืช ืืืขื ืืจืืื ื ืฆื ืฉืึทืคึฟื ืึท ืืขืงืข ืืื ืืจื tmp/spool.21470.1573692319.854640 (ืฉืืืืืช ืฆื ืืขื ืงืจืึทื ื ืึทืจืืขื ืืืขืืืืืึทืืขืจ). ืืืื ืืืจ ื ืึธืจ ืืขืืืืืกื ืืขื ืงืจืึทื ื ืึทืจืืขื ืืืขืืืืืึทืืขืจ, ืืืจ ืืืึธืื ืืืื ืืืืกื ืื ืคืื ืืจื ืืื ืงืขื ืขื ืฆื ืจืขืืขื ืขื ืืืืก ืืืึธืก ืืขืจ ืคึผืจืึธืฆืขืก ืงืขื ื ืืฉื ืืึทืื ืืืื ืฆืืืืืืืืืืืข ืืขืงืข ืืื ืขืก. ืฆืื ืืึทืืืืขืจื, ืืขืจ ืคึผืจืึธืฆืขืก ืืื ืฉืืื ืืงืกืืืืึทื, ืึทืืื ืืืจ ืงืขื ืขื ื ืืฉื ื ืึธืจ ื ืืฆื lsof -p 21470 ืืื ืกืืจ ืฆื ืืขืคึฟืื ืขื ืืขื ืงืจืึทื ื ืืืขืืืืืึทืืขืจ, ืึธืืขืจ ืืืจ ืงืขื ืขื ืึทืจืืขืื ืืื ืื ืคืึทืจืงืขืจื ืจืืืืื ื - ืงืืง ืคึฟืึทืจ PID 21470 ืกืืกืืขื ืงืึทืืืก ืืืึธืก ืืืืฉื ืื ืืืขืืืืืึทืืขืจ. (ืืืื ืขืก ืืขื ืขื ืงืืื, PID 21470 ืืืื ืืึธืื ืื ืืขืจืึทืืื ืคืื ืืืื ืคืึธืืขืจ, ืืื ืืึธืก ืืื ืฉืืื ืืืจื lsof -p ืงืขื ืขื ื ืื ืืืื ืืขืคืื ืขื ืืืืก.) ืืขื ืกืืกืืขื ืจืืคื ืืื chdir (ืืืึธืก ืืื ืืจืื ื ืฆื ืืขืคึฟืื ืขื ืืื ืื ืืืืฃ ืคืื ืืึธืืขืจื ืึธื ืืืื ืืืื ืขื ืืืฉืึทื ื). ืืื ืืึธ ืืื ืืขืจ ืจืขืืืืืึทื ืคืื ืคืึทืจืงืขืจื ืึธื ืคึฟืจืขืื ืืืืืจื ืืืืฃ ืื ืฉืคึผืืจ ืจืขืืืืืึทืื, ืึทืืข ืื ืืืขื ืฆื ืกืขืจืืืขืจ PID 20629:
20629 clone(child_stack=NULL, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0x7faa47c44810) = 21470
...
21470 execve("/usr/sbin/bcron-spool", ["bcron-spool"], 0x55d2460807e0 /* 27 vars */) = 0
...
21470 chdir("/var/spool/cron") = 0
...
21470 openat(AT_FDCWD, "tmp/spool.21470.1573692319.854640", O_RDWR|O_CREAT|O_EXCL, 0600) = -1 EACCES (Permission denied)
21470 write(1, "32:ZCould not create temporary f"..., 36) = 36
21470 write(2, "bcron-spool[21470]: Fatal: logs:"..., 84) = 84
21470 unlink("tmp/spool.21470.1573692319.854640") = -1 ENOENT (No such file or directory)
21470 exit_group(111) = ?
21470 +++ exited with 111 +++
(ืืืื ืืืจ ื ืืืึธ ืคืึทืจืคืึทืื, ืืืจ ืืื ืืืขืื ืฆื ืืืืขื ืขื ืืืื ืคืจืืขืจืืืงื ืคึผืึธืกืื
# ls -ld /var/spool/cron/tmp/
drwxr-xr-x 2 root root 4096 Nov 6 05:33 /var/spool/cron/tmp/
# ps u -p 20629
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
cron 20629 0.0 0.0 2276 752 ? Ss Nov14 0:00 unixserver -U /var/run/bcron-spool -- bcron-spool
ืืึธืจื ืืื ืืขืจ ืืื ื ืืึทืืจืึธืื! ืืขืจ ืกืขืจืืืขืจ ืืืืคื ืืื ืึท ืืึทื ืืฆืขืจ ืงืจืื, ืึธืืขืจ ืืืืื ืืืึธืจืฆื ืืื ืืขืจืืืืืขื ืืฉ ืฆื ืฉืจืืึทืื ืฆื ืื ืืืขืืืืืึทืืขืจ /var/spool/cron/tmp/. ืคึผืฉืื ืืึทืคึฟืขื ืืฉืึธืืื ืงืจืื /var/spool/cron/tmp/ ืืืขื ืฆืืืื ืืขื bcron ืึทืจืืขื ืจืืืืืง. (ืืืื ืืึธืก ืืื ื ืืฉื ืืขืจ ืคึผืจืึธืืืขื, ืืขืจ ืืืืึทืืขืจ ืจืืึฟ ืืกืชึผืื ืืึธืฉืขื ืืื ืึท ืงืขืจื ืืืืขืจืืืื ืืึธืืืืข ืืื SELinux ืึธืืขืจ AppArmor, ืึทืืื ืืื ืืืึธืื ืงืึธื ืืจืึธืืืจื ืื ืงืขืจื ืึธื ืืึธื ืงืืึธืฅ ืืื dmesg.)
ืืื ืืึทื ืฅ
ืกืืกืืขื ืจืืคื ืืจืึทืกืขืก ืงืขื ืขื ืืืื ืึธืืืืขืจืืืขืืืื ื ืคึฟืึทืจ ืึท ืึธื ืืืืืขืจ, ืึธืืขืจ ืืื ืืึธืคึฟื ืืื ืืึธืื ืืขืืืืื ืึทื ืืื ืืขื ืขื ืึท ืฉื ืขื ืืืขื ืฆื ืืืืึทืืื ื ืึท ืืึทื ืฅ ืงืืึทืก ืคืื ืคึผืจืึธืกื ืืืคึผืืืืืึทื ื ืคึผืจืึธืืืขืืก. ืืืึทืืืฉืึทื ืืจืืื ื ืฆื ืืืืื ืึท ืืืืืืคึผืจืึธืกืขืกืก bcronื ืืฆื ืึท ืฉืจืื-ืืืจื-ืฉืจืื ืืขืืืืืขืจ.
ืคึผืึทืจืกืื ื ืฉืคึผืืจ ืจืขืืืืืึทืื ืงืึทืคึผืืืขืจ ืฆืืืืืขื ืื ืกืืกืืขื ืจืืคื ืงืืื ืจืืงืืืืืขืจื ืืงืืขืก, ืึธืืขืจ ืืื ืืื ืืขืืืื, ืึผืืขื ืฉืืขื ืืืง, ื ืืฆื ืฉืืจืขื ื, ืืื ื ืึธืจ ืืึทืงืืืขื ืื ืฉืคึผืืจ ืจืขืืืืืึทื ืืื ืงืืง ืคึฟืึทืจ ืขืจืจืึธืจืก ืกืืึทืจืืื ื ืคืื ืื ืกืืฃ. ืืืืื, ืฉืืจืขื ื ืืขืืคึผืก ืืืจ ืฉืคึผืึธืจื ืึท ืคึผืืึทืฅ ืคืื ืฆืืื ืืืืฃ ืืืืึทืืื ื. ืืื ืืึธืคึฟื ืขืก ืืืขื ืืืื ื ืืฆืืง ืคึฟืึทืจ ืืืจ ืืืื.
ืืงืืจ: www.habr.com