เบเบฑเปเบเบซเบเบถเปเบ, เปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบชเปเบฒเบเบฒเบ, เบเปเบญเบเบเบทเบเบเบฒเบกเบงเปเบฒ, เปเบเบปเปเบฒเบเบฐเปเบฎเบฑเบเปเบเบงเปเบเบเปเบฒเบเปเบฒเบเบเบญเบเบซเบฒเบเปเบฅเบดเบเบฒเบเบเบตเปเบเปเปเปเบฎเบฑเบเบงเบฝเบเบเปเบญเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเปเบเปเบเบซเบกเบปเบเบเบทเปเบเบเบตเป?
เปเบเปเบเบญเบ, เบเปเบญเบเบเบญเบเบงเปเบฒเบเปเบญเบเบเบฐเปเบซเบฑเบเบชเบดเปเบเบเบตเปเบเบทเบเบเบญเบเบเบญเบเปเบเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเปเบฅเบฐ, เบเปเบฒเปเบเบฑเบเปเบเปเบเป, เบเปเบญเบเบเบฐเปเบฎเบฑเบเบเบงเบฒเบกเบชเบฐเบญเบฒเบเบชเบฐเบเบฒเบเบเบตเป.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบนเปเบชเปเบฒเบเบฒเบเบเบฒเบกเบงเปเบฒ, เบเปเบฒเบเปเปเบกเบตเบเบทเปเบเบเบตเปเบซเบงเปเบฒเบเปเบเบเบฒเบเบดเบเบฑเบ, เปเบเปเปเบเบปเปเบฒเบเบฑเบเบเปเปเปเบซเบฑเบเปเบเบฅเปเปเบเปเบเบตเปเบเบฐเปเบเปเบเบทเปเบเบเบตเปเบเบฑเบเบซเบกเบปเบ?
เปเบเปเบฅเบทเปเบญเบเบเบตเปเบเปเบญเบเปเบงเบปเปเบฒเบงเปเบฒเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเปเบเบดเปเบเบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเปเบเบตเปเปเบเบตเบเบขเบนเปเบชเบฐเปเบซเบกเบต, เบเบปเบงเบขเปเบฒเบเบเปเบงเบเบเปเบฒเบชเบฑเปเบ lsof, เปเบฅเบฐเปเบเบปเปเบฒเปเบเบงเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเปเบเปเปเบญเบปเบฒเบเบทเปเบเบเบตเปเบเบตเปเบกเบตเบขเบนเปเบเบฑเบเบซเบกเบปเบ, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเบเบฒเบกเบชเบฐเบเบฒเบเบฐเบเบฒเบ, เบเบถเปเบเบเบฑเบเบงเปเบฒเบเปเปเบกเบนเบเบเปเบญเบเบเบฒเบ. .
เบเบนเปเบชเปเบฒเบเบฒเบเปเบเปเบเบฑเบเบเบงเบฒเบเบเปเบญเบเปเบเบเปเบฒเบชเบธเบเบเปเบฒเบ, เปเบเบตเปเบกเบเปเบฒเบเบฒเบกเบเบญเบเบฅเบฒเบง: "เบชเบปเบกเบกเบธเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเบญเบเบเบฒเบเบเปเปเบกเบนเบ, เบกเบฑเบเปเบเบฑเบเบเบฝเบเปเบเปเบเบฑเบเบเบถเบเบเบฒเบเบเบตเบเบฑเบ, เปเบเปเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเปเปเบฎเบฑเบเบงเบฝเบเปเบเบฒเบฐเบงเปเบฒเบกเบฑเบเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบ debug เปเบเป"?
"เบเบปเบเบฅเบปเบ," เบเปเบญเบเบเบญเบเบงเปเบฒ, "เบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบเบดเบเบเบฒเบเบเบตเบเบฑเบเปเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบฅเบฐเปเบเบตเบเบกเบฑเบเปเบซเบกเป."
เบเบนเปเบชเปเบฒเบเบฒเบเปเบเปเบเบฑเบเบเปเบฒเบ: "เบเปเป, เบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบ restart เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเป, เบเบงเบเปเบฎเบปเบฒเบเบฑเบเบกเบตเบเปเปเบกเบนเบเบเบตเปเบชเปเบฒเบเบฑเบเบเบตเปเปเบเบฑเบเปเบงเปเปเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เปเบฅเบฐเบฅเบนเบเบเปเบฒเบเบตเปเบชเปเบฒเบเบฑเบเปเบกเปเบเปเบเบทเปเบญเบกเบเปเปเบเบฑเบเบเปเบฅเบดเบเบฒเบเบเบญเบเบกเบฑเบเปเบญเบ, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเบเบฑเบเบเบฑเบเปเบซเปเปเบเบทเปเบญเบกเบเปเปเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบ."
"เบเบปเบเบฅเบปเบ," เบเปเบญเบเปเบงเบปเปเบฒเบงเปเบฒ, "เบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเปเบเบตเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบซเบกเปเปเบฅเบฐเบเปเปเบกเบนเบเบเปเปเบชเปเบฒเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบฅเบถเบเปเบเบฅเปเบเบตเปเปเบเบตเบเบเบตเปเบเปเบฒเบเบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเป, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเปเบซเบฑเบเบกเบฑเบเบขเบนเปเปเบเบเปเบฒเบชเบฑเปเบ ls. เปเบเบฅเบฐเบเบปเบเปเบเบฅเป."
เบเบนเปเบชเปเบฒเบเบฒเบเบกเบตเบเบงเบฒเบกเบเบดเบเบเบต, เปเบเปเบเปเบญเบเบเปเปเปเบเป.
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบงเปเบฒ, เปเบเบฑเบเบซเบเบฑเบเบเบนเปเบเบตเปเบเบปเบเบชเบญเบเบเบงเบฒเบกเบฎเบนเปเบเบญเบเบเปเบญเบเบเปเปเปเบฅเบดเบเบเบงเปเบฒ? เปเบเปเบเบฐเปเบเบฑเบเปเบเบงเปเบเบเปเบฒเบเปเปเบกเบนเบเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบซเบผเบฑเบเบเบฒเบเบเบฑเบเบซเบกเบปเบ? เบเบฐเปเบเบฑเบเปเบเบงเปเบเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบเบเบฐเบเบงเบเบเบฒเบเปเบซเบกเป, เปเบฅเบฐเบเบฐเบเบงเบเบเบฒเบเบเบฝเบเปเบชเปเบฅเบฐเบเบปเบเปเบเบฅเปเปเบเบเบฒเบเบดเบเบฑเบเบเบตเปเบเปเปเบกเบตเบเบทเปเบเบเบตเปเบซเบงเปเบฒเบ? เบเบฐเปเบเบฑเบเปเบเบงเปเบเบเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเบชเบนเบเปเบชเบเบเปเปเบเบฝเบเปเบเปเบเปเปเบกเบนเบเบเบตเปเบเบฝเบเปเบฅเปเบง, เปเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบตเปเบเบฐเบเบงเบเบเบฒเบเบเบตเปเบเบฝเบเบซเบผเบทเบเบฐเบเบฒเบเบฒเบกเบเบฝเบ?
เบเบนเบเบดเบ
เปเบเบเบญเบเบเบปเปเบเบเบญเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเบญเบเบเปเบญเบ, เบเปเบญเบเบเบฐเบเบฒเบเบฒเบกเบชเปเบฒเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเปเบญเบเปเบเบตเปเบเปเบญเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒเบเปเปเบกเบนเบเบเบนเปเปเบเป. เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบดเบเบงเปเบฒ, เบเปเบญเบเบเบฐเบเบฑเบเบเบนเปเบเบนเปเปเบเปเบเบฑเบเบเปเปเบกเบนเบเบเบญเบเบฅเบฒเบงเปเบเปเปเบเบงเปเบ. เบเบปเบงเบขเปเบฒเบ, เบเปเบญเบเบกเบต Ivanov Ivan Ivanovich, เปเบฅเบฐเบฅเบฒเบงเบกเบตเบเปเปเบกเบนเบเบเบฒเบเบขเปเบฒเบ, เปเบเปเบเปเบญเบเบเบฐเบชเปเบฒเบเปเบเบทเปเบญเบเบเบฑเบเบเบงเบเปเบเบปเบฒเปเบเปเปเบเบงเปเบ? เบเปเบฒเบเบฐเปเบเบปเปเบฒเบชเบฒเบกเบฒเบเบเบตเปเปเบซเปเปเบซเบฑเบเปเบเบเบเบปเบเบงเปเบฒเบซเบกเบฒเบเบตเปเบกเบตเบเบทเปเบงเปเบฒ "Tuzik" เปเบเบฑเบเบเบญเบ Ivan เบเบตเป. เปเบเปเบเบฐเปเบเบฑเบเปเบเบงเปเบเบเปเบฒเบฅเบฒเบงเบเปเบฝเบเบเบทเปเบเบญเบเบฅเบฒเบงเปเบฅเบฐเปเบเบเบเบตเปเบเบฐ Ivan เบเบฒเบเปเบเบฑเบ, เบชเปเบฒเบฅเบฑเบเบเบปเบงเบขเปเบฒเบ, Olya? เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเบเบฐเบเบฒเบเบปเบเบงเปเบฒ Olya Ivanovna Ivanova เบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบกเบตเบซเบกเบฒเบญเบตเบเบเปเปเปเบ, เปเบฅเบฐ Tuzik เบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบปเบเปเบเบฑเบเบเบญเบ Ivan เบเบตเปเบเปเปเบกเบตเบขเบนเป. เบเบฒเบเบเปเปเบกเบนเบเบเบตเปเปเบซเปเบเบนเปเปเบเปเปเบเปเบฅเบฐเบเบปเบเบกเบตเบเบปเบงเบฅเบฐเบเบธเบเบตเปเปเบเบฑเบเปเบญเบเบฐเบฅเบฑเบ (ID) เบเปเบงเบเปเบเปเปเบเบเบฑเบเบซเบฒเบเบตเป, เปเบฅเบฐ Tuzik เบเบญเบเบเปเบญเบเบเบทเบเบเบนเบเบกเบฑเบเบเบฑเบ ID เบเบตเป, เปเบเบดเปเบเปเบเบเบปเบงเบเบดเบเปเบฅเปเบง, เปเบกเปเบเบเบฝเบเปเบเปเปเบฅเบเบฅเปเบฒเบเบฑเบ. เบเบฑเปเบเบเบฑเปเบ, เปเบเบปเปเบฒเบเบญเบเบเบญเบ ace เบกเบต ID เปเบฅเบ 2, เปเบฅเบฐเปเบเบเบฒเบเปเบงเบฅเบฒ Ivan เบขเบนเปเบเบฒเบเปเบเป ID เบเบตเป, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ Olya เบขเบนเปเบเบฒเบเปเบเป ID เบเบฝเบงเบเบฑเบ. เบเบฑเบเบซเบฒโเบกเบฐเบเบธเบโเปเบฅเบฐโเบเบฒเบโเบฅเปเบฝเบเบชเบฑเบโเปเบเปโเบฎเบฑเบโเบเบฒเบโเปเบเปโเปเบโเบขเปเบฒเบโเบเบฑเปเบเปเปเบฒ.
เบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเป
เบเบฑเบเบซเบฒเบเบญเบเปเบเบฅเปเปเบฅเบฐเปเบเบเบเบฒเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเบเบฑเบเปเบเบฅเปเบเบตเปเปเบกเปเบเบเบฐเบกเบฒเบเบเบทเบเบฑเบเบเบฑเบเบซเบกเบฒเปเบฅเบฐเบเบนเปเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ. เบชเบปเบกเบกเบธเบเบงเปเบฒเบเปเบญเบเปเบเปเปเบเบตเบเปเบเบฅเปเบเบตเปเปเบญเบตเปเบเบงเปเบฒ ivan.txt เปเบฅเบฐเปเบฅเบตเปเบกเบเบฝเบเบเปเบฒ tuzik เปเบเบปเปเบฒเปเบเปเบเบกเบฑเบ, เปเบเปเบชเบฒเบกเบฒเบเบเบฝเบเบเบปเบงเบญเบฑเบเบชเบญเบเบเปเบฒเบญเบดเบ "t" เปเบเปเบเบฅเป, เปเบฅเบฐเปเบเบฅเปเบเบตเปเบเบทเบเบเปเบฝเบเบเบทเปเปเบเบเบเบนเปเปเบเบเบนเปเบซเบเบถเปเบ, เบเบปเบงเบขเปเบฒเบ, เปเบเบฑเบ olya.txt. เปเบเปเปเบเบฅเปเบเบฑเบเบเบปเบเบขเบนเปเบเบทเปเบเบปเปเบฒ, เปเบฅเบฐเบเปเบญเบเบเบฑเบเบเปเบญเบเบเบฒเบเบเบฑเบเบเบถเบ ace เบเบญเบเบเปเบญเบเบขเบนเปเปเบเบกเบฑเบ. เบเบธเบเปเบเบฑเปเบเปเบเบตเบเปเบเบฅเปเปเบเบเบเบฒเบเปเบเบซเบฒเบฅเบฐเบเบปเบ
เปเบ Linux, เบซเปเบญเบเบชเบฐเบซเบกเบธเบ libc เปเบเบตเบ 3 เปเบเบฅเป descriptor เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบ (เบเบฐเบเบงเบเบเบฒเบ), เปเบฅเบ 0,1,2. เบเปเปเบกเบนเบเปเบเบตเปเบกเปเบเบตเบกเบชเบฒเบกเบฒเบเบเบปเบเปเบเปเปเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเป
- เบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเป 0 เปเบญเบตเปเบเบงเปเบฒ STDIN เปเบฅเบฐเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบเบฒเบเบเปเบญเบเบเปเปเบกเบนเบเบเบญเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ
- เบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเป 1 เบเบทเบเปเบญเบตเปเบเบงเปเบฒ STDOUT เปเบฅเบฐเบเบทเบเบเปเบฒเปเบเปเปเบเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเบทเปเบญเบชเบปเปเบเบเปเปเบกเบนเบเบญเบญเบ, เปเบเบฑเปเบเบเปเบฒเบชเบฑเปเบเบเบดเบก
- เบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเป 2 เปเบญเบตเปเบเบงเปเบฒ STDERR เปเบฅเบฐเบเบทเบเปเบเปเปเบเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบเบทเปเบญเบชเบปเปเบเบเปเปเบเบงเบฒเบกเบชเบฐเปเบเบเบเปเปเบเบดเบเบเบฒเบ.
เบเปเบฒเบขเบนเปเปเบเปเบเบผเปเบเบผเบกเบเบญเบเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบเบตเบเปเบเบฅเปเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเปเบฒเบเบซเบผเบทเบเบฝเบ, เบชเปเบงเบเบซเบผเบฒเบเบญเบฒเบเบเบฐเปเบเปเบฎเบฑเบ ID เบเบฃเบตเบเปเบฒเบญเบดเบเปเบฅเบฐเบกเบฑเบเบเบฐเปเบเบฑเบเปเบฅเบ 3.
เบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเปเบชเบฒเบกเบฒเบเปเบเบดเปเบเปเบเปเบชเปเบฒเบฅเบฑเบเบเบฐเบเบงเบเบเบฒเบเปเบเบเปเปเบเบฒเบกเบเปเบฒเบเปเบฒเบเบฎเบนเป PID เบเบญเบเบกเบฑเบ.
เบเบปเบงเบขเปเบฒเบ, เปเบซเปเปเบเบตเบ bash console เปเบฅเบฐเปเบเบดเปเบ PID เบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ
[user@localhost ]$ echo $$
15771
เปเบ console เบเบตเบชเบญเบเปเบซเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบตเบเบเบฒเบ
[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 เปเบเบฅเป descriptor เปเบกเปเบเบเปเบฝเบงเบเปเบญเบเบเบฑเบเบญเบธเบเบฐเบเบญเบ pseudo terminal
[user@localhost ]$ echo "hello world" > /proc/15771/fd/0
เปเบฅเบฐเปเบ console เบเปเบฒเบญเบดเบเบเบงเบเปเบฎเบปเบฒเบเบฐเปเบซเบฑเบ
[user@localhost ]$ hello world
เบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเปเบฅเบฐเบเปเป
เบเปเบฒเบเบชเบฒเบกเบฒเบ override เปเบซเบผเบปเปเบฒเบเบตเป 3 เปเบเบฅเป descriptor เปเบเปเบขเปเบฒเบเบเปเบฒเบเบเบฒเบเปเบเบเบฐเบเบงเบเบเบฒเบเปเบเบซเบเบถเปเบ, เบฅเบงเบกเบเบฑเบเปเบ bash, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบเปเบเบเบเปเบฒเบเบเปเปเปเบเบทเปเบญเบกเบเปเปเบชเบญเบเบเบฐเบเบงเบเบเบฒเบ, เปเบเบดเปเบ.
[user@localhost ]$ cat /dev/zero | sleep 10000
เบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเบเบตเปเบเบปเบงเบเปเบฒเบเปเบญเบเบเปเบงเบ strace -f เปเบฅเบฐเปเบเบดเปเบเบชเบดเปเบเบเบตเปเปเบเบตเบเบเบถเปเบเบเบฒเบเปเบ, เปเบเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฐเบเบญเบเบเปเบฒเบเปเบเบเบซเบเปเป.
เบเบฐเบเบงเบเบเบฒเบ bash เบเปเปเปเบกเปเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบ PID 15771 parses เบเปเบฒเบชเบฑเปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบฅเบฐเปเบเบปเปเบฒเปเบเบขเปเบฒเบเปเบเปเบเบดเบเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบซเบผเบฒเบเบเปเบฒเบชเบฑเปเบ, เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒเบกเบตเบชเบญเบเบเบญเบเปเบเบปเบฒเปเบเบปเปเบฒ: cat เปเบฅเบฐเบเบญเบ. 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
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบเปเบฒเปเบเปเบฅเบฐเบเบปเบเบเบฒเบเปเบ
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
เบขเปเบฒเบฅเบทเบกเบงเปเบฒ clone clones เบเบฐเบเบงเบเบเบฒเบเบเปเบญเบกเบเบฑเบ descriptors เปเบเบฅเปเบเบฑเบเบซเบกเบปเบ, เบเบฑเปเบเบเบฑเปเบเปเบเบปเบฒเปเบเบปเปเบฒเบเบฐเบเบทเบเบฑเบเปเบเบเบฐเบเบงเบเบเบฒเบเบเปเปเปเบกเปเปเบฅเบฐเปเบเปเบเบฑเบเบเปเบญเบ. เบงเบฝเบเบเบฒเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเปเปเปเบกเปเบเบตเปเบกเบต PID 15771 เปเบกเปเบเปเบเบทเปเบญเบเบดเบเบเบฒเบกเบเบฐเบเบงเบเบเบฒเบเบเบญเบเปเบเบฑเบ, เบชเบฐเบเบฑเปเบเบกเบฑเบเบเบฝเบเปเบเปเบฅเปเบเปเบฒเบเบฒเบเบเบญเบเบฎเบฑเบเบเบฒเบเปเบเบฑเบเบเปเบญเบ.
เบเบฑเปเบเบเบฑเปเบ, เบกเบฑเบเบเปเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเปเป, เปเบฅเบฐเบกเบฑเบเบเบดเบเบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเปเบเบตเปเบกเบตเปเบฅเบ 3 เปเบฅเบฐ 4.
เปเบเบเบฐเบเบงเบเบเบฒเบ bash เปเบเบฑเบเบเปเบญเบเบเบฑเปเบเบเปเบฒเบญเบดเบเบเบฑเบ PID 9004, เบฅเบฐเบเบปเบเปเบเบซเบฒ
เปเบเบเบฐเบเบงเบเบเบฒเบเบฅเบนเบเบเบตเบชเบญเบเบเบฑเบ PID 9005, bash เปเบเป dup2 เปเบเบทเปเบญเบเปเบฝเบเปเบเบฅเป descriptor STDIN เปเบฅเบ 0. เปเบเบเบฑเบเบเบธเบเบฑเบเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบตเป bash เบเบตเบชเบญเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเบฑเบ PID 9005 เบเบฐเบญเปเบฒเบเบเบฐเบเบทเบเบญเปเบฒเบเบเบฒเบเบเปเป.
เบซเบผเบฑเบเบเบฒเบเบเบตเป, เบเบปเบงเบญเบฐเบเบดเบเบฒเบเปเบเบฅเปเปเบฅเบ 3 เปเบฅเบฐ 4 เบเบฑเบเบเบทเบเบเบดเบเบขเบนเปเปเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบเปเบญเบ, เปเบเบฒเบฐเบงเปเบฒเบเบงเบเบกเบฑเบเบเปเปเปเบเปเปเบเปเบญเบตเบเบเปเปเปเบ.
เบเปเบญเบเปเบเบเบเบฐเบเบฒเบฅเบฐเปเบงเบฑเปเบเปเบเบฅเป descriptor 255; เบกเบฑเบเบเบทเบเบเปเบฒเปเบเปเปเบเบทเปเบญเบเบธเบเบเบฐเบชเบปเบเบเบฒเบเปเบเปเบเบ bash เบเบปเบงเบกเบฑเบเปเบญเบเปเบฅเบฐเบเบฑเบเบเบฐเบเบทเบเบเบดเบเบขเบนเปเปเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบเปเบญเบ.
เบเปเปเปเบ, เปเบเบเบฐเบเบงเบเบเบฒเบเปเบเบฑเบเบเปเบฒเบญเบดเบเบเบตเปเบกเบต PID 9004, bash เปเบฅเบตเปเบกเปเบเปเบเบฒเบเปเบเบฅเบฐเบเบปเบ
เปเบเบเบฐเบเบงเบเบเบฒเบเบฅเบนเบเบเบตเบชเบญเบเบเบตเปเบกเบต PID 9005, bash เบเปเบฒเปเบเบตเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบตเบชเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบเปเบฅเบฐเบเบธเปเบงเป, เปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ /usr/bin/sleep.
เบเบฒเบเปเบเบฅเบฐเบเบปเบ exec เบเปเปเบเบดเบเบเบปเบงเบเบฑเบเบเบฒเบเปเบเบฅเป เปเบงเบฑเปเบเปเบชเบเปเบเปเบงเปเบฒเบเบงเบเบกเบฑเบเบเบทเบเปเบเบตเบเบเปเบงเบเบเบธเบ O_CLOEXEC เปเบเปเบงเบฅเบฒเปเบเปเบเบตเบ. เปเบโเบเปโเบฅเบฐโเบเบตโเบเบญเบโเบเบงเบโเปเบฎเบปเบฒโ, เบซเบผเบฑเบโเบเบฒเบโเบเบฒเบโเปเบเบตเบโเบเบปเบงโเปเบเบฅโเปโเบเบตเปโเบเบฐโเบเบดโเบเบฑเบโเปเบเปโ, เบเบฒเบโเบญเบฐโเบเบดโเบเบฒเบโเปเบเบฅโเปโเบเบฑเบโเบซเบกเบปเบโเปเบโเบเบฑเบโเบเบธโเบเบฑเบโเบเบฐโเปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฑเบโเบเบถเบโเปเบงเปโ.
เบเบงเบเปเบเบดเปเบเปเบ console:
[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 megabyte เบเปเปเบงเบดเบเบฒเบเบตเปเบชเปเปเบเปเบ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบเปเบฒเปเบซเบเบเบปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเบเปเปเบกเบนเบเปเบชเปเปเบเปเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเปเปเบชเบปเบเปเบเปเบฅเบทเปเบญเบเบเบตเปเปเบฅเบฐเบเบฐเบเบฒเบเบฒเบกเบเบฝเบเบเปเปเบกเบนเบเบญเบตเบเปเบเบทเปเบญเบซเบเบถเปเบเปเบเบงเบดเบเบฒเบเบต. เปเบเบเบปเบงเบขเปเบฒเบเบเบตเปเบเปเบญเบเปเบเป 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
เบเบฑเปเบเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบซเบฑเบเปเบเป, เบเบฐเบซเบเบฒเบเปเบเบฅเปเบเบฝเบเปเบเปเปเบเบตเปเบกเบเบถเปเบเปเบฅเบฐเบฅเปเบฒเบเบปเปเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบเปเปเปเบเปเปเบฎเบฑเบเบงเบฝเบ. เปเบซเปเปเบเบดเปเบเปเบญเบเบฐเบชเบฒเบเบเบฒเบเปเบเบซเบฒเบฅเบฐเบเบปเบ
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
เบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบกเบเบฐเบเบงเบเบเบฒเบเปเบฅเปเบเปเบฅเปเบง
เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบฑเบเบเบฝเบเปเบเบฅเปเบเบฅเบก, เปเบกเบทเปเบญเบชเปเบฒเบเปเบฅเบฐเบเบปเบเบชเบญเบเปเบเบเบเบฒเบ, เปเบเป debuggers (เบเบปเบงเบขเปเบฒเบ GDB) เบซเบผเบทเบฅเบฐเบเบฑเบเบเปเบฒเบเปเบเบญเบเบเบฒเบเปเบเบปเปเบฒเบชเบนเปเบฅเบฐเบเบปเบเปเบเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบ. Linux เบชเบฐเบซเบเบญเบเบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเบฝเบเปเบฅเบฐเบเปเบฝเบเปเบเบเปเบเบเบเบฒเบเบเบตเปเปเบฎเบฑเบเบงเบฝเบเปเบฅเปเบง, เบเบปเบงเบขเปเบฒเบ, เบเบฒเบเบเปเบฝเบเปเบเบเบเปเบฒเบเบญเบเบเบปเบงเปเบ, เบเปเบฒเบเบปเบเบเบธเบเบขเบธเบ, เปเบฅเบฐเบญเบทเปเบเป.
เบเบฑเบเบเบทเบเปเบเบซเบฒเบเปเบฒเบเบฒเบกเบเบปเปเบเบชเบฐเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเบทเปเบเบเบตเปเบเบดเบเบเปเปเบเบฝเบเบเปเปเบเบเบฒเบเบเบฝเบเปเบเบฅเป, เปเบซเปเบเบฐเบเบฒเบเบฒเบกเบเปเบฒเบฅเบญเบเบเบฑเบเบซเบฒ.
เปเบซเปเบชเปเบฒเบเปเบเบฅเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบดเบเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบเบฐ mount เปเบเบฑเบเปเบเปเบเปเบเบเบเปเบฒเบเบซเบฒเบ:
[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% occupied.
เบเบงเบเปเบฎเบปเบฒเบเบทเปเปเบงเปเบงเปเบฒเบญเบตเบเบเบฒเบกเปเบเบทเปเบญเบเปเบเบเบญเบเบงเบฝเบเบเบฒเบ, เบเบงเบเปเบฎเบปเบฒเบเบฐเบเบฒเบเบฒเบกเบเบฑเบเบเบถเบเบเปเปเบกเบนเบเบเบตเปเบชเปเบฒเบเบฑเบเบซเบผเบฒเบเบเบตเปเบเปเปเบชเบฒเบกเบฒเบเบชเบนเบเปเบชเบเปเบเป. เปเบฅเบฐเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบ, เบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบเปเปเบเปเปเบเบเบฒเบเบเปเบฅเบดเบเบฒเบเปเบเบเบเปเปเบกเบตเบเบฒเบ restart เบเบฐเบเบงเบเบเบฒเบ.
เปเบซเปเปเบงเบปเปเบฒเบงเปเบฒเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบกเบตเบเบทเปเบเบเบตเปเบเบดเบ, เปเบเปเบขเบนเปเปเบเบเบฒเบเบดเบเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบเบปเบงเบขเปเบฒเบเปเบ / home.
เปเบซเปเบเบฐเบเบฒเบเบฒเบก "reprogram on the fly" เบฅเบฐเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ.
เปเบซเปเปเบเบดเปเบ 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
เบเบงเบเปเบฎเบปเบฒเปเบเบดเปเบเบเปเปเบกเบนเบเบเปเบฝเบงเบเบฑเบเปเบเบฅเป descriptor เปเบฅเบ 3, เปเบเบดเปเบเบเบงเบเปเบฎเบปเบฒเบชเบปเบเปเบ
(gdb) shell cat /proc/10078/fdinfo/3
pos: 8189952
flags: 0100001
mnt_id: 482
เบเบทเปเปเบงเปเบงเปเบฒเบฅเบฐเบเบปเบเปเบญเบตเปเบเบงเปเบฒ Python เปเบกเปเบเบซเบเบฑเบ (เปเบเบดเปเบเบเปเบฒเบเปเบเบดเบเบเปเบญเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเปเบฅเปเบ strace เปเบฅเบฐเบเบปเบเปเบซเบฑเบเบเบฒเบเปเบเปเบเบตเบ), เปเบกเบทเปเบญเบเบฐเบกเบงเบเบเบปเบเบฅเบฐเบซเบฑเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเปเบเบทเปเบญเปเบเบตเบเปเบเบฅเป, เบเบงเบเปเบฎเบปเบฒเปเบฎเบฑเบเปเบเบฑเปเบเบเบฝเบงเบเบฑเบเปเบเบเบฒเบกเบเบญเบเบเบฐเบเบงเบเบเบฒเบเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เปเบเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ O_WRONLY|O_CREAT| O_TRUNC bits เปเบเบเบเบตเปเบเปเบงเบเบเปเบฒเบเบปเบงเปเบฅเบ. เปเบเบทเปเบญเปเบฎเบฑเบเบชเบดเปเบเบเบตเป, เปเบเบตเบเปเบซเบผเปเบ kernel, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ
#define O_WRONLY 00000001
#define O_CREAT 00000100
#define 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
เบเบงเบเปเบฎเบปเบฒเบเบทเปเบเปเบฒเบเบปเบงเบขเปเบฒเบเบเบตเปเบกเบตเบเปเป - how bash เบเปเบฝเบเปเบเบเปเบเบฅเป descriptors, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเปเบเปเบฎเบฝเบเบฎเบนเปเบเบฒเบเปเบเบซเบฒเบฅเบฐเบเบปเบ 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
เบเปเปเบกเบตเบเปเปเบกเบนเบเบชเบนเบเปเบชเบ, เปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเปเบฎเบฑเบเบงเบฝเบ, เบเบฑเบเบเบถเบเบเบทเบเบเบฝเบเปเบงเปเปเบเบชเบฐเบเบฒเบเบเบตเปเปเบซเบกเป.
เปเบซเป complicate เบงเบฝเบเบเบฒเบเปเบฅเบฑเบเบเปเบญเบ
เบฅเบญเบเบเบดเบเบเบฐเบเบฒเบเบฒเบเบงเปเบฒเบเปเปเบกเบนเบเบกเบตเบเบงเบฒเบกเบชเปเบฒเบเบฑเบเบเบฑเบเบเบงเบเปเบฎเบปเบฒ, เปเบเปเบเบงเบเปเบฎเบปเบฒเบเปเปเบกเบตเบเบทเปเบเบเบตเปเบเบดเบชเบเปเบขเบนเปเปเบเบเบฒเบเบดเบเบฑเบเปเบเป โโเปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบเปเปเบชเบฒเบกเบฒเบเปเบเบทเปเบญเบกเบเปเปเปเบเปเบเปเบเป.
เบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเปเบกเปเบเบเบฒเบเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเบเปเปเบกเบนเบเบเบญเบเบเบงเบเปเบฎเบปเบฒเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเบซเบเบถเปเบ, เบเบปเบงเบขเปเบฒเบเบเบฑเบเบเปเป, เปเบฅเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบเปเบฝเบเปเบชเบฑเปเบเบเบฒเบเบเปเปเบกเบนเบเบเบฒเบเบเปเปเปเบเบซเบฒเปเบเบทเบญเบเปเบฒเบเปเบเบเบเปเบฒเบเบเบฒเบเปเบเบเบเบฒเบ, เบเบปเบงเบขเปเบฒเบ 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
เบขเบนเปเปเบเปเบเบตเบเปเบงเบตเบเบตเปเบกเบตเบเบฑเบเบซเบฒเบเบญเบเบเบงเบเปเบฎเบปเบฒ, เบเบงเบเปเบฎเบปเบฒเปเบเบตเบเบเบปเบงเปเบ terminal เปเบเบเบเปเบฒเบเบซเบฒเบ
[user@localhost ~]$ nc remote-server.example.com 7777 < /mnt/logs/megapipe
เปเบเบเบฑเบเบเบธเบเบฑเบเบเปเปเบกเบนเบเบเบฑเบเบซเบกเบปเบเบเบตเปเบชเบดเปเบเบชเบธเบเบฅเบปเบเปเบเบเปเปเบเบฐเปเบเบซเบฒ stdin เปเบ netcat เปเบเบเบญเบฑเบเบเบฐเปเบเบกเบฑเบ, เปเบเบดเปเบเบเบฐเบชเบปเปเบเบกเบฑเบเปเบเบซเบฒเปเบเบทเบญเบเปเบฒเบเปเบ port 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 podcasts.
เบเบตเบเบธเบเบขเปเบฒเบ.
เปเบเบเบฒเบเบฐเปเบเบฑเบเบเบฒเบเปเบฎเบฑเบเบงเบฝเบเบเปเบฒเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเบฐเบเปเบฒเปเบซเปเบเปเบฒเบเบเบดเบเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเบเบฐเบขเบนเปเปเบเบเบฐเบเบงเบเบเบฒเบ descriptors cat เปเบฅเบฐเบเบญเบเบเปเบฒเบซเบฒเบเบงเปเบฒเบเปเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบฒเบชเบฑเปเบเบเปเปเปเบเบเบตเป:
[user@localhost ~]$ cat /dev/zero 2>/dev/null| sleep 10000
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com