αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„ Linux αž‡αžΆαž˜αž½αž™αž§αž‘αžΆαž αžšαžŽαŸ

αž˜αžΆαž“αž–αŸαž›αž˜αž½αž™ αž€αŸ’αž“αž»αž„αž’αŸ†αž‘αž»αž„αž–αŸαž›αžŸαž˜αŸ’αž—αžΆαžŸαž“αŸ αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαžŸαž½αžšαžαžΆ αžαžΎαž’αŸ’αž“αž€αž“αžΉαž„αž’αŸ’αžœαžΎαž’αŸ’αžœαžΈ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžšαž€αžƒαžΎαž‰αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αžŠαŸ„αž™αžŸαžΆαžšαžαžΆαžŸαž’αžŸαŸ‹αž‘αŸ†αž αŸ†αž•αŸ’αž‘αž»αž€?

αž‡αžΆαž€αžΆαžšαž–αž·αžαžŽαžΆαžŸαŸ‹ αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž†αŸ’αž›αžΎαž™αžαžΆ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžƒαžΎαž‰αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αžŠαŸ„αž™αž€αž“αŸ’αž›αŸ‚αž„αž“αŸαŸ‡ αž αžΎαž™αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αžΆαž…αž’αŸ’αžœαžΎαž‘αŸ…αž”αžΆαž“ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αžŸαž˜αŸ’αž’αžΆαžαž€αž“αŸ’αž›αŸ‚αž„αž“αŸ„αŸ‡αŸ”
αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αžŸαž˜αŸ’αž—αžΆαžŸαž“αŸαž”αžΆαž“αžŸαž½αžšαžαžΆ αž…αž»αŸ‡αž”αžΎαž‚αŸ’αž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž‘αŸ†αž“αŸαžšαž“αŸ…αž›αžΎαž—αžΆαž‚αžαžΆαžŸαž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž’αŸ’αž“αž€αž€αŸαž˜αž·αž“αžƒαžΎαž‰αž―αž€αžŸαžΆαžšαžŽαžΆαžŠαŸ‚αž›αž’αžΆαž…αž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž‘αŸ†αž“αŸαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ„αŸ‡?

αž…αŸ†αž–αŸ„αŸ‡αžšαžΏαž„αž“αŸαŸ‡αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™αžαžΆαž’αŸ’αž“αž€αžαŸ‚αž„αžαŸ‚αž’αžΆαž…αž˜αžΎαž›αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαž”αžΎαž€αž…αŸ†αž αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ lsof αž αžΎαž™αž™αž›αŸ‹αžαžΆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŽαžΆαž˜αž½αž™αž”αžΆαž“αž™αž€αž€αž“αŸ’αž›αŸ‚αž„αž‘αŸ†αž“αŸαžšαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαžŸαž€αž˜αŸ’αž˜αž—αžΆαž–αžαžΆαž˜αž€αžΆαž›αŸˆαž‘αŸαžŸαŸˆαž’αžΆαžŸαŸ’αžšαŸαž™αž›αžΎαžαžΆαžαžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž€αžΆαžš .

αž’αŸ’αž“αž€αžŸαž˜αŸ’αž—αžΆαžŸαž“αŸαž”αžΆαž“αžšαŸ†αžαžΆαž“αžαŸ’αž‰αž»αŸ†αž“αžΌαžœαž–αžΆαž€αŸ’αž™αž…αž»αž„αž€αŸ’αžšαŸ„αž™ αžŠαŸ„αž™αž”αž“αŸ’αžαŸ‚αž˜αž›αžΎαžŸαŸ†αžŽαž½αžšαžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αžαžΆ "αž§αž”αž˜αžΆαžαžΆαž™αžΎαž„αž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™ αžœαžΆαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸ αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž˜αž·αž“αž’αžΆαž…αžŸαžšαžŸαŸαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž”αžΆαž“αž‘αŸ"?

"αž˜αž·αž“αž’αžΈαž‘αŸ" αžαŸ’αž‰αž»αŸ†αž†αŸ’αž›αžΎαž™αžαžΆ "αž™αžΎαž„αž’αžΆαž…αž”αž·αž‘αž€αžΆαžšαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸαž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžœαžΆαž‘αžΎαž„αžœαž·αž‰αŸ”"
αž’αŸ’αž“αž€αžŸαž˜αŸ’αž—αžΆαžŸαž“αŸαž”αžΆαž“αž‡αŸ†αž‘αžΆαžŸαŸ‹αžαžΆ "αž‘αŸ αž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΎαž„αžœαž·αž‰αž”αžΆαž“αž‘αŸ αž™αžΎαž„αž“αŸ…αžαŸ‚αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž€αŸ’αž“αž»αž„αž’αž„αŸ’αž‚αž…αž„αž…αžΆαŸ† αž αžΎαž™αž’αžαž·αžαž·αž‡αž“αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„ αžŠαŸ‚αž›αž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž”αž„αŸ’αžαŸ†αž±αŸ’αž™αž—αŸ’αž‡αžΆαž”αŸ‹αž˜αŸ’αžαž„αž‘αŸ€αžαž”αžΆαž“αž‘αŸαŸ”"

"αž˜αž·αž“αž’αžΈαž‘αŸ" αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž“αž·αž™αžΆαž™αžαžΆ "αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΎαž„αžœαž·αž‰αž”αžΆαž“αž‘αŸ αž αžΎαž™αž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αž·αž“αžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„αž‘αŸ αž“αŸ„αŸ‡αž™αžΎαž„αž’αžΆαž…αžŸαž˜αŸ’αž’αžΆαžαž―αž€αžŸαžΆαžšαž”αžΎαž€αž…αŸ†αž αž“αŸαŸ‡αžαžΆαž˜αžšαž™αŸˆαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžš αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž™αžΎαž„αž˜αž·αž“αžƒαžΎαž‰αžœαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ ls αž€αŸαžŠαŸ„αž™αŸ” αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαŸ”"

αž’αŸ’αž“αž€αžŸαž˜αŸ’αž—αžΆαžŸαž–αŸαž‰αž…αž·αžαŸ’αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž’αžαŸ‹αž˜αžΆαž“αž‘αŸαŸ”

αžšαž½αž…β€‹αžαŸ’αž‰αž»αŸ†β€‹αž‚αž·αžβ€‹αžαžΆ αž αŸαžαž»β€‹αž’αŸ’αžœαžΈβ€‹αž”αžΆαž“β€‹αž‡αžΆβ€‹αž’αŸ’αž“αž€β€‹αž’αŸ’αžœαžΎβ€‹αžαŸαžŸαŸ’αžβ€‹αž…αŸ†αžŽαŸαŸ‡β€‹αžŠαžΉαž„β€‹αžšαž”αžŸαŸ‹β€‹αžαŸ’αž‰αž»αŸ†β€‹αž˜αž·αž“β€‹αžŸαŸŠαžΈβ€‹αž‡αž˜αŸ’αžšαŸ…? αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αž»αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž”αžΎαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹? αž…αž»αŸ‡αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΎαž„αžœαž·αž‰ αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŸαžšαžŸαŸαžšαž‘αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžšαž“αŸ…αž›αžΎαž—αžΆαž‚αžαžΆαžŸαžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αž‘αŸ†αž αŸ†αž‘αŸ†αž“αŸαžš? αž…αž»αŸ‡αž”αžΎαž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž”αžΆαžαŸ‹αž”αž„αŸ‹αž˜αž·αž“αžαŸ’αžšαžΉαž˜αžαŸ‚αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαžšαž½αž…αž αžΎαž™αž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αž‘αŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž€αŸαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸαŸ‡αžŸαžšαžŸαŸαžš αž¬αž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαžšαžŸαŸαžšαžŠαŸ‚αžš?

αž‘αžΌαž αŸ’αžŸαŸŠαžΈαž€

αž“αŸ…αžŠαžΎαž˜αž’αžΆαž‡αžΈαž–αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ† αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž–αŸ’αž™αžΆαž™αžΆαž˜αž”αž„αŸ’αž€αžΎαžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΌαž…αž˜αž½αž™αžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž–αŸαžαŸŒαž˜αžΆαž“αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αŸ” αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžαŸ’αž‰αž»αŸ†αž‚αž·αžαžαžΆαžαžΎαžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž‘αŸ…αž“αžΉαž„αž‘αž·αž“αŸ’αž“αž“αŸαž™αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆαŸ” αž§αž‘αžΆαž αžšαžŽαŸαžαŸ’αž‰αž»αŸ†αž˜αžΆαž“ Ivanov Ivan Ivanovich αž αžΎαž™αž‚αžΆαžαŸ‹αž˜αžΆαž“αž–αŸαžαŸŒαž˜αžΆαž“αžαŸ’αž›αŸ‡αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαžΎαžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž˜αž·αžαŸ’αžαž‡αžΆαž˜αž½αž™αž–αž½αž€αž‚αŸαžŠαŸ„αž™αžšαž”αŸ€αž”αžŽαžΆ? αžαŸ’αž‰αž»αŸ†αž’αžΆαž…αž…αž„αŸ’αž’αž»αž›αž”αž„αŸ’αž αžΆαž‰αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αžαžΆαžŸαžαŸ’αžœαž†αŸ’αž€αŸ‚αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆ "Tuzik" αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹ Ivan αž“αŸαŸ‡αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž…αž»αŸ‡αž™αŸ‰αžΆαž„αžŽαžΆαž”αžΎαž‚αžΆαžαŸ‹αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αžšαž”αžŸαŸ‹αž‚αžΆαžαŸ‹αž αžΎαž™αž‡αŸ†αž“αž½αžŸαž±αŸ’αž™ Ivan αž€αŸ’αž›αžΆαž™αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ Olya? αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αžœαžΆαž“αžΉαž„αž”αŸ’αžšαŸ‚αžαžΆ Olya Ivanovna Ivanova αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž›αŸ‚αž„αž˜αžΆαž“αž†αŸ’αž€αŸ‚αž‘αŸ€αžαž αžΎαž™ Tuzik αžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž“αŸ…αžαŸ‚αž‡αžΆαž€αž˜αŸ’αž˜αžŸαž·αž‘αŸ’αž’αž·αžšαž”αžŸαŸ‹ Ivan αžŠαŸ‚αž›αž˜αž·αž“αž˜αžΆαž“αŸ” αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž•αŸ’αžαž›αŸ‹αž±αŸ’αž™αž’αŸ’αž“αž€αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αž˜αŸ’αž“αžΆαž€αŸ‹αŸ—αž“αžΌαžœαž§αž”αž€αžšαžŽαŸαž€αŸ†αžŽαžαŸ‹αž’αžαŸ’αžαžŸαž‰αŸ’αž‰αžΆαžŽαžαŸ‚αž˜αž½αž™αž‚αžαŸ‹ (ID) αž”αžΆαž“αž‡αž½αž™αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž”αž‰αŸ’αž αžΆαž“αŸαŸ‡ αž αžΎαž™ Tuzik αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸαŸ‡ αžŠαŸ‚αž›αžαžΆαž˜αž–αž·αžαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž‡αžΆαž›αŸαžαžŸαŸŠαŸαžšαžΈαž”αŸ‰αž»αžŽαŸ’αžŽαŸ„αŸ‡αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž˜αŸ’αž…αžΆαžŸαŸ‹αžŸαž“αŸ’αž›αžΉαž€αž’αžΆαžαŸ‹αž˜αžΆαž“αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž›αŸαž 2 αž αžΎαž™αž“αŸ…αž–αŸαž›αžŽαžΆαž˜αž½αž™ Ivan αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸαŸ‡αž αžΎαž™αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ Olya αžŸαŸ’αžαž·αžαž“αŸ…αž€αŸ’αžšαŸ„αž˜αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž”αž‰αŸ’αž αžΆαž˜αž“αž»αžŸαŸ’αžŸαž‡αžΆαžαž· αž“αž·αž„αž€αžΆαžšαž…αž·αž‰αŸ’αž…αžΉαž˜αžŸαžαŸ’αžœαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αž™αŸ‰αžΆαž„αž‡αžΆαž€αŸ‹αžŸαŸ’αžαŸ‚αž„αŸ”

αž’αŸ’αž“αž€αž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžš

αž”αž‰αŸ’αž αžΆαž“αŸƒαž―αž€αžŸαžΆαžš αž“αž·αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž˜αž½αž™αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αž‚αžΊαž”αŸ’αžšαž αžΆαž€αŸ‹αž”αŸ’αžšαž αŸ‚αž›αž“αžΉαž„αž†αŸ’αž€αŸ‚ αž“αž·αž„αž˜αž“αž»αžŸαŸ’αžŸαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ” αž§αž”αž˜αžΆαžαžΆαžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž”αžΎαž€αž―αž€αžŸαžΆαžšαž˜αž½αž™αžˆαŸ’αž˜αŸ„αŸ‡αžαžΆ ivan.txt αž αžΎαž™αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŸαžšαžŸαŸαžšαž–αžΆαž€αŸ’αž™ tuzik αž‘αŸ…αž€αŸ’αž“αž»αž„αžœαžΆ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αž’αžΆαž…αžŸαžšαžŸαŸαžšαž’αž€αŸ’αžŸαžšαžŠαŸ†αž”αžΌαž„ "t" αž“αŸ…αž€αŸ’αž“αž»αž„αž―αž€αžŸαžΆαžš αž αžΎαž™αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ„αž™αž“αžšαžŽαžΆαž˜αŸ’αž“αžΆαž€αŸ‹αž§αž‘αžΆαž αžšαžŽαŸαž‘αŸ… olya.txt αŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž―αž€αžŸαžΆαžšαž“αŸ…αžαŸ‚αžŠαžŠαŸ‚αž› αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž“αŸ…αžαŸ‚αž…αž„αŸ‹αž€αžαŸ‹αžαŸ’αžšαžΆαžŸαž“αŸ’αž›αžΉαž€αž’αžΆαžαŸ‹αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž“αŸ…αž€αŸ’αž“αž»αž„αž“αŸ„αŸ‡αŸ” αžšαžΆαž›αŸ‹αž–αŸαž›αžŠαŸ‚αž›αž―αž€αžŸαžΆαžšαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ„αž™αž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž€αžΆαžšαž”αžΎαž€αž…αŸ†αž αžš αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŽαžΆαž˜αž½αž™ αžαŸ’αž‰αž»αŸ†αž‘αž‘αž½αž›αž”αžΆαž“αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αžŠαŸ‚αž›αž…αž„αŸ’αž’αž»αž›αžαŸ’αž‰αž»αŸ†αž‘αŸ…αž―αž€αžŸαžΆαžš αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž“αŸαŸ‡αž‡αžΆαž’αŸ’αž“αž€αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαŸ” αž αžΎαž™αžœαžΆαž˜αž·αž“αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαž’αŸ’αžœαžΈαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž αžΎαž™αž’αŸ’αž“αž€αžŽαžΆαž’αŸ’αžœαžΎαž‡αžΆαž˜αž½αž™αž―αž€αžŸαžΆαžšαž“αŸαŸ‡αž”αž“αŸ’αž‘αžΆαž”αŸ‹ αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž›αž»αž” αžœαžΆαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžαžΌαžšαžˆαŸ’αž˜αŸ„αŸ‡ αž˜αŸ’αž…αžΆαžŸαŸ‹αž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžš αž¬αžŸαž·αž‘αŸ’αž’αž·αž€αŸ’αž“αž»αž„αž€αžΆαžšαž’αžΆαž“ αž“αž·αž„αžŸαžšαžŸαŸαžšαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαž€αž…αŸαž‰ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž“αŸ…αžαŸ‚αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž…αžΌαž›αž”αŸ’αžšαžΎαŸ” αž‘αŸ…αžœαžΆ αž–αžΈαž–αŸ’αžšαŸ„αŸ‡αž“αŸ…αž–αŸαž›αž”αžΎαž€αž―αž€αžŸαžΆαžš αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αžŸαž·αž‘αŸ’αž’αž·αž’αžΆαž“ αž“αž·αž„/ឬសរសេរវអ αž αžΎαž™αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αžŠαžΎαž˜αŸ’αž”αžΈαž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαž€αžΆαžšαž‡αžΆαž˜αž½αž™αžœαžΆ αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸαž™αžαžΆαžαŸ’αž‰αž»αŸ†αžαŸ’αžšαžΌαžœαžαŸ‚αž”αž“αŸ’αžαž’αŸ’αžœαžΎαžŠαžΌαž…αŸ’αž“αŸαŸ‡αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αž›αžΈαž“αž»αž… αž”αžŽαŸ’αžŽαžΆαž›αŸαž™ libc αž”αžΎαž€αž―αž€αžŸαžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž…αŸ†αž“αž½αž“ 3 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αžΈαž˜αž½αž™αŸ— (αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš) αžŠαŸ‚αž›αž˜αžΆαž“αž›αŸαž 0,1,2αŸ” αž–αŸαžαŸŒαž˜αžΆαž“αž”αž“αŸ’αžαŸ‚αž˜αž’αžΆαž…αžšαž€αž”αžΆαž“αž“αŸ…αž›αžΎαžαŸ†αžŽαž—αŸ’αž‡αžΆαž”αŸ‹ αž”αž»αžšαžŸ stdio ΠΈ αž”αž»αžšαžŸ stdout

  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžš 0 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ STDIN αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž”αž‰αŸ’αž…αžΌαž›αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžš 1 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ STDOUT αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αŸαž‰αž‘αž·αž“αŸ’αž“αž“αŸαž™ αžŠαžΌαž…αž‡αžΆαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αž‡αžΆαžŠαžΎαž˜αŸ”
  • αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžš 2 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž‚αŸαž αŸ…αžαžΆ STDERR αž αžΎαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž”αŸ’αžšαžΆαžŸαŸ‹αžŠαŸ„αž™αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαžΎαž˜αŸ’αž”αžΈαž”αž‰αŸ’αž…αŸαž‰αžŸαžΆαžšαž€αŸ†αž αž»αžŸαŸ”

αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžšαž”αžŸαŸ‹αž’αŸ’αž“αž€ αž’αŸ’αž“αž€αž”αžΎαž€αž―αž€αžŸαžΆαžšαžŽαžΆαž˜αž½αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αžΆαž“ ឬសរសេរ αž“αŸ„αŸ‡αž‘αŸ†αž“αž„αž‡αžΆαž’αŸ’αž“αž€αž“αžΉαž„αž‘αž‘αž½αž›αž”αžΆαž“αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αž₯αžαž‚αž·αžαžαŸ’αž›αŸƒαžŠαŸ†αž”αžΌαž„ αž αžΎαž™αžœαžΆαž“αžΉαž„αž‡αžΆαž”αŸ‹αž›αŸαž 3αŸ”

αž”αž‰αŸ’αž‡αžΈαž’αŸ’αž“αž€αž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαž’αžΆαž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž˜αžΎαž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŽαžΆαž˜αž½αž™ αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŸαŸ’αž‚αžΆαž›αŸ‹ PID αžšαž”αžŸαŸ‹αžœαžΆαŸ”

αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŸαžΌαž˜αž”αžΎαž€αž€αž»αž„αžŸαžΌαž› bash αž αžΎαž™αž˜αžΎαž› PID αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

[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 αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž“αŸƒαž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžαž˜αŸ’αžšαžΌαžœαž€αžΆαžšαžšαž”αžŸαŸ‹αžœαžΆαžŠαŸ„αž™ bash αžαŸ’αž›αž½αž“αžœαžΆαž•αŸ’αž‘αžΆαž›αŸ‹ αž˜αž·αž“αž˜αŸ‚αž“αžŠαŸ„αž™αž”αžŽαŸ’αžŽαžΆαž›αŸαž™αžŠαŸ‚αž›αž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸαŸ”

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž―αž€αžŸαžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž‘αžΆαŸ†αž„ 3 αžαŸ’αžšαžΌαžœαž”αžΆαž“αž—αŸ’αž‡αžΆαž”αŸ‹αž‡αžΆαž˜αž½αž™αž§αž”αž€αžšαžŽαŸ pseudo terminal /dev/ptsαž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž“αŸ…αžαŸ‚αž’αžΆαž…αžšαŸ€αž”αž…αŸ†αž–αž½αž€αžœαžΆ αž‡αžΆαž§αž‘αžΆαž αžšαžŽαŸ αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αž½αž€αžœαžΆαž€αŸ’αž“αž»αž„αž€αž»αž„αžŸαžΌαž›αž‘αžΈαž–αžΈαžš

[user@localhost ]$ echo "hello world" > /proc/15771/fd/0

αž αžΎαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž»αž„αžŸαžΌαž›αžŠαŸ†αž”αžΌαž„αž™αžΎαž„αž“αžΉαž„αžƒαžΎαž‰

[user@localhost ]$ hello world

αž”αž‰αŸ’αž‡αžΌαž“αž”αž“αŸ’αžαž“αž·αž„αž”αŸ†αž–αž„αŸ‹

αž’αŸ’αž“αž€αž’αžΆαž…αž”αžŠαž·αžŸαŸαž’αž―αž€αžŸαžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž‘αžΆαŸ†αž„ 3 αž“αŸαŸ‡αž™αŸ‰αžΆαž„αž„αžΆαž™αžŸαŸ’αžšαž½αž›αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžŽαžΆαž˜αž½αž™ αžšαž½αž˜αž‘αžΆαŸ†αž„αž“αŸ…αž€αŸ’αž“αž»αž„ bash αž§αž‘αžΆαž αžšαžŽαŸαžαžΆαž˜αžšαž™αŸˆαž”αŸ†αž–αž„αŸ‹αžαž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΈαžš αžŸαžΌαž˜αž˜αžΎαž›

[user@localhost ]$ cat /dev/zero | sleep 10000

αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαž“αŸαŸ‡αžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž‡αžΆαž˜αž½αž™ αž•αŸ’αž›αžΌαžœ -f αž αžΎαž™αž˜αžΎαž›αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž€αžΎαžαž‘αžΎαž„αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ„αž™αžŸαž„αŸ’αžαŸαž”αŸ”

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš bash αž˜αŸαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™ PID 15771 αž‰αŸ‚αž€αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„ αž αžΎαž™αž™αž›αŸ‹αž…αŸ’αž”αžΆαžŸαŸ‹αž’αŸ†αž–αžΈαž…αŸ†αž“αž½αž“αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžŠαŸ‚αž›αž™αžΎαž„αž…αž„αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αžΆαž“αž–αžΈαžšαž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž–αž½αž€αž‚αŸαŸ– αž†αŸ’αž˜αžΆ αž“αž·αž„αž€αžΆαžšαž‚αŸαž„αŸ” Bash αžŠαžΉαž„αžαžΆαžœαžΆαžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“αž–αžΈαžš αž αžΎαž™αž”αž‰αŸ’αž…αžΌαž›αžœαžΆαž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ†αž–αž„αŸ‹αžαŸ‚αž˜αž½αž™αŸ” αžŸαžšαž»αž”αž‘αŸ… bash αž“αžΉαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“ 2 αž“αž·αž„αž”αŸ†αž–αž„αŸ‹αž˜αž½αž™αŸ”

Bash αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž αŸ…αž‡αžΆαž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž˜αž»αž“αž–αŸαž›αž”αž„αŸ’αž€αžΎαžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž˜αžΆαžš αž”αŸ†αž–αž„αŸ‹ αž“αž·αž„αž‘αž‘αž½αž›αž€αžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαžαŸ’αž˜αžΈαž“αŸ…αž›αžΎαž”αžŽαŸ’αžαž»αŸ†αž”αŸ†αž–αž„αŸ‹αž”αžŽαŸ’αžαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αžŸαžαž·αž”αžŽαŸ’αžŠαŸ„αŸ‡αž’αžΆαžŸαž“αŸ’αž“αž“αŸαŸ‡αž˜αž·αž“αž‘αžΆαž“αŸ‹αž—αŸ’αž‡αžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“αž‘αžΆαŸ†αž„αž–αžΈαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αŸ…αž‘αžΎαž™αž‘αŸαŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ αžœαžΆαž αžΆαž€αŸ‹αžŠαžΌαž…αž‡αžΆαž˜αžΆαž“αž”αŸ†αž–αž„αŸ‹αžšαž½αž…αž αžΎαž™ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž‘αžΆαž“αŸ‹αž˜αžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“αž“αŸ…αž‘αžΎαž™αž‘αŸαŸ–

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

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€αž”αŸ’αžšαžΎαž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž€αŸ’αž›αžΌαž“ bash αž”αž„αŸ’αž€αžΎαžαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“αž–αžΈαžš αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αž”αžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αž“αžΉαž„αž˜αžΎαž›αž‘αŸ…αžŠαžΌαž…αž“αŸαŸ‡αŸ–

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

αž€αž»αŸ†αž—αŸ’αž›αŸαž…αžαžΆαž€αŸ’αž›αžΌαž“αž€αŸ’αž›αžΌαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž½αž˜αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž―αž€αžŸαžΆαžšαž–αžŽαŸŒαž“αžΆαž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž–αž½αž€αžœαžΆαž“αžΉαž„αžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸ αž“αž·αž„αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαž“αŸ” αž€αžΆαžšαž„αžΆαžšαž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž˜αŸαž‡αžΆαž˜αž½αž™ PID 15771 αž‚αžΊαžŠαžΎαž˜αŸ’αž”αžΈαžαžΆαž˜αžŠαžΆαž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž€αž»αž˜αžΆαžš αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžšαž„αŸ‹αž…αžΆαŸ†αž€αžΆαžšαž†αŸ’αž›αžΎαž™αžαž”αž–αžΈαž€αž»αž˜αžΆαžšαŸ”

αžŠαžΌαž…αŸ’αž“αŸαŸ‡αžœαžΆαž˜αž·αž“αžαŸ’αžšαžΌαžœαž€αžΆαžšαž”αŸ†αž–αž„αŸ‹αž‘αŸ αž αžΎαž™αžœαžΆαž”αž·αž‘αž―αž€αžŸαžΆαžšαž–αž·αž–αžŽαŸŒαž“αžΆαž›αŸαž 3 αž“αž·αž„ 4 αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš bash αž€αžΌαž“αžŠαŸ†αž”αžΌαž„αž‡αžΆαž˜αž½αž™ PID 9004 αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αžŒαž»αž” αŸ’αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž›αŸαžαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžš STDOUT αžšαž”αžŸαŸ‹αž™αžΎαž„ 1 αž‘αŸ…αž§αž”αž€αžšαžŽαŸαž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž…αž„αŸ’αž’αž»αž›αž‘αŸ…αž”αŸ†αž–αž„αŸ‹ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αžœαžΆαž‡αžΆαž›αŸαž 3αŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡αž’αŸ’αžœαžΈαŸ—αžŠαŸ‚αž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“αžŠαŸ†αž”αžΌαž„αž‡αžΆαž˜αž½αž™ PID 9004 αžŸαžšαžŸαŸαžšαž‘αŸ… STDOUT αž“αžΉαž„αž”αž‰αŸ’αž…αž”αŸ‹αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž€αŸ’αž“αž»αž„αž”αžŽαŸ’αžαž»αŸ†αž”αŸ†αž–αž„αŸ‹αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“αž‘αžΈαž–αžΈαžšαž‡αžΆαž˜αž½αž™ PID 9005 bash αž”αŸ’αžšαžΎ dup2 αžŠαžΎαž˜αŸ’αž”αžΈαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž―αž€αžŸαžΆαžš descriptor STDIN αž›αŸαž 0αŸ” αž₯αž‘αžΌαžœαž“αŸαŸ‡αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αžŠαŸ‚αž› bash αž‘αžΈαž–αžΈαžšαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™ PID 9005 αž“αžΉαž„αž’αžΆαž“αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αžΆαž“αž…αŸαž‰αž–αžΈαž”αŸ†αž–αž„αŸ‹αŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž“αŸαŸ‡ αž’αŸ’αž“αž€αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαž›αŸαž 3 αž“αž·αž„ 4 αž€αŸαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž˜αžΆαžšαž•αž„αžŠαŸ‚αžš αž–αŸ’αžšαŸ„αŸ‡αžœαžΆαž›αŸ‚αž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαž‘αŸ€αžαž αžΎαž™αŸ”

αžαŸ’αž‰αž»αŸ†αž–αŸ’αžšαž„αžΎαž™αž€αž“αŸ’αžαžΎαž™αž…αŸ†αž–αŸ„αŸ‡αž―αž€αžŸαžΆαžš descriptor 255 αžŠαŸ„αž™αž…αŸαžαž“αžΆ αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αŸ’αžšαžΎαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‚αŸ„αž›αž”αŸ†αžŽαž„αž•αŸ’αž‘αŸƒαž€αŸ’αž“αž»αž„αžŠαŸ„αž™ bash αžαŸ’αž›αž½αž“αžœαžΆ αž αžΎαž™αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αž·αž‘αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž»αž˜αžΆαžšαž•αž„αžŠαŸ‚αžšαŸ”

αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž˜αž€ αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“αžŠαŸ†αž”αžΌαž„αž‡αžΆαž˜αž½αž™ PID 9004 bash αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž”αŸ’αžšαžΎαž€αžΆαžšαž αŸ…αžαžΆαž˜αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž· αž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“αžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹αž“αŸ…αž›αžΎαž”αž“αŸ’αž‘αžΆαžαŸ‹αž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„αžœαžΆαž‚αžΊαž‡αžΆ /usr/bin/cat αŸ”

αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαž“αž‘αžΈαž–αžΈαžšαž‡αžΆαž˜αž½αž™ PID 9005 bash αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž‘αžΈαž–αžΈαžšαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž”αž‰αŸ’αž‡αžΆαž€αŸ‹ αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ /usr/bin/sleep αŸ”

αž€αžΆαžšαž αŸ…αž‘αžΌαžšαžŸαž–αŸ’αž‘αžšαž”αžŸαŸ‹αž”αŸ’αžšαž–αŸαž“αŸ’αž’ exec αž˜αž·αž“αž”αž·αž‘αž…αŸ†αžŽαž»αž…αž‘αžΆαž‰αž―αž€αžŸαžΆαžšαž‘αŸ αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž–αž½αž€αžœαžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΎαž€αžŠαŸ„αž™αž‘αž„αŸ‹ O_CLOEXEC αž“αŸ…αž–αŸαž›αž€αžΆαžšαž αŸ…αž”αžΎαž€αž…αŸ†αž αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαž‘αžΎαž„αŸ” αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž―αž€αžŸαžΆαžšαžŠαŸ‚αž›αž’αžΆαž…αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž”αžΆαž“ αž’αŸ’αž“αž€αž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αžΉαž„αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αŸ”

αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž€αž»αž„αžŸαžΌαž›αŸ–

[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

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž…αŸ†αž“αž½αž“αžαŸ‚αž˜αž½αž™αž‚αžαŸ‹αž“αŸƒαž”αŸ†αž–αž„αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊαžŠαžΌαž…αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΆαŸ†αž„αž–αžΈαžšαŸ” αžŠαžΌαž…αŸ’αž“αŸαŸ‡ αž™αžΎαž„αž˜αžΆαž“αž€αžΆαžšαžαž—αŸ’αž‡αžΆαž”αŸ‹αžšαžœαžΆαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΈαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž‡αžΆαž˜αž½αž™αž˜αŸαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ”

αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžŠαŸ‚αž›αž˜αž·αž“αžŸαŸŠαžΆαŸ†αž“αžΉαž„αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžŠαŸ‚αž›αž”αŸ’αžšαžΎ bash αžαŸ’αž‰αž»αŸ†αžŸαžΌαž˜αž•αŸ’αžαž›αŸ‹αž’αž“αž»αžŸαžΆαžŸαž“αŸαž™αŸ‰αžΆαž„αžαŸ’αž›αžΆαŸ†αž„αž±αŸ’αž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž˜αžšαž™αŸˆ strace αž“αž·αž„αž˜αžΎαž›αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αž€αžΎαžαž‘αžΎαž„αž“αŸ…αžαžΆαž„αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžŠαžΌαž…αž“αŸαŸ‡αŸ–

strace -s 1024 -f bash -c "ls | grep hello"

αž…αžΌαžšαž™αžΎαž„αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αž”αž‰αŸ’αž αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž‘αŸ†αž αŸ†αžαžΆαžŸαž‘αžΆαž” αž αžΎαž™αž–αŸ’αž™αžΆαž™αžΆαž˜αžšαž€αŸ’αžŸαžΆαž‘αž»αž€αž‘αž·αž“αŸ’αž“αž“αŸαž™αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΎαž„αžœαž·αž‰αŸ” αž…αžΌαžšαž™αžΎαž„αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžαžΌαž…αž˜αž½αž™αžŠαŸ‚αž›αž“αžΉαž„αžŸαžšαžŸαŸαžšαž”αŸ’αžšαž αŸ‚αž› 1 αž˜αŸαž€αžΆαž”αŸƒαž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαž‘αŸ…αžαžΆαžŸαŸ” αž‡αžΆαž„αž“αŸαŸ‡αž‘αŸ…αž‘αŸ€αž αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αžŒαžΈαžŸαžŠαŸ„αž™αž αŸαžαž»αž•αž›αž˜αž½αž™αž…αŸ†αž“αž½αž“ αž™αžΎαž„αž“αžΉαž„αž˜αž·αž“αž’αžΎαž–αžΎαž“αžΉαž„αžšαžΏαž„αž“αŸαŸ‡ αž αžΎαž™αž–αŸ’αž™αžΆαž™αžΆαž˜αžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αŸ’αžαž„αž‘αŸ€αžαž€αŸ’αž“αž»αž„αž˜αž½αž™αžœαž·αž“αžΆαž‘αžΈαŸ” αž€αŸ’αž“αž»αž„αž§αž‘αžΆαž αžšαžŽαŸαžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž€αŸ†αž–αž»αž„αž”αŸ’αžšαžΎ Python αž’αŸ’αž“αž€αž’αžΆαž…αž”αŸ’αžšαžΎαž—αžΆαžŸαžΆαžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž•αŸ’αžŸαŸαž„αŸ—αŸ”

[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

αžŠαžΌαž…αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αžƒαžΎαž‰ αž‘αŸ†αž αŸ†αž―αž€αžŸαžΆαžšαž€αŸ†αž–αž»αž„αž€αžΎαž“αž‘αžΎαž„ αž αžΎαž™αž”αŸ’αžšαž’αž”αŸ‹αžšαž”αžŸαŸ‹αž™αžΎαž„αž˜αž·αž“αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αŸαŸ” αžαŸ„αŸ‡αž˜αžΎαž›αž―αž€αžŸαžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ αž€αžΆαžšαž”αžΎαž€αž…αŸ†αž αžš. αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž™αžΎαž„αž”αŸ’αžšαžΎαž‘αž„αŸ‹ O_APPEND αž“αŸ…αž–αŸαž›αž”αžΎαž€αž―αž€αžŸαžΆαžš αž“αŸ„αŸ‡αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŸαžšαžŸαŸαžšαž“αžΈαž˜αž½αž™αŸ— αž”αŸ’αžšαž–αŸαž“αŸ’αž’αž”αŸ’αžšαžαž·αž”αžαŸ’αžαž·αž€αžΆαžšαž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž‘αŸ†αž αŸ†αž―αž€αžŸαžΆαžš αž αžΎαž™αžŸαžšαžŸαŸαžšαž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αŸ…αž…αž»αž„αž”αŸ†αž•αž»αžαž“αŸƒαž―αž€αžŸαžΆαžš αž αžΎαž™αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αž’αžΆαžαžΌαž˜αŸ” αžœαžΆαž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αžαŸ’αžŸαŸ‚αžŸαŸ’αžšαž‘αžΆαž™ αž¬αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‡αžΆαž…αŸ’αžšαžΎαž“αžŸαžšαžŸαŸαžšαž‘αŸ…αž―αž€αžŸαžΆαžšαžŠαžΌαž…αž‚αŸ’αž“αžΆαŸ” αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž˜αž·αž“αž”αŸ’αžšαžΎαž‘αž„αŸ‹αž“αŸαŸ‡αž‘αŸαŸ” αž™αžΎαž„αž’αžΆαž…αž˜αžΎαž›αžƒαžΎαž‰αž‘αŸ†αž αŸ†αž―αž€αžŸαžΆαžšαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆαž“αŸ…αž€αŸ’αž“αž»αž„ lsof αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈ trunk αž›αž»αŸ‡αžαŸ’αžšαžΆαžαŸ‚αž™αžΎαž„αž”αžΎαž€αž―αž€αžŸαžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž€αžΆαžšαžŸαžšαžŸαŸαžšαž”αž“αŸ’αžαŸ‚αž˜ αžŠαŸ‚αž›αž˜αžΆαž“αž“αŸαž™αžαžΆαž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΌαžŠαžšαž”αžŸαŸ‹αž™αžΎαž„αž‡αŸ†αž“αž½αžŸαžœαž·αž‰αŸ”

with open("123.txt", "w") as f:

αž™αžΎαž„αžαŸ’αžšαžΌαžœαžαŸ‚αžŠαžΆαž€αŸ‹

with open("123.txt", "a") as f:

αž–αž·αž“αž·αžαŸ’αž™αž‡αžΆαž˜αž½αž™αž‘αž„αŸ‹ "w"

[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

αž“αž·αž„αž‡αžΆαž˜αž½αž™αž‘αž„αŸ‹ "a"

[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

αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αž‡αžΆαž‰αžΉαž€αž‰αžΆαž”αŸ‹ αž’αŸ’αž“αž€αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž“αŸ…αž–αŸαž›αž”αž„αŸ’αž€αžΎαž αž“αž·αž„αžŸαžΆαž€αž›αŸ’αž”αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈ αž”αŸ’αžšαžΎαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž”αŸ†αž”αžΆαžαŸ‹αž€αŸ†αž αž»αžŸ (αž§αž‘αžΆαž αžšαžŽαŸ GDB) αž¬αž€αž˜αŸ’αžšαž·αžαž•αŸ’αžŸαŸαž„αŸ—αž“αŸƒαž€αžΆαžšαž…αžΌαž›αž“αŸ…αž€αŸ’αž“αž»αž„αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαŸ” αž›αžΈαž“αž»αž…αž•αŸ’αžαž›αŸ‹αž“αžΌαžœαžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαžŸαžšαžŸαŸαžš αž“αž·αž„αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž½αž…αž αžΎαž™ αž§αž‘αžΆαž αžšαžŽαŸ αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαžαž˜αŸ’αž›αŸƒαž“αŸƒαž’αžαŸαžš αž€αŸ†αžŽαžαŸ‹αž…αŸ†αžŽαž»αž…αžˆαž”αŸ‹αŸ”αž›αŸ”

αžαŸ’αžšαž›αž”αŸ‹αž‘αŸ…αžŸαŸ†αžŽαž½αžšαžŠαžΎαž˜αž’αŸ†αž–αžΈαž‘αŸ†αž αŸ†αžαžΆαžŸαž˜αž·αž“αž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαžΆαž“αŸ‹αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžšαžŸαŸαžšαž―αž€αžŸαžΆαžš αžŸαžΌαž˜αž–αŸ’αž™αžΆαž™αžΆαž˜αž€αŸ’αž›αŸ‚αž„αž’αŸ’αžœαžΎαž”αž‰αŸ’αž αžΆαŸ”

αžαŸ„αŸ‡αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžšαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž—αžΆαž‚αžαžΆαžŸαžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαŸ‚αž›αž™αžΎαž„αž“αžΉαž„αž˜αŸ‰αŸ„αž“αž‡αžΆαžαžΆαžŸαžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αŸ–

[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% αž€αžΆαž“αŸ‹αž€αžΆαž”αŸ‹αŸ”

αž™αžΎαž„αž…αž„αž…αžΆαŸ†αžαžΆαž™αŸ„αž„αž‘αŸ…αžαžΆαž˜αž›αž€αŸ’αžαžαžŽαŸ’αžŒαž“αŸƒαž”αž‰αŸ’αž αžΆ αž™αžΎαž„αž€αŸ†αž–αž»αž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž€αžαŸ‹αžαŸ’αžšαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αžŸαŸ†αžαžΆαž“αŸ‹αŸ—αžŠαŸ‚αž›αž˜αž·αž“αž’αžΆαž…αž”αžΆαžαŸ‹αž”αž„αŸ‹αž”αžΆαž“αŸ” αž αžΎαž™αž€αŸ’αž“αž»αž„αž–αŸαž›αž‡αžΆαž˜αž½αž™αž‚αŸ’αž“αžΆαž“αŸαŸ‡ αž™αžΎαž„αžαŸ’αžšαžΌαžœαž‡αž½αžŸαž‡αž»αž›αžŸαŸαžœαžΆαž€αž˜αŸ’αž˜αžŠαŸ„αž™αž˜αž·αž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž‘αžΎαž„αžœαž·αž‰αŸ”

αž…αžΌαžšαž“αž·αž™αžΆαž™αžαžΆαž™αžΎαž„αž“αŸ…αžαŸ‚αž˜αžΆαž“αž‘αŸ†αž αŸ†αžαžΆαžŸ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαž‚αžαžΆαžŸαž•αŸ’αžŸαŸαž„αž‚αŸ’αž“αžΆ αž§αž‘αžΆαž αžšαžŽαŸαž“αŸ…αž€αŸ’αž“αž»αž„ /home αŸ”

αžαŸ„αŸ‡αž–αŸ’αž™αžΆαž™αžΆαž˜ "αžšαŸ€αž”αž…αŸ†αž‘αžΎαž„αžœαž·αž‰αž—αŸ’αž›αžΆαž˜αŸ—" αž€αžΌαžŠαžšαž”αžŸαŸ‹αž™αžΎαž„αŸ”

αžŸαžΌαž˜αž€αŸ’αžšαž‘αŸαž€αž˜αžΎαž› PID αž“αŸƒαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αžŠαŸ‚αž›αžŸαŸŠαžΈαž‘αŸ†αž αŸ†αžαžΆαžŸαž‘αžΆαŸ†αž„αž’αžŸαŸ‹αŸ–

[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

αž—αŸ’αž‡αžΆαž”αŸ‹αž‘αŸ…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžαžΆαž˜αžšαž™αŸˆ gdb

[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

αžŠαŸ„αž™αž…αž„αž…αžΆαŸ†αžαžΆαžαžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž αŸ… Python αž”αž„αŸ’αž€αžΎαžαž’αŸ’αžœαžΈ (αžŸαžΌαž˜αž˜αžΎαž›αžαžΆαž„αž›αžΎαž€αž“αŸ’αž›αŸ‚αž„αžŠαŸ‚αž›αž™αžΎαž„αžšαžαŸ‹ strace αž αžΎαž™αž”αžΆαž“αžšαž€αžƒαžΎαž‰αž€αžΆαžšαž αŸ…αž”αžΎαž€αž…αŸ†αž ) αž“αŸ…αž–αŸαž›αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΌαžŠαžšαž”αžŸαŸ‹αž™αžΎαž„αžŠαžΎαž˜αŸ’αž”αžΈαž”αžΎαž€αž―αž€αžŸαžΆαžš αž™αžΎαž„αž’αŸ’αžœαžΎαžŠαžΌαž…αž‚αŸ’αž“αžΆαžŠαŸ„αž™αžαŸ’αž›αž½αž“αž―αž„αž€αŸ’αž“αž»αž„αž“αžΆαž˜αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžšαž”αžŸαŸ‹αž™αžΎαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžš O_WRONLY|O_CREAT| αž”αŸŠαžΈαž O_TRUNC αž‡αŸ†αž“αž½αžŸαžŠαŸ„αž™αžαž˜αŸ’αž›αŸƒαž›αŸαžαŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŠαžΌαž…αž“αŸαŸ‡αž”αžΎαž€αž”αŸ’αžšαž—αž–αžαžΊαžŽαŸ‚αž›αž§αž‘αžΆαž αžšαžŽαŸ αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž αžΎαž™αž˜αžΎαž›αžαžΆαžαžΎαž‘αž„αŸ‹αžŽαžΆαž‘αž‘αž½αž›αžαž»αžŸαžαŸ’αžšαžΌαžœαž…αŸ†αž–αŸ„αŸ‡αž’αŸ’αžœαžΈ

#αž€αŸ†αžŽαžαŸ‹ O_WROONLY 00000001
#αž€αŸ†αžŽαžαŸ‹ O_CREAT 00000100
#αž€αŸ†αžŽαžαŸ‹ O_TRUNC 00001000

αž™αžΎαž„β€‹αžšαž½αž˜β€‹αž”αž‰αŸ’αž…αžΌαž›β€‹αžαž˜αŸ’αž›αŸƒβ€‹αž‘αžΆαŸ†αž„β€‹αž’αžŸαŸ‹β€‹αž‡αžΆβ€‹αž˜αž½αž™ αž™αžΎαž„β€‹αž‘αž‘αž½αž›β€‹αž”αžΆαž“ 00001101

αž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž αŸ…αžšαž”αžŸαŸ‹αž™αžΎαž„αž–αžΈ gdb

(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

αž™αžΎαž„αž…αž„αž…αžΆαŸ†αž§αž‘αžΆαž αžšαžŽαŸαž‡αžΆαž˜αž½αž™αž”αŸ†αž–αž„αŸ‹ - αžšαž”αŸ€αž” bash αž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž’αŸ’αž“αž€αž–αž·αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαž αžΎαž™αž™αžΎαž„αž”αžΆαž“αžšαŸ€αž“αž€αžΆαžšαž αŸ…αž”αŸ’αžšαž–αŸαž“αŸ’αž’ dup2 αžšαž½αž…αž αžΎαž™αŸ”

αž™αžΎαž„αž–αŸ’αž™αžΆαž™αžΆαž˜αž‡αŸ†αž“αž½αžŸαž’αŸ’αž“αž€αž–αžŽαŸŒαž“αžΆαž―αž€αžŸαžΆαžšαž˜αž½αž™αž‡αžΆαž˜αž½αž™αž―αž€αžŸαžΆαžšαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαŸ”

(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

(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

αž‚αŸ’αž˜αžΆαž“αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αž”αžΆαžαŸ‹αž”αž„αŸ‹ αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž€αŸ†αžŽαžαŸ‹αž αŸαžαž»αžαŸ’αžšαžΌαžœαž”αžΆαž“αžŸαžšαžŸαŸαžšαž‘αŸ…αž€αžΆαž“αŸ‹αž‘αžΈαžαžΆαŸ†αž„αžαŸ’αž˜αžΈαŸ”

αž…αžΌαžšαž’αŸ’αžœαžΎαž±αŸ’αž™αž€αž·αž…αŸ’αž…αž€αžΆαžšαžŸαŸ’αž˜αž»αž‚αžŸαŸ’αž˜αžΆαž‰αž”αž“αŸ’αžαž·αž…

αžŸαžΌαž˜αžŸαŸ’αžšαž˜αŸƒαžαžΆαž‘αž·αž“αŸ’αž“αž“αŸαž™αž˜αžΆαž“αžŸαžΆαžšαŸˆαžŸαŸ†αžαžΆαž“αŸ‹αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž™αžΎαž„ αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž™αžΎαž„αž˜αž·αž“αž˜αžΆαž“αž‘αŸ†αž αŸ†αžαžΆαžŸαž“αŸ…αž€αŸ’αž“αž»αž„αž—αžΆαž‚αžαžΆαžŸαžŽαžΆαž˜αž½αž™αž‘αŸ αž αžΎαž™αž™αžΎαž„αž˜αž·αž“αž’αžΆαž…αž—αŸ’αž‡αžΆαž”αŸ‹αžαžΆαžŸαž”αžΆαž“αž‘αŸαŸ”

αž’αŸ’αžœαžΈβ€‹αžŠαŸ‚αž›β€‹αž™αžΎαž„β€‹αž’αžΆαž…β€‹αž’αŸ’αžœαžΎβ€‹αž”αžΆαž“β€‹αž‚αžΊβ€‹αž”αŸ’αžαžΌαžšβ€‹αž‘αž·αžŸβ€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αžšαž”αžŸαŸ‹β€‹αž™αžΎαž„β€‹αž‘αŸ…β€‹αž€αž“αŸ’αž›αŸ‚αž„β€‹αžŽαžΆβ€‹αž˜αž½αž™ αž§αž‘αžΆαž αžšαžŽαŸβ€‹αž‘αŸ…β€‹αž”αŸ†αž–αž„αŸ‹ αž αžΎαž™β€‹αž”αŸ’αžαžΌαžšβ€‹αž‘αž·αžŸβ€‹αž‘αž·αž“αŸ’αž“αž“αŸαž™β€‹αž–αžΈβ€‹αž”αŸ†αž–αž„αŸ‹β€‹αž‘αŸ…β€‹αž”αžŽαŸ’αžαžΆαž‰β€‹αžαžΆαž˜β€‹αžšαž™αŸˆβ€‹αž€αž˜αŸ’αž˜αžœαž·αž’αžΈβ€‹αž˜αž½αž™β€‹αž…αŸ†αž“αž½αž“β€‹αž§αž‘αžΆαž αžšαžŽαŸ netcatαŸ”
αž™αžΎαž„αž’αžΆαž…αž”αž„αŸ’αž€αžΎαžαž”αŸ†αž–αž„αŸ‹αžŠαŸ‚αž›αž˜αžΆαž“αžˆαŸ’αž˜αŸ„αŸ‡αžŠαŸ„αž™αž”αŸ’αžšαžΎαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆ mkfifo αŸ” αžœαžΆαž“αžΉαž„αž”αž„αŸ’αž€αžΎαžαž―αž€αžŸαžΆαžš pseudo αž“αŸ…αž›αžΎαž”αŸ’αžšαž–αŸαž“αŸ’αž’αž―αž€αžŸαžΆαžš αž‘αŸ„αŸ‡αž”αžΈαž‡αžΆαž˜αž·αž“αž˜αžΆαž“αž€αž“αŸ’αž›αŸ‚αž„αž‘αŸ†αž“αŸαžšαž“αŸ…αž›αžΎαžœαžΆαž€αŸαžŠαŸ„αž™αŸ”

αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž‘αžΎαž„αžœαž·αž‰ αž αžΎαž™αž–αž·αž“αž·αžαŸ’αž™αŸ–

[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

αž₯αž‘αžΌαžœαž“αŸαŸ‡ αž™αžΎαž„αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžαŸ’αžšαžΌαžœαžšαž»αŸ†αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž…αžΌαž›αž‘αŸ…αž€αŸ’αž“αž»αž„αž”αŸ†αž–αž„αŸ‹αž“αŸαŸ‡αž‘αŸ…αž€αžΆαž“αŸ‹αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž•αŸ’αžŸαŸαž„αž‘αŸ€αžαžαžΆαž˜αžšαž™αŸˆαž”αžŽαŸ’αžαžΆαž‰αŸ” netcat αžŠαžΌαž…αž‚αŸ’αž“αžΆαž‚αžΊαžŸαž˜αžšαž˜αŸ’αž™αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αžœαžΆαŸ”

αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ remote-server.example.com αž™αžΎαž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

[user@localhost ~]$ nc -l 7777 > 123.txt 

αž“αŸ…αž›αžΎαž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαžŠαŸ‚αž›αž˜αžΆαž“αž”αž‰αŸ’αž αžΆαžšαž”αžŸαŸ‹αž™αžΎαž„ αž™αžΎαž„αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αžŸαŸ’αžαžΆαž“αžΈαž™αžŠαžΆαž…αŸ‹αžŠαŸ„αž™αž‘αŸ‚αž€αž˜αž½αž™αŸ”

[user@localhost ~]$ nc remote-server.example.com 7777 < /mnt/logs/megapipe 

αž₯αž‘αžΌαžœαž“αŸαŸ‡αž‘αž·αž“αŸ’αž“αž“αŸαž™αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αžŠαŸ‚αž›αž”αž‰αŸ’αž…αž”αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ†αž–αž„αŸ‹αž“αžΉαž„αž‘αŸ… stdin αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž“αŸ…αž€αŸ’αž“αž»αž„ netcat αžŠαŸ‚αž›αž“αžΉαž„αž”αž‰αŸ’αž‡αžΌαž“αžœαžΆαž‘αŸ…αž”αžŽαŸ’αžαžΆαž‰αž“αŸ…αž›αžΎαž…αŸ’αžšαž€ 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

αž€αŸ’αž“αž»αž„αž…αŸ†αžŽαŸ„αž˜αž‘αž„αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹ αž™αžΎαž„αž‚αŸ’αžšαžΆαž“αŸ‹αžαŸ‚αžαŸ’αžšαžΌαžœαž€αžΆαžš O_WRONLY αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž―αž€αžŸαžΆαžšαž˜αžΆαž“αžšαž½αž…αž αžΎαž™ αž αžΎαž™αž™αžΎαž„αž˜αž·αž“αž…αžΆαŸ†αž”αžΆαž…αŸ‹αžŸαž˜αŸ’αž’αžΆαžαžœαžΆαž‘αŸ

[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

αž€αŸ†αž–αž»αž„αž–αž·αž“αž·αžαŸ’αž™αž˜αžΎαž›αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸαž–αžΈαž…αž˜αŸ’αž„αžΆαž™ remote-server.example.com

[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

αž‘αž·αž“αŸ’αž“αž“αŸαž™αžαŸ’αžšαžΌαžœαž”αžΆαž“αžšαž€αŸ’αžŸαžΆαž‘αž»αž€ αž”αž‰αŸ’αž αžΆαžαŸ’αžšαžΌαžœαž”αžΆαž“αžŠαŸ„αŸ‡αžŸαŸ’αžšαžΆαž™αŸ”

αžαŸ’αž‰αž»αŸ†αž†αŸ’αž›αŸ€αžαž±αž€αžΆαžŸαž“αŸαŸ‡αžŠαžΎαž˜αŸ’αž”αžΈαž‡αŸ†αžšαžΆαž”αžŸαž½αžšαž˜αž·αžαŸ’αžαžšαž½αž˜αž€αžΆαžšαž„αžΆαžšαžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αž–αžΈ Degiro αŸ”
αžŸαŸ’αžαžΆαž”αŸ‹αž•αžαžαžΆαžŸαŸ‹ Radio-T αŸ”

αž›αŸ’αž’αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž‚αŸ’αž“αžΆαŸ”

αž€αŸ’αž“αž»αž„αž“αžΆαž˜αž‡αžΆαž€αž·αž…αŸ’αž…αž€αžΆαžšαž•αŸ’αž‘αŸ‡ αžαŸ’αž‰αž»αŸ†αžŸαŸ’αž“αžΎαž±αŸ’αž™αž’αŸ’αž“αž€αž‚αž·αžαž’αŸ†αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž“αžΉαž„αž˜αžΆαž“αž“αŸ…αž€αŸ’αž“αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž―αž€αžŸαžΆαžš descriptors cat and sleep αž”αŸ’αžšαžŸαž·αž“αž”αžΎαž’αŸ’αž“αž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αžΆαž€αŸ’αž™αž”αž‰αŸ’αž‡αžΆαžαžΆαž„αž€αŸ’αžšαŸ„αž˜αŸ–

[user@localhost ~]$ cat /dev/zero 2>/dev/null| sleep 10000

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹