рд╕реНрдЯреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди

рд╕реНрдЯреНрд░реЗрд╕ рдХреЗ рд╕рд╛рде рдбрд┐рдмрдЧрд┐рдВрдЧ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди

рдореЗрд░рд╛ рджреИрдирд┐рдХ рдХрд╛рд░реНрдп рдореБрдЦреНрдпрддрдГ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд╕рд┐рд╕реНрдЯрдо рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдореИрдВ рдЗрди рдЬреИрд╕реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рдЙрддреНрддрд░ рджреЗрдиреЗ рдореЗрдВ рдмрд╣реБрдд рд╕рдордп рд╡реНрдпрддреАрдд рдХрд░рддрд╛ рд╣реВрдБ:

  • рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдкрд╛рд╕ рдпрд╣ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдореЗрд░реЗ рдкрд╛рд╕ рдирд╣реАрдВ рд╣реИред рдХреНрдпреЛрдВ?
  • рдХрд▓ рдпрд╣ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЖрдЬ рдирд╣реАрдВред рдХреНрдпреЛрдВ?

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

рдЗрд╕рд▓рд┐рдП рд╕рд╛рдорд╛рдиреНрдп рдбрд┐рдмрдЧрд┐рдВрдЧ рдЯреВрд▓ рдЬреИрд╕реЗ рдЬреА.рдбреА.рдмреА. рдореЗрд░реЗ рдкрд╛рд╕ рдбрд┐рдкреНрд▓реЙрдпрдореЗрдВрдЯ рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХрд╛ рдПрдХ рдФрд░ рд╕реЗрдЯ рд╣реИред рдФрд░ "рдпрд╣ рд╕реЙрдлрд╝реНрдЯрд╡реЗрдпрд░ рдореЗрд░реЗ рд▓рд┐рдП рдХрд╛рдо рдХреНрдпреЛрдВ рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИ?" рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдореЗрд░рд╛ рдкрд╕рдВрджреАрджрд╛ рдЙрдкрдХрд░рдг рд╣реИ рд╕реНрдЯреНрд░реЗрд╕.

рд╕реНрдЯреНрд░реЗрд╕ рдХреНрдпрд╛ рд╣реИ?

рд╕реНрдЯреНрд░реЗрд╕ тАФ рдпрд╣ "рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЯреНрд░реЗрд╕рд┐рдВрдЧ" рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рд╣реИред рдЗрд╕реЗ рдореВрд▓ рд░реВрдк рд╕реЗ рдЗрд╕рдХреЗ рдЕрдВрддрд░реНрдЧрдд рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдерд╛ред Linuxрд▓реЗрдХрд┐рди рдЕрдиреНрдп рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд╕рд╛рде рднреА рдпрд╣реА рдбрд┐рдмрдЧрд┐рдВрдЧ рддрд░рдХреАрдмреЗрдВ рдЕрдкрдирд╛рдИ рдЬрд╛ рд╕рдХрддреА рд╣реИрдВ (DTrace рдпрд╛ рдХреЗрдЯреНрд░реЗрд╕).

рдмреБрдирд┐рдпрд╛рджреА рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рдХрд┐рд╕реА рднреА рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде strace рдЪрд▓рд╛рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдФрд░ рдпрд╣ рд╕рднреА рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рдбрдВрдк рдХрд░ рджреЗрдЧрд╛ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдЖрдкрдХреЛ рд╢рд╛рдпрдж рдЗрд╕реЗ рдкрд╣рд▓реЗ рдЦреБрдж рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛)ред рд╕реНрдЯреНрд░реЗрд╕):

$ 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
  • рдХрд┐рд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛/рдереНрд░реЗрдб рдХрд╛ рдЬреАрд╡рдирдХрд╛рд▓ рдкреНрд░рдмрдВрдзрд┐рдд рдХрд░рдирд╛
  • рдирд┐рдореНрди-рд╕реНрддрд░реАрдп рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрди
  • рд╡рд┐рд╢реЗрд╖ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдбреНрд░рд╛рдЗрд╡рд░реЛрдВ рддрдХ рдкрд╣реБрдВрдЪ

рд╕реНрдЯреНрд░реЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдм рдХрд░реЗрдВ?

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

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

рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЕрд▓рдЧ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рдЕрдХреНрд╕рд░ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдкрд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЖрдкрдХреЛ рдмрд╕ рд╕рд╣реА рдЙрдкрдХрд░рдг рдЦреЛрдЬрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИред

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

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

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

  • рдкреНрд░реЛрдЧреНрд░рд╛рдо рд╕реЗ рдЕрд╕реНрдкрд╖реНрдЯ рд╕рд┐рд╕реНрдЯрдо-рд╡рд╛рдИ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рд╕реЗ рдирд┐рд░рд╛рд╢
  • рдкреНрд░реЛрдЧреНрд░рд╛рдо рдХреЛ рдкреБрдирдГ рдкреНрд░рд╛рд░рдВрдн рдХрд░реЗрдВ рд╕реНрдЯреНрд░реЗрд╕
  • рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдореЛрдВ рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдвреВрдВрдвреЗрдВ
  • рдЬрдм рддрдХ рдЖрдк рдкрд╣рд▓реА рдЕрд╕рдлрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рддрдХ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рдЬрд╛рддреЗ, рддрдм рддрдХ рдКрдкрд░ рдЬрд╛рдПрдВ

рдпрд╣ рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рдЪрд░рдг 4 рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдпрд╣ рдмрддрд╛ рджреЗрдЧрд╛ рдХрд┐ рдХреНрдпрд╛ рдЧрд▓рдд рд╣реБрдЖред

рдЯрд┐рдкреНрд╕

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

рдЖрджрдореА рддреБрдореНрд╣рд╛рд░рд╛ рджреЛрд╕реНрдд рд╣реИ

рдХрдИ *nix рдкреНрд░рдгрд╛рд▓рд┐рдпреЛрдВ рдкрд░, рдХрд░реНрдиреЗрд▓ рдХреЗ рд▓рд┐рдП рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рдкреВрд░реА рд╕реВрдЪреА рдЪрд▓рд╛рдХрд░ рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдореИрди рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓.рдЖрдк рдЗрд╕ рддрд░рд╣ рдХреА рдЪреАрдЬреЗрдВ рджреЗрдЦреЗрдВрдЧреЗ рдмреАрдЖрд░рдХреЗ(2), рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдХрд┐ рдЪрд▓рд╛рдХрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдЖрджрдореА 2 рдмреАрдЖрд░рдХреЗ.

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

рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП -o рдХрд╛ рдкреНрд░рдпреЛрдЧ рдХрд░реЗрдВред

рд╕реНрдЯреНрд░реЗрд╕ рдмрд╣реБрдд рд╕рд╛рд░рд╛ рдЖрдЙрдЯрдкреБрдЯ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЯреНрд░реЗрд╕ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдирд╛ рдЕрдХреНрд╕рд░ рдЙрдкрдпреЛрдЧреА рд╣реЛрддрд╛ рд╣реИ (рдЬреИрд╕рд╛ рдХрд┐ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реИ)ред рдпрд╣ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЖрдЙрдЯрдкреБрдЯ рдФрд░ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХрд░рдиреЗ рдореЗрдВ рднреА рдорджрдж рдХрд░рддрд╛ рд╣реИ рд╕реНрдЯреНрд░реЗрд╕ рдХрдВрд╕реЛрд▓ рдореЗрдВ.

рдЕрдзрд┐рдХ рддрд░реНрдХ рдбреЗрдЯрд╛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП -s рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ.

рдЖрдкрдиреЗ рджреЗрдЦрд╛ рд╣реЛрдЧрд╛ рдХрд┐ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдХрд╛ рджреВрд╕рд░рд╛ рднрд╛рдЧ рдКрдкрд░ рджрд┐рдП рдЧрдП рдЙрджрд╛рд╣рд░рдг рдЯреНрд░реЗрд╕ рдореЗрдВ рдирд╣реАрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИред рдРрд╕рд╛ рдЗрд╕рд▓рд┐рдП рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рд╕реНрдЯреНрд░реЗрд╕ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдпрд╣ рд╕реНрдЯреНрд░рд┐рдВрдЧ рддрд░реНрдХ рдХреЗ рдХреЗрд╡рд▓ рдкрд╣рд▓реЗ 32 рдмрд╛рдЗрдЯреНрд╕ рджрд┐рдЦрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдЖрдк рдФрд░ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдЬреЛрдбрд╝реЗрдВ -рдПрд╕ 128 рдЪреБрдиреМрддреА рдХреЗ рд▓рд┐рдП рд╕реНрдЯреНрд░реЗрд╕.

- рдлрд╛рдЗрд▓реЛрдВ, рд╕реЙрдХреЗрдЯреНрд╕ рдЖрджрд┐ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред

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

рдСрдкрд░реЗрдЯрд░ рдЬреЛрдбрд╝рдХрд░ -рд╡рд╛рдИ, рдЖрдк рдордЬрдмреВрд░ рдХрд░реЗрдВрдЧреЗ рд╕реНрдЯреНрд░реЗрд╕ рдЖрдЙрдЯрдкреБрдЯ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдЗрд╕ рдмрд╛рдд рдХреЗ рд╕рд╛рде рдПрдиреЛрдЯреЗрдЯ рдХрд░реЗрдВ рдХрд┐ рд╡рд╣ рдХрд┐рд╕ рдУрд░ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

-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
...

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

рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рд╕реА рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдЧрд╛рдЗрдб рдПрдХ рдЕрдЪреНрдЫреА рдЬрдЧрд╣ рд╣реИред

рд╕реА рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рдХреЙрд▓ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдирд╣реАрдВ рд╣реИрдВ, рдмрд▓реНрдХрд┐ рдХреЗрд╡рд▓ рдПрдХ рдкрддрд▓реА рд╕рддрд╣ рдкрд░рдд рд╣реИред рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЖрдк рдХрдо рд╕реЗ рдХрдо рдереЛрдбрд╝рд╛ рд╕рд╛ рд╕рдордЭрддреЗ рд╣реИрдВ рдХрд┐ рд╕реА рдореЗрдВ рдХреИрд╕реЗ рдФрд░ рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдЯреНрд░реЗрд╕ рдХреЗ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдордЭрдирд╛ рдЖрд╕рд╛рди рд▓рдЧреЗрдЧрд╛ред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рдЖрдкрдХреЛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдХреЙрд▓ рдбрд┐рдмрдЧ рдХрд░рдиреЗ рдореЗрдВ рдкрд░реЗрд╢рд╛рдиреА рд╣реЛрддреА рд╣реИ, рддреЛ рдЙрд╕реА рдХреНрд▓рд╛рд╕рд┐рдХ рдХреЛ рджреЗрдЦреЗрдВ рдмрд┐рдЬ рджреНрд╡рд╛рд░рд╛ "рдиреЗрдЯрд╡рд░реНрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрд╛рдЗрдб".

рдПрдХ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рдбрд┐рдмрдЧрд┐рдВрдЧ рдЙрджрд╛рд╣рд░рдг

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

рдмреА.рд╕реА.рдЖрд░.рдУ.рдПрди. тАФ рдХрд╛рд░реНрдп рдЕрдиреБрд╕реВрдЪрдХ, *nix рдбреЗрдореЙрди рдХрд╛ рдПрдХ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреНрд░реЙрдирдпрд╣ рд╕рд░реНрд╡рд░ рдкрд░ рд╕реНрдерд╛рдкрд┐рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЬрдм рдХреЛрдИ рд╢реЗрдбреНрдпреВрд▓ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдпрд╣ рд╣реЛрддрд╛ рд╣реИ:

# 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 рд╣реИрдВ: openat рд╕рдмрд╕реЗ рдКрдкрд░ рдФрд░ рд╕реЙрдХреЗрдЯ рдмреАрдЪ рдореЗрдВред openat рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддрд╛ рд╣реИ рд▓реЗрдХрд┐рди рдмрдВрдж рдХрд░реЗ(3) рддрдм рджрд┐рдЦрд╛рдПрдЧрд╛ рдХрд┐ рдЗрд╕реЗ рдлрд┐рд░ рд╕реЗ рдмрдВрдж рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИред (рдПрдХ рдиреБрдХрд╕рд╛рди: рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреЛ рдЦреЛрд▓реЗ рдФрд░ рдмрдВрдж рдХрд┐рдП рдЬрд╛рдиреЗ рдкрд░ рдЙрдирдХрд╛ рдкреБрдирдГ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред) рдХреЙрд▓ рд╕реЙрдХреЗрдЯ () рдпрд╣ рд╕рд╣реА рдмреИрдарддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд╛ рдЖрдЦрд┐рд░реА рд╣реИ рдкрдврд╝реЗрдВ (), рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ bcrontab рд╕реЙрдХреЗрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреБрдЫ рдПрдХреНрд╕реЗрд╕ рдХрд░ рд░рд╣рд╛ рд╣реИред рдЕрдЧрд▓реА рдкрдВрдХреНрддрд┐ рджрд░реНрд╢рд╛рддреА рд╣реИ рдХрд┐ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХрд┐рд╕рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ рдпреВрдирд┐рдХреНрд╕ рдбреЛрдореЗрди рд╕реЙрдХреЗрдЯ рд░рд╛рд╕реНрддреЗ рдореЗрдВ /var/run/bcron-рд╕реНрдкреВрд▓.

рдЗрд╕рд▓рд┐рдП, рд╣рдореЗрдВ рдПрдХ рдРрд╕реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдвреВрдВрдврд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ рдЬреЛ рдЗрд╕рд╕реЗ рдЬреБрдбрд╝реА рд╣реЛ рдпреВрдирд┐рдХреНрд╕ рд╕реЙрдХреЗрдЯ рджреВрд╕рд░реА рдУрд░ред рдЗрд╕ рдЙрджреНрджреЗрд╢реНрдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдмрдврд╝рд┐рдпрд╛ рддрд░рдХреАрдмреЗрдВ рд╣реИрдВ, рдЬреЛ рджреЛрдиреЛрдВ рд╣реА рд╕рд░реНрд╡рд░ рдкрд░рд┐рдирд┐рдпреЛрдЬрди рдХреЛ рдбреАрдмрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИрдВред рдкрд╣рд▓рд╛ рд╣реИ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ 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))

рдЗрд╕рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╢реНрд░реЛрддрд╛ рд╣реА рдЯреАрдо рд╣реИред inixрд╕рд░реНрд╡рд░, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЖрдИрдбреА 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 рдПрдХ рджреАрд░реНрдШрдХрд╛рд▓рд┐рдХ рд╕рд░реНрд╡рд░ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрдк рдЗрд╕рд╕реЗ рдЬреБрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ рд╕реНрдЯреНрд░реЗрд╕ рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реНрдЯреНрд░реЗрд╕ -o /tmp/рдЯреНрд░реЗрд╕ -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, рд╕рд┐рдЧрдЪрд▓реНрдб рдЖрджрд┐) рдпрд╣ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдПрдХ рдЪрд╛рдЗрд▓реНрдб рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдЬрдиреНрдо рджреЗрддреА рд╣реИ, рдЬреЛ, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдХрд╛рд░реНрдп рдХрд░рддреА рд╣реИред рдФрд░ рдпрджрд┐ рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдирд╛ рд╣реИ, рддреЛ рдХреЙрд▓ рдореЗрдВ рдЬреЛрдбрд╝реЗрдВ рд╕реНрдЯреНрд░реЗрд╕-рдПрдл. рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рд╣рдореЗрдВ рддрдм рдорд┐рд▓рддрд╛ рд╣реИ рдЬрдм рд╣рдо strace рдХреЗ рд╕рд╛рде рдирдП рдкрд░рд┐рдгрд╛рдо рдореЗрдВ рддреНрд░реБрдЯрд┐ рд╕рдВрджреЗрд╢ рдЦреЛрдЬрддреЗ рд╣реИрдВ -f -o /tmp/рдЯреНрд░реЗрд╕ -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/рд╕реНрдкреВрд▓.21470.1573692319.854640 (рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд)ред рдпрджрд┐ рд╣рдо рдХреЗрд╡рд▓ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╢реАрд▓ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдЬрд╛рдирддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдкреВрд░рд╛ рдкрде рдЬрд╛рди рдкрд╛рдПрдВрдЧреЗ рдФрд░ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдВрдЧреЗ рдХрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╡рд╣рд╛рдВ рдЕрдкрдиреА рдЕрд╕реНрдерд╛рдпреА рдлрд╝рд╛рдЗрд▓ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛ рд╕рдХрддреА рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рд▓реЗ рд╣реА рдмрд╛рд╣рд░ рдирд┐рдХрд▓ рдЪреБрдХреА рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рдПрд▓рдПрд╕рдУрдПрдл-рдкреА 21470 рд╡рд░реНрддрдорд╛рди рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП, рд▓реЗрдХрд┐рди рдЖрдк рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рднреА рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - PID 21470 рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ рдЬреЛ рдирд┐рд░реНрджреЗрд╢рд┐рдХрд╛ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред (рдпрджрд┐ рдХреЛрдИ рдирд╣реАрдВ рд╣реИ, рддреЛ PID 21470 рдиреЗ рдЙрдиреНрд╣реЗрдВ рдкреИрд░реЗрдВрдЯ рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рд▓рд┐рдпрд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ рдПрд▓рдПрд╕рдУрдПрдл-рдкреА рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ.) рдпрд╣ рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рд╣реИ 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 +++

(рдпрджрд┐ рдЖрдк рднреНрд░рдорд┐рдд рд╣реИрдВ, рддреЛ рдЖрдк рдореЗрд░реА рдкрд┐рдЫрд▓реА рдкреЛрд╕реНрдЯ рдкрдврд╝ рд╕рдХрддреЗ рд╣реИрдВ) *nix рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкреНрд░рдмрдВрдзрди рдФрд░ рд╢реИрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ.) рдЕрддрдГ, рд╕рд░реНрд╡рд░ PID 20629 рдХреЛ рдкрде рдкрд░ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рдереА /var/spool/cron/tmp/spool.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/рд╕реНрдкреВрд▓/рдХреНрд░реЙрди/tmp/. рд╕рд░рд▓ рдЖрджреЗрд╢ рдЪрд╛рдЙрди рдХреНрд░реЙрди /var/рд╕реНрдкреВрд▓/рдХреНрд░реЙрди/tmp/ рдордЬрдмреВрд░ рдХрд░ рджреЗрдВрдЧреЗ рдмреА.рд╕реА.рдЖрд░.рдУ.рдПрди. рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдВред (рдЕрдЧрд░ рдпрд╣ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рдереА, рддреЛ рдЕрдЧрд▓рд╛ рд╕рдмрд╕реЗ рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдВрджрд┐рдЧреНрдз SE рдХрд░реНрдиреЗрд▓ рд╕реБрд░рдХреНрд╖рд╛ рдореЙрдбреНрдпреВрд▓ рд╣реИред)Linux рдпрд╛ AppArmor, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдХрд░реНрдиреЗрд▓ рд╕рдВрджреЗрд╢ рд▓реЙрдЧ рдХреА рдЬрд╛рдБрдЪ рдХрд░реВрдБрдЧрд╛ред dmesg.)

рдХреБрд▓ рдорд┐рд▓рд╛рдХрд░

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

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

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

DDoS рд╕реБрд░рдХреНрд╖рд╛, VPS VDS рд╕рд░реНрд╡рд░ рд╡рд╛рд▓реА рд╕рд╛рдЗрдЯреЛрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реАрджреЗрдВ ЁЯФе рдбреАрдбреАрдУрдПрд╕ рд╕реБрд░рдХреНрд╖рд╛, рд╡реАрдкреАрдПрд╕ рдФрд░ рд╡реАрдбреАрдПрд╕ рд╕рд░реНрд╡рд░ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реЛрд╕реНрдЯрд┐рдВрдЧ рдЦрд░реАрджреЗрдВ | ProHoster