ΠΠ΅Π΄Π½ΠΎΠΌ, ΡΠΎΠΊΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΠ²ΡΡΠ°, ΠΏΠΈΡΠ°Π»ΠΈ ΡΡ ΠΌΠ΅ ΡΡΠ° ΡΠ΅ΡΠ΅ ΡΡΠΈΠ½ΠΈΡΠΈ Π°ΠΊΠΎ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄Π° ΡΠ΅ΡΠ²ΠΈΡ Π½Π΅ ΡΠ°Π΄ΠΈ Π·Π±ΠΎΠ³ ΡΠΈΡΠ΅Π½ΠΈΡΠ΅ Π΄Π° ΡΠ΅ Π½Π° Π΄ΠΈΡΠΊΡ ΠΏΠΎΠ½Π΅ΡΡΠ°Π»ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ°?
ΠΠ°ΡΠ°Π²Π½ΠΎ, ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΠΎ ΡΠ°ΠΌ Π΄Π° ΡΡ Π²ΠΈΠ΄Π΅ΡΠΈ ΡΡΠ° ΡΠ²Π΅ Π·Π°ΡΠ·ΠΈΠΌΠ° ΠΎΠ²ΠΎ ΠΌΠ΅ΡΡΠΎ ΠΈ, Π°ΠΊΠΎ ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ΅, ΠΎΡΠΈΡΡΠΈΡΡ ΡΠΎ ΠΌΠ΅ΡΡΠΎ.
ΠΠ°ΡΠΈΠΌ ΡΠ΅ Π°Π½ΠΊΠ΅ΡΠ°Ρ ΠΏΠΈΡΠ°ΠΎ, ΡΡΠ° Π°ΠΊΠΎ Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΡΠΈ Π½Π΅ΠΌΠ° ΡΠ»ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°, Π°Π»ΠΈ Π½Π΅ Π²ΠΈΠ΄ΠΈΡΠ΅ Π½ΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠΎΡΠ΅ Π±ΠΈ Π·Π°ΡΠ·Π΅Π»Π΅ ΡΠ°Π² ΠΏΡΠΎΡΡΠΎΡ?
ΠΠ° ΠΎΠ²ΠΎ ΡΠ°ΠΌ ΡΠ΅ΠΊΠ°ΠΎ Π΄Π° ΡΠ²Π΅ΠΊ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ Π»ΡΠΎΡ, ΠΈ ΡΡ Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΡΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ΅ Π·Π°ΡΠ·Π΅Π»Π° ΡΠ°Π² ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠΈΠ²ΠΈ ΠΏΡΠΎΡΡΠΎΡ, Π° Π·Π°ΡΠΈΠΌ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π΄Π΅Π»ΡΡΠ΅ΡΠ΅ Ρ ΡΠΊΠ»Π°Π΄Ρ ΡΠ° ΠΎΠΊΠΎΠ»Π½ΠΎΡΡΠΈΠΌΠ°, Ρ Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΎΠ΄ ΡΠΎΠ³Π° Π΄Π° Π»ΠΈ ΡΡ ΠΏΠΎΠ΄Π°ΡΠΈ ΠΏΠΎΡΡΠ΅Π±Π½ΠΈ .
ΠΠ½ΠΊΠ΅ΡΠ°Ρ ΠΌΠ΅ ΡΠ΅ ΠΏΡΠ΅ΠΊΠΈΠ½ΡΠΎ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΡΠΎΡ ΡΠ΅ΡΠΈ, Π΄ΠΎΠ΄Π°ΡΡΡΠΈ Π½Π° ΡΠ²ΠΎΡΠ΅ ΠΏΠΈΡΠ°ΡΠ΅: βΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° Π½Π°ΠΌ Π½Π΅ ΡΡΠ΅Π±Π°ΡΡ ΠΏΠΎΠ΄Π°ΡΠΈ, ΡΠΎ ΡΠ΅ ΡΠ°ΠΌΠΎ Π΄Π½Π΅Π²Π½ΠΈΠΊ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ° Π³ΡΠ΅ΡΠ°ΠΊΠ°, Π°Π»ΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° Π½Π΅ ΡΠ°Π΄ΠΈ ΡΠ΅Ρ Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ°β?
βΠ£ ΡΠ΅Π΄Ρβ, ΠΎΠ΄Π³ΠΎΠ²ΠΎΡΠΈΠΎ ΡΠ°ΠΌ, βΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΈΡΠΊΡΡΡΠΈΠΌΠΎ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠ°ΠΊΠ° Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΡΠ΅ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ.β
ΠΠ½ΠΊΠ΅ΡΠ°Ρ ΡΠ΅ ΠΏΡΠΈΠ³ΠΎΠ²ΠΎΡΠΈΠΎ: βΠΠ΅, Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ, ΡΠΎΡ ΡΠ²Π΅ΠΊ ΠΈΠΌΠ°ΠΌΠΎ Π²Π°ΠΆΠ½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΡΡΠΊΠ»Π°Π΄ΠΈΡΡΠ΅Π½Π΅ Ρ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠΈ, Π° Π²Π°ΠΆΠ½ΠΈ ΠΊΠ»ΠΈΡΠ΅Π½ΡΠΈ ΡΡ ΠΏΠΎΠ²Π΅Π·Π°Π½ΠΈ Π½Π° ΡΠ°ΠΌΡ ΡΡΠ»ΡΠ³Ρ, ΠΊΠΎΡΡ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π½Π°ΡΠ΅ΡΠ°ΡΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠ²Π΅ΠΆΠ΅.
βΠ£ ΡΠ΅Π΄Ρβ, ΡΠ΅ΠΊΠ°ΠΎ ΡΠ°ΠΌ, βΠ°ΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ ΠΏΠΎΠ΄Π°ΡΠΈ Π½Π°ΠΌ Π½ΠΈΡΡ Π²Π°ΠΆΠ½ΠΈ, ΠΎΠ½Π΄Π° ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ Π΄Π° ΠΎΠ±ΡΠΈΡΠ΅ΠΌΠΎ ΠΎΠ²Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΊΡΠΎΠ· Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, ΡΠ°ΠΊ ΠΈ Π°ΠΊΠΎ ΡΠ΅ Π½Π΅ Π²ΠΈΠ΄ΠΈΠΌΠΎ Ρ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ Π»Ρ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°."
ΠΠ½ΠΊΠ΅ΡΠ°Ρ ΡΠ΅ Π±ΠΈΠΎ Π·Π°Π΄ΠΎΠ²ΠΎΡΠ°Π½, Π°Π»ΠΈ ΡΠ° Π½ΠΈΡΠ°ΠΌ.
ΠΠ½Π΄Π° ΡΠ°ΠΌ ΠΏΠΎΠΌΠΈΡΠ»ΠΈΠΎ, Π·Π°ΡΡΠΎ ΠΎΡΠΎΠ±Π° ΠΊΠΎΡΠ° ΡΠ΅ΡΡΠΈΡΠ° ΠΌΠΎΡΠ΅ Π·Π½Π°ΡΠ΅ Π½Π΅ ΠΊΠΎΠΏΠ° Π΄ΡΠ±ΡΠ΅? ΠΠ»ΠΈ ΡΡΠ° Π°ΠΊΠΎ ΡΡ ΠΏΠΎΠ΄Π°ΡΠΈ ΠΈΠΏΠ°ΠΊ Π²Π°ΠΆΠ½ΠΈ? Π¨ΡΠ° Π°ΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΏΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΈ ΠΏΡΠΎΡΠ΅Ρ, Π° ΠΏΡΠΎΡΠ΅Ρ ΡΠΏΠΈΡΡΡΠ΅ Ρ ΡΠΈΡΡΠ΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π° ΠΏΠ°ΡΡΠΈΡΠΈΡΠΈ ΠΊΠΎΡΠ° Π½Π΅ΠΌΠ° ΡΠ»ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°? Π¨ΡΠ° Π°ΠΊΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ ΠΈΠ·Π³ΡΠ±ΠΈΡΠΈ Π½Π΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΊΠΎΡΠΈ ΡΡ Π²Π΅Ρ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ, Π²Π΅Ρ ΠΈ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΊΠΎΡΠ΅ ΠΎΠ²Π°Ρ ΠΏΡΠΎΡΠ΅Ρ ΡΠΏΠΈΡΡΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΡΡΠ°Π²Π° Π΄Π° Π·Π°ΠΏΠΈΡΠ΅?
Π’ΡΠ·ΠΈΠΊ
ΠΠ° ΠΏΠΎΡΠ΅ΡΠΊΡ ΡΠ²ΠΎΡΠ΅ ΠΊΠ°ΡΠΈΡΠ΅ΡΠ΅, ΠΏΠΎΠΊΡΡΠ°ΠΎ ΡΠ°ΠΌ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΠΌΠ°Π»Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΊΠΎΡΠ° ΡΠ΅ ΡΡΠ΅Π±Π°Π»Π° Π΄Π° ΡΡΠ²Π° ΠΊΠΎΡΠΈΡΠ½ΠΈΡΠΊΠ΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅. Π ΠΎΠ½Π΄Π° ΡΠ°ΠΌ ΠΏΠΎΠΌΠΈΡΠ»ΠΈΠΎ, ΠΊΠ°ΠΊΠΎ Π΄Π° ΠΏΠΎΠ²Π΅ΠΆΠ΅ΠΌ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΠ° ΡΠ° ΡΠ΅Π³ΠΎΠ²ΠΈΠΌ ΠΏΠΎΠ΄Π°ΡΠΈΠΌΠ°. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΠΌΠ°ΠΌ ΠΠ²Π°Π½ΠΎΠ²Π° ΠΠ²Π°Π½Π° ΠΠ²Π°Π½ΠΎΠ²ΠΈΡΠ°, ΠΈ ΠΎΠ½ ΠΈΠΌΠ° Π½Π΅ΠΊΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅, Π°Π»ΠΈ ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΡΠΏΡΠΈΡΠ°ΡΠ΅ΡΠΈΠΌ ΡΠ° ΡΠΈΠΌΠ°? ΠΠΎΠ³Ρ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ Π΄Π° ΠΈΡΡΠ°ΠΊΠ½Π΅ΠΌ Π΄Π° ΠΏΠ°Ρ ΠΏΠΎ ΠΈΠΌΠ΅Π½Ρ Π’ΡΠ·ΠΈΠΊ ΠΏΡΠΈΠΏΠ°Π΄Π° ΡΠΏΡΠ°Π²ΠΎ ΠΎΠ²ΠΎΠΌ ΠΠ²Π°Π½Ρ. ΠΠ»ΠΈ ΡΡΠ° Π°ΠΊΠΎ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ ΠΈΠΌΠ΅ ΠΈ ΡΠΌΠ΅ΡΡΠΎ ΠΠ²Π°Π½ ΠΏΠΎΡΡΠ°Π½Π΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΡΠ°? Π’Π°Π΄Π° ΡΠ΅ ΡΠ΅ ΠΈΡΠΏΠΎΡΡΠ°Π²ΠΈΡΠΈ Π΄Π° Π½Π°ΡΠ° ΠΡΠ° ΠΠ²Π°Π½ΠΎΠ²Π½Π° ΠΠ²Π°Π½ΠΎΠ²Π° Π²ΠΈΡΠ΅ Π½Π΅ΡΠ΅ ΠΈΠΌΠ°ΡΠΈ ΠΏΡΠ°, Π° Π½Π°Ρ Π’ΡΠ·ΠΈΠΊ ΡΠ΅ ΠΈ Π΄Π°ΡΠ΅ ΠΏΡΠΈΠΏΠ°Π΄Π°ΡΠΈ Π½Π΅ΠΏΠΎΡΡΠΎΡΠ΅ΡΠ΅ΠΌ ΠΠ²Π°Π½Ρ. ΠΠ°Π·Π° ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ° ΠΊΠΎΡΠ° ΡΠ΅ ΡΠ²Π°ΠΊΠΎΠΌ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊΡ Π΄Π°Π²Π°Π»Π° ΡΠ΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ (ΠΠ) ΠΏΠΎΠΌΠΎΠ³Π»Π° ΡΠ΅ Ρ ΡΠ΅ΡΠ°Π²Π°ΡΡ ΠΎΠ²ΠΎΠ³ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, Π° ΠΌΠΎΡ Π’ΡΠ·ΠΈΠΊ ΡΠ΅ Π±ΠΈΠΎ Π²Π΅Π·Π°Π½ Π·Π° ΠΎΠ²Π°Ρ ΠΠ, ΠΊΠΎΡΠΈ ΡΠ΅, Ρ ΡΡΠ²Π°ΡΠΈ, Π±ΠΈΠΎ ΡΠ°ΠΌΠΎ ΡΠ΅ΡΠΈΡΡΠΊΠΈ Π±ΡΠΎΡ. ΠΠ°ΠΊΠ»Π΅, Π²Π»Π°ΡΠ½ΠΈΠΊ ΡΡΠ·ΠΈΠΊΠ° ΡΠ΅ ΠΈΠΌΠ°ΠΎ ΠΌΠ°ΡΠΈΡΠ½ΠΈ Π±ΡΠΎΡ 2, Π° Ρ Π½Π΅ΠΊΠΎΠΌ ΡΡΠ΅Π½ΡΡΠΊΡ ΠΏΠΎΠ΄ ΠΎΠ²ΠΎΠΌ Π»ΠΈΡΠ½ΠΎΠΌ ΠΊΠ°ΡΡΠΎΠΌ ΡΠ΅ Π±ΠΈΠΎ ΠΈ ΠΠ²Π°Π½, Π° ΠΎΠ½Π΄Π° ΡΠ΅ ΠΡΠ° ΠΏΠΎΡΡΠ°Π»Π° ΠΏΠΎΠ΄ ΠΈΡΡΠΎΠΌ. ΠΡΠΎΠ±Π»Π΅ΠΌ ΡΠΎΠ²Π΅ΡΠ½ΠΎΡΡΠΈ ΠΈ ΡΡΠΎΡΠ°ΡΡΡΠ²Π° ΡΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ½ΠΎ ΡΠ΅ΡΠ΅Π½.
ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅
ΠΡΠΎΠ±Π»Π΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΊΠΎΡΠΈ ΡΠ°Π΄ΠΈ ΡΠ° ΠΎΠ²ΠΎΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠΎΠΌ ΡΠ΅ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ ΠΈΡΡΠΈ ΠΊΠ°ΠΎ ΠΊΠΎΠ΄ Π½Π°ΡΠ΅Π³ ΠΏΡΠ° ΠΈ ΡΠΎΠ²Π΅ΠΊΠ°. ΠΡΠ΅ΡΠΏΠΎΡΡΠ°Π²ΠΈΠΌΠΎ Π΄Π° ΡΠ°ΠΌ ΠΎΡΠ²ΠΎΡΠΈΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΠΏΠΎΠ΄ Π½Π°Π·ΠΈΠ²ΠΎΠΌ ΠΈΠ²Π°Π½.ΡΠΊΡ ΠΈ ΠΏΠΎΡΠ΅ΠΎ Π΄Π° ΡΠΏΠΈΡΡΡΠ΅ΠΌ ΡΠ΅Ρ ΡΡΠ·ΠΈΠΊ Ρ ΡΡ, Π°Π»ΠΈ ΡΠ°ΠΌ ΡΡΠΏΠ΅ΠΎ Π΄Π° ΡΠΏΠΈΡΠ΅ΠΌ ΡΠ°ΠΌΠΎ ΠΏΡΠ²ΠΎ ΡΠ»ΠΎΠ²ΠΎ βΡβ Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ, Π° ΠΎΠ²Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ ΡΠ΅ Π½Π΅ΠΊΠΎ ΠΏΡΠ΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°ΠΎ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΎΠ»ΠΈΠ°.ΡΠΊΡ. ΠΠ»ΠΈ ΡΠ°ΡΠ» ΠΎΡΡΠ°ΡΠ΅ ΠΈΡΡΠΈ, Π° ΡΠ° ΠΈ Π΄Π°ΡΠ΅ ΠΆΠ΅Π»ΠΈΠΌ Π΄Π° ΡΠΏΠΈΡΠ΅ΠΌ ΡΠ²ΠΎΠ³ ΠΊΠ΅ΡΠ° Ρ ΡΠ΅Π³Π°. Π‘Π²Π°ΠΊΠΈ ΠΏΡΡ ΠΊΠ°Π΄Π° ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΎΡΠ²ΠΎΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΌ ΠΏΠΎΠ·ΠΈΠ²ΠΎΠΌ
Π£ ΠΠΈΠ½ΡΠΊΡ, Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π»ΠΈΠ±Ρ ΠΎΡΠ²Π°ΡΠ° 3 Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π·Π° ΡΠ²Π°ΠΊΡ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ (ΠΏΡΠΎΡΠ΅Ρ), Π½ΡΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ 0,1,2. ΠΠΈΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠΈ Π½Π° Π»ΠΈΠ½ΠΊΠΎΠ²ΠΈΠΌΠ°
- ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ 0 ΡΠ΅ Π·ΠΎΠ²Π΅ Π‘Π’ΠΠΠ ΠΈ ΠΏΠΎΠ²Π΅Π·Π°Π½ ΡΠ΅ ΡΠ° ΡΠ½ΠΎΡΠΎΠΌ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅
- ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ 1 ΡΠ΅ Π·ΠΎΠ²Π΅ Π‘Π’ΠΠΠ£Π’ ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π³Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π° ΠΈΠ·Π»Π°Π· ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°, ΠΊΠ°ΠΎ ΡΡΠΎ ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ Π·Π° ΡΡΠ°ΠΌΠΏΠ°ΡΠ΅
- ΠΠ΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ 2 ΡΠ΅ Π·ΠΎΠ²Π΅ Π‘Π’ΠΠΠ Π ΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ Π³Π° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ΅ Π·Π° ΠΈΠ·Π»Π°Π· ΠΏΠΎΡΡΠΊΠ° ΠΎ Π³ΡΠ΅ΡΡΠΈ.
ΠΠΊΠΎ Ρ ΡΠ²ΠΎΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π·Π° ΡΠΈΡΠ°ΡΠ΅ ΠΈΠ»ΠΈ ΠΏΠΈΡΠ°ΡΠ΅, ΠΎΠ½Π΄Π° ΡΠ΅ΡΠ΅ Π½Π°ΡΠ²Π΅ΡΠΎΠ²Π°ΡΠ½ΠΈΡΠ΅ Π΄ΠΎΠ±ΠΈΡΠΈ ΠΏΡΠ²ΠΈ Π±Π΅ΡΠΏΠ»Π°ΡΠ½ΠΈ ΠΠ ΠΈ ΠΎΠ½ ΡΠ΅ Π±ΠΈΡΠΈ Π±ΡΠΎΡ 3.
ΠΠΈΡΡΠ° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΌΠΎΠΆΠ΅ ΡΠ΅ Π²ΠΈΠ΄Π΅ΡΠΈ Π·Π° Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ ΠΏΡΠΎΡΠ΅Ρ Π°ΠΊΠΎ Π·Π½Π°ΡΠ΅ ΡΠ΅Π³ΠΎΠ² ΠΠΠ.
ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΎΡΠ²ΠΎΡΠΈΠΌΠΎ Π±Π°ΡΡ ΠΊΠΎΠ½Π·ΠΎΠ»Ρ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ ΠΠΠ Π½Π°ΡΠ΅Π³ ΠΏΡΠΎΡΠ΅ΡΠ°
[user@localhost ]$ echo $$
15771
Π£ Π΄ΡΡΠ³ΠΎΡ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΠΌΠΎ
[user@localhost ]$ ls -lah /proc/15771/fd/
total 0
dr-x------ 2 user user 0 Oct 7 15:42 .
dr-xr-xr-x 9 user user 0 Oct 7 15:42 ..
lrwx------ 1 user user 64 Oct 7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 255 -> /dev/pts/21
ΠΠΎΠΆΠ΅ΡΠ΅ Π±Π΅Π·Π±Π΅Π΄Π½ΠΎ Π΄Π° Π·Π°Π½Π΅ΠΌΠ°ΡΠΈΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π±ΡΠΎΡ 255 Π·Π° ΠΏΠΎΡΡΠ΅Π±Π΅ ΠΎΠ²ΠΎΠ³ ΡΠ»Π°Π½ΠΊΠ°; ΠΎΡΠ²ΠΎΡΠΈΠΎ Π³Π° ΡΠ΅ Π·Π° ΡΠ²ΠΎΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π΅ ΡΠ°ΠΌ Π±Π°ΡΡ , Π° Π½Π΅ ΠΏΠΎΠ²Π΅Π·Π°Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°.
Π‘Π°Π΄Π° ΡΡ ΡΠ²Π΅ 3 Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ ΡΠ° ΠΏΡΠ΅ΡΠ΄ΠΎ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π½ΠΈΠΌ ΡΡΠ΅ΡΠ°ΡΠ΅ΠΌ
[user@localhost ]$ echo "hello world" > /proc/15771/fd/0
Π Ρ ΠΏΡΠ²ΠΎΡ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ ΡΠ΅ΠΌΠΎ Π²ΠΈΠ΄Π΅ΡΠΈ
[user@localhost ]$ hello world
ΠΡΠ΅ΡΡΠΌΠ΅ΡΠΈ ΠΈ ΠΠΈΠΏΠ΅
ΠΠΎΠΆΠ΅ΡΠ΅ Π»Π°ΠΊΠΎ Π·Π°ΠΎΠ±ΠΈΡΠΈ ΠΎΠ²Π΅ 3 Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Ρ Π±ΠΈΠ»ΠΎ ΠΊΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡ, ΡΠΊΡΡΡΡΡΡΡΠΈ ΠΈ Π±Π°ΡΡ , Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΡΠΎΠ· ΡΠ΅Π² ΠΊΠΎΡΠ° ΠΏΠΎΠ²Π΅Π·ΡΡΠ΅ Π΄Π²Π° ΠΏΡΠΎΡΠ΅ΡΠ°, ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅
[user@localhost ]$ cat /dev/zero | sleep 10000
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠ°ΠΌΠΈ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΎΠ²Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΡΡΡΠ°ΡΠ΅ -Ρ ΠΈ Π²ΠΈΠ΄ΠΈ ΡΡΠ° ΡΠ΅ ΡΠ½ΡΡΡΠ° Π΄Π΅ΡΠ°Π²Π°, Π°Π»ΠΈ ΡΡ ΡΠΈ ΡΠΊΡΠ°ΡΠΊΠΎ ΡΠ΅ΡΠΈ.
ΠΠ°Ρ ΡΠΎΠ΄ΠΈΡΠ΅Ρ Π±Π°ΡΡ ΠΏΡΠΎΡΠ΅Ρ ΡΠ° ΠΠΠ 15771 Π°Π½Π°Π»ΠΈΠ·ΠΈΡΠ° Π½Π°ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΡΠ°Π·ΡΠΌΠ΅ ΡΠ°ΡΠ½ΠΎ ΠΊΠΎΠ»ΠΈΠΊΠΎ ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΆΠ΅Π»ΠΈΠΌΠΎ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ, Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΡΠΎΡΠ΅ Π΄Π²Π΅: ΡΠ°Ρ ΠΈ ΡΠ»Π΅Π΅ΠΏ. ΠΠ°ΡΡ Π·Π½Π° Π΄Π° ΡΡΠ΅Π±Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ° Π΄Π²Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° ΠΈ Π΄Π° ΠΈΡ ΡΠΏΠΎΡΠΈ Ρ ΡΠ΅Π΄Π½Ρ ΡΠ΅Π². Π£ΠΊΡΠΏΠ½ΠΎ, Π±Π°ΡΡ ΡΠ΅ ΡΡΠ΅Π±Π°ΡΠΈ 2 ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π° ΠΏΡΠΎΡΠ΅ΡΠ° ΠΈ ΡΠ΅Π΄Π°Π½ ΠΏΠΈΠΏΠ΅.
ΠΠ°ΡΡ
ΠΏΠΎΠΊΡΠ΅ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ·ΠΈΠ² ΠΏΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΠ°
ΠΠ° ΡΠΎΠ΄ΠΈΡΠ΅ΡΡΠΊΠΈ ΠΏΡΠΎΡΠ΅Ρ, ΠΈΠ·Π³Π»Π΅Π΄Π° Π΄Π° Π²Π΅Ρ ΠΏΠΎΡΡΠΎΡΠΈ ΡΠ΅Π², Π°Π»ΠΈ ΡΠΎΡ ΡΠ²Π΅ΠΊ Π½Π΅ΠΌΠ° ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΠ°:
PID command
15771 bash
lrwx------ 1 user user 64 Oct 7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:42 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:42 255 -> /dev/pts/21
ΠΠ°ΡΠΈΠΌ ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ·ΠΈΠ²
PID command
15771 bash
lrwx------ 1 user user 64 Oct 7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:42 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:42 255 -> /dev/pts/21
PID command
9004 bash
lrwx------ 1 user user 64 Oct 7 15:57 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 255 -> /dev/pts/21
PID command
9005 bash
lrwx------ 1 user user 64 Oct 7 15:57 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 255 -> /dev/pts/21
ΠΠ΅ Π·Π°Π±ΠΎΡΠ°Π²ΠΈΡΠ΅ Π΄Π° ΠΊΠ»ΠΎΠ½ ΠΊΠ»ΠΎΠ½ΠΈΡΠ° ΠΏΡΠΎΡΠ΅Ρ Π·Π°ΡΠ΅Π΄Π½ΠΎ ΡΠ° ΡΠ²ΠΈΠΌ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈΠΌΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ΅ ΠΎΠ½ΠΈ Π±ΠΈΡΠΈ ΠΈΡΡΠΈ Ρ Π½Π°Π΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΈ ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΠΎΡΠ°ΠΎ ΡΠΎΠ΄ΠΈΡΠ΅ΡΡΠΊΠΎΠ³ ΠΏΡΠΎΡΠ΅ΡΠ° ΡΠ° ΠΠΠ-ΠΎΠΌ 15771 ΡΠ΅ Π΄Π° Π½Π°Π΄Π³Π»Π΅Π΄Π° ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½Π΅ ΠΏΡΠΎΡΠ΅ΡΠ΅, ΡΠ°ΠΊΠΎ Π΄Π° ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ΠΊΠ° ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ Π΄Π΅ΡΠ΅.
ΠΠ±ΠΎΠ³ ΡΠΎΠ³Π° ΠΌΡ Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π½Π° ΡΠ΅Π² ΠΈ Π·Π°ΡΠ²Π°ΡΠ° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ΄ Π±ΡΠΎΡΠ΅ΠΌ 3 ΠΈ 4.
Π£ ΠΏΡΠ²ΠΎΠΌ Π±Π°ΡΡ
ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ° ΠΠΠ-ΠΎΠΌ 9004, ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ·ΠΈΠ²
Π£ Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ° ΠΠΠ 9005, Π±Π°ΡΡ ΠΊΠΎΡΠΈΡΡΠΈ Π΄ΡΠΏ2 Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π‘Π’ΠΠΠ Π±ΡΠΎΡ 0. Π‘Π°Π΄Π° ΡΠ΅ ΡΠ²Π΅ ΡΡΠΎ ΡΠ΅ Π½Π°Ρ Π΄ΡΡΠ³ΠΈ Π±Π°ΡΡ ΡΠ° ΠΠΠ 9005 ΠΏΡΠΎΡΠΈΡΠ°ΡΠΈ Π±ΠΈΡΠΈ ΠΏΡΠΎΡΠΈΡΠ°Π½ΠΎ ΠΈΠ· ΡΠ΅Π²ΠΈ.
ΠΠ°ΠΊΠΎΠ½ ΡΠΎΠ³Π°, Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ ΡΠ°ΡΠ»ΠΎΠ²Π° ΠΏΠΎΠ΄ Π±ΡΠΎΡΠ΅Π²ΠΈΠΌΠ° 3 ΠΈ 4 ΡΠ΅ ΡΠ°ΠΊΠΎΡΠ΅ Π·Π°ΡΠ²Π°ΡΠ°ΡΡ Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΠΈΠΌΠ°, ΠΏΠΎΡΡΠΎ ΡΠ΅ Π²ΠΈΡΠ΅ Π½Π΅ ΠΊΠΎΡΠΈΡΡΠ΅.
ΠΠ°ΠΌΠ΅ΡΠ½ΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠ΅ΠΌ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ 255; ΠΊΠΎΡΠΈΡΡΠΈ Π³Π° Π·Π° ΠΈΠ½ΡΠ΅ΡΠ½Π΅ ΡΠ²ΡΡ Π΅ ΡΠ°ΠΌ Π±Π°ΡΡ ΠΈ ΡΠ°ΠΊΠΎΡΠ΅ ΡΠ΅ Π±ΠΈΡΠΈ Π·Π°ΡΠ²ΠΎΡΠ΅Π½ Ρ ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΈΠΌ ΠΏΡΠΎΡΠ΅ΡΠΈΠΌΠ°.
ΠΠ°ΡΠΈΠΌ, Ρ ΠΏΡΠ²ΠΎΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ° ΠΠΠ-ΠΎΠΌ 9004, Π±Π°ΡΡ
ΠΏΠΎΡΠΈΡΠ΅ Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ·ΠΈΠ²
Π£ Π΄ΡΡΠ³ΠΎΠΌ ΠΏΠΎΠ΄ΡΠ΅ΡΠ΅Π½ΠΎΠΌ ΠΏΡΠΎΡΠ΅ΡΡ ΡΠ° ΠΠΠ-ΠΎΠΌ 9005, Π±Π°ΡΡ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ Π΄ΡΡΠ³ΠΈ ΠΈΠ·Π²ΡΡΠ½ΠΈ ΡΠ°ΡΠ» ΠΊΠΎΡΠΈ ΡΠΌΠΎ Π½Π°Π²Π΅Π»ΠΈ, Ρ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ /ΡΡΡ/Π±ΠΈΠ½/ΡΠ»Π΅Π΅ΠΏ.
ΠΠΊΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ·ΠΈΠ² Π½Π΅ Π·Π°ΡΠ²Π°ΡΠ° ΡΡΡΠΊΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΎΡΠΈΠΌ Π°ΠΊΠΎ Π½ΠΈΡΡ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΡΠ° Π_Π¦ΠΠΠΠΠ‘ΠΠ¦ Π·Π°ΡΡΠ°Π²ΠΈΡΠΎΠΌ Ρ Π²ΡΠ΅ΠΌΠ΅ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΏΠΎΠ·ΠΈΠ² Π½Π°ΠΏΡΠ°Π²ΡΠ΅Π½. Π£ Π½Π°ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°ΡΡ, Π½Π°ΠΊΠΎΠ½ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΈΠ·Π²ΡΡΠ½ΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°, ΡΠ²ΠΈ ΡΡΠ΅Π½ΡΡΠ½ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ΅ Π±ΠΈΡΠΈ ΡΠ°ΡΡΠ²Π°Π½ΠΈ.
ΠΡΠΎΠ²Π΅ΡΠΈΡΠ΅ Ρ ΠΊΠΎΠ½Π·ΠΎΠ»ΠΈ:
[user@localhost ]$ pgrep -P 15771
9004
9005
[user@localhost ]$ ls -lah /proc/15771/fd/
total 0
dr-x------ 2 user user 0 Oct 7 15:42 .
dr-xr-xr-x 9 user user 0 Oct 7 15:42 ..
lrwx------ 1 user user 64 Oct 7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 255 -> /dev/pts/21
[user@localhost ]$ ls -lah /proc/9004/fd
total 0
dr-x------ 2 user user 0 Oct 7 15:57 .
dr-xr-xr-x 9 user user 0 Oct 7 15:57 ..
lrwx------ 1 user user 64 Oct 7 15:57 0 -> /dev/pts/21
l-wx------ 1 user user 64 Oct 7 15:57 1 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 2 -> /dev/pts/21
lr-x------ 1 user user 64 Oct 7 15:57 3 -> /dev/zero
[user@localhost ]$ ls -lah /proc/9005/fd
total 0
dr-x------ 2 user user 0 Oct 7 15:57 .
dr-xr-xr-x 9 user user 0 Oct 7 15:57 ..
lr-x------ 1 user user 64 Oct 7 15:57 0 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 2 -> /dev/pts/21
[user@localhost ]$ ps -up 9004
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user 9004 0.0 0.0 107972 620 pts/21 S+ 15:57 0:00 cat /dev/zero
[user@localhost ]$ ps -up 9005
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
user 9005 0.0 0.0 107952 360 pts/21 S+ 15:57 0:00 sleep 10000
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΡΠ΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈ Π±ΡΠΎΡ Π½Π°ΡΠ΅ ΡΠ΅Π²ΠΈ ΡΠ΅ ΠΈΡΡΠΈ Ρ ΠΎΠ±Π° ΠΏΡΠΎΡΠ΅ΡΠ°. Π’Π°ΠΊΠΎ ΠΈΠΌΠ°ΠΌΠΎ Π²Π΅Π·Ρ ΠΈΠ·ΠΌΠ΅ΡΡ Π΄Π²Π° ΡΠ°Π·Π»ΠΈΡΠΈΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ° ΡΠ° ΠΈΡΡΠΈΠΌ ΡΠΎΠ΄ΠΈΡΠ΅ΡΠ΅ΠΌ.
ΠΠ° ΠΎΠ½Π΅ ΠΊΠΎΡΠΈ Π½ΠΈΡΡ ΡΠΏΠΎΠ·Π½Π°ΡΠΈ ΡΠ° ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈΠΌ ΠΏΠΎΠ·ΠΈΠ²ΠΈΠΌΠ° ΠΊΠΎΡΠ΅ Π±Π°ΡΡ ΠΊΠΎΡΠΈΡΡΠΈ, ΡΠΎΠΏΠ»ΠΎ ΠΏΡΠ΅ΠΏΠΎΡΡΡΡΡΠ΅ΠΌ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π΅ ΠΊΡΠΎΠ· ΡΡΡΠ°ΡΠ΅ ΠΈ Π²ΠΈΠ΄ΠΈΡΠ΅ ΡΡΠ° ΡΠ΅ Π΄Π΅ΡΠ°Π²Π° ΠΈΠ½ΡΠ΅ΡΠ½ΠΎ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ²Π°ΠΊΠΎ:
strace -s 1024 -f bash -c "ls | grep hello"
ΠΡΠ°ΡΠΈΠΌΠΎ ΡΠ΅ Π½Π° Π½Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΏΠΎΠ½Π΅ΡΡΠ°ΡΠ°ΡΠ° ΠΏΡΠΎΡΡΠΎΡΠ° Π½Π° Π΄ΠΈΡΠΊΡ ΠΈ ΠΏΠΎΠΊΡΡΠ°ΡΠ° Π΄Π° ΡΠ°ΡΡΠ²Π°ΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Π±Π΅Π· ΠΏΠΎΠ½ΠΎΠ²Π½ΠΎΠ³ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ°. Π₯Π°ΡΠ΄Π΅ Π΄Π° Π½Π°ΠΏΠΈΡΠ΅ΠΌΠΎ ΠΌΠ°Π»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΠΈΡΠ°ΡΠΈ ΠΏΡΠΈΠ±Π»ΠΈΠΆΠ½ΠΎ 1 ΠΌΠ΅Π³Π°Π±Π°ΡΡ Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ Π½Π° Π΄ΠΈΡΠΊ. Π¨ΡΠ°Π²ΠΈΡΠ΅, Π°ΠΊΠΎ ΠΈΠ· Π½Π΅ΠΊΠΎΠ³ ΡΠ°Π·Π»ΠΎΠ³Π° Π½ΠΈΡΠΌΠΎ Π±ΠΈΠ»ΠΈ Ρ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ Π΄Π° Π·Π°ΠΏΠΈΡΠ΅ΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Π½Π° Π΄ΠΈΡΠΊ, ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½ΠΎ ΡΠ΅ΠΌΠΎ ΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΠ°ΡΠΈ ΠΈ ΠΏΠΎΠΊΡΡΠ°ΡΠΈ ΠΏΠΎΠ½ΠΎΠ²ΠΎ Π΄Π° Π·Π°ΠΏΠΈΡΠ΅ΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Ρ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ. Π£ ΠΏΡΠΈΠΌΠ΅ΡΡ ΠΊΠΎΡΠΈ ΠΊΠΎΡΠΈΡΡΠΈΠΌ ΠΠΈΡΡ ΠΎΠ½, ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ Π±ΠΈΠ»ΠΎ ΠΊΠΎΡΠΈ Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈ ΡΠ΅Π·ΠΈΠΊ.
[user@localhost ]$ cat openforwrite.py
import datetime
import time
mystr="a"*1024*1024+"n"
with open("123.txt", "w") as f:
while True:
try:
f.write(str(datetime.datetime.now()))
f.write(mystr)
f.flush()
time.sleep(1)
except:
pass
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΠ΅Π½Π΅ΠΌΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌ ΠΈ ΠΏΠΎΠ³Π»Π΅Π΄Π°ΠΌΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°
[user@localhost ]$ python openforwrite.py &
[1] 3762
[user@localhost ]$ ps axuf | grep [o]penforwrite
user 3762 0.0 0.0 128600 5744 pts/22 S+ 16:28 0:00 | _ python openforwrite.py
[user@localhost ]$ ls -la /proc/3762/fd
total 0
dr-x------ 2 user user 0 Oct 7 16:29 .
dr-xr-xr-x 9 user user 0 Oct 7 16:29 ..
lrwx------ 1 user user 64 Oct 7 16:29 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 7 16:29 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 7 16:29 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 7 16:29 3 -> /home/user/123.txt
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΈΠΌΠ°ΠΌΠΎ Π½Π°ΡΠ° 3 ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½Π° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΠΈ ΡΠΎΡ ΡΠ΅Π΄Π°Π½ ΠΊΠΎΡΠΈ ΡΠΌΠΎ ΠΎΡΠ²ΠΎΡΠΈΠ»ΠΈ. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅:
[user@localhost ]$ ls -lah 123.txt
-rw-rw-r-- 1 user user 117M Oct 7 16:30 123.txt
ΠΠΎΠ΄Π°ΡΠΈ ΡΠ΅ ΠΏΠΈΡΡ, ΠΏΠΎΠΊΡΡΠ°Π²Π°ΠΌΠΎ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΠΌΠΎ Π΄ΠΎΠ·Π²ΠΎΠ»Π΅ Π·Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΡ:
[user@localhost ]$ sudo chown root: 123.txt
[user@localhost ]$ ls -lah 123.txt
-rw-rw-r-- 1 root root 168M Oct 7 16:31 123.txt
[user@localhost ]$ ls -lah 123.txt
-rw-rw-r-- 1 root root 172M Oct 7 16:31 123.txt
ΠΠΈΠ΄ΠΈΠΌΠΎ Π΄Π° ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΈ ΠΈ Π΄Π°ΡΠ΅ ΠΏΠΈΡΡ, ΠΈΠ°ΠΊΠΎ Π½Π°Ρ ΠΊΠΎΡΠΈΡΠ½ΠΈΠΊ Π½Π΅ΠΌΠ° Π΄ΠΎΠ·Π²ΠΎΠ»Ρ Π·Π° ΠΏΠΈΡΠ°ΡΠ΅ Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ. Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΡΠ°ΠΌΠΎ Π΄Π° Π³Π° ΡΠΊΠ»ΠΎΠ½ΠΈΠΌΠΎ:
[user@localhost ]$ sudo rm 123.txt
[user@localhost ]$ ls 123.txt
ls: cannot access 123.txt: No such file or directory
ΠΠ΄Π΅ ΡΡ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ ΠΏΠΎΠ΄Π°ΡΠΈ? Π Π΄Π° Π»ΠΈ ΡΡ ΡΠΎΠΏΡΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½Π΅? ΠΡΠΎΠ²Π΅ΡΠ°Π²Π°ΠΌΠΎ:
[user@localhost ]$ ls -la /proc/3762/fd
total 0
dr-x------ 2 user user 0 Oct 7 16:29 .
dr-xr-xr-x 9 user user 0 Oct 7 16:29 ..
lrwx------ 1 user user 64 Oct 7 16:29 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 7 16:29 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 7 16:29 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 7 16:29 3 -> /home/user/123.txt (deleted)
ΠΠ°, Π½Π°Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠΎΡ ΡΠ²Π΅ΠΊ ΠΏΠΎΡΡΠΎΡΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡΡΠ΅ΡΠΈΡΠ°ΠΌΠΎ ΠΎΠ²Π°Ρ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΠΊΠ°ΠΎ Π½Π°ΡΡ ΡΡΠ°ΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ, ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡΠ΅ ΡΠΈΡΠ°ΠΌΠΎ, ΠΎΠ±ΡΠΈΡΠ΅ΠΌΠΎ ΠΈ ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠΎ.
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅:
[user@localhost ]$ lsof | grep 123.txt
python 31083 user 3w REG 8,5 19923457 2621522 /home/user/123.txt
ΠΠ΅Π»ΠΈΡΠΈΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ 19923457. ΠΠΎΠΊΡΡΠ°ΡΠΌΠΎ Π΄Π° ΠΎΠ±ΡΠΈΡΠ΅ΠΌΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ:
[user@localhost ]$ truncate -s 0 /proc/31083/fd/3
[user@localhost ]$ lsof | grep 123.txt
python 31083 user 3w REG 8,5 136318390 2621522 /home/user/123.txt
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, Π²Π΅Π»ΠΈΡΠΈΠ½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ΅ ΡΠ°ΠΌΠΎ ΠΏΠΎΠ²Π΅ΡΠ°Π²Π° ΠΈ Π½Π°Ρ ΠΏΡΡΡΠ°ΠΆΠ½ΠΈΠΊ Π½ΠΈΡΠ΅ ΡΠ°Π΄ΠΈΠΎ. ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΎΠ³ ΠΏΠΎΠ·ΠΈΠ²Π°
with open("123.txt", "w") as f:
ΠΌΠΎΡΠ°ΠΌΠΎ ΡΡΠ°Π²ΠΈΡΠΈ
with open("123.txt", "a") as f:
ΠΡΠΎΠ²Π΅ΡΠ° ΡΠ° βΠ²β Π·Π°ΡΡΠ°Π²ΠΈΡΠΎΠΌ
[user@localhost ]$ strace -e trace=open python openforwrite.py 2>&1| grep 123.txt
open("123.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
ΠΈ ΡΠ° Π·Π°ΡΡΠ°Π²ΠΎΠΌ βΠ°β.
[user@localhost ]$ strace -e trace=open python openforwrite.py 2>&1| grep 123.txt
open("123.txt", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
ΠΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΡΠ΅ Π²Π΅Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΠΎΠ³ ΠΏΡΠΎΡΠ΅ΡΠ°
Π§Π΅ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ΡΠΈ, ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΡΠ΅ΠΈΡΠ°ΡΠ° ΠΈ ΡΠ΅ΡΡΠΈΡΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, ΠΊΠΎΡΠΈΡΡΠ΅ Π΄Π΅Π±Π°Π³Π΅ΡΠ΅ (Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ ΠΠΠ) ΠΈΠ»ΠΈ ΡΠ°Π·Π»ΠΈΡΠΈΡΠ΅ Π½ΠΈΠ²ΠΎΠ΅ ΠΏΡΠΈΡΠ°Π²ΡΠΈΠ²Π°ΡΠ° Ρ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ. ΠΠΈΠ½ΡΠΊ ΠΏΡΡΠΆΠ° ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡ ΡΡΠ²Π°ΡΠ½ΠΎΠ³ ΠΏΠΈΡΠ°ΡΠ° ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° ΠΊΠΎΡΠΈ ΡΠ΅ Π²Π΅Ρ ΠΏΠΎΠΊΡΠ΅Π½ΡΡ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΠΌΠ΅Π½Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ , ΠΏΠΎΡΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠ°ΡΠΊΠ΅ ΠΏΡΠ΅ΠΊΠΈΠ΄Π°, ΠΈΡΠ΄., ΠΈΡΠ΄.
ΠΡΠ°ΡΠ°ΡΡΡΠΈ ΡΠ΅ Π½Π° ΠΏΡΠ²ΠΎΠ±ΠΈΡΠ½ΠΎ ΠΏΠΈΡΠ°ΡΠ΅ ΠΎ Π½Π΅Π΄ΠΎΠ²ΠΎΡΠ½ΠΎ ΠΏΡΠΎΡΡΠΎΡΠ° Π½Π° Π΄ΠΈΡΠΊΡ Π·Π° ΠΏΠΈΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΡΠ°ΠΌΠΎ Π΄Π° ΡΠΈΠΌΡΠ»ΠΈΡΠ°ΠΌΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π·Π° Π½Π°ΡΡ ΠΏΠ°ΡΡΠΈΡΠΈΡΡ, ΠΊΠΎΡΡ ΡΠ΅ΠΌΠΎ ΠΌΠΎΠ½ΡΠΈΡΠ°ΡΠΈ ΠΊΠ°ΠΎ ΠΏΠΎΡΠ΅Π±Π°Π½ Π΄ΠΈΡΠΊ:
[user@localhost ~]$ dd if=/dev/zero of=~/tempfile_for_article.dd bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00525929 s, 2.0 GB/s
[user@localhost ~]$
Π₯Π°ΡΠ΄Π΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌΠΎ ΡΠΈΡΡΠ΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°:
[user@localhost ~]$ mkfs.ext4 ~/tempfile_for_article.dd
mke2fs 1.42.9 (28-Dec-2013)
/home/user/tempfile_for_article.dd is not a block special device.
Proceed anyway? (y,n) y
...
Writing superblocks and filesystem accounting information: done
[user@localhost ~]$
ΠΠΎΠ½ΡΠΈΡΠ°ΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°:
[user@localhost ~]$ sudo mount ~/tempfile_for_article.dd /mnt/
[sudo] password for user:
[user@localhost ~]$ df -h | grep mnt
/dev/loop0 8.7M 172K 7.9M 3% /mnt
ΠΡΠ°Π²ΠΈΠΌΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡΡΠΌ ΡΠ° Π½Π°ΡΠΈΠΌ Π²Π»Π°ΡΠ½ΠΈΠΊΠΎΠΌ:
[user@localhost ~]$ sudo mkdir /mnt/logs
[user@localhost ~]$ sudo chown user: /mnt/logs
ΠΡΠ²ΠΎΡΠΈΠΌΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π·Π° ΠΏΠΈΡΠ°ΡΠ΅ ΡΠ°ΠΌΠΎ Ρ Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΡ:
with open("/mnt/logs/123.txt", "w") as f:
ΠΠ°Π½ΡΠΈΡΠ°ΡΠ΅
[user@localhost ]$ python openforwrite.py
Π§Π΅ΠΊΠ°ΠΌΠΎ Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ ΡΠ΅ΠΊΡΠ½Π΄ΠΈ
[user@localhost ~]$ df -h | grep mnt
/dev/loop0 8.7M 8.0M 0 100% /mnt
ΠΠ°ΠΊΠ»Π΅, ΠΈΠΌΠ°ΠΌΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΎΠΏΠΈΡΠ°Π½ Π½Π° ΠΏΠΎΡΠ΅ΡΠΊΡ ΠΎΠ²ΠΎΠ³ ΡΠ»Π°Π½ΠΊΠ°. Π‘Π»ΠΎΠ±ΠΎΠ΄Π½ΠΈ ΠΏΡΠΎΡΡΠΎΡ 0, 100% Π·Π°ΡΠ·Π΅ΡΠΎ.
Π‘Π΅ΡΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΡΠ΅ ΠΏΡΠ΅ΠΌΠ° ΡΡΠ»ΠΎΠ²ΠΈΠΌΠ° Π·Π°Π΄Π°ΡΠΊΠ° ΡΡΡΠ΄ΠΈΠΌΠΎ Π΄Π° Π·Π°Π±Π΅Π»Π΅ΠΆΠΈΠΌΠΎ Π²Π΅ΠΎΠΌΠ° Π²Π°ΠΆΠ½Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΊΠΎΡΠΈ ΡΠ΅ Π½Π΅ ΠΌΠΎΠ³Ρ ΠΈΠ·Π³ΡΠ±ΠΈΡΠΈ. Π Ρ ΠΈΡΡΠΎ Π²ΡΠ΅ΠΌΠ΅, ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΠΏΠΎΠΏΡΠ°Π²ΠΈΠΌΠΎ ΡΡΠ»ΡΠ³Ρ Π±Π΅Π· ΠΏΠΎΠ½ΠΎΠ²Π½ΠΎΠ³ ΠΏΠΎΠΊΡΠ΅ΡΠ°ΡΠ° ΠΏΡΠΎΡΠ΅ΡΠ°.
Π Π΅ΡΠΈΠΌΠΎ Π΄Π° ΡΠΎΡ ΡΠ²Π΅ΠΊ ΠΈΠΌΠ°ΠΌΠΎ ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΡ, Π°Π»ΠΈ Π½Π° Π΄ΡΡΠ³ΠΎΡ ΠΏΠ°ΡΡΠΈΡΠΈΡΠΈ, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Ρ /Ρ ΠΎΠΌΠ΅.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΏΠΎΠΊΡΡΠ°ΠΌΠΎ Π΄Π° "ΡΠ΅ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°ΠΌΠΎ Ρ Ρ ΠΎΠ΄Ρ" Π½Π°Ρ ΠΊΠΎΠ΄.
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ ΠΠΠ Π½Π°ΡΠ΅Π³ ΠΏΡΠΎΡΠ΅ΡΠ°, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΏΠΎΡΠ΅ΠΎ ΡΠ°Π² ΠΏΡΠΎΡΡΠΎΡ Π½Π° Π΄ΠΈΡΠΊΡ:
[user@localhost ~]$ ps axuf | grep [o]penfor
user 10078 27.2 0.0 128600 5744 pts/22 R+ 11:06 0:02 | _ python openforwrite.py
ΠΠΎΠ²Π΅ΠΆΠΈΡΠ΅ ΡΠ΅ ΡΠ° ΠΏΡΠΎΡΠ΅ΡΠΎΠΌ ΠΏΡΠ΅ΠΊΠΎ Π³Π΄Π±-Π°
[user@localhost ~]$ gdb -p 10078
...
(gdb)
ΠΠΎΠ³Π»Π΅Π΄Π°ΡΠΌΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ΅ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ°:
(gdb) shell ls -lah /proc/10078/fd/
total 0
dr-x------ 2 user user 0 Oct 8 11:06 .
dr-xr-xr-x 9 user user 0 Oct 8 11:06 ..
lrwx------ 1 user user 64 Oct 8 11:09 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:09 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:06 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 8 11:09 3 -> /mnt/logs/123.txt
ΠΠ»Π΅Π΄Π°ΠΌΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π±ΡΠΎΡ 3, ΠΊΠΎΡΠ΅ Π½Π°Ρ Π·Π°Π½ΠΈΠΌΠ°ΡΡ
(gdb) shell cat /proc/10078/fdinfo/3
pos: 8189952
flags: 0100001
mnt_id: 482
ΠΠΌΠ°ΡΡΡΠΈ Π½Π° ΡΠΌΡ ΠΊΠΎΡΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ·ΠΈΠ² ΠΠΈΡΡ
ΠΎΠ½ ΠΏΡΠ°Π²ΠΈ (ΠΏΠΎΠ³Π»Π΅Π΄Π°ΡΡΠ΅ Π³ΠΎΡΠ΅ Π³Π΄Π΅ ΡΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΠ»ΠΈ ΡΡΡΠ°ΡΠ΅ ΠΈ ΠΏΡΠΎΠ½Π°ΡΠ»ΠΈ ΠΎΡΠ²ΠΎΡΠ΅Π½ΠΈ ΠΏΠΎΠ·ΠΈΠ²), ΠΊΠ°Π΄Π° ΠΎΠ±ΡΠ°ΡΡΡΠ΅ΠΌΠΎ Π½Π°Ρ ΠΊΠΎΠ΄ Π·Π° ΠΎΡΠ²Π°ΡΠ°ΡΠ΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅, ΠΌΠΈ ΡΠ°ΠΌΠΈ ΡΠ°Π΄ΠΈΠΌΠΎ ΠΈΡΡΠΎ Ρ ΠΈΠΌΠ΅ Π½Π°ΡΠ΅Π³ ΠΏΡΠΎΡΠ΅ΡΠ°, Π°Π»ΠΈ Π½Π°ΠΌ ΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½ Π_ΠΠ ΠΠΠΠ|Π_Π¦Π ΠΠΠ’| Π_Π’Π Π£ΠΠ¦ Π±ΠΈΡΠΎΠ²ΠΈ ΡΠ΅ Π·Π°ΠΌΠ΅ΡΡΡΡ Π½ΡΠΌΠ΅ΡΠΈΡΠΊΠΎΠΌ Π²ΡΠ΅Π΄Π½ΠΎΡΡΡ. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠΎ ΡΡΠ°Π΄ΠΈΠ»ΠΈ, ΠΎΡΠ²ΠΎΡΠΈΡΠ΅ ΠΈΠ·Π²ΠΎΡΠ΅ ΡΠ΅Π·Π³ΡΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ
#Π΄Π΅ΡΠΈΠ½Π΅ Π_ΠΠ ΠΠΠΠ 00000001
#Π΄Π΅ΡΠΈΠ½Π΅ Π_Π¦Π ΠΠΠ’ 00000100
#Π΄Π΅ΡΠΈΠ½Π΅ Π_Π’Π Π£ΠΠ¦ 00001000
ΠΠΎΠΌΠ±ΠΈΠ½ΡΡΠ΅ΠΌΠΎ ΡΠ²Π΅ Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Ρ ΡΠ΅Π΄Π½Ρ, Π΄ΠΎΠ±ΠΈΡΠ°ΠΌΠΎ 00001101
ΠΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ ΠΏΠΎΠ·ΠΈΠ² ΠΈΠ· Π³Π΄Π±-Π°
(gdb) call open("/home/user/123.txt", 00001101,0666)
$1 = 4
ΠΠ°ΠΊΠ»Π΅, Π΄ΠΎΠ±ΠΈΠ»ΠΈ ΡΠΌΠΎ Π½ΠΎΠ²ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ ΡΠ° Π±ΡΠΎΡΠ΅ΠΌ 4 ΠΈ Π½ΠΎΠ²Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π½Π° Π΄ΡΡΠ³ΠΎΡ ΠΏΠ°ΡΡΠΈΡΠΈΡΠΈ, ΠΏΡΠΎΠ²Π΅ΡΠ°Π²Π°ΠΌΠΎ:
(gdb) shell ls -lah /proc/10078/fd/
total 0
dr-x------ 2 user user 0 Oct 8 11:06 .
dr-xr-xr-x 9 user user 0 Oct 8 11:06 ..
lrwx------ 1 user user 64 Oct 8 11:09 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:09 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:06 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 8 11:09 3 -> /mnt/logs/123.txt
l-wx------ 1 user user 64 Oct 8 11:15 4 -> /home/user/123.txt
Π‘Π΅ΡΠΈΠΌΠΎ ΡΠ΅ ΠΏΡΠΈΠΌΠ΅ΡΠ° ΡΠ° ΠΏΠΈΠΏΠ΅ β ΠΊΠ°ΠΊΠΎ Π±Π°ΡΡ ΠΌΠ΅ΡΠ° Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠ΅ ΡΠ°ΡΠ»ΠΎΠ²Π°, Π° Π²Π΅Ρ ΡΠΌΠΎ Π½Π°ΡΡΠΈΠ»ΠΈ ΡΠΈΡΡΠ΅ΠΌΡΠΊΠΈ ΠΏΠΎΠ·ΠΈΠ² Π΄ΡΠΏ2.
ΠΠΎΠΊΡΡΠ°Π²Π°ΠΌΠΎ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎ ΡΠ΅Π΄Π°Π½ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ Π΄ΡΡΠ³ΠΈΠΌ
(gdb) call dup2(4,3)
$2 = 3
ΠΡΠΎΠ²Π΅ΡΠ°Π²Π°ΠΌΠΎ:
(gdb) shell ls -lah /proc/10078/fd/
total 0
dr-x------ 2 user user 0 Oct 8 11:06 .
dr-xr-xr-x 9 user user 0 Oct 8 11:06 ..
lrwx------ 1 user user 64 Oct 8 11:09 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:09 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:06 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 8 11:09 3 -> /home/user/123.txt
l-wx------ 1 user user 64 Oct 8 11:15 4 -> /home/user/123.txt
ΠΠ°ΡΠ²Π°ΡΠ°ΠΌΠΎ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅ 4, ΠΏΠΎΡΡΠΎ Π½Π°ΠΌ Π½ΠΈΡΠ΅ ΠΏΠΎΡΡΠ΅Π±Π°Π½:
(gdb) call close (4)
$1 = 0
Π ΠΈΠ·Π°ΡΠΈΡΠ΅ ΠΈΠ· Π³Π΄Π±-Π°
(gdb) quit
A debugging session is active.
Inferior 1 [process 10078] will be detached.
Quit anyway? (y or n) y
Detaching from program: /usr/bin/python2.7, process 10078
ΠΡΠΎΠ²Π΅ΡΠ° Π½ΠΎΠ²Π΅ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ΅:
[user@localhost ~]$ ls -lah /home/user/123.txt
-rw-rw-r-- 1 user user 5.1M Oct 8 11:18 /home/user/123.txt
[user@localhost ~]$ ls -lah /home/user/123.txt
-rw-rw-r-- 1 user user 7.1M Oct 8 11:18 /home/user/123.txt
ΠΠ°ΠΎ ΡΡΠΎ Π²ΠΈΠ΄ΠΈΡΠ΅, ΠΏΠΎΠ΄Π°ΡΠΈ ΡΡ ΡΠΏΠΈΡΠ°Π½ΠΈ Ρ Π½ΠΎΠ²Ρ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ, Ρ Π°ΡΠ΄Π΅ Π΄Π° ΠΏΡΠΎΠ²Π΅ΡΠΈΠΌΠΎ ΡΡΠ°ΡΡ:
[user@localhost ~]$ ls -lah /mnt/logs/123.txt
-rw-rw-r-- 1 user user 7.9M Oct 8 11:08 /mnt/logs/123.txt
ΠΠΎΠ΄Π°ΡΠΈ ΡΠ΅ Π½Π΅ Π³ΡΠ±Π΅, Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΠ° ΡΠ°Π΄ΠΈ, Π΄Π½Π΅Π²Π½ΠΈΡΠΈ ΡΠ΅ ΡΠΏΠΈΡΡΡΡ Π½Π° Π½ΠΎΠ²Ρ Π»ΠΎΠΊΠ°ΡΠΈΡΡ.
Π₯Π°ΡΠ΄Π΅ Π΄Π° ΠΌΠ°Π»ΠΎ Π·Π°ΠΊΠΎΠΌΠΏΠ»ΠΈΠΊΡΡΠ΅ΠΌΠΎ Π·Π°Π΄Π°ΡΠ°ΠΊ
ΠΠ°ΠΌΠΈΡΠ»ΠΈΠΌΠΎ Π΄Π° ΡΡ Π½Π°ΠΌ ΠΏΠΎΠ΄Π°ΡΠΈ Π²Π°ΠΆΠ½ΠΈ, Π°Π»ΠΈ Π½Π΅ΠΌΠ°ΠΌΠΎ ΠΏΡΠΎΡΡΠΎΡΠ° Π½Π° Π΄ΠΈΡΠΊΡ Π½ΠΈ Π½Π° ΡΠ΅Π΄Π½ΠΎΡ ΠΏΠ°ΡΡΠΈΡΠΈΡΠΈ ΠΈ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΠΏΠΎΠ²Π΅ΠΆΠ΅ΠΌΠΎ Π΄ΠΈΡΠΊ.
ΠΠ½ΠΎ ΡΡΠΎ ΠΌΠΎΠΆΠ΅ΠΌΠΎ Π΄Π° ΡΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠΈΠΌΠΎ ΡΠ²ΠΎΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Π½Π΅Π³Π΄Π΅, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π½Π° ΡΠ΅Π², ΠΈ Π·Π°ΡΠ·Π²ΡΠ°Ρ ΠΏΡΠ΅ΡΡΠΌΠ΅ΡΠΈΠΌΠΎ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΈΠ· ΡΠ΅Π²ΠΈ Ρ ΠΌΡΠ΅ΠΆΡ ΠΏΡΠ΅ΠΊΠΎ Π½Π΅ΠΊΠΎΠ³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°, Π½Π° ΠΏΡΠΈΠΌΠ΅Ρ Π½Π΅ΡΡΠ°Ρ.
ΠΠΎΠΆΠ΅ΠΌΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ ΡΠ΅Π² ΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΌ ΠΌΠΊΡΠΈΡΠΎ. ΠΠ½ ΡΠ΅ ΠΊΡΠ΅ΠΈΡΠ°ΡΠΈ ΠΏΡΠ΅ΡΠ΄ΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΡ Π½Π° ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ°ΠΊ ΠΈ Π°ΠΊΠΎ Π½Π° ΡΠΎΡ Π½Π΅ΠΌΠ° ΡΠ»ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ ΠΏΡΠΎΡΡΠΎΡΠ°.
ΠΠΎΠ½ΠΎΠ²ΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΠ΅:
[user@localhost ]$ python openforwrite.py
[user@localhost ~]$ ps axuf | grep [o]pen
user 5946 72.9 0.0 128600 5744 pts/22 R+ 11:27 0:20 | _ python openforwrite.py
[user@localhost ~]$ ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user 0 Oct 8 11:27 .
dr-xr-xr-x 9 user user 0 Oct 8 11:27 ..
lrwx------ 1 user user 64 Oct 8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 8 11:28 3 -> /mnt/logs/123.txt
[user@localhost ~]$ df -h | grep mnt
/dev/loop0 8.7M 8.0M 0 100% /mnt
ΠΠ΅ΠΌΠ° ΠΏΡΠΎΡΡΠΎΡΠ° Π½Π° Π΄ΠΈΡΠΊΡ, Π°Π»ΠΈ ΡΠ°ΠΌΠΎ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΊΡΠ΅ΠΈΡΠ°ΠΌΠΎ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ ΡΠ΅Π²:
[user@localhost ~]$ mkfifo /mnt/logs/megapipe
[user@localhost ~]$ ls -lah /mnt/logs/megapipe
prw-rw-r-- 1 user user 0 Oct 8 11:28 /mnt/logs/megapipe
Π‘Π°Π΄Π° ΠΌΠΎΡΠ°ΠΌΠΎ Π½Π΅ΠΊΠ°ΠΊΠΎ Π΄Π° ΡΠΌΠΎΡΠ°ΠΌΠΎ ΡΠ²Π΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ ΠΊΠΎΡΠΈ ΠΈΠ΄Ρ Ρ ΠΎΠ²Ρ ΡΠ΅Π² Π½Π° Π΄ΡΡΠ³ΠΈ ΡΠ΅ΡΠ²Π΅Ρ ΠΏΡΠ΅ΠΊΠΎ ΠΌΡΠ΅ΠΆΠ΅; ΠΈΡΡΠΈ Π½Π΅ΡΡΠ°Ρ ΡΠ΅ ΠΏΠΎΠ³ΠΎΠ΄Π°Π½ Π·Π° ΠΎΠ²ΠΎ.
ΠΠ° ΡΠ΅ΡΠ²Π΅ΡΡ ΡΠ΅ΠΌΠΎΡΠ΅-ΡΠ΅ΡΠ²Π΅Ρ.Π΅ΠΊΠ°ΠΌΠΏΠ»Π΅.ΡΠΎΠΌ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ
[user@localhost ~]$ nc -l 7777 > 123.txt
ΠΠ° Π½Π°ΡΠ΅ΠΌ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΡΠ½ΠΎΠΌ ΡΠ΅ΡΠ²Π΅ΡΡ ΠΏΠΎΠΊΡΠ΅ΡΠ΅ΠΌΠΎ Ρ ΠΏΠΎΡΠ΅Π±Π½ΠΎΠΌ ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Ρ
[user@localhost ~]$ nc remote-server.example.com 7777 < /mnt/logs/megapipe
Π‘Π°Π΄Π° ΡΠ΅ ΡΠ²ΠΈ ΠΏΠΎΠ΄Π°ΡΠΈ ΠΊΠΎΡΠΈ Π·Π°Π²ΡΡΠ΅ Ρ ΡΠ΅Π²ΠΈ Π°ΡΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΠΈΡΠΈ Ρ ΡΡΠ΄ΠΈΠ½ Ρ Π½Π΅ΡΡΠ°Ρ-Ρ, ΠΊΠΎΡΠΈ ΡΠ΅ ΠΈΡ ΠΏΠΎΡΠ»Π°ΡΠΈ Ρ ΠΌΡΠ΅ΠΆΡ Π½Π° ΠΏΠΎΡΡΡ 7777.
Π‘Π²Π΅ ΡΡΠΎ ΡΡΠ΅Π±Π° Π΄Π° ΡΡΠ°Π΄ΠΈΠΌΠΎ ΡΠ΅ Π΄Π° ΠΏΠΎΡΠ½Π΅ΠΌΠΎ Π΄Π° ΡΠΏΠΈΡΡΡΠ΅ΠΌΠΎ Π½Π°ΡΠ΅ ΠΏΠΎΠ΄Π°ΡΠΊΠ΅ Ρ ΠΎΠ²Ρ ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Ρ ΡΠ΅Π².
ΠΠ΅Ρ ΠΈΠΌΠ°ΠΌΠΎ ΠΏΠΎΠΊΡΠ΅Π½ΡΡΡ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΡΡ:
[user@localhost ~]$ ps axuf | grep [o]pen
user 5946 99.8 0.0 128600 5744 pts/22 R+ 11:27 169:27 | _ python openforwrite.py
[user@localhost ~]$ ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user 0 Oct 8 11:27 .
dr-xr-xr-x 9 user user 0 Oct 8 11:27 ..
lrwx------ 1 user user 64 Oct 8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 8 11:28 3 -> /mnt/logs/123.txt
ΠΠ΄ ΡΠ²ΠΈΡ Π·Π°ΡΡΠ°Π²ΠΈΡΠ°, ΠΏΠΎΡΡΠ΅Π±Π½ΠΎ Π½Π°ΠΌ ΡΠ΅ ΡΠ°ΠΌΠΎ Π_ΠΠ ΠΠΠΠ ΠΏΠΎΡΡΠΎ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π²Π΅Ρ ΠΏΠΎΡΡΠΎΡΠΈ ΠΈ Π½Π΅ ΠΌΠΎΡΠ°ΠΌΠΎ Π΄Π° ΡΠ΅ ΠΎΠ±ΡΠΈΡΠ΅ΠΌΠΎ
[user@localhost ~]$ gdb -p 5946
...
(gdb) call open("/mnt/logs/megapipe", 00000001,0666)
$1 = 4
(gdb) shell ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user 0 Oct 8 11:27 .
dr-xr-xr-x 9 user user 0 Oct 8 11:27 ..
lrwx------ 1 user user 64 Oct 8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 8 11:28 3 -> /mnt/logs/123.txt
l-wx------ 1 user user 64 Oct 8 14:20 4 -> /mnt/logs/megapipe
(gdb) call dup2(4,3)
$2 = 3
(gdb) shell ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user 0 Oct 8 11:27 .
dr-xr-xr-x 9 user user 0 Oct 8 11:27 ..
lrwx------ 1 user user 64 Oct 8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 8 11:28 3 -> /mnt/logs/megapipe
l-wx------ 1 user user 64 Oct 8 14:20 4 -> /mnt/logs/megapipe
(gdb) call close(4)
$3 = 0
(gdb) shell ls -lah /proc/5946/fd
total 0
dr-x------ 2 user user 0 Oct 8 11:27 .
dr-xr-xr-x 9 user user 0 Oct 8 11:27 ..
lrwx------ 1 user user 64 Oct 8 11:28 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:28 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 8 11:27 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 8 11:28 3 -> /mnt/logs/megapipe
(gdb) quit
A debugging session is active.
Inferior 1 [process 5946] will be detached.
Quit anyway? (y or n) y
Detaching from program: /usr/bin/python2.7, process 5946
ΠΡΠΎΠ²Π΅ΡΠ° ΡΠ΄Π°ΡΠ΅Π½ΠΎΠ³ ΡΠ΅ΡΠ²Π΅ΡΠ° ΡΠ΅ΠΌΠΎΡΠ΅-ΡΠ΅ΡΠ²Π΅Ρ.Π΅ΠΊΠ°ΠΌΠΏΠ»Π΅.ΡΠΎΠΌ
[user@localhost ~]$ ls -lah 123.txt
-rw-rw-r-- 1 user user 38M Oct 8 14:21 123.txt
ΠΠΎΠ΄Π°ΡΠΈ ΡΡΠΈΠΆΡ, ΠΏΡΠΎΠ²Π΅ΡΠ°Π²Π°ΠΌΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ΡΠ²Π΅ΡΠ°
[user@localhost ~]$ ls -lah /mnt/logs/
total 7.9M
drwxr-xr-x 2 user user 1.0K Oct 8 11:28 .
drwxr-xr-x 4 root root 1.0K Oct 8 10:55 ..
-rw-rw-r-- 1 user user 7.9M Oct 8 14:17 123.txt
prw-rw-r-- 1 user user 0 Oct 8 14:22 megapipe
ΠΠΎΠ΄Π°ΡΠΈ ΡΡ ΡΠ°ΡΡΠ²Π°Π½ΠΈ, ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΡΠ΅ ΡΠ΅ΡΠ΅Π½.
ΠΠΎΡΠΈΡΡΠΈΠΌ ΠΎΠ²Ρ ΠΏΡΠΈΠ»ΠΈΠΊΡ Π΄Π° ΠΏΠΎΠ·Π΄ΡΠ°Π²ΠΈΠΌ ΠΌΠΎΡΠ΅ ΠΊΠΎΠ»Π΅Π³Π΅ ΠΈΠ· ΠΠ΅Π³ΠΈΡΠ°.
Π‘Π»ΡΡΠ°ΡΡΠ΅ Π Π°Π΄ΠΈΠΎ-Π’ ΠΏΠΎΠ΄ΡΠ°ΡΡΠ΅.
Π‘Π²Π΅ Ρ ΡΠ΅Π΄Ρ.
ΠΠ°ΠΎ Π΄ΠΎΠΌΠ°ΡΠΈ Π·Π°Π΄Π°ΡΠ°ΠΊ, ΠΏΡΠ΅Π΄Π»Π°ΠΆΠ΅ΠΌ Π²Π°ΠΌ Π΄Π° ΡΠ°Π·ΠΌΠΈΡΠ»ΠΈΡΠ΅ ΠΎ ΡΠΎΠΌΠ΅ ΡΡΠ° ΡΠ΅ Π±ΠΈΡΠΈ Ρ ΠΏΡΠΎΡΠ΅ΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠ°Ρ ΠΈ ΡΠ»Π΅Π΅ΠΏ Π°ΠΊΠΎ ΠΏΠΎΠΊΡΠ΅Π½Π΅ΡΠ΅ ΡΠ»Π΅Π΄Π΅ΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ:
[user@localhost ~]$ cat /dev/zero 2>/dev/null| sleep 10000
ΠΠ·Π²ΠΎΡ: Π²Π²Π².Ρ Π°Π±Ρ.ΡΠΎΠΌ