á¨áá áľáŤáŹ áŁáĽááá á¨áśááľáá áá°ááŤáľ ááᣠáá áááľ áĽáá°áá¨á°ááľ áŤá áĽáŤááá˝á áááááľ á ááá¨á áĽá áááŹá á áłááááá˘
- áá áśááľáá áááá˘á áá°áŤáᣠáá ááĽá á áá°ááᢠááá?
- áľáááľá áá áśááľáá ááĽá á ááˇá, áá áᏠáá á áá°áŤá. ááá?
áá á¨áá°á á á¨áśááľáá áá¨á áľáá˝ áá¨áľ áŤá á¨áá¨á á áááľ ááᢠáá°á á áá¨á áľá áŽáľ á áááᎠáá, ááá áá á¨áá°ááŤáľ áá¨á á áŽáą áĽá á á áŤáŁá˘á ááŤá¨á áľááá ááľá°ááĽá áá. ááá áĽááłá á¨á˝áአáááľá¤ ááááŤáłá áľá á°áľ á˘ááá ááá ááá á á ááľ áá˝á áá áĽáá á áá áá˝á áá á áááá á˝áአá á°áá°á ááአá á áŤáŁá˘á áá áá.
áľááá áĽáá° á¨á°áááąáľ á¨áá¨á፠ááłáŞáŤáá˝ ááá á.á˛.á˘. áá°ááŤáľá ááá¨á á¨á°áᨠá¨ááłáŞáŤáá˝ áľáĽáľáĽ á ááᢠáĽá áĽáá° "ááááľá áá áá áśááľáá ááĽá á¨ááá°áŤá?" áŤááá á˝áá ááááłáľ á¨ááá°á ááłáŞáŤ. á°áĽá áá áŤá áá.
áá áááľá áá?
áá á¨áłáá áá°áá áŞáŤ á áŁá ááá áá. á ááááá áľáĽáá áááľ áĽáť áŤáľáááááłá áĽá áááá á¨áľáááľ áĽáŞáá˝ ááĽáá (ááá áĽááłá ááááŞáŤ áĽááľá áĽáŤáľá ááŤá ááááĽááłá) áá):
$ 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 áá°á á á¤á°-áá˝áááľ á¨á°ááŁá áĽáŞá ááá áá ()ááľáááą áĽáŞ áááá á¨áľá-á áá-á°áŽá áŽáľ á¨áŤá áťá.
áŁáአá áá°áá áŞáŤ áĽá á á á¨áŁá˘á (á áŽáááŠá°á á˛áľá°áá˝) ááŤá¨á á¨áá°á¨á ááááá ááľá°ááĽá á áľáááľ áĽáŞáá˝ áá¨ááááᢠáľááá áśááľááŽá˝ á á ááľ áá˝á áá á˛á°áŠ ááá áá á áá áá˝á áá á˛á°áŤ, á¨áľáááľ áĽáŞ áá¨áłá°áŤ áá¤áśá˝á áááá¨áľ áĽáŠ áááá. á áá ááĽáŁ á¨áľáááľ áĽáŞ áááá á áá áá áá°áá°á á¨áá˝á á¨á°áááą ááĽáŚá˝ áááá áĽáá á áá˘
- áŽááśá I/O
- á ááłá¨ áá¨áĽ I/O
- á¨ááá áľáááľ ááłá¨áť áĽá ááá I/O
- á¨áá°áąá áá á¨á áááľ ááá ááľá°áłá°á
- áá á°á-á°á¨á áá á°á¨ áľááľáł á áľá°áłá°á
- áá°áá°á á¨ááŁáŞáŤ áááá˝ ááłá¨áť
áľá´á áá áá ááź áá?
á ááľá ááłáĽáŁ áá á á°á áá áŚáł ááľáĽ á¨ááááá ááŽááŤá áá áĽá á áá áááá, ááááŤáąá á á°á áá áŚáł ááľáĽ áŤá ááááá ááŽááŤá á¨áľáááľ áĽáŞáá˝á ááľá¨á á áá áľ. á á°ááá ᨠáá á°á á°á¨á ááŽááŤáá˝ á áĽááľ áá°áŤá ááá áá á°á¨ááŞáá áŤáŤáł áĽá á áľá°ááááá ááá¨áĽ á¨áťá áĽáá° Python áŤá á¨áá°á ááááá˝ áá áá°áŤáá˘
á ááĽáŠ áá áá á á ááľ áá˝á áá á á°áἠá¨áá°áŤáá áśááľáá á áá¨á áá
áľ áĽáŤáąá áŤáłáŤáᣠááá áá á áľáááľ á áá áá˝á áá ááľáŤáľ á áááᣠáľááááá˝áŁ áááśá˝ ááá˝ áŤááá áááááśá˝á á áááŁáą ááá á ááłááľ áľáááá˝á ááá áá áááá áááľáá¸á áŤáá°áłáŠ áá¨áŤáá˝á áŤá°ááá... áŤáłáááᣠáá á áá°á¨ááᢠáĽáá° á¨ááľáá áá¨ááľ áá¨áá፠áľá
á°áśá˝ áŤá á¨á¨áá°á á°á¨á á˝ááŽá˝ áá á á°áἠáŤáŁááŠá˘ áĽááá áá áá
áĽáá¨áľ áá ááá ááá ááłááľ áá
áŤáąá á¨áťá á áááá áĽáá° ááłá áĽáá ááááᣠááá áá á¨áľáááľ áĽáŞá áá¨áłá°á áĽááá áá áá áἠááľáĽáľáĽ á áá á¨áá°ááŞáŤ ááľá¨áŽá˝ áá áá¨ááá áá˝ááᢠáľáááááášá ááłáŞáŤáá˝ ááá¨áĽ áĽáť áŤáľáááááłá.
ááá á¨áá¨á ááłá
á áľá°áááá á¨á áááá á áááŹá˝á foo áááľ áľááááá áĽáá áᣠáĽá áá¨á¨áťá ፠áááĄ-
$ 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 +++
á á ááá á¨áá¤áą á¨ááááŞáŤ áá˝ á áááľ áá - áá áĽááá áá áááľááá áá á°á á°á¨á ááá áľ ááᢠ(áĽá áĽáŞáá˝ mmap, á áľá°áŤáá, áĽá áĽáá° áá á°á á°á¨á áá á°á¨ áľááľáłá áááá áĽá á°áááá á¤á°-ááááá˝á ááłá¨áľ áá áááŽá˝á˘) á áĽáááą áá¤áąá á áá¨á áá áľ áá á¨áá¨á¨áťá ááá ἠááťááᢠá¨áá á áłá˝ áá°á áááŤá áťá, áá á á¨áľá á°áľ áááĽááľ áŤáłáŤá. á¨áá áĽáááá¨áłáá áĽá á¨ááááŞáŤáá á¨á°áłáłá° á¨áľáááľ áĽáŞ - áĽáŞáá áĽááŤáá áááľ, áá á áľá á°áľ ááĽáá ENOENT ("ááá ááá áá፠á áá°ááá") áááááľ á ááá¨á áá /etc/foo/config.json. á¨ááááŞáŤá ááá ááá áŤáá áľ áĽáá ááá˘
áá ááłá áĽáť áá á, áá áĽá á¨áá ááá áľá áá 90% áĽááá áá, á¨áá á¨á áá á áľá¸á᪠ááá á¨áá. á¨áá á áłá˝ á¨á°áá á¨á°á¨á á á°á¨á áá¨á áááŞáŤ á ááĄ-
- á¨ááŽááŤá áľáá°áá ᨠá¨áľáááľ-y áľá á°áľ ááá˝ áŁááá áááĽááľ ááááŤáľ á°á áłáŠ
- ááŽááŤáá áĽáá°áá áŤáľáááŠáľá˘ áá
- á ááľáľá áá¤áśá˝ ááľáĽ á¨áľá á°áľ áááááąá áŤáá
- á¨ááááŞáŤáá áŤáá°áłáŤ á¨áľáááľ áĽáŞ áĽáľááľá፠áľá¨áľ á¨á á áľáá
á á°á¨á 4 áá áŤáá á¨áľáááľ áĽáŞ áľá á°áľ á¨áááá ááá á¨áááá˝ áĽáľá á°á ááá˘
ááá
áá áἠá¨á°ááłá°á áá¨á ááłáá á¨ááłá¨á´ á ááľ áá¤áłá á á ááá áĽááľ áá´áá˝á á áłáááá áá:
á°á áá°áá ááá˘
á áĽá * nix áľáááśá˝áŁ áá° á¨ááá á¨áá°á¨á á¨áľáááľ áĽáŞáá˝ áááá á ááŽáĽ ááááľ ááťááᢠá°á syscals. á¨ááłá°á áááŽá˝á áłáŤáá áĽá(2), áá á áááľ á ááŽáĽ á°á¨á᪠áá¨á ááááľ ááťáá á°á 2 áĽá.
á ááľá°á áá°áŞáŤ; á°á 2 ášáŤ ááźá áášá áŤáłá¨áá ášáŤ () в áá¤áአáá˘á˛, áĽáąá áĽáá°ááłá¨á, á áá°áá á¨áá°áá á¨á ááá(). á¨áľááá áááľ áá°áá áŤá á áá áá ááŽááŤá á¨áťá áŤá áááŤá ášáŤ (), áĽá áąáŤ á ááľ - ááá áĽáŞáá˝ á áááááᢠáŤáá áĽáááą ááľá áááŤá ááá(). áĽáá°ááá áŤááľ áŤáŽá˝ áááŠá á¨áá¤áą áá áááłá°á á¨ááአáĽáť á፠áŤááĄááłá áá.
áá¤áąá áá° ááá áááľááἠ-o áá áá
áá á°á áŤá áá ááľ áááá¨áľ áľááá˝á áĽááá áá á¨áá¨áłá°áŤ áá¤áśá˝á á á°áᨠáááá˝ ááľáĽ áá¨áá¸áľ á áá áá (á¨áá áĽáá° ááłáá)ᢠáá á°áá á¨áá¤áľ áá á፠á¨ááŤáᣠá¨ááŽááŤá áá¤áľá áááľáááľ áá¨áłá áá á áŽááśá ááľáĽ.
á°á¨á᪠á¨áá¨áŤá¨áŞáŤ ááĽáĽ ááá¨áľ -s áá áá
á¨áľá á°áľ áááááą ááá°á á ááá˝ á¨áá áŁáá ááłá ááá áá áĽáá°áááłá á áľá°ááá ááááᢠááááŤáąá ááᢠáá ááŁáŞ á¨ááááŞáŤáá 32 áŁááľ á¨ááĽá¨ááá áá᪠áĽá´áľ áŤáłáŤáᢠá°á¨á᪠áá¨áľ á¨ááá, á¨áá ááá áŤáá -ááľ 128 áá° áĽáŞá áá.
-y áááá˝áᣠáśáŹáśá˝á ááá° áá¨áłá°áá ááá áŤá°ááááá˘
"All is file" áááľ *nix á˛áľá°áá˝ á¨ááá ááááá˝á á áá áá áááá á á/ጠáŤá¨ááááᣠ፠á ááá ááá á ááľááá ááá á á˘áá°áááŽá´áľ á§áá§áá˝ áá á°ááťá ááááᢠáá áááŽááŤá á ááŁáĽ ááš ááᣠááá áá á¨á°áááą á˛áŤáŠ áá áĽá¨á°á¨á°á° áĽááłá ááá¨áłá°á á áľá¸á᪠áŤá°áááá áŤááĽáĄ и áťá á áľáááą á¨áĽáŞ áá¨áłá°áŤ áá¤áśá˝ ááľáĽá˘
áŚááŹá°á á áá¨á -Ńᣠáłáľááľáłáá áá á áá¤áą ááľáĽ áŤááá áĽáŤááłááąá ááá ááá á¨áá áááá ááľáłááť áááášá˘
ᨠ-p** áá ááľááá á¨áá°áŤ áá°áľ áá áŤáŤáá
á¨áłá˝ áŤáá ááłá áĽáá°áááá¨áąáľ, á ááłááľ áá ááľááá áĽá¨á°áŤ áŤááá ááŽááŤá áááá áŤáľáááááłá. áĽáá° áá°áľ 1337 áĽá¨áá° áĽáá°áá á¨áłáá (á¨áá¤áą ááľáĽ áá á ps), á¨á፠áĽáá°áá¨á°áá áá¨áłá°á áá˝áá-
$ strace -p 1337
...system call trace output...
á¨áľá ááĽáśá˝ ááŤáľáááá áá˝ááá˘
á¨á áťááľá áá°áľ ááá¨áłá°á -f áá áá
áá á ááŁáŞááľ á ááľ áá°áľ áĽáť áá¨áłá°ááᢠáá áá°áľ á¨ááá áá°áśá˝á á¨áááĽá á¨ááᣠá¨áá áá°áľá áááŤáŁáľ á¨áľáááľ áĽáŞ ááłá áá˝ááᣠááá áá á¨áá áá°áľ á¨áľáááľ áĽáŞáá˝ á ááłáŠáá˘
áľá
á°áą á ááá˝ áá°áľ ááľáĽ áá áĽáá áŤá°áĄ ááááŤáá áá áá -fáá
ááá ááááľ áŤáľá˝ááᢠá¨áá
á ááłá áá áá¤áą á¨á áá á፠á¨ááŤáᣠááá ááᢠááź áá á ááľ áá°áľ ááá á ááľ áá áá¨áłá°ááᣠá ááľ áá á á¨áĽáŞ ááľá°áśá˝á áŤáłáŤáᢠáĽá áá°áśá˝á á á ááľ áá á˛á¨áłá°áᣠá áááááľ á˛áá¨áĽ á¨áĽáŞ ááááŞáŤ ááŤáŠ áá˝ááᢠ, á¨á፠- áááá˝ á¨ááľáá¸á፠á
áááŤáá˝ áĽáŞáá˝ áľáĽáľáĽ, áĽá á¨á፠áĽáť - á¨ááááŞáŤá áá¨á¨áť <âŚfoocal á¨áá á>. ááá áááá á¨áá¨áłá°áŤ áá¤áśá˝á áá° á°ááŤáŠ áááá˝ áá¨áááá¸áᣠáĽáá˛áá áŚááŹá°áŠá áá áá -á (ááááŽá˝ á
-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 ááľáĽ áĽáá´áľ áĽá áá ááľá¨á áĽááłááŚáľ á˘áŤááľ áľáá˝ á¨á°á¨áą, á¨áľáááąá á¨áĽáŞ áąáŤ áá¤áśá˝á ááá¨áłáľ ááá ááááááłá. áááłáᣠáá° ááľááá á˛áľá°áá˝ áĽáŞáá˝á áá¨á áá á˝áá á ááĽáááłáᣠá°ááłáłáŠá ááá˛á áááá¨áą
áá áἠá¨á°ááłá°á á¨áá¨á፠ááłá
áá°á á˛á á¨ááá áá¨á ááłá á áĽáŹá á áá áŤá áľ áá áááá áŤááĽáá ááłá áá á ááŠáᢠáá. áááᣠá ááłááľ áá áĽááá°á ááá፠áŤáľááááᣠáľááá á¨á áá á¨áá áá¨á á¨áĽááá°á á áááľ ááłá áá¸ááá˘
# crontab -e -u logs
bcrontab: Fatal: Could not create temporary file
áĽáş áááľ ááᢠáĽááŽá á¨á°áá°á ááá áááťá áááŻá, áá á áá°áŤá, áĽá ááá áĽáá°áá á ááá áá. áááἠáá:
# 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 +++
á áá¨á¨áťá á áŤáŁá˘ á¨áľá á°áľ áááĽááľ á áᢠáťáá áá áá áá á¨áá ááá á¨á°áᨠááᢠá ááááŞáŤ ᣠááá á°ááá á¨áľáááľ áĽáŞ áľá á°áľ á¨áá ᣠáĽááá áá á¨áá á ááľ áá¨á°áłáᢠá ááá°á á°á¨á, á¨áá áŚáł á ááľ á°á á áľááľá á¨áľá á°áľ áááĽááąá áĽááłáá á ááá˝ áá. áĽááá°áá á˝áá áá áŚáł áááľáá, áĽá áĽááŽááłáĽ á ááá áááĽááąá áááś áŤáŤááłáá˘
áĽáľááá¨áąáľ á°á 2 ááá áĽ, á¨ááááŞáŤá áá᪠áĽá´áľ (3) á¨ááá ááá áááá áá¨áľ áá˝áá, áá á * nix áááá ᨠI/O áá°áľ áá ááá. á¨ááá ááá 3 á¨áááááá áĽáá´áľ ááá áĽá˝ááá? á áá áááł, ááŽáĽ áá˝áá áá á¨áá áá -Ń (á¨áá áŤááá áááá¨áą) áĽá á áŤáľ-á°á ááááááłáᣠááá áá áĽááá á áá°á áááŽá˝ áááá ᣠáĽáá´áľ ááá ἠáĽá á¨ááľáľá áá¤áśá˝á áá°áá°á áĽáá°ááťá ááá á áá ááá˘
á¨ááá ááá ááá á¨áĽá á¨áľáááľ áĽáŞáá˝ ááľáĽ á ááą ááá áá˝áá (ááá ááá áááá - áŽááśá ᣠá¨á ááłá¨ áá¨áĽ áśáŹáľ ᣠááá áŤáą ááá áá ááá áá á¨á°áá á¨á° áá) ᣠáá áĽáá°á፠ááá áá˝áá ᣠáĽá áĽááááááᢠáĽáŞáá˝ 3 á ááááľ (áááľá á ááľáľá áá¤áśá˝ ááľáĽ "= 3" áĽáááááá)ᢠá áá áá¤áľ ááľáĽ 2áą á á- áááľ á áŁá áá áĽá áśáŹáľ ááá áá. áááľ áááá áá¨ááłá áá áá á(3) á¨ááŤá áĽáá°áá áĽáá°ááá áŤáłáŤá. (Rake: ááá ááááá˝ á˛á¨ááą áĽá á˛áá áĽáá°áá áĽá á áá ááá áá˝áá). áá°áá áśáŹáľ() á°áľáá áá ááááŤáąá á¨áá á ááľ á¨áá¨á¨áťá áá á ááĽáĽ (), áĽá áĽáŽááśáĽ á áśáŹáľ á áŠá á¨á ááľ ááá áá á áĽáŽ áá°áŤá. á¨áááĽáá ááľáá á¨ááá ááá ᨠáá á¨á°áŤáŤá áááá áŤáłáŤá áŠáááľ á፠áśáŹáľ á ááááľ áá /var/áŠáŤ/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. á áľáááą áá áŤááľá áááá áááľ áááá˝ (ááá á¨ááá ááá) ááá¨ááŤáᢠááá áľá á ááľ á¨á°áá°á ááá áá¨á ááááľ áá˝áááĄ-
# 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 áá° áśáŹáľ á¨ááá ááá á¨ááá á ááá á áááľ áááĽááľ á áááᢠáááááľ á¨áá°áąá ááĽáĽá áŤá áá á (áá°á, áá á á 4, SIGCHLD ááá°) áá áá°áľ á¨áá áá°áľá áááĽáŤá, áĽááľá áĽáá°ááááąáľ, áĽááá°ááá áľáŤ áá°áŤá. áĽá á¨áĽááˇá ááááľ áááŤá á¨ááá, áá° áĽáŞá áŤáááľ strace -f. á á á˛áą áá¤áľ áá á¨áľá á°áąá áááĽááľ áľáááá á¨ááááá áá áá ááᢠ-f -o /tmp/trace -p 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 ááłáá á áá˝áá.) áá á¨áľáááľ áĽáŞ áá áá˛á (á áááá á¨ááľáá áá á¨ááá ááŽááŤáá˝ áĽááłáł áááá ááá áá). áĽá á ááľáľá áá¤áśáš áá á áááľá¨áľ á¨á°ááá˘áŚá˝ ááááá˝ áá¤áľ áĽáá á á ᣠáĽáľá¨ 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/. ááá áľááá chown ááŽá /var/spool/cron/tmp/ áŤáľááľáłá áĽááŽá á áľááá ááľáŤáľ. (á˝áአ፠áŤááá á¨áááĽáá á°á ááŁáŞ áĽáá° SELinux ááá AppArmor áŤá á¨á¨ááá á´áŞáŠáŞá˛ ááá áááŁáľááá á¨á¨ááá áááĽááľ áááἠááľáłááťá á á¨áááŁááᢠdmesg.)
Ô¸ŐÔ´ŐÔąŐŐŐŐ ÔłÔťŐ
á¨áľáááľ áĽáŞ áąáŤáá˝ ááááŞáá˝ á¨á á á á áá ááá áá˝áááŁááá áá á á ááá á á ááá á¨áá°ááŤáľ á˝ááŽá˝á ááá¨á ááŁá ááááľ áááá¸áá áĽááłáłá¨á á°áľá á á°ááááᢠáĽá áá°áľá ááá¨á áĽáá°áá¨áá á áľáĽ áĽááŽáá°á¨á-á -á°á¨á á áŤá á áá áá.
á áľáá áą á¨áĽáŞ á°áá°ááą áá áŤááá áá¤áľ áá° áá áá°áá°á áá ááľá áá ááááŁááá áá áĽááłááŠáľ áááá áááľ ááťáá áá áá áá, áá¤áąá áĽáť á áááá áĽá á¨áá¨á¨áťá ááᎠáľá á°áśá˝á áĽááááá. áááááá áá á áá¨á áá áĽá áá áááá ἠáá¨áłáá. ááĽááľáá á áá áĽáá°ááá á°áľá á á°áááá.
ááá: hab.com