рдкреБрд╕реНрддрдХ "рдмреИрд╢ рдПрдВрдб рд╕рд╛рдЗрдмрд░рд╕реБрд░рд┐рдЯреА: рдЕрдЯреИрдХ, рдбрд┐рдлреЗрдВрд╕ рдПрдВрдб рдПрдирд╛рд▓рд┐рд╕рд┐рд╕ рдж рд▓рд┐рдирдХреНрд╕ рдХрдорд╛рдВрдб рд▓рд╛рдЗрди"

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

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


рдпрд╣ рдкреБрд╕реНрддрдХ рдХрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣реИ?


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

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

рдпрд╣ рдкреБрд╕реНрддрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХрд╛ рдкрд░рд┐рдЪрдп рдирд╣реАрдВ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХреБрдЫ рд╕рд╛рдорд╛рдиреНрдп рдЕрд╡рдзрд╛рд░рдгрд╛рдПрдВ рднрд╛рдЧ I рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд▓реЙрдЧ рдирд┐рдЧрд░рд╛рдиреА


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

рдЯреЗрдХреНрд╕реНрдЯ рд▓реЙрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ


рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рдореЗрдВ рд▓реЙрдЧ рдХреЛ рдореЙрдирд┐рдЯрд░ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ тАУf рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдЯреЗрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ - рдпрд╣ рд▓рдЧрд╛рддрд╛рд░ рдлрд╛рдЗрд▓ рдХреЛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдирдИ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдЬреЛрдбрд╝рддреЗ рд╕рдордп рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯрдбрдЖрдЙрдЯ рдореЗрдВ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рдкрд┐рдЫрд▓реЗ рдЕрдзреНрдпрд╛рдпреЛрдВ рдХреА рддрд░рд╣, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рд╣рдо Apache рд╡реЗрдм рд╕рд░реНрд╡рд░ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рд╡рд░реНрдгрд┐рдд рд╡рд┐рдзрд┐рдпрд╛рдВ рдХрд┐рд╕реА рднреА рдкрд╛рда рд▓реЙрдЧ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рд╣реИрдВред рдЯреЗрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЕрдкрд╛рдЪреЗ рдПрдХреНрд╕реЗрд╕ рд▓реЙрдЧ рдХреЛ рдЯреНрд░реИрдХ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рджрд░реНрдЬ рдХрд░реЗрдВ:

tail -f /var/logs/apache2/access.log

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

tail -f /var/logs/apache2/access.log | grep '10.0.0.152'

рдЖрдк рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдХреЗрд╡рд▓ HTTP 404 рд╕реНрдерд┐рддрд┐ рдХреЛрдб "рдкреГрд╖реНрда рдирд╣реАрдВ рдорд┐рд▓рд╛" рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд░рд┐рдХреЙрд░реНрдб рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдПрдВрдЧреЗ; -i рд╡рд┐рдХрд▓реНрдк рдкрд╛рддреНрд░реЛрдВ рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рдирдЬрд░рдЕрдВрджрд╛рдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ:

tail -f /var/logs/apache2/access.log | egrep -i 'HTTP/.*" 404'

рдмрд╛рд╣рд░реА рдЬрд╛рдирдХрд╛рд░реА рд╕реЗ рд╕рд╛рдл рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрдЯ рдХрдорд╛рдВрдб рдореЗрдВ рдкрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрд╣ рдЙрджрд╛рд╣рд░рдг рд╕реНрдерд┐рддрд┐ рдХреЛрдб 404 рдкрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╡реЗрд╢ рд▓реЙрдЧ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдлрд┐рд░ рдХрдЯ рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЗрд╡рд▓ рджрд┐рдирд╛рдВрдХ / рд╕рдордп рдФрд░ рдЕрдиреБрд░реЛрдзрд┐рдд рдкреГрд╖реНрда рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд░рддрд╛ рд╣реИ: рдЕрдЧрд▓рд╛, рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдФрд░ рджреЛрд╣рд░реЗ рдЙрджреНрдзрд░рдг рдЪрд┐рд╣реНрдиреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЖрдЙрдЯрдкреБрдЯ рдХреЛ tr -d рдкрд░ рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ' [] "'ред

$ tail -f access.log | egrep --line-buffered 'HTTP/.*" 404' | cut -d' ' -f4-7
[29/Jul/2018:13:10:05 -0400] "GET /test
[29/Jul/2018:13:16:17 -0400] "GET /test.txt
[29/Jul/2018:13:17:37 -0400] "GET /favicon.ico




рдиреЛрдЯ: - egrep рдХрдорд╛рдВрдб рдХрд╛ --line- рдмрдлрд░рд┐рдВрдЧ рд╡рд┐рдХрд▓реНрдк рдпрд╣рд╛рдБ рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рдПрд░реЗрдк рдХреЛ рд╣рд░ рдмрд╛рд░ рд▓рд╛рдЗрди рдмреНрд░реЗрдХ рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рдкреНрд░рд┐рдВрдЯрдЖрдЙрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИред рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рдмрд┐рдирд╛, рдмрдлрд░рд┐рдВрдЧ рд╣реЛрдЧреА рдФрд░ рдмрдлрд░ рдХреЗ рднрд░реЗ рд╣реЛрдиреЗ рддрдХ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рдХрдЯ рдХрдорд╛рдВрдб рдореЗрдВ рдирд╣реАрдВ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред рд╣рдо рдЗрддрдирд╛ рд▓рдВрдмрд╛ рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗред рдпрд╣ рд╡рд┐рдХрд▓реНрдк egrep рдХрдорд╛рдВрдб рдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рд▓рд┐рдЦрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдХрд┐ рдпрд╣ рдкрд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред

COMMAND LINE BUFFERS

рдмрдлрд░рд┐рдВрдЧ рдХреЗ рджреМрд░рд╛рди рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИ? рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ egrep рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдкреИрдЯрд░реНрди рд╕реЗ рдореЗрд▓ рдЦрд╛рддреЗ рд╣реБрдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд╛рд░ рдвреВрдБрдврддрд╛ рд╣реИред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, egrep рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЖрдЙрдЯрдкреБрдЯ (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдИ рднреА рдЗрдирдкреБрдЯ рдпрд╛ рдЖрдЙрдЯрдкреБрдЯ) рдбреЗрдЯрд╛ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ (рдкрд╛рда рдЦреЛрдЬ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдЕрдзрд┐рдХ рдорд╣рдВрдЧрд╛ (рдЕрдзрд┐рдХ рд╕рдордп рд▓реЗрддрд╛ рд╣реИ) рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдХрдо I / O рдХреЙрд▓, рдкреНрд░реЛрдЧреНрд░рд╛рдо рдЬрд┐рддрдирд╛ рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рд╣реЛрдЧрд╛ред

grep , , . . grep . , grep 50 . , 50 , , . 50 !

egrep, , . egrep , , . , , , , . , .

, , tail -f ( ), . , ┬л ┬╗, . . .

, egrep , . , .


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

рдЙрджрд╛рд╣рд░рдг 8.1ред ioc.txt (1) рдпрд╣ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (../) рдПрдХ рд░рд╛рдЙрдВрдбрдЕрдмрд╛рдЙрдЯ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рдЕрдЯреИрдХ рдХрд╛ рд╕реВрдЪрдХ рд╣реИ: рдПрдХ рд╣рдорд▓рд╛рд╡рд░ рдХрд░рдВрдЯ рд╡рд░реНрдХрд┐рдВрдЧ рдбрд╛рдЗрд░реЗрдХреНрдЯрд░реА рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЙрди рдлрд╛рдЗрд▓реЛрдВ рддрдХ рдкрд╣реБрдБрдЪрддрд╛ рд╣реИ рдЬреЛ рдЙрд╕рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реИрдВред (2) рд╕рд┐рд╕реНрдЯрдо рдкреНрд░рдорд╛рдгреАрдХрд░рдг рдХреЗ рд▓рд┐рдП рд▓рд┐рдирдХреНрд╕ рдЖрджрд┐ / рдкрд╛рд╕рд╡рд╛рд░реНрдб рдФрд░ рдЖрджрд┐ / рд╢реИрдбреЛ рдлрд╛рдЗрд▓реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рд╡реЗрдм рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрднреА рдПрдХреНрд╕реЗрд╕ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред (3)

\.\./ (1)
etc/passwd (2)
etc/shadow
cmd\.exe (3)
/bin/sh
/bin/bash





Cmd.exe, / bin / sh, рдпрд╛ / bin / bash рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреА рд╕реЗрд╡рд╛ рд╡реЗрдм рд╕рд░реНрд╡рд░ рджреНрд╡рд╛рд░рд╛ рд▓реМрдЯрд╛рдП рдЧрдП рд░рд┐рд╡рд░реНрд╕ рдХрдиреЗрдХреНрд╢рди рдХрд╛ рдПрдХ рд╕рдВрдХреЗрдд рд╣реИред рд░рд┐рд╡рд░реНрд╕ рдХрдиреЗрдХреНрд╢рди рдЕрдХреНрд╕рд░ рдПрдХ рд╕рдлрд▓ рдСрдкрд░реЗрд╢рди рдкреНрд░рдпрд╛рд╕ рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ IOCs рдХреЛ regex рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдмрд╛рдж рдореЗрдВ egrep рдХрдорд╛рдВрдб рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

Ioc.txt рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ egrep -f рд╡рд┐рдХрд▓реНрдк рдХреЗ рд╕рд╛рде рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдлрд╝рд╛рдЗрд▓ рд╕реЗ рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдкреИрдЯрд░реНрди рдХреА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП egrep рдХреЛ рдмрддрд╛рддрд╛ рд╣реИред рдпрд╣ рдЖрдкрдХреЛ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХреА рдирд┐рдЧрд░рд╛рдиреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдФрд░ рдЬреИрд╕рд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд░рд┐рдХреЙрд░реНрдб рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЖрдИрдУрд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЗ рд╕рднреА рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рд╕рд╛рде рд░реАрдб рд▓рд╛рдЗрди рдХреА рддреБрд▓рдирд╛ рдХреА рдЬрд╛рдПрдЧреА, рдЬреЛ рдХрд┐рд╕реА рднреА рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░реЗрдЧрд╛ред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

tail -f /var/logs/apache2/access.log | egrep -i -f ioc.txt

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

tail -f /var/logs/apache2/access.log | egrep --line-buffered -i -f ioc.txt |
tee -a interesting.txt




рд╡рд┐рдВрдбреЛрдЬ рд▓реЙрдЧ рдореЙрдирд┐рдЯрд░рд┐рдВрдЧ


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

рдЙрджрд╛рд╣рд░рдг 8.2ред wintail.sh

#!/bin/bash -
#
# Bash  
# wintail.sh
#
# :
#    tail   Windows
#
# : ./wintail.sh
#

WINLOG="Application" (1)

LASTLOG=$(wevtutil qe "$WINLOG" //c:1 //rd:true //f:text) (2)

while true
do
      CURRENTLOG=$(wevtutil qe "$WINLOG" //c:1 //rd:true //f:text) (3)
      if [[ "$CURRENTLOG" != "$LASTLOG" ]]
      then
            echo "$CURRENTLOG"
            echo "----------------------------------"
            LASTLOG="$CURRENTLOG"
      fi
done

(1) рдпрд╣ рдЪрд░ рд╡рд┐рдВрдбреЛрдЬ рд▓реЙрдЧ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдЯреНрд░реИрдХ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╡рд░реНрддрдорд╛рди рдореЗрдВ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЙрдкрд▓рдмреНрдз рд▓реЙрдЧ рдХреА рд╕реВрдЪреА рдХреЗ рд▓рд┐рдП, рдЖрдк wevtutil el рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

(реи) рдпрд╣рд╛рдБ, рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд▓реЙрдЧ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП wevtutil рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред C: 1 рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗрд╡рд▓ рдПрдХ рд▓реЙрдЧ рдПрдВрдЯреНрд░реА рджреЗрддрд╛ рд╣реИред Rd: true рдкреИрд░рд╛рдореАрдЯрд░ рдХрдорд╛рдВрдб рдХреЛ рд╕рдмрд╕реЗ рд╣рд╛рд▓рд┐рдпрд╛ рд▓реЙрдЧ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, f: рдЯреЗрдХреНрд╕реНрдЯ, рд╕рд╛рджреЗ рдкрд╛рда рдореЗрдВ рдкрд░рд┐рдгрд╛рдо рджреЗрддрд╛ рд╣реИ, XML рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдирд╣реАрдВ, рдЬрд┐рд╕рд╕реЗ рд╕реНрдХреНрд░реАрди рд╕реЗ рдкрд░рд┐рдгрд╛рдо рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

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

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╕рдордп рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдирд┐рд░реНрдорд╛рдг


рдЯреЗрд▓-рдСрдлрд╝ рдХрдорд╛рдВрдб рд╡рд░реНрддрдорд╛рди рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ рдЖрдк рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝реА рдЧрдИ рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдЧрд┐рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЖрдк рдЗрд╕ рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░реАрдо рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдЯрд╛рдЗрдорд░ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рдордп рдХреА рдПрдХ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд╡рдзрд┐ рдореЗрдВ рдЧрд┐рдирддреА рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ; рдлрд┐рд░ рдорддрдЧрдгрдирд╛ рдХреЛ рд░реЛрдХ рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдФрд░ рдкрд░рд┐рдгрд╛рдо рдХреА рд╕реВрдЪрдирд╛ рджреА рдЬрд╛рдиреА рдЪрд╛рд╣рд┐рдПред

рдЗрд╕ рдХрд╛рдо рдХреЛ рджреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд╛рдЗрдиреЛрдВ рдХреЛ рдкрдврд╝реЗрдЧреА, рдФрд░ рджреВрд╕рд░рд╛ рд╕рдордп рджреЗрдЦреЗрдЧрд╛ред рдЯрд╛рдЗрдорд░ рдПрдХ рдорд╛рдирдХ POSIX рдЗрдВрдЯрд░рдкреНрд░реЛрд╕реЗрд╕ рд╕рдВрдЪрд╛рд░ рддрдВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд▓рд╛рдЗрди рдХрд╛рдЙрдВрдЯрд░ рдХреЛ рд╕реВрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕рд┐рдЧреНрдирд▓ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдПрдХ рд╕реЙрдлреНрдЯрд╡реЗрдпрд░ рд░реБрдХрд╛рд╡рдЯ рд╣реИ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рдВрдХреЗрдд рд╣реИрдВред рдЙрдирдореЗрдВ рд╕реЗ рдХреБрдЫ рдШрд╛рддрдХ рд╣реИрдВ - рд╡реЗ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдЕрдВрдд рддрдХ рд▓реЗ рдЬрд╛рддреЗ рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЕрд╕реНрдерд╛рдпреА рдмрд┐рдВрджреБ рдСрдкрд░реЗрд╢рди рдореЗрдВ рдПрдХ рдЕрдкрд╡рд╛рдж)ред рдЗрдирдореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд╕рдВрдХреЗрддреЛрдВ рдХреЛ рдЕрдирджреЗрдЦрд╛ рдпрд╛ рдкрдХрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╕рд┐рдЧреНрдирд▓ рдкрдХрдбрд╝реЗ рдЬрд╛рдиреЗ рдкрд░ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреА рдЬрд╛рддреА рд╣реИред рдЗрди рд╕рдВрдХреЗрддреЛрдВ рдореЗрдВ рд╕реЗ рдХрдИ рдХрд╛ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рдореЗрдВ рдкреВрд░реНрд╡рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдЙрджреНрджреЗрд╢реНрдп рд╣реИред рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рджреЛ рд╕рдВрдХреЗрддреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдпрд╣ рд╕рдВрдХреЗрдд SIGUSR1 рд╣реИ (рджреВрд╕рд░рд╛ SIGUSR2 рд╣реИ)ред

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

trap warnmsg SIGINT

рдЗрд╕рдХреЗ рдХрд╛рд░рдг рд╡реЙрд░реНрдирдореНрд╕ рдХрдорд╛рдВрдб (рд╣рдорд╛рд░реА рд╕реНрд╡рдпрдВ рдХреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдпрд╛ рдлрд╝рдВрдХреНрд╢рди) рдХреЛ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрдм рднреА рд╢реЗрд▓ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рд╕рдВрдХреЗрдд рдорд┐рд▓рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЬрдм рдЖрдк рд░рдирд┐рдВрдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Ctrl + C рджрдмрд╛рддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг 8.3 рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ рдЬреЛ рдПрдХ рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред

рдЙрджрд╛рд╣рд░рдг 8.3 looper.sh

#!/bin/bash -
#
# Bash  
# looper.sh
#
# :
#    
#
# : ./looper.sh [filename]
# filename тАФ  ,   ,
#  : log.file
#

function interval ()                                           (1)
{
      echo $(date '+%y%m%d %H%M%S') $cnt                       (2)
      cnt=0
}

declare -i cnt=0
trap interval SIGUSR1                                          (3)

shopt -s lastpipe                                              (4)

tail -f --pid=$$ ${1:-log.file} | while read aline             (5)
do
     let cnt++
done

(1) рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрдХреЗрдд рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рдкрд░ рдЕрдВрддрд░рд╛рд▓ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдмреЗрд╢рдХ, рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ рдХрд┐ рд╣рдо рдЗрд╕реЗ рдирд╛рдо рджреЗ рд╕рдХреЗрдВ рдФрд░ рдЕрдкрдиреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдореЗрдВ рдЬрд╛рд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред

(2) рджрд┐рдирд╛рдВрдХ рдХрдорд╛рдВрдб рдХреЛ cnt рд╡реИрд░рд┐рдПрдмрд▓ рдХреЗ рдорд╛рди рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдорд╕реНрдЯреИрдореНрдк рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдкреНрд░рд┐рдВрдЯ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдХрд╛рдЙрдВрдЯрд░ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЕрдЧрд▓реЗ рдорд╛рди рдХреА рдЙрд▓рдЯреА рдЧрд┐рдирддреА рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЗрд╕ рдорд╛рди рдХреЛ 0 рдкрд░ рд░реАрд╕реЗрдЯ рдХрд░рддреЗ рд╣реИрдВред

(3) рдЕрдм рдЬрдм рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рддреЛ рд╣рдо рдпрд╣ рд╕рдВрдХреЗрдд рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЬрдм рднреА рд╣рдорд╛рд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рд╕рдВрдХреЗрдд SIGUSR1 рдкреНрд░рд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

(4)рдпрд╣ рдПрдХ рдХрд╛рдлреА рдЕрд╣рдо рдХрджрдо рд╣реИред рдЖрдорддреМрд░ рдкрд░, рдЬрдм рдХрдорд╛рдВрдб рдХреА рдПрдХ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╣реЛрддреА рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ls-l | grep rwx | wc), рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ (рдкреНрд░рддреНрдпреЗрдХ рдХрдорд╛рдВрдб) рдХреЛ рд╕рдмрдиреЗрдЯ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдЕрдкрдиреА рд╕реНрд╡рдпрдВ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИред рдпрд╣ рдЗрд╕ рдкрд░рд┐рджреГрд╢реНрдп рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдорд╕реНрдпрд╛ рд╣реЛ рд╕рдХрддреА рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓реВрдк рдПрдХ рдЕрд▓рдЧ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдзрд╛рд░рд╛ рдореЗрдВ рд╣реЛрдЧрд╛ред рдЬреЛ рднреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рд▓реВрдкрд░.рд╢ рд▓рд┐рдкрд┐ рдХреЛ рд╕рдВрдХреЗрдд рднреЗрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рд▓реВрдк рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ рдкрддрд╛ рдирд╣реАрдВ рдЪрд▓реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдк-рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ cnt рдЪрд░ рдХреЗ рдорд╛рди рдХреЛ рдмрджрд▓рдиреЗ рд╕реЗ рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ cnt рдорд╛рди рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЦреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреЗрдд рдкреНрд░рддреНрдпреЗрдХ рдмрд╛рд░ рдорд╛рди рдХреЛ 0. рдкрд░ рд╕реЗрдЯ рдХрд░реЗрдЧрд╛ред рдЖрдк рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рджреБрдХрд╛рди рдХрдорд╛рдВрдб рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ (-s) рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЕрдВрддрд┐рдо рдмрд┐рдВрджреБ рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдкрд╛рдЗрдк рд▓рд╛рдЗрди рдореЗрдВ рдЕрдВрддрд┐рдо рдХрдорд╛рдВрдб рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдзрд╛рд░рд╛ рдирд╣реАрдВ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╢реЗрд▓ рдХреЛ рдмрддрд╛рддрд╛ рд╣реИ,рдФрд░ рдЗрд╕ рдХрдорд╛рдВрдб рдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рд╣реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ рдЪрд▓рд╛рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдкреВрдВрдЫ рдХрдорд╛рдВрдб рдХреЛ рдПрдХ рдЙрдкрдзрд╛рд░рд╛ рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ (рдЕрд░реНрдерд╛рдд, рдПрдХ рдЕрдиреНрдп рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ), рдФрд░ рдЬрдмрдХрд┐ рд▓реВрдк рдореБрдЦреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдмрди рдЬрд╛рдПрдЧрд╛ред рдиреЛрдЯ: рдпрд╣ рд╢реЗрд▓ рд╡рд┐рдХрд▓реНрдк рдХреЗрд╡рд▓ рдмреИрд╢ рд╕рдВрд╕реНрдХрд░рдг рдореЗрдВ рдЙрдкрд▓рдмреНрдз рд╣реИ 4.x рдФрд░ рдЙрдЪреНрдЪрддрд░ рдФрд░ рдХреЗрд╡рд▓ рдЧреИрд░-рд╕рдВрд╡рд╛рджрд╛рддреНрдордХ рдЧреЛрд▓реЗ (рдпрд╛рдиреА рд╕реНрдХреНрд░рд┐рдкреНрдЯ) рдХреЗ рд▓рд┐рдПред

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

Tailcount.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ рдФрд░ рд╕реНрдЯреЙрдкрд╡реЙрдЪ (рдЯрд╛рдЗрдорд░) рдХреЗ рд╕рд╛рде рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рд░реЛрдХрддреА рд╣реИ рдФрд░ рд╕рдордп рдЕрдВрддрд░рд╛рд▓ рдХреЛ рдЧрд┐рдирд╛рддреА рд╣реИред

рдЙрджрд╛рд╣рд░рдг 8.4ред tailcount.sh

#!/bin/bash -
#
# Bash  
# tailcount.sh
#
# :
#    n 
#
# : ./tailcount.sh [filename]
#     filename:  looper.sh
#

#  тАФ    
function cleanup ()
{
      [[ -n $LOPID ]] && kill $LOPID          (1)
}

trap cleanup EXIT                             (2)
bash looper.sh $1 &                           (3)
LOPID=$!                                      (4)
#   
sleep 3

while true
do
      kill -SIGUSR1 $LOPID
      sleep 5
done >&2                                      (5)

(1) рдЪреВрдВрдХрд┐ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдиреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдПрдЧреА, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХрд╛рдо рдХреЗ рдмрд╛рдж рд╕рд╛рдл рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдпрджрд┐ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдХреЛ LOPID рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЪрд░ рдорд╛рди рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░реЗрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдлрд╝рдВрдХреНрд╢рди рдХрд┐рд▓ рдХрдорд╛рдВрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЛ рдПрдХ рд╕рдВрдХреЗрдд рднреЗрдЬреЗрдЧрд╛ред рдпрджрд┐ рдЖрдк рдХрд┐рд▓ рдХрдорд╛рдВрдб рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╕рд┐рдЧреНрдирд▓ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ SIGTERM рд╕рд┐рдЧреНрдирд▓ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рднреЗрдЬрд╛ рдЬрд╛рдПрдЧрд╛ред

(2) EXIT рдХрдорд╛рдВрдб рд╕рд┐рдЧреНрдирд▓ рдирд╣реАрдВ рд╣реИред рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрдм рдЯреНрд░реИрдк рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ рд╢реЗрд▓ рдХреЛ рдЗрд╕ рдлрд╝рдВрдХреНрд╢рди (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рдлрд╛рдИ) рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рддрд╛ рд╣реИ рдпрджрд┐ рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рд╢реЗрд▓ рдмрдВрдж рд╣реЛрдиреЗ рд╡рд╛рд▓рд╛ рд╣реИред

(3)рдЕрдм рдЕрд╕рд▓реА рдХрд╛рдо рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд▓реВрдкрд░.рд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╢реБрд░реВ рдХреА рдЧрдИ рд╣реИ, рдЬреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рдЪрд▓реЗрдЧреА: рдЗрд╕ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд▓рд┐рдП рдкреВрд░реЗ рдЪрдХреНрд░ рдореЗрдВ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП (рдмрд┐рдирд╛ рдХрд╛рдо рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдорд╛рдВрдб рдХреА рдкреНрд░рддреАрдХреНрд╖рд╛ рдХрд┐рдП), рдпрд╣ рдХреАрдмреЛрд░реНрдб рд╕реЗ рдбрд┐рд╕реНрдХрдиреЗрдХреНрдЯ рд╣реЛ рдЧрдпрд╛ рд╣реИред

(рек) рдпрд╣рд╛рдБ, рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреА рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рдЬреЛ рд╣рдордиреЗ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛, рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред

(рел) рдпрд╣ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢ рдХреЗрд╡рд▓ рдПрдХ рд╕рд╛рд╡рдзрд╛рдиреА рд╣реИред рдереЛрдбрд╝реА рджреЗрд░ рдХреЗ рд▓реВрдк рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдЖрдЙрдЯрдкреБрдЯ рдпрд╛ рдХрд┐рд▓ / рд╕реНрд▓реАрдк рд╕реНрдЯреЗрдЯрдореЗрдВрдЯ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рд╣рдо рдЙрдирд╕реЗ рдЙрдореНрдореАрдж рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ) рдХреЛ рд▓реВрдкрд░.рд╢ рдлрд╝рдВрдХреНрд╢рди рд╕реЗ рдХрд┐рд╕реА рднреА рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдирд╣реАрдВ рдорд┐рд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдмреИрдХрдЧреНрд░рд╛рдЙрдВрдб рдореЗрдВ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдЙрдиреНрд╣реЗрдВ рд╕реНрдЯрдбрдЖрдЙрдЯ рднреЗрдЬрддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдбреЗрдЯрд╛ рдХреЛ stdout рд╕реЗ stderr рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВред

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╣рдо рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдпрджреНрдпрдкрд┐ рд▓реВрдкрд░.рд╢ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдкреГрд╖реНрдарднреВрдорд┐ рдореЗрдВ рд░рдЦрд╛ рдЧрдпрд╛ рдерд╛, рдЗрд╕рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╢реЗрд▓ рдЪрд░ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИред рд╣рд░ рдкрд╛рдВрдЪ рд╕реЗрдХрдВрдб рдореЗрдВ, рдЯреЗрд▓рдХрд╛рдЙрдВрдЯ.рд╢ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрдд SIGUSR1 (рдЬрд┐рд╕реЗ рд▓реВрдкрд░.рд╢ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдирд┐рд╖реНрдкрд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ) рднреЗрдЬрддрд╛ рд╣реИ, рдЬреЛ рдмрджрд▓реЗ рдореЗрдВ, рд▓реВрдкрд░.рд╢ рд▓рд┐рдкрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЙрд╕рдореЗрдВ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╡рд░реНрддрдорд╛рди рд╕рдВрдЦреНрдпрд╛ рдХреЛ рдкреНрд░рд┐рдВрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗ рдФрд░ рдЧрд┐рдирддреА рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХреЗред рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рдХреЗ рдмрд╛рдж, tailcount.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП looper.sh рдлрд╝рдВрдХреНрд╢рди рдХреЛ SIGTERM рд╕рдВрдХреЗрдд рднреЗрдЬрдХрд░ рд╕рд╛рдлрд╝ рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред

рджреЛ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреА рдорджрдж рд╕реЗ - рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рд▓рд╛рдЗрди рдХрд╛рдЙрдВрдЯрд┐рдВрдЧ рдХрд░рддреА рд╣реИ, рдФрд░ рдПрдХ рд╕реНрдЯреЙрдкрд╡реЙрдЪ (рдЯрд╛рдЗрдорд░) рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЬреЛ рдкрд╣рд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддреА рд╣реИ - рдЖрдк рдЖрдЙрдЯрдкреБрдЯ (рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдЕрд╡рдзрд┐ рдХреЗ рд▓рд┐рдП рд▓рд╛рдЗрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдЧрд▓реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣рд┐рд╕реНрдЯреЛрдЧреНрд░рд╛рдо рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд░реЗрдЧреАред рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ:

bash tailcount.sh | bash livebar.sh

Livebar.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯрдб рд╕реЗ рдбреЗрдЯрд╛ рдкрдврд╝рддрд╛ рд╣реИ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ stdout рдореЗрдВ рдкреНрд░рд┐рдВрдЯ рдХрд░рддрд╛ рд╣реИ, рдкреНрд░рддреНрдпреЗрдХ рдЗрдирдкреБрдЯ рд▓рд╛рдЗрди рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдЗрди (рдЙрджрд╛рд╣рд░рдг 8.5)ред

рдЙрджрд╛рд╣рд░рдг 8.5 livebar.sh

#!/bin/bash -
#
# Bash  
# livebar.sh
#
# :
#    ┬л┬╗ 
#
# :
# <output from other script or program> | bash livebar.sh
#

function pr_bar ()                                         (1)
{
      local raw maxraw scaled
      raw=$1
      maxraw=$2
      ((scaled=(maxbar*raw)/maxraw))
      ((scaled == 0)) && scaled=1 #   
      for((i=0; i<scaled; i++)) ; do printf '#' ; done
      printf '\n'

} # pr_bar

maxbar=60     #         (2)
MAX=60
while read dayst timst qty
do
      if (( qty > MAX ))                                   (3)
      then
           let MAX=$qty+$qty/4    #   
           echo "                      **** rescaling: MAX=$MAX"
      fi
      printf '%6.6s %6.6s %4d:' $dayst $timst $qty         (4)
      pr_bar $qty $MAX
done

(1) pr_bar рдлрд╝рдВрдХреНрд╢рди рд╣реИрд╢рдЯреИрдЧ рдХреА рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЕрдзрд┐рдХрддрдо рдЖрдХрд╛рд░ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдП рдЧрдП рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдмрдврд╝рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕реБрд╡рд┐рдзрд╛ рдкрд░рд┐рдЪрд┐рдд рд▓рдЧ рд╕рдХрддреА рд╣реИ, рдЬреИрд╕рд╛ рдХрд┐ рд╣рдордиреЗ рдкрд╣рд▓реЗ рдЗрд╕реЗ histogram.sh рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдерд╛ред

(реи) рдпрд╣ рд╕рдмрд╕реЗ рд▓рдВрдмреА рд╣реИрд╢рдЯреИрдЧ рд▓рд╛рдЗрди рдЖрдХрд╛рд░ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд┐рдирд╛ рд▓рд╛рдЗрди рд░реИрдкрд┐рдВрдЧ рдХреЗ)ред

(3)рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдп рдХрд┐рддрдиреЗ рдмрдбрд╝реЗ рд╣реЛрдВрдЧреЗ? рдЗрд╕реЗ рдкрд╣рд▓реЗ рд╕реЗ рдЬрд╛рдиреЗ рдмрд┐рдирд╛ (рд╣рд╛рд▓рд╛рдБрдХрд┐ рдпрд╣ рдбреЗрдЯрд╛ рдПрдХ рддрд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдкреНрд░рджрд╛рди рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ), рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдзрд┐рдХрддрдо рдЯреНрд░реИрдХ рдХрд░реЗрдЧреАред рдпрджрд┐ рдпрд╣ рдЕрдзрд┐рдХрддрдо рдкрд╛рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рдорд╛рди "рд╕реНрдХреЗрд▓" рдкрд░ рд╢реБрд░реВ рд╣реЛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЬреЛ рд▓рд╛рдЗрдиреЗрдВ рдЕрдм рдкреНрд░рджрд░реНрд╢рд┐рдд рдХреА рдЧрдИ рд╣реИрдВ, рдФрд░ рднрд╡рд┐рд╖реНрдп рдХреА рд▓рд╛рдЗрдиреЗрдВ рднреА рдПрдХ рдирдП рдЕрдзрд┐рдХрддрдо рддрдХ рдкрд╣реБрдВрдЪ рдЬрд╛рдПрдВрдЧреАред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЕрдзрд┐рдХрддрдо рдореВрд▓реНрдп рдореЗрдВ 25% рдЬреЛрдбрд╝рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдЕрдЧрд▓реЗ рдирдИ рдореВрд▓реНрдп рдореЗрдВ рд╣рд░ рдмрд╛рд░ рдХреЗрд╡рд▓ 1-2% рдХреА рд╡реГрджреНрдзрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЗрд╕реЗ рдореВрд▓реНрдп рдХреЛ рдорд╛рдкрдирд╛ рдирд╣реАрдВ рд╣реИред

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

рдЪреВрдВрдХрд┐ рдпрд╣ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯрдб рд╕реЗ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ, рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

$ bash  livebar.sh
201010 1020 20
201010     1020 20:####################
201010 1020 70
                       **** rescaling: MAX=87
201010     1020 70:################################################
201010 1020 75
201010 1020 75:###################################################
^C

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

$ bash livebar.sh < testdata.txt
bash livebar.sh < x.data
201010 1020 20:####################
                 **** rescaling: MAX=87
201010 1020 70:################################################
201010 1020 75:###################################################
$

┬╗рдкреБрд╕реНрддрдХ рдкрд░ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА рдкрд░ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рдкреНрд░рдХрд╛рд╢рдХ рдХреА рд╡реЗрдмрд╕рд╛рдЗрдЯ
┬╗ рд╕рд╛рдордЧреНрд░реА
┬╗ рдЕрдВрд╢

рдХреВрдкрди рдкрд░ рд▓рд┐рдП Khabrozhiteley 25% рдЫреВрдЯ - рдмреИрд╢

рдкреБрд╕реНрддрдХ рдХреЗ рдХрд╛рдЧрдЬ рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдкрд░, рдПрдХ рдЗрд▓реЗрдХреНрдЯреНрд░реЙрдирд┐рдХ рдкреБрд╕реНрддрдХ рдИ-рдореЗрд▓ рджреНрд╡рд╛рд░рд╛ рднреЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИред

All Articles