рд╕реНрдЯреНрд░реЗрд╕рдХреЛ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдЩ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ

рд╕реНрдЯреНрд░реЗрд╕рдХреЛ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдЩ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ

рдореЗрд░реЛ рджрд┐рдирдХреЛ рдХрд╛рдо рдкреНрд░рд╛рдпрдГ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рд╣реЛ, рдЬрд╕рдХреЛ рдорддрд▓рдм рдореИрд▓реЗ рдкреНрд░рд╢реНрдирд╣рд░реВрдХреЛ рдЬрд╡рд╛рдл рджрд┐рди рдзреЗрд░реИ рд╕рдордп рдЦрд░реНрдЪ рдЧрд░реНрдЫреБ:

  • рдпреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░ рд╡рд┐рдХрд╛рд╕рдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рдХрд╛рдо рдЧрд░реНрджрдЫ, рддрд░ рдореЗрд░реЛ рд▓рд╛рдЧрд┐ рд╣реЛрдЗрдиред рдХрд┐рди?
  • рд╣рд┐рдЬреЛ рдпреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░рд▓реЗ рдореЗрд░реЛ рд▓рд╛рдЧрд┐ рдХрд╛рдо рдЧрд░реНрдпреЛ, рддрд░ рдЖрдЬ рдпреЛ рдЧрд░реНрджреИрдиред рдХрд┐рди?

рдпреЛ рдПрдХ рдкреНрд░рдХрд╛рд░рдХреЛ рдбрд┐рдмрдЧрд┐рдЩ рд╣реЛ рдЬреБрди рдирд┐рдпрдорд┐рдд рд╕рдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рдмрдЧрд┐рдЩ рднрдиреНрджрд╛ рдЕрд▓рд┐ рдлрд░рдХ рдЫред рдирд┐рдпрдорд┐рдд рдбрд┐рдмрдЧрд┐рдЩ рднрдиреЗрдХреЛ рдХреЛрдбрдХреЛ рддрд░реНрдХрдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣реЛ, рддрд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдбрд┐рдмрдЧрд┐рдЩ рднрдиреЗрдХреЛ рдХреЛрдб рд░ рд╡рд╛рддрд╛рд╡рд░рдгрдмреАрдЪрдХреЛ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдмрд╛рд░реЗрдорд╛ рд╣реЛред рдпрджрд┐ рд╕рдорд╕реНрдпрд╛рдХреЛ рдЬрд░рд╛ рддрд╛рд░реНрдХрд┐рдХ рддреНрд░реБрдЯрд┐ рд╣реЛ рднрдиреЗ рдкрдирд┐, рддрдереНрдп рдпреЛ рд╣реЛ рдХрд┐ рд╕рдмреИ рдХреБрд░рд╛ рдПрдХ рдореЗрд╕рд┐рдирдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ рд░ рдЕрд░реНрдХреЛрдорд╛ рд╣реЛрдЗрди рдпрд╕рдХреЛ рдорддрд▓рдм рд╕рдорд╕реНрдпрд╛ рдХреБрдиреИ рди рдХреБрдиреИ рд░реВрдкрдорд╛ рд╡рд╛рддрд╛рд╡рд░рдгрдорд╛ рдЫред

рддреНрдпрд╕реИрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рдмрдЧрд┐рдЩ рдЙрдкрдХрд░рдгрд╣рд░реВ рдЬрд╕реНрддреИ gdb рдбрд┐рдмрдЧрд┐рдЩ рдбрд┐рдкреНрд▓реЛрдпрдореЗрдиреНрдЯрдХрд╛ рд▓рд╛рдЧрд┐ рдорд╕рдБрдЧ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рдлрд░рдХ рд╕реЗрдЯ рдЫред рд░ "рдХрд┐рди рдпреЛ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдореЗрд░реЛ рд▓рд╛рдЧрд┐ рдХрд╛рдо рдЧрд░реНрджреИрди?" рдЬрд╕реНрддреИ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рдЧрд░реНрди рдореЗрд░реЛ рдордирдкрд░реНрдиреЗ рдЙрдкрдХрд░рдгред рдмреЛрд▓рд╛рдЗрдпреЛ рд╕реНрдЯреНрд░реЗрд╕.

рд╕реНрдЯреНрд░реЗрд╕ рднрдиреЗрдХреЛ рдХреЗ рд╣реЛ?

рд╕реНрдЯреНрд░реЗрд╕ "рд╕рд┐рд╕реНрдЯрдо рдХрд▓ рдЯреНрд░реЗрд╕рд┐рдЩ" рдХреЛ рд▓рд╛рдЧреА рдПрдХ рдЙрдкрдХрд░рдг рд╣реЛред рдпреЛ рдореВрд▓ рд░реВрдкрдорд╛ рд▓рд┐рдирдХреНрд╕рдХреЛ рд▓рд╛рдЧрд┐ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░рд┐рдПрдХреЛ рдерд┐рдпреЛ, рддрд░ рдЙрд╣реА рдбрд┐рдмрдЧрд┐рдЩ рдЪрд╛рд▓рд╣рд░реВ рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдЙрдкрдХрд░рдгрд╣рд░реВрд╕рдБрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ (рдбреАрдЯреНрд░реЗрд╕ рд╡рд╛ ktrace).

рдЖрдзрд╛рд░рднреВрдд рдЖрд╡реЗрджрди рдзреЗрд░реИ рд╕рд░рд▓ рдЫред рддрдкрд╛рдИрд▓реЗ рдХреБрдиреИ рдкрдирд┐ рдЖрджреЗрд╢рдХреЛ рд╕рд╛рде рд╕реНрдЯреНрд░реЗрд╕ рдЪрд▓рд╛рдЙрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд░ рдпрд╕рд▓реЗ рд╕рдмреИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдбрдореНрдк рдЧрд░реНрдиреЗрдЫ (рдпрджреНрдпрдкрд┐ рдкрд╣рд┐рд▓реЗ рддрдкрд╛рдИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдЖрдлреИрдВ рд╕реНрдерд╛рдкрдирд╛ рдЧрд░реНрдиреБрдкрд░реНрдиреЗрдЫред рд╕реНрдЯреНрд░реЗрд╕):

$ strace echo Hello
...Snip lots of stuff...
write(1, "Hellon", 6)                  = 6
close(1)                                = 0
close(2)                                = 0
exit_group(0)                           = ?
+++ exited with 0 +++

рдпреА рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдХреЗ рд╣реБрдиреН? рдпреЛ рдЕрдкрд░реЗрдЯрд┐рдЩ рд╕рд┐рд╕реНрдЯрдо рдХрд░реНрдиреЗрд▓ рдХреЛ рд▓рд╛рдЧреА рдПрдХ API рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдЫред рдПрдХ рдкрдЯрдХ, рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рд╕реАрдзрд╛ рдкрд╣реБрдБрдЪ рдерд┐рдпреЛ рдЬреБрди рдпреЛ рдЪрд▓реЗрдХреЛ рдерд┐рдпреЛред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рдпреЛ рд╕реНрдХреНрд░рд┐рдирдорд╛ рдХреЗрд╣рд┐ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рднрдиреЗ, рдпреЛ рдкреЛрд░реНрдЯрд╣рд░реВ рд╡рд╛ рднрд┐рдбрд┐рдпреЛ рдЙрдкрдХрд░рдгрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдореЗрдореЛрд░реА-рдореНрдпрд╛рдк рдЧрд░рд┐рдПрдХреЛ рджрд░реНрддрд╛рд╣рд░реВрд╕рдБрдЧ рдЦреЗрд▓реЗрдХреЛ рдерд┐рдпреЛред рдЬрдм рдорд▓реНрдЯрд┐рдЯрд╛рд╕реНрдХрд┐рдЩ рдХрдореНрдкреНрдпреБрдЯрд░ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВ рд▓реЛрдХрдкреНрд░рд┐рдп рднрдП, рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВрд▓реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рд▓рдбреНрджрд╛ рдЕрд░рд╛рдЬрдХрддрд╛рд▓реЗ рд╢рд╛рд╕рди рдЧрд░реНрдпреЛред рдПрдЙрдЯрд╛ рдПрдкреНрд▓рд┐рдХреЗрд╕рдирдорд╛ рднрдПрдХрд╛ рддреНрд░реБрдЯрд┐рд╣рд░реВрд▓реЗ рдЕрд░реВрд▓рд╛рдИ рддрд▓ рд▓реНрдпрд╛рдЙрди рд╕рдХреНрдЫ, рдпрджрд┐ рд╕рдореНрдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рд╣реЛрдЗрдиред рддреНрдпрд╕рдкрдЫрд┐ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдореЛрдбрд╣рд░реВ (рд╡рд╛ "рд░рд┐рдВрдЧ рд╕реБрд░рдХреНрд╖рд╛") CPU рдорд╛ рджреЗрдЦрд╛ рдкрд░реНрдпреЛред рдХрд░реНрдиреЗрд▓ рд╕рдмреИрднрдиреНрджрд╛ рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рднрдпреЛ: рдпрд╕рд▓реЗ рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рдорд╛ рдкреВрд░реНрдг рдкрд╣реБрдБрдЪ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНтАНрдпреЛ, рдХрдо рд╡рд┐рд╢реЗрд╖рд╛рдзрд┐рдХрд╛рд░ рдкреНрд░рд╛рдкреНрдд рдЕрдиреБрдкреНрд░рдпреЛрдЧрд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНтАНрдпреЛ рдЬреБрди рдкрд╣рд┐рд▓реЗ рдиреИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдорд╛рд░реНрдлрдд рд╣рд╛рд░реНрдбрд╡реЗрдпрд░рд╕рдБрдЧ рдЕрдиреНрддрд░реНрдХреНрд░рд┐рдпрд╛ рдЧрд░реНрди рдХрд░реНрдиреЗрд▓рдмрд╛рдЯ рдкрд╣реБрдБрдЪ рдЕрдиреБрд░реЛрдз рдЧрд░реНрдиреБрдкрд░реНрджрдЫред

рдмрд╛рдЗрдирд░реА рд╕реНрддрд░рдорд╛, рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рд╕рд╛рдзрд╛рд░рдг рдкреНрд░рдХрд╛рд░реНрдп рдХрд▓ рднрдиреНрджрд╛ рдЕрд▓рд┐ рдлрд░рдХ рд╣реБрдиреНрдЫ, рддрд░ рдзреЗрд░реИ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрд▓реЗ рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рд░реНрдпрд╛рдкрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рддреАред POSIX C рдорд╛рдирдХ рдкреБрд╕реНрддрдХрд╛рд▓рдпрдорд╛ рдПрдХ рдкреНрд░рдХрд╛рд░реНрдп рдХрд▓ рд╕рдорд╛рд╡реЗрд╢ рдЫ рд▓реЗрдЦреНрдиреБрд╣реЛрд╕реН (), рдЬрд╕рд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рдХреЛ рд▓рд╛рдЧрд┐ рд╕рдмреИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛-рд╡рд┐рд╢реЗрд╖ рдХреЛрдб рд╕рдорд╛рд╡реЗрд╢ рдЧрд░реНрджрдЫ рд▓реЗрдЦреНрди.

рд╕реНрдЯреНрд░реЗрд╕рдХреЛ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдЩ рд╕рдлреНрдЯрд╡реЗрдпрд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ

рдЫреЛрдЯрдХрд░реАрдорд╛, рдПрдкреНрд▓рд┐рдХреЗрд╕рди рд░ рдпрд╕рдХреЛ рд╡рд╛рддрд╛рд╡рд░рдг (рдХрдореНрдкреНрдпреБрдЯрд░ рдкреНрд░рдгрд╛рд▓реА) рдмреАрдЪрдХреЛ рдХреБрдиреИ рдкрдирд┐ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдорд╛рд░реНрдлрдд рдЧрд░рд┐рдиреНрдЫред рддреНрдпрд╕рдХрд╛рд░рдг, рдЬрдм рд╕рдлреНрдЯрд╡реЗрдпрд░рд▓реЗ рдПрдЙрдЯрд╛ рдореЗрд╕рд┐рдирдорд╛ рдХрд╛рдо рдЧрд░реНрдЫ рддрд░ рдЕрд░реНрдХреЛрдорд╛ рд╣реЛрдЗрди, рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЯреНрд░реЗрд╕рд┐рдЩ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рд╣реЗрд░реНрдиреБ рд░рд╛рдореНрд░реЛ рд╣реБрдиреНрдЫред рдердк рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛, рдпрд╣рд╛рдБ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдмрд┐рдиреНрджреБрд╣рд░реВрдХреЛ рд╕реВрдЪреА рдЫ рдЬреБрди рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЯреНрд░реЗрд╕ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ:

  • рдХрдиреНрд╕реЛрд▓ I/O
  • рдиреЗрдЯрд╡рд░реНрдХ I/O
  • рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдкрд╣реБрдБрдЪ рд░ рдлрд╛рдЗрд▓ I/O
  • рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдереНрд░реЗрдбрдХреЛ рдЬреАрд╡рдирдХрд╛рд▓ рдкреНрд░рдмрдиреНрдз рдЧрд░реНрджреИ
  • рдХрдо-рд╕реНрддрд░ рдореЗрдореЛрд░реА рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди
  • рд╡рд┐рд╢рд┐рд╖реНрдЯ рдпрдиреНрддреНрд░ рдЪрд╛рд▓рдХрд╣рд░реВрдорд╛ рдкрд╣реБрдБрдЪ

strace рдХрд╣рд┐рд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗ?

рд╕рд┐рджреНрдзрд╛рдиреНрддрдорд╛, рд╕реНрдЯреНрд░реЗрд╕ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдорд╛ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд╕рдБрдЧ рдкреНрд░рдпреЛрдЧ рдЧрд░рд┐рдиреНрдЫ, рдХрд┐рдирднрдиреЗ рдкреНрд░рдпреЛрдЧрдХрд░реНрддрд╛ рд╕реНрдкреЗрд╕рдорд╛ рдХреБрдиреИ рдкрдирд┐ рдкреНрд░реЛрдЧреНрд░рд╛рдорд▓реЗ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдЧрд░реНрдиреБрдкрд░реНрдЫред рдпрд╕рд▓реЗ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░рд┐рдПрдХреЛ, рдХрдо-рд╕реНрддрд░рдХрд╛ рдХрд╛рд░реНрдпрдХреНрд░рдорд╣рд░реВрд╕рдБрдЧ рдЕрдЭ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рд░реВрдкрдорд╛ рдХрд╛рдо рдЧрд░реНрджрдЫ, рддрд░ рдпрд╕рд▓реЗ рдкрд╛рдЗрдерди рдЬрд╕реНрддрд╛ рдЙрдЪреНрдЪ-рд╕реНрддрд░ рднрд╛рд╖рд╛рд╣рд░реВрд╕рдБрдЧ рдкрдирд┐ рдХрд╛рдо рдЧрд░реНрджрдЫ рдпрджрд┐ рддрдкрд╛рдИрдВ рд░рдирдЯрд╛рдЗрдо рд░ рджреЛрднрд╛рд╖реЗрдмрд╛рдЯ рдердк рдЖрд╡рд╛рдЬрд╣рд░реВ рдХрд╛рдЯреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред

рдпрд╕рдХреЛ рд╕рдореНрдкреВрд░реНрдг рдорд╣рд┐рдорд╛рдорд╛ рд╕реНрдЯреНрд░реЗрд╕ рдПрдЙрдЯрд╛ рдореЗрд╕рд┐рдирдорд╛ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рдХрд╛рдо рдЧрд░реНрдиреЗ рд╕рдлреНрдЯрд╡реЗрдпрд░рдХреЛ рдбрд┐рдмрдЧрд┐рдЩрдХреЛ рдХреНрд░рдордорд╛ рдЖрдлреИрд▓рд╛рдИ рдкреНрд░рдХрдЯ рдЧрд░реНрдЫ, рддрд░ рдЕрдЪрд╛рдирдХ рдЕрд░реНрдХреЛрдорд╛ рдХрд╛рдо рдЧрд░реНрди рдмрдиреНрдж рдЧрд░реНрдЫ, рдлрд╛рдЗрд▓рд╣рд░реВ, рдЕрдиреБрдорддрд┐рд╣рд░реВ, рд╡рд╛ рдХреЗрд╣реА рдЖрджреЗрд╢рд╣рд░реВ рд╡рд╛ рдЕрд░реВ рдХреЗрд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд░реНрдиреЗ рдЕрд╕рдлрд▓ рдкреНрд░рдпрд╛рд╕рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдиреНрджреЗрд╢рд╣рд░реВ рдЙрддреНрдкрд╛рджрди рдЧрд░реНрджреИ... рдпреЛ рджреБрдГрдЦрдХреЛ рдХреБрд░рд╛ рд╣реЛ, рддрд░ рдпреЛ рд╣реБрдБрджреИрдиред рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЬрд╕реНрддрд╛ рдЙрдЪреНрдЪ-рд╕реНрддрд░ рд╕рдорд╕реНрдпрд╛рд╣рд░реВрд╕рдБрдЧ рд░рд╛рдореНрд░реЛрд╕рдБрдЧ рд╕рдВрдпреЛрдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реНред рд╕рд╛рдорд╛рдиреНрдпрддрдпрд╛ рдпреЛ рд╕рдВрдпреЛрдЬрди рдЖрд╡рд╢реНрдпрдХ рдЫ рд╕реНрдЯреНрд░реЗрд╕, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ ltrace рд░ рдЙрдЪреНрдЪ рд╕реНрддрд░рдХрд╛ рдЙрдкрдХрд░рдгрд╣рд░реВ (рдЬрд╕реНрддреИ рдХрдорд╛рдгреНрдб рд▓рд╛рдЗрди рдЙрдкрдХрд░рдг рдУрдкрдирд╕реНрдПрд▓ рдкреНрд░рдорд╛рдгрдкрддреНрд░ рдбрд┐рдмрдЧ рдЧрд░реНрди)ред

рд╣рд╛рдореА рдЙрджрд╛рд╣рд░рдгрдХреЛ рд░реВрдкрдорд╛ рдПрдХ рд╕реНрдЯреНрдпрд╛рдиреНрдбрдЕрд▓реЛрди рд╕рд░реНрднрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреЗрдЫреМрдВ, рддрд░ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЯреНрд░реЗрд╕рд┐рдЩ рдкреНрд░рд╛рдп: рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯ рдкреНрд▓реЗрдЯрдлрд░реНрдорд╣рд░реВрдорд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рддрдкрд╛рдИрдВрд▓реЗ рдорд╛рддреНрд░ рд╕рд╣реА рдЙрдкрдХрд░рдгрд╣рд░реВ рдЫрдиреМрдЯ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред

рд╕рд░рд▓ рдбрд┐рдмрдЧрд┐рдЩ рдЙрджрд╛рд╣рд░рдг

рдорд╛рдиреМрдВ рдХрд┐ рддрдкрд╛рдЗрдБ рдЕрдЪрдореНрдордХреЛ рд╕рд░реНрднрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ foo рдЪрд▓рд╛рдЙрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ, рд░ рдпреЛ рддрдкрд╛рдЗрдБрдХреЛ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реБрдиреНрдЫ:

$ foo
Error opening configuration file: No such file or directory

рд╕реНрдкрд╖реНрдЯ рд░реВрдкрдорд╛ рддрдкрд╛рдИрдВрд▓реЗ рд▓реЗрдЦреНрдиреБрднрдПрдХреЛ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдлреЗрд▓рд╛ рдкрд╛рд░реНрди рд╕рдХреЗрдиред рдпреЛ рд╣реБрдиреНрдЫ рдХрд┐рдирднрдиреЗ рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рдкреНрдпрд╛рдХреЗрдЬ рдкреНрд░рдмрдиреНрдзрдХрд╣рд░реВрд▓реЗ рдПрдЙрдЯрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХрдореНрдкрд╛рдЗрд▓ рдЧрд░реНрджрд╛, рддрд┐рдиреАрд╣рд░реВрд▓реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдлрд╛рдЗрд▓ рд╕реНрдерд╛рдирд╣рд░реВ рдУрднрд░рд░рд╛рдЗрдб рдЧрд░реНрдЫрдиреНред рд░ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдПрдХ рд╡рд┐рддрд░рдгрдХреЛ рд▓рд╛рдЧрд┐ рд╕реНрдерд╛рдкрдирд╛ рдЧрд╛рдЗрдб рдкрдЫреНрдпрд╛рдЙрдиреБрд╣реЛрд╕реН, рдЕрд░реНрдХреЛрдорд╛ рддрдкрд╛рдЗрдБрд▓реЗ рдЕрдкреЗрдХреНрд╖рд╛ рдЧрд░реЗрдХреЛ рднрдиреНрджрд╛ рдкреВрд░реНрдг рд░реВрдкрдорд╛ рдлрд░рдХ рдлрд╛рдЗрд▓рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реБрдиреНрдЫред рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рд▓реЗ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рдХрд╣рд╛рдБ рдЦреЛрдЬреНрдиреЗ рднрдиреЗрд░ рдмрддрд╛рдПрдХреЛ рднрдП рдХреЗрд╣реА рд╕реЗрдХреЗрдиреНрдбрдорд╛ рд╕рдорд╕реНрдпрд╛ рд╕рдорд╛рдзрд╛рди рд╣реБрди рд╕рдХреНрдЫ, рддрд░ рддреНрдпрд╕реЛ рднрдПрдиред рддреНрдпрд╕реЛрднрдП рдХрд╣рд╛рдБ рд╣реЗрд░реНрдиреЗ?

рдпрджрд┐ рддрдкрд╛рдЗрдБрд╕рдБрдЧ рд╕реНрд░реЛрдд рдХреЛрдбрдорд╛ рдкрд╣реБрдБрдЪ рдЫ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдпрд╕рд▓рд╛рдИ рдкрдвреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд░ рд╕рдмреИ рдХреБрд░рд╛ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫред рд░рд╛рдореНрд░реЛ рдмреНрдпрд╛рдХрдЕрдк рдпреЛрдЬрдирд╛, рддрд░ рдЫрд┐рдЯреЛ рд╕рдорд╛рдзрд╛рди рд╣реЛрдЗрдиред рддрдкрд╛рдИрдВ рдПрдХ рдЪрд░рдг-рджрд░-рдЪрд░рдг рдбрд┐рдмрдЧрд░ рдЬрд╕реНрддреИ рд░рд┐рд╕реЛрд░реНрдЯ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ gdb рд░ рдХрд╛рд░реНрдпрдХреНрд░рдорд▓реЗ рдХреЗ рдЧрд░реНрдЫ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН, рддрд░ рд╡рд╛рддрд╛рд╡рд░рдгрд╕рдБрдЧ рдЕрдиреНрддрд░рдХреНрд░рд┐рдпрд╛ рджреЗрдЦрд╛рдЙрдирдХреЛ рд▓рд╛рдЧрд┐ рд╡рд┐рд╢реЗрд╖ рд░реВрдкрдорд╛ рдбрд┐рдЬрд╛рдЗрди рдЧрд░рд┐рдПрдХреЛ рдЙрдкрдХрд░рдг рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рдпреЛ рдзреЗрд░реИ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рдЫ: рд╕реНрдЯреНрд░реЗрд╕.

рдирд┐рд╖реНрдХрд░реНрд╖рдорд╛ рд╕реНрдЯреНрд░реЗрд╕ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд▓рд╛рдЧреНрди рд╕рдХреНрдЫ, рддрд░ рд╕реБрд╕рдорд╛рдЪрд╛рд░ рдпреЛ рд╣реЛ рдХрд┐ рдзреЗрд░реИ рдЬрд╕реЛ рд╕реБрд░рдХреНрд╖рд┐рдд рд░реВрдкрдорд╛ рдмреЗрд╡рд╛рд╕реНрддрд╛ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫред рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдЫреБрдЯреНрдЯреИ рдлрд╛рдЗрд▓рдорд╛ рдмрдЪрдд рдЧрд░реНрди -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, mpprotect, quill рдирд┐рдореНрди-рд╕реНрддрд░ рдореЗрдореЛрд░реА рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрдиреЗ рд░ рдЧрддрд┐рд╢реАрд▓ рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рдЧрд░реНрдиреЗ рдЬрд╕реНрддрд╛ рдЪреАрдЬрд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ред) рд╡рд╛рд╕реНрддрд╡рдорд╛, рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рдмрдЧ рдЧрд░реНрджрд╛ рд╕реНрдЯреНрд░реЗрд╕ рдпреЛ рдзреЗрд░реИ рдЕрдиреНрдд рджреЗрдЦрд┐ рдкрдвреНрди рд░рд╛рдореНрд░реЛ рдЫред рддрд▓ рдПрдЙрдЯрд╛ рдЪреБрдиреМрддреА рд╣реБрдиреЗрдЫ рд▓реЗрдЦреНрди, рдЬрд╕рд▓реЗ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢ рджреЗрдЦрд╛рдЙрдБрдЫред рд╣рд╛рдореА рдорд╛рдерд┐ рд╣реЗрд░реНрдЫреМрдВ рд░ рдкрд╣рд┐рд▓реЛ рддреНрд░реБрдЯрд┐рдкреВрд░реНрдг рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рджреЗрдЦреНрдЫреМрдВ - рдХрд▓ openat, рдЬрд╕рд▓реЗ рддреНрд░реБрдЯрд┐ рдлреНрдпрд╛рдБрдХреНрдЫ ENOENT ("рдлрд╛рдЗрд▓ рд╡рд╛ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдлреЗрд▓рд╛ рдкрд░реЗрди") рдЦреЛрд▓реНрди рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрджреИ /etc/foo/config.jsonред рдпреЛ рдЬрд╣рд╛рдБ рдХрдиреНрдлрд┐рдЧрд░реЗрд╕рди рдлрд╛рдЗрд▓ рд╣реБрдиреБрдкрд░реНрдЫред

рдпреЛ рдПрдЙрдЯрд╛ рдЙрджрд╛рд╣рд░рдг рдорд╛рддреНрд░ рдерд┐рдпреЛ, рддрд░ рдореИрд▓реЗ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрдХреЛ рд╕рдордпрдХреЛ репреж% рднрдиреНрди рдЪрд╛рд╣рдиреНрдЫреБ рд╕реНрдЯреНрд░реЗрд╕, рдпреЛ рднрдиреНрджрд╛ рдзреЗрд░реИ рдЧрд╛рд╣реНрд░реЛ рдЧрд░реНрди рдХреЛ рд▓рд╛рдЧреА рдХреЗрд╣рд┐ рдЫреИрдиред рддрд▓ рдПрдХ рдкреВрд░реНрдг рдЪрд░рдг-рджрд░-рдЪрд░рдг рдбрд┐рдмрдЧрд┐рдВрдЧ рдЧрд╛рдЗрдб рдЫ:

  • рдХрд╛рд░реНрдпрдХреНрд░рдордмрд╛рдЯ рдкреНрд░рдгрд╛рд▓реА-y рддреНрд░реБрдЯрд┐рдХреЛ рдмрд╛рд░реЗрдорд╛ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рдиреНрджреЗрд╢рдХреЛ рдХрд╛рд░рдг рдирд┐рд░рд╛рд╢ рд╣реБрдиреБрд╣реЛрд╕реН
  • рд╕рдВрдЧ рдХрд╛рд░реНрдпрдХреНрд░рдо рдкреБрди: рд╕реБрд░реБ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╕реНрдЯреНрд░реЗрд╕
  • рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдорд╣рд░реВрдорд╛ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреБрд╣реЛрд╕реН
  • рддрдкрд╛рдИрдВрд▓реЗ рдкрд╣рд┐рд▓реЛ рдЕрд╕рдлрд▓ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд▓рд╛рдИ рд╣рд┐рдЯ рдирдЧрд░реЗрд╕рдореНрдо рдорд╛рдерд┐ рдЬрд╛рдиреБрд╣реЛрд╕реН

рдпреЛ рдзреЗрд░реИ рд╕рдореНрднрд╡ рдЫ рдХрд┐ рдЪрд░рдг 4 рдорд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд▓реЗ рдХреЗ рдЧрд▓реНрддреА рднрдпреЛ рдкреНрд░рдХрдЯ рдЧрд░реНрдиреЗрдЫред

рд╕реБрдЭрд╛рд╡рд╣рд░реВ

рддрдкрд╛рдИрдВрд▓рд╛рдИ рдердк рдЬрдЯрд┐рд▓ рдбрд┐рдмрдЧрд┐рдЩрдХреЛ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦрд╛рдЙрдиреБ рдЕрдШрд┐, рдо рддрдкрд╛рдИрдВрд▓рд╛рдИ рдкреНрд░рднрд╛рд╡рдХрд╛рд░реА рдкреНрд░рдпреЛрдЧрдХреЛ рд▓рд╛рдЧрд┐ рдХреЗрд╣реА рдЪрд╛рд▓рд╣рд░реВ рджреЗрдЦрд╛рдЙрдиреЗрдЫреБ рд╕реНрдЯреНрд░реЗрд╕:

рдорд╛рдиреНрдЫреЗ рддрд┐рдореНрд░реЛ рд╕рд╛рдереА рд╣реЛ

рдзреЗрд░реИ *nix рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛, рдХрд░реНрдиреЗрд▓рдорд╛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВрдХреЛ рдкреВрд░реНрдг рд╕реВрдЪреА рдЪрд▓рд╛рдПрд░ рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдорд╛рдиреНрдЫреЗ syscallsред рдЬрд╕реНрддрд╛ рдЪреАрдЬрд╣рд░реВ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ brk(2), рдЬрд╕рдХреЛ рдЕрд░реНрде рдЪрд▓рд╛рдПрд░ рдердк рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ рдорд╛рдиреНрдЫреЗ 2 brk.

рд╕рд╛рдиреЛ рд░реЗрдХ: рдорд╛рдиреНрдЫреЗ 2 рдХрд╛рдБрдЯрд╛ рдорд▓рд╛рдИ рд╢реЗрд▓рдХреЛ рд▓рд╛рдЧрд┐ рдкреГрд╖реНрда рджреЗрдЦрд╛рдЙрдБрджрдЫ рдХрд╛рдБрдЯрд╛() ╨▓ GNU libc, рдЬреБрди, рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ, рдХрд▓ рдЧрд░реЗрд░ рд▓рд╛рдЧреВ рдЧрд░рд┐рдПрдХреЛ рдЫ рдХреНрд▓реЛрди()ред рдЕрд░реНрдерд╢рд╛рд╕реНрддреНрд░рд▓рд╛рдИ рдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН рдлреЛрд░реНрдХ рдпрджрд┐ рддрдкрд╛рдЗрдБ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рд▓реЗрдЦреНрдиреБрд╣реБрдиреНрдЫ рднрдиреЗ рдЙрд╕реНрддреИ рд░рд╣рдиреНрдЫ рдХрд╛рдБрдЯрд╛(), рд░ рдЯреНрд░реЗрд╕ рдЪрд▓рд╛рдЙрдиреБрд╣реЛрд╕реН - рдореИрд▓реЗ рдХреБрдиреИ рдХрд▓рд╣рд░реВ рдлреЗрд▓рд╛ рдкрд╛рд░реНрдиреЗ рдЫреИрди рдлреЛрд░реНрдХ, рддрд┐рдиреАрд╣рд░реВрдХреЛ рд╕рдЯреНрдЯрд╛ рддреНрдпрд╣рд╛рдБ рд╣реБрдиреЗрдЫ рдХреНрд▓реЛрди()ред рдпрджрд┐ рддрдкрд╛рдИрдВрд▓реЗ рд╕реНрд░реЛрддрд▓рд╛рдИ рдЖрдЙрдЯрдкреБрдЯрд╕рдБрдЧ рддреБрд▓рдирд╛ рдЧрд░реНрди рдерд╛рд▓реНрдиреБрднрдпреЛ рднрдиреЗ рдорд╛рддреНрд░ рддреНрдпрд╕реНрддрд╛ рд░реЗрдХрд╣рд░реВрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рднреНрд░рдорд┐рдд рдкрд╛рд░реНрдЫрдиреН рд╕реНрдЯреНрд░реЗрд╕.

рдлрд╛рдЗрд▓рдорд╛ рдЖрдЙрдЯрдкреБрдЯ рдмрдЪрдд рдЧрд░реНрди -o рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╕реНрдЯреНрд░реЗрд╕ рд╡реНрдпрд╛рдкрдХ рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдЧрд░реНрди рд╕рдХреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдпреЛ рдкреНрд░рд╛рдпрдГ рдлрд░рдХ рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рднрдгреНрдбрд╛рд░рдг рдЧрд░реНрди рдЙрдкрдпреЛрдЧреА рд╣реБрдиреНрдЫ (рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдгрдорд╛ рдЬрд╕реНрддреИ)ред рдпрд╕рд▓реЗ рдЖрдЙрдЯрдкреБрдЯрдХреЛ рд╕рд╛рде рднреНрд░рд╛рдордХ рдХрд╛рд░реНрдпрдХреНрд░рдо рдЖрдЙрдЯрдкреБрдЯрдмрд╛рдЯ рдмрдЪреНрди рдорджреНрджрдд рдЧрд░реНрджрдЫ рд╕реНрдЯреНрд░реЗрд╕ рдХрдиреНрд╕реЛрд▓рдорд╛ред

рдердк рддрд░реНрдХ рдбрд╛рдЯрд╛ рд╣реЗрд░реНрди -s рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рддрдкрд╛рдИрдВрд▓реЗ рдпрд╛рдж рдЧрд░реНрдиреБрднрдПрдХреЛ рд╣реЛрд▓рд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдиреНрджреЗрд╢рдХреЛ рджреЛрд╕реНрд░реЛ рдЖрдзрд╛ рдорд╛рдерд┐рдХреЛ рдЙрджрд╛рд╣рд░рдг рдЯреНрд░реЗрд╕рдорд╛ рджреЗрдЦрд╛рдЗрдПрдХреЛ рдЫреИрдиред рдпреЛ рдХрд┐рдирднрдиреЗ рд╕реНрдЯреНрд░реЗрд╕ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рддрд▓реЗ рд╕реНрдЯреНрд░рд┐рдЩ рдЖрд░реНрдЧреБрдореЗрдиреНрдЯрдХреЛ рдкрд╣рд┐рд▓реЛ рейреи рдмрд╛рдЗрдЯрд╣рд░реВ рдорд╛рддреНрд░ рджреЗрдЦрд╛рдЙрдБрдЫред рдпрджрд┐ рддрдкрд╛рдИрдВ рдердк рд╣реЗрд░реНрди рдЪрд╛рд╣рдиреБрд╣реБрдиреНрдЫ рднрдиреЗ, рдЬрд╕реНрддреИ рдХреЗрд╣рд┐ рдердкреНрдиреБрд╣реЛрд╕реН -рдПрд╕ 128 рдХрд▓ рдЧрд░реНрди рд╕реНрдЯреНрд░реЗрд╕.

-y рдлрд╛рдЗрд▓рд╣рд░реВ, рд╕рдХреЗрдЯрд╣рд░реВ, рдЖрджрд┐ рдЯреНрд░реНрдпрд╛рдХ рдЧрд░реНрди рд╕рдЬрд┐рд▓реЛ рдмрдирд╛рдЙрдБрдЫред

"рд╕рдмреИ рдлрд╛рдЗрд▓ рд╣реЛ" рдХреЛ рдЕрд░реНрде рд╣реЛ рдХрд┐ *рдирд┐рдХреНрд╕ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрд▓реЗ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕рдмреИ I/O рдЧрд░реНрдЫ, рдЪрд╛рд╣реЗ рддреНрдпреЛ рдлрд╛рдЗрд▓ рд╡рд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╡рд╛ рдЗрдиреНрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рдкрд╛рдЗрдкрд╣рд░реВрдорд╛ рд▓рд╛рдЧреВ рд╣реБрдиреНрдЫред рдпреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдЫ, рддрд░ рддрдкрд╛рдИрд▓реЗ рд╕рд╛рдорд╛рдиреНрдп рджреЗрдЦреНрджрд╛ рдХреЗ рднрдЗрд░рд╣реЗрдХреЛ рдЫ рднрдиреЗрд░ рдЯреНрд░реНрдпрд╛рдХ рд░рд╛рдЦреНрди рдЧрд╛рд╣реНрд░реЛ рдмрдирд╛рдЙрдБрдЫ рдкрдвреНрдиреБрд╣реЛрд╕ ╨╕ рд▓реЗрдЦреНрди рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдорд╣рд░реВрдорд╛ред

рдЕрдкрд░реЗрдЯрд░ рдердкреЗрд░ -╤Г, рддрдкрд╛рдИрд▓реЗ рдЬрдмрд░рдЬрд╕реНрддреА рдЧрд░реНрдиреБрд╣реБрдиреЗрдЫ рд╕реНрдЯреНрд░реЗрд╕ рдЖрдЙрдЯрдкреБрдЯрдорд╛ рдкреНрд░рддреНрдпреЗрдХ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд▓рд╛рдИ рдпрд╕рд▓реЗ рдХреЗ рд╕рдВрдХреЗрдд рдЧрд░реНрдЫ рднрдиреНрдиреЗ рдиреЛрдЯрдХреЛ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдЧрд░реНрдиреБрд╣реЛрд╕реНред

-p** рд╕рдБрдЧ рдкрд╣рд┐рд▓реЗ рдиреИ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рд╕рдВрд▓рдЧреНрди рдЧрд░реНрдиреБрд╣реЛрд╕реН

рддрдкрд╛рдИрд▓реЗ рддрд▓рдХреЛ рдЙрджрд╛рд╣рд░рдгрдмрд╛рдЯ рджреЗрдЦреНрдиреБрд╣реБрдиреЗрдЫ, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рддрдкрд╛рдИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЯреНрд░реЗрд╕ рдЧрд░реНрди рдЖрд╡рд╢реНрдпрдХ рдЫред рдпрджрд┐ рдпреЛ рдерд╛рд╣рд╛ рдЫ рдХрд┐ рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ 1337 рдХреЛ рд░реВрдкрдорд╛ рдЪрд▓рд┐рд░рд╣реЗрдХреЛ рдЫ (рднрдиреНрдиреБрд╣реЛрд╕реН, рдЖрдЙрдЯрдкреБрдЯрдмрд╛рдЯ ps), рддреНрдпрд╕реЛ рднрдП рддрдкрд╛рдИрд▓реЗ рдпрд╕рд▓рд╛рдИ рдпрд╕рд░реА рдЯреНрд░реЗрд╕ рдЧрд░реНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ:

$ strace -p 1337
...system call trace output...

рддрдкрд╛рдИрдВрд▓рд╛рдИ рд░реВрдЯ рдЕрдзрд┐рдХрд╛рд░ рдЪрд╛рд╣рд┐рдиреНрдЫред

рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдирд┐рдЧрд░рд╛рдиреА рдЧрд░реНрди -f рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН

рд╕реНрдЯреНрд░реЗрд╕ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд░реВрдкрдорд╛, рдпрд╕рд▓реЗ рдХреЗрд╡рд▓ рдПрдЙрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рдЯреНрд░реЗрд╕ рдЧрд░реНрдЫред рдпрджрд┐ рдпреЛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓реЗ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЙрддреНрдкрдиреНрди рдЧрд░реНрдЫ рднрдиреЗ, рдмрдЪреНрдЪрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд▓рд╛рдИ рд╕реНрдкреНрдпрд╛рди рдЧрд░реНрдирдХреЛ рд▓рд╛рдЧрд┐ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рджреЗрдЦреНрди рд╕рдХрд┐рдиреНрдЫ, рддрд░ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛рдХреЛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдкреНрд░рджрд░реНрд╢рди рд╣реБрдиреЗ рдЫреИрдирдиреНред

рдпрджрд┐ рддрдкрд╛рдИрдВрд▓рд╛рдИ рддреНрд░реБрдЯрд┐ рдмрд╛рд▓ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдорд╛ рдЫ рднрдиреНрдиреЗ рд▓рд╛рдЧреНрдЫ рднрдиреЗ, рдХрдерди рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБрд╣реЛрд╕реН -f, рдпрд╕рд▓реЗ рдпрд╕рдХреЛ рдЯреНрд░реЗрд╕рд┐рдЩ рд╕рдХреНрд╖рдо рдкрд╛рд░реНрдиреЗрдЫред рдпрд╕рдХреЛ рдирдХрд╛рд░рд╛рддреНрдордХ рдкрдХреНрд╖ рдпреЛ рд╣реЛ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯрд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рдЕрдЭ рдмрдвреА рднреНрд░рдорд┐рдд рдЧрд░реНрдиреЗрдЫред рдХрд╣рд┐рд▓реЗ рд╕реНрдЯреНрд░реЗрд╕ рдПрдЙрдЯрд╛ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╛ рдПрдЙрдЯрд╛ рдереНрд░реЗрдб рдЯреНрд░реЗрд╕ рдЧрд░реНрджрдЫ, рдпрд╕рд▓реЗ рдХрд▓ рдШрдЯрдирд╛рд╣рд░реВрдХреЛ рдПрдХрд▓ рд╕реНрдЯреНрд░рд┐рдо рджреЗрдЦрд╛рдЙрдБрдЫред рдЬрдм рдпрд╕рд▓реЗ рдПрдХреИрдЪреЛрдЯрд┐ рдзреЗрд░реИ рдкреНрд░рдХреНрд░рд┐рдпрд╛рд╣рд░реВ рдЯреНрд░реЗрд╕ рдЧрд░реНрдЫ, рддрдкрд╛рдИрдВрд▓реЗ рд╕рдиреНрджреЗрд╢рд▓реЗ рдЕрд╡рд░реЛрдз рдЧрд░реЗрдХреЛ рдХрд▓рдХреЛ рд╕реБрд░реБрд╡рд╛рдд рджреЗрдЦреНрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ , рддреНрдпрд╕рдкрдЫрд┐ - рдЕрдиреНрдп рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╢рд╛рдЦрд╛рд╣рд░реВрдХреЛ рд▓рд╛рдЧрд┐ рдХрд▓рд╣рд░реВрдХреЛ рдЧреБрдЪреНрдЫрд╛, рд░ рддреНрдпрд╕рдкрдЫрд┐ рдорд╛рддреНрд░ - рдкрд╣рд┐рд▓реЛрдХреЛ рдЕрдиреНрддреНрдп ред рд╡рд╛ рд╕рдмреИ рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рд╡рд┐рднрд┐рдиреНрди рдлрд╛рдЗрд▓рд╣рд░реВрдорд╛ рд╡рд┐рднрд╛рдЬрди рдЧрд░реНрдиреБрд╣реЛрд╕реН, рдЕрдкрд░реЗрдЯрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ -ff (рд╡рд┐рд╡рд░рдг рдорд╛ рдЧрд╛рдИрдб рдорд╛ рд╕реНрдЯреНрд░реЗрд╕).

-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 рдкреБрд╕реНрддрдХрд╛рд▓рдпрд╣рд░реВрдорд╛ рдорд╛рдирдХ рдХрд▓рд╣рд░реВ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рд╣реЛрдЗрдирдиреН, рддрд░ рдкрд╛рддрд▓реЛ рд╕рддрд╣ рддрд╣ рдорд╛рддреНрд░ рд╣реБрдиреНред рддреНрдпрд╕реЛрднрдП, рдпрджрд┐ рддрдкрд╛рдЗрдБ рдХрдореНрддрд┐рдорд╛ рдкрдирд┐ рд╕реА рдорд╛ рдХрд╕рд░реА рд░ рдХреЗ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдмреБрдЭреНрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдЗрдБрд▓рд╛рдИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЯреНрд░реЗрд╕рдХреЛ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдмреБрдЭреНрди рд╕рдЬрд┐рд▓реЛ рд╣реБрдиреЗрдЫред рдЙрджрд╛рд╣рд░рдгрдХрд╛ рд▓рд╛рдЧрд┐, рддрдкрд╛рдИрдВрд▓рд╛рдИ рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░рдгрд╛рд▓реАрд╣рд░реВрдорд╛ рдХрд▓рд╣рд░реВ рдбрд┐рдмрдЧ рдЧрд░реНрди рд╕рдорд╕реНрдпрд╛ рдЫ, рдЙрд╣реА рдХреНрд▓рд╛рд╕рд┐рдХ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдЩрдХреЛ рд▓рд╛рдЧрд┐ рдмрд┐рдЬрд╛рдХреЛ рдЧрд╛рдЗрдб.

рдердк рдЬрдЯрд┐рд▓ рдбрд┐рдмрдЧрд┐рдЩ рдЙрджрд╛рд╣рд░рдг

рдореИрд▓реЗ рдкрд╣рд┐рд▓реЗ рдиреИ рднрдиреЗрдХреЛ рдЫреБ рдХрд┐ рд╕рд╛рдзрд╛рд░рдг рдбрд┐рдмрдЧрд┐рдЩрдХреЛ рдЙрджрд╛рд╣рд░рдг рднрдиреЗрдХреЛ рдХрд╛рдо рдЧрд░реНрджрд╛ рдореИрд▓реЗ рдкреНрд░рд╛рдп рдЬрд╕реЛ рд╡реНрдпрд╡рд╣рд╛рд░ рдЧрд░реНрдиреБрдкрд░реНрдЫ рднрдиреНрдиреЗ рдЙрджрд╛рд╣рд░рдг рд╣реЛ рд╕реНрдЯреНрд░реЗрд╕ред рдпрджреНрдпрдкрд┐, рдХрд╣рд┐рд▓реЗрдХрд╛рд╣реАрдБ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЕрдиреБрд╕рдиреНрдзрд╛рди рдЖрд╡рд╢реНрдпрдХ рд╣реБрдиреНрдЫ, рддреНрдпрд╕реИрд▓реЗ рдпрд╣рд╛рдБ рдердк рдЙрдиреНрдирдд рдбрд┐рдмрдЧрд┐рдЩрдХреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдЙрджрд╛рд╣рд░рдг рд╣реЛред

bcron - рдХрд╛рд░реНрдп рдкреНрд░рд╢реЛрдзрди рдЕрдиреБрд╕реВрдЪрдХ, * рдирд┐рдХреНрд╕ рдбреЗрдордирдХреЛ рдЕрд░реНрдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди cronред рдпреЛ рд╕рд░реНрднрд░рдорд╛ рд╕реНрдерд╛рдкрд┐рдд рдЫ, рддрд░ рдЬрдм рдХрд╕реИрд▓реЗ рддрд╛рд▓рд┐рдХрд╛ рд╕рдореНрдкрд╛рджрди рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдЫ, рдпреЛ рдХреЗ рд╣реБрдиреНрдЫ:

# 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) рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ рд╣реЛ, рдЬреБрди *nix рд▓реЗ рд╕рдмреИ I/O рдкреНрд░рд╢реЛрдзрдирдХрд╛ рд▓рд╛рдЧрд┐ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджрдЫред рдо рдХрд╕рд░реА рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХреНрдЫреБ рдХрд┐ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛ 3 рдХреЛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЧрд░реНрджрдЫ? рдпрд╕ рд╡рд┐рд╢реЗрд╖ рдЕрд╡рд╕реНрдерд╛рдорд╛, рддрдкрд╛рдИрдВ рдЪрд▓рд╛рдЙрди рд╕рдХреНрдиреБрд╣реБрдиреНрдЫ рд╕реНрдЯреНрд░реЗрд╕ рдЕрдкрд░реЗрдЯрд░ рд╕рдВрдЧ -╤Г (рдорд╛рдерд┐ рд╣реЗрд░реНрдиреБрд╣реЛрд╕реН) рд░ рдпрд╕рд▓реЗ рддрдкрд╛рдИрдВрд▓рд╛рдИ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдкрдорд╛ рдмрддрд╛рдЙрдиреЗрдЫ, рддрд░ рдпрд╕ рдкреНрд░рдХрд╛рд░рдХрд╛ рд╕рд╛рдорд╛рдирд╣рд░реВ рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди, рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рдХрд╕рд░реА рдкрдвреНрди рд░ рдкрд╛рд░реНрд╕ рдЧрд░реНрдиреЗ рднрдиреЗрд░ рдЬрд╛рдиреНрди рдЙрдкрдпреЛрдЧреА рдЫред

рдлрд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░рдХреЛ рд╕реНрд░реЛрдд рдзреЗрд░реИ рдкреНрд░рдгрд╛рд▓реА рдХрд▓рд╣рд░реВ рдордзреНрдпреЗ рдПрдХ рд╣реБрди рд╕рдХреНрдЫ (рдпреЛ рд╕рдмреИ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рд╣реЛ - рдХрдиреНрд╕реЛрд▓, рдиреЗрдЯрд╡рд░реНрдХ рд╕рдХреЗрдЯ, рдлрд╛рдЗрд▓ рдЖрдлреИрдВ, рд╡рд╛ рдЕрд░реВ рдХреЗрд╣рд┐) рдорд╛ рдирд┐рд░реНрднрд░ рдЧрд░реНрджрдЫ, рддрд░ рдпреЛ рдЬрд╕реНрддреЛ рд╣реБрди рд╕рдХреНрдЫ, рд╣рд╛рдореА рдЦреЛрдЬреНрдЫреМрдВред 3 рдлрд░реНрдХрд╛рдПрд░ рдХрд▓рд╣рд░реВ (рдЕрд░реНрдерд╛рддреН рд╣рд╛рдореА рдЯреНрд░реЗрд╕рд┐рдЩ рдкрд░рд┐рдгрд╛рдорд╣рд░реВрдорд╛ "= 3" рдЦреЛрдЬреНрдЫреМрдВ)ред рдпрд╕ рдкрд░рд┐рдгрд╛рдордорд╛ рддрд┐рдиреАрд╣рд░реВрдордзреНрдпреЗ 2 рдЫрдиреН: openat рдзреЗрд░реИ рд╢реАрд░реНрд╖ рдорд╛ рд░ socket рдмрд┐рдЪрдорд╛ред openat рдлрд╛рдЗрд▓ рдЦреЛрд▓реНрдЫ рддрд░ рдирдЬрд┐рдХ(3) рддреНрдпрд╕рдкрдЫрд┐ рдпреЛ рдлреЗрд░рд┐ рдмрдиреНрдж рд╣реБрдиреНрдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдиреЗрдЫред (рд░реЗрдХ: рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╣рд░реВ рдЦреЛрд▓реНрджрд╛ рд░ рдмрдиреНрдж рд╣реБрдБрджрд╛ рдкреБрди: рдкреНрд░рдпреЛрдЧ рдЧрд░реНрди рд╕рдХрд┐рдиреНрдЫ)ред рдХрд▓ рдЧрд░реНрдиреБрд╣реЛрд╕реН рд╕рдХреЗрдЯ() рдЙрдкрдпреБрдХреНрдд рдХрд┐рдирднрдиреЗ рдпреЛ рдкрд╣рд┐рд▓реЗрдХреЛ рдЕрдиреНрддрд┐рдо рд╣реЛ рдкрдвреНрдиреБрд╣реЛрд╕реН), рд░ рдпреЛ рдмрд╛рд╣рд┐рд░ рдЬрд╛рдиреНрдЫ рдХрд┐ bcrontab рд╕рдХреЗрдЯ рдорд╛рд░реНрдлрдд рдХреЗрд╣рд┐ рдХрд╛рдо рдЧрд░реНрджрдЫред рдЕрд░реНрдХреЛ рд░реЗрдЦрд╛рд▓реЗ рдлрд╛рдЗрд▓ рд╡рд░реНрдгрдирдХрд░реНрддрд╛рд╕рдБрдЧ рд╕рдореНрдмрдиреНрдзрд┐рдд рдЫ рднрдиреЗрд░ рджреЗрдЦрд╛рдЙрдБрдЫ рдпреБрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕рдХреЗрдЯ рдмрд╛рдЯреЛрдорд╛ /var/run/bcron-sool.

рддреНрдпрд╕реЛрднрдП, рд╣рд╛рдореАрд▓реЗ рд╕рдореНрдмрдиреНрдзрд┐рдд рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЦреЛрдЬреНрди рдЖрд╡рд╢реНрдпрдХ рдЫ рдпреБрдирд┐рдХреНрд╕ рд╕рдХреЗрдЯ рдЕрд░реНрдХреЛрддреАрд░ред рдпрд╕ рдЙрджреНрджреЗрд╢реНрдпрдХрд╛ рд▓рд╛рдЧрд┐ рддреНрдпрд╣рд╛рдБ рджреБрдИрд╡рдЯрд╛ рд╕рдлрд╛ рдЪрд╛рд▓рд╣рд░реВ рдЫрдиреН, рдЬреБрди рджреБрд╡реИ рд╕рд░реНрднрд░ рдбрд┐рдкреНрд▓реЛрдЗрдореЗрдиреНрдЯрд╣рд░реВ рдбрд┐рдмрдЧ рдЧрд░реНрдирдХрд╛ рд▓рд╛рдЧрд┐ рдЙрдкрдпреЛрдЧреА рдЫрдиреНред рдкрд╣рд┐рд▓реЛ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрдиреБ рд╣реЛ 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, рдкреНрд░рдХреНрд░рд┐рдпрд╛ ID 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 рдкрддреНрддрд╛ рд▓рдЧрд╛рдЙрди рд╕рдХрд┐рдБрджреИрдиред) рдпреЛ рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рд╣реЛ 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 +++

(рдпрджрд┐ рддрдкрд╛рдЗрдБ рд╣рд░рд╛рдЙрдиреБрднрдпреЛ рднрдиреЗ, рддрдкрд╛рдЗрдБ рдореЗрд░реЛ рдЕрдШрд┐рд▓реНрд▓реЛ рдкреЛрд╕реНрдЯ рдкрдвреНрди рдЪрд╛рд╣рд╛рдиреБрд╣реБрдиреНрдЫ * рдирд┐рдХреНрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрди рд░ рд╢реЗрд▓рд╣рд░реВрдХреЛ рдмрд╛рд░реЗрдорд╛.) рддреНрдпрд╕реЛрднрдП, рд╕рд░реНрднрд░ PID 20629 рд▓реЗ рдорд╛рд░реНрдЧрдорд╛ рдлрд╛рдЗрд▓ рд╕рд┐рд░реНрдЬрдирд╛ рдЧрд░реНрди рдЕрдиреБрдорддрд┐ рдкреНрд░рд╛рдкреНрдд рдЧрд░реЗрдиред /var/sool/cron/tmp/sool.21470.1573692319.854640ред рд╕рдореНрднрд╡рддрдГ, рдпрд╕рдХреЛ рдХрд╛рд░рдг рдХреНрд▓рд╛рд╕рд┐рдХ рдлрд╛рдЗрд▓ рдкреНрд░рдгрд╛рд▓реА рдЕрдиреБрдорддрд┐ рд╕реЗрдЯрд┐рдЩрд╣рд░реВ рд╣реЛред рдЬрд╛рдБрдЪ рдЧрд░реМрдВ:

# 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/sool/cron/tmp/ред рд╕рд░рд▓ рдЖрджреЗрд╢ chown cron /var/spool/cron/tmp/ рдЬрдмрд░рдЬрд╕реНрддреА рдЧрд░реНрдиреЗрдЫ bcron рд╕рд╣реА рдХрд╛рдо рдЧрд░реНрдиреБрд╣реЛрд╕реНред (рдпрджрд┐ рддреНрдпреЛ рд╕рдорд╕реНрдпрд╛ рдерд┐рдПрди рднрдиреЗ, рддреНрдпрд╕рдкрдЫрд┐ рдЕрд░реНрдХреЛ рд╕рдореНрднрд╛рд╡рд┐рдд рд╕рдВрджрд┐рдЧреНрдз SELinux рд╡рд╛ AppArmor рдЬрд╕реНрддреИ рдХрд░реНрдиреЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдореЛрдбреНрдпреБрд▓ рд╣реЛ, рддреНрдпрд╕реИрд▓реЗ рдо рдХрд░реНрдиреЗрд▓ рд╕рдиреНрджреЗрд╢ рд▓рдЧ рдЬрд╛рдБрдЪ рдЧрд░реНрдиреЗрдЫреБред dmesg.)

рдХреБрд▓

рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЯреНрд░реЗрд╕рд╣рд░реВ рд╢реБрд░реБрд╡рд╛рддрдХрд░реНрддрд╛рдХреЛ рд▓рд╛рдЧрд┐ рднрд╛рд░реА рд╣реБрди рд╕рдХреНрдЫ, рддрд░ рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдореИрд▓реЗ рджреЗрдЦрд╛рдПрдХреЛ рдЫреБ рдХрд┐ рддрд┐рдиреАрд╣рд░реВ рд╕рд╛рдорд╛рдиреНрдп рддреИрдирд╛рддреА рд╕рдорд╕реНрдпрд╛рд╣рд░реВрдХреЛ рд╕рдореНрдкреВрд░реНрдг рд╡рд░реНрдЧ рдбрд┐рдмрдЧ рдЧрд░реНрдиреЗ рджреНрд░реБрдд рддрд░рд┐рдХрд╛ рд╣реБрдиреНред рдмрд╣реБрдкреНрд░рдХреНрд░рд┐рдпрд╛ рдбрд┐рдмрдЧ рдЧрд░реНрдиреЗ рдкреНрд░рдпрд╛рд╕ рдЧрд░реНрдиреЗ рдХрд▓реНрдкрдирд╛ рдЧрд░реНрдиреБрд╣реЛрд╕реН bcronрдЪрд░рдг-рджрд░-рдЪрд░рдг рдбрд┐рдмрдЧрд░ рдкреНрд░рдпреЛрдЧ рдЧрд░реНрджреИред

рдкреНрд░рдгрд╛рд▓реА рдХрд▓ рдЪреЗрдирдХреЛ рд╕рд╛рде рдкрдЫрд╛рдбрд┐ рдкрд╛рд░реНрд╕рд┐рдЩ рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдорд╣рд░реВ рд╕реАрдк рдЪрд╛рд╣рд┐рдиреНрдЫ, рддрд░ рдореИрд▓реЗ рднрдиреЗрдВ, рд▓рдЧрднрдЧ рд╕рдзреИрдВ, рдкреНрд░рдпреЛрдЧ рдЧрд░реЗрд░ рд╕реНрдЯреНрд░реЗрд╕, рдореИрд▓реЗ рднрд░реНрдЦрд░ рдЯреНрд░реЗрд╕ рдирддрд┐рдЬрд╛ рдкрд╛рдЙрдБрдЫреБ рд░ рдЕрдиреНрддреНрдпрдмрд╛рдЯ рд╕реБрд░реБ рд╣реБрдиреЗ рддреНрд░реБрдЯрд┐рд╣рд░реВ рдЦреЛрдЬреНрдЫреБред рдЬреЗ рд╣реЛрд╕реН, рд╕реНрдЯреНрд░реЗрд╕ рдорд▓рд╛рдИ рдбрд┐рдмрдЧрд┐рдЩрдорд╛ рдзреЗрд░реИ рд╕рдордп рдмрдЪрдд рдЧрд░реНрди рдорджреНрджрдд рдЧрд░реНрджрдЫред рдорд▓рд╛рдИ рдЖрд╢рд╛ рдЫ рдХрд┐ рдпреЛ рддрдкрд╛рдИрд▓рд╛рдИ рдкрдирд┐ рдЙрдкрдпреЛрдЧреА рд╣реБрдиреЗрдЫред

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдердкреНрди