เชเชเชตเชพเชฐ, เชเช เชเชจเซเชเชฐเชตเซเชฏเซเชฎเชพเช, เชฎเชจเซ เชชเซเชเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ เชเซ เชคเชฎเชจเซ เชกเชฟเชธเซเชเชจเซ เชเชเซเชฏเชพ เชธเชฎเชพเชชเซเชค เชฅเช เชเช เชนเซเชตเชพเชจเซ เชเชพเชฐเชฃเซ เชคเซเชเซเชฒเซ เชธเซเชตเชพ เชฎเชณเซ เชคเซ เชคเชฎเซ เชถเซเช เชเชฐเชถเซ?
เช
เชฒเชฌเชคเซเชค, เชฎเซเช เชเชตเชพเชฌ เชเชชเซเชฏเซ เชเซ เชนเซเช เชเซเชเชถ เชเซ เช เชเชเซเชฏเชพ เชถเซเช เชเชฐเซ เชฐเชนเซ เชเซ เช
เชจเซ เชเซ เชถเชเซเชฏ เชนเซเชฏ เชคเซ, เชนเซเช เชคเซ เชเชเซเชฏเชพ เชธเชพเชซ เชเชฐเซเชถ.
เชชเชเซ เชเชจเซเชเชฐเชตเซเชฏเซเช
เชฐเซ เชชเซเชเซเชฏเซเช, เชเซ เชชเชพเชฐเซเชเซเชถเชจ เชชเชฐ เชเชพเชฒเซ เชเชเซเชฏเชพ เชจ เชนเซเชฏ, เชชเชฐเชเชคเซ เชคเชฎเชจเซ เชเชตเซ เชซเชพเชเชฒเซ เชชเชฃ เชฆเซเชเชพเชคเซ เชจเชฅเซ เชเซ เชเซ เชฌเชงเซ เชเชเซเชฏเชพ เชฒเซเชถเซ?
เช เชฎเชพเชเซ, เชฎเซเช เชเชนเซเชฏเซเช เชเซ เชคเชฎเซ เชนเชเชฎเซเชถเชพ เชเชชเชจ เชซเชพเชเชฒ เชกเชฟเชธเซเชเซเชฐเซเชชเซเชเชฐเซเชธเชจเซ เชเซเช เชถเชเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, lsof เชเชฎเชพเชจเซเชกเชฅเซ เช เชจเซ เชธเชฎเชเซ เชถเชเซ เชเซ เชเซ เชเช เชเชชเซเชฒเชฟเชเซเชถเชจเซ เชฌเชงเซ เชเชชเชฒเชฌเซเชง เชเชเซเชฏเชพ เชฒเซเชงเซ เชเซ, เช เชจเซ เชชเชเซ เชคเชฎเซ เชกเซเชเชพเชจเซ เชเชฐเซเชฐ เชเซ เชเซ เชเซเชฎ เชคเซเชจเชพ เชเชงเชพเชฐเซ เชธเชเชเซเชเซ เช เชจเซเชธเชพเชฐ เชเชพเชฐเซเชฏ เชเชฐเซ เชถเชเซ เชเซ. .
เชเชจเซเชเชฐเชตเซเชฏเซเช เชฐเซ เชฎเชจเซ เชเซเชฒเซเชฒเชพ เชถเชฌเซเชฆเชฎเชพเช เช เชเชเชพเชตเซเชฏเซ, เชคเซเชจเชพ เชชเซเชฐเชถเซเชจเชฎเชพเช เชเชฎเซเชฐเซเชฏเซเช: "เชงเชพเชฐเซ เชเซ เช เชฎเชจเซ เชกเซเชเชพเชจเซ เชเชฐเซเชฐ เชจเชฅเซ, เชคเซ เชฎเชพเชคเซเชฐ เชเช เชกเซเชฌเช เชฒเซเช เชเซ, เชชเชฐเชเชคเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชกเชพเชเชจ เชเซ เชเชพเชฐเชฃ เชเซ เชคเซ เชกเซเชฌเช เชฒเชเซ เชถเชเชคเซเช เชจเชฅเซ"?
"เช เซเช," เชฎเซเช เชเชตเชพเชฌ เชเชชเซเชฏเซ, "เช
เชฎเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฐเซเชชเชฐเซเชเชพเชฎเชพเช เชกเซเชฌเชเซเชเชเชจเซ เชฌเชเชง เชเชฐเซ เชถเชเซเช เชเซเช เช
เชจเซ เชคเซเชจเซ เชซเชฐเซเชฅเซ เชถเชฐเซ เชเชฐเซ เชถเชเซเช เชเซเช."
เชเชจเซเชเชฐเชตเซเชฏเซเช
เชฐเซ เชตเชพเชเชงเซ เชเช เชพเชตเซเชฏเซ: "เชจเชพ, เช
เชฎเซ เชเชชเซเชฒเชฟเชเซเชถเชจเชจเซ เชซเชฐเซเชฅเซ เชถเชฐเซ เชเชฐเซ เชถเชเชคเชพ เชจเชฅเซ, เช
เชฎเชพเชฐเซ เชชเชพเชธเซ เชนเชเซ เชชเชฃ เชฎเซเชฎเชฐเซเชฎเชพเช เชธเชเชเซเชฐเชนเชฟเชค เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชกเซเชเชพ เชเซ, เช
เชจเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซเชฒเชพเชฏเชจเซเชเซเชธ เชธเซเชตเชพ เชธเชพเชฅเซ เช เชเซเชกเชพเชฏเซเชฒเชพ เชเซ, เชเซเชจเซ เช
เชฎเซ เชซเชฐเซเชฅเซ เชเชจเซเชเซเช เชเชฐเชตเชพ เชฆเชฌเชพเชฃ เชเชฐเซ เชถเชเชคเชพ เชจเชฅเซ."
"เชธเชพเชฐเซเช," เชฎเซเช เชเชนเซเชฏเซเช, "เชเซ เชเชชเชฃเซ เชเชชเซเชฒเซเชเซเชถเชจ เชฐเซเชธเซเชเชพเชฐเซเช เชจ เชเชฐเซ เชถเชเซเช เช เชจเซ เชกเซเชเชพ เชเชชเชฃเชพ เชฎเชพเชเซ เชฎเชนเชคเซเชตเชจเซ เชจเชฅเซ, เชคเซ เชชเชเซ เชเชชเชฃเซ เช เชเซเชฒเซเชฒเซ เชซเชพเชเชฒเชจเซ เชซเชพเชเชฒ เชกเชฟเชธเซเชเซเชฐเซเชชเซเชเชฐ เชฆเซเชตเชพเชฐเชพ เชเชพเชฒเซ เชเชฐเซ เชถเชเซเช เชเซเช, เชชเชเซ เชญเชฒเซเชจเซ เชเชชเชฃเซ เชคเซเชจเซ ls เชเชฆเซเชถเชฎเชพเช เชเซเชคเชพ เชจ เชนเซเชฏ. เชซเชพเชเชฒ เชธเชฟเชธเซเชเชฎ."
เชเชจเซเชเชฐเชตเซเชฏเซ เชฒเซเชจเชพเชฐ เชธเชเชคเซเชทเซเช เชนเชคเซ, เชชเชฃ เชนเซเช เชจเชนเซเชคเซ.
เชชเชเซ เชฎเซเช เชตเชฟเชเชพเชฐเซเชฏเซเช, เชฎเชพเชฐเชพ เชเซเชเชพเชจเชจเซ เชเชธเซเชเซ เชเชฐเชจเชพเชฐ เชตเซเชฏเชเซเชคเชฟ เชเซเชฎ เชเชเชกเซ เชเซเชฆเชคเซ เชจเชฅเซ? เชชเชฐเชเชคเซ เชเซ เชกเซเชเชพ เชฌเชงเชพ เชชเชเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชนเซเชฏ เชคเซ เชถเซเช? เชเซ เชเชชเชฃเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชจ เชเชฐเซ เชถเชเซเช, เช
เชจเซ เชคเซ เช เชธเชฎเชฏเซ เช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชซเชพเชเชฒ เชธเชฟเชธเซเชเชฎเชจเซ เชชเชพเชฐเซเชเซเชถเชจ เชชเชฐ เชฒเชเซ เชเซ เชเซเชฎเชพเช เชเซเช เชเชพเชฒเซ เชเชเซเชฏเชพ เชจเชฅเซ? เชเซ เชเชชเชฃเซ เชซเชเซเชค เชชเชนเซเชฒเซเชฅเซ เช เชฒเชเซเชฒเชพ เชกเซเชเชพเชจเซ เช เชจเชนเซเช, เชชเชฃ เช เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเซ เชฒเชเซ เชฐเชนเซ เชเซ เช
เชฅเชตเชพ เชฒเชเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชฐเชนเซ เชเซ เชคเซ เชกเซเชเชพ เชชเชฃ เชเซเชฎเชพเชตเซ เชจ เชถเชเซเช เชคเซ เชถเซเช?
เชคเซเชเชฟเช
เชฎเชพเชฐเซ เชเชพเชฐเชเชฟเชฐเซเชฆเซเชจเซ เชถเชฐเซเชเชคเชฎเชพเช, เชนเซเช เชเช เชจเชพเชจเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชฌเชจเชพเชตเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชฐเชนเซเชฏเซ เชนเชคเซ เชเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเช เชตเชฟเชถเซเชจเซ เชฎเชพเชนเชฟเชคเซ เชธเชเชเซเชฐเชนเชฟเชค เชเชฐเชตเชพ เชฎเชพเชเซ เชเชฐเซเชฐเซ เชเซ. เช เชจเซ เชชเชเซ เชฎเซเช เชตเชฟเชเชพเชฐเซเชฏเซเช, เชนเซเช เชเซเชตเซ เชฐเซเชคเซ เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เชคเซเชจเชพ เชกเซเชเชพ เชธเชพเชฅเซ เชฎเซเช เชเชฐเซ เชถเชเซเช. เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฎเชพเชฐเซ เชชเชพเชธเซ เชเชตเชพเชจเชต เชเชตเชพเชจ เชเชตเชพเชจเซเชตเชฟเช เชเซ, เช เชจเซ เชคเซเชจเซ เชชเชพเชธเซ เชฅเซเชกเซ เชกเซเชเชพ เชเซ, เชชเชฐเชเชคเซ เชคเซเชฎเชจเซ เชธเชพเชฅเซ เชฎเชฟเชคเซเชฐเชคเชพ เชเซเชตเซ เชฐเซเชคเซ เชเชฐเชตเซ? เชนเซเช เชธเซเชงเซ เชจเชฟเชฐเซเชฆเซเชถ เชเชฐเซ เชถเชเซเช เชเซเช เชเซ "เชคเซเชเชฟเช" เชจเชพเชฎเชจเซ เชเซเชคเชฐเซ เช เช เชเชตเชพเชจเชจเซ เชเซ. เชชเชฐเชเชคเซ เชเซ เชคเซ เชชเซเชคเชพเชจเซเช เชจเชพเชฎ เชฌเชฆเชฒเซ เช เชจเซ เชเชตเชพเชจเชจเซ เชฌเชฆเชฒเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชฒเซเชฏเชพ เชฌเชจเซ เชคเซ เชถเซเช? เชชเชเซ เชคเซ เชฌเชนเชพเชฐ เชเชตเชถเซ เชเซ เชเชชเชฃเชพ เชเชฒเซเชฏเชพ เชเชตเชพเชจเซเชตเชจเชพ เชเชตเชพเชจเซเชตเชพ เชชเชพเชธเซ เชนเชตเซ เชเซเชคเชฐเซ เชฐเชนเซเชถเซ เชจเชนเซเช, เช เชจเซ เชเชชเชฃเซ เชคเซเชเชฟเช เชนเชเซ เชชเชฃ เช เชธเซเชคเชฟเชคเซเชตเชฎเชพเช เชจเชฅเซ เชคเซเชตเชพ เชเชตเชพเชจเชจเซ เชฐเชนเซเชถเซ. เชกเซเชเชพเชฌเซเชธเซ เช เชธเชฎเชธเซเชฏเชพเชจเซ เชเชเซเชฒเชตเชพเชฎเชพเช เชฎเชฆเชฆ เชเชฐเซ, เชเซเชฃเซ เชฆเชฐเซเช เชตเชชเชฐเชพเชถเชเชฐเซเชคเชพเชจเซ เช เชจเชจเซเชฏ เชเชณเชเชเชฐเซเชคเชพ (ID) เชเชชเซเชฏเซ, เช เชจเซ เชฎเชพเชฐเซเช Tuzik เช ID เชธเชพเชฅเซ เชเซเชกเชพเชฏเซเชฒเซเช เชนเชคเซเช, เชเซ เชนเชเซเชเชคเชฎเชพเช, เชฎเชพเชคเซเชฐ เชเช เชธเซเชฐเซเชฏเชฒ เชจเชเชฌเชฐ เชนเชคเซ. เชเชฎ, เชคเซเชเชฟเชเชจเซ เชฎเชพเชฒเชฟเช ID เชจเชเชฌเชฐ 2 เชธเชพเชฅเซ เชนเชคเซ, เช เชจเซ เช เชฎเซเช เชธเชฎเชฏเซ เชเชตเชพเชจ เช ID เชนเซเช เชณ เชนเชคเซ, เช เชจเซ เชชเชเซ เชเชฒเซเชฏเชพ เชธเชฎเชพเชจ ID เชนเซเช เชณ เชฌเชจเซเชฏเซ. เชฎเชพเชจเชตเชเชพเชค เช เชจเซ เชชเชถเซเชชเชพเชฒเชจเชจเซ เชธเชฎเชธเซเชฏเชพ เชตเซเชฏเชตเชนเชพเชฐเซเช เชฐเซเชคเซ เชนเชฒ เชฅเช เชเช.
เชซเชพเชเชฒ เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพ
เช เชซเชพเชเชฒ เชธเชพเชฅเซ เชเชพเชฎ เชเชฐเชคเซ เชซเชพเชเชฒ เช
เชจเซ เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเซ เชธเชฎเชธเซเชฏเชพ เชเชชเชฃเชพ เชเซเชคเชฐเชพ เช
เชจเซ เชฎเชพเชจเชต เชเซเชตเซ เช เชเซ. เชงเชพเชฐเซ เชเซ เชฎเซเช ivan.txt เชจเชพเชฎเชจเซ เชซเชพเชเชฒ เชเซเชฒเซ เช
เชจเซ เชคเซเชฎเชพเช tuzik เชถเชฌเซเชฆ เชฒเชเชตเชพเชจเซเช เชถเชฐเซ เชเชฐเซเชฏเซเช, เชชเชฐเชเชคเซ เชซเชพเชเชฒเชฎเชพเช เชซเชเซเชค เชชเซเชฐเชฅเชฎ เช
เชเซเชทเชฐ โtโ เช เชฒเชเชตเชพเชฎเชพเช เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเซ, เช
เชจเซ เช เชซเชพเชเชฒเชจเซเช เชจเชพเชฎ เชเซเชเช เชฌเชฆเชฒเซเชฏเซเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, olya.txt. เชชเชฐเชเชคเซ เชซเชพเชเชฒ เชเช เช เชเซ เช
เชจเซ เชนเซเช เชนเชเซ เชชเชฃ เชคเซเชจเชพ เชชเชฐ เชฎเชพเชฐเซ เชชเชพเชธเชพเชจเซ เชชเซ เชฒเชเชตเชพ เชฎเชพเชเชเซ เชเซเช. เชฆเชฐ เชตเชเชคเซ เชเซเชฏเชพเชฐเซ เชคเชฎเซ เชธเชฟเชธเซเชเชฎ เชเซเชฒ เชธเชพเชฅเซ เชซเชพเชเชฒ เชเซเชฒเซ เชเซ
Linux เชชเชฐ, libc เชฒเชพเชเชฌเซเชฐเซเชฐเซ เชฆเชฐเซเช เชเชพเชฒเซ เชฐเชนเซเชฒ เชเชชเซเชฒเชฟเชเซเชถเชจ (เชชเซเชฐเชเซเชฐเชฟเชฏเชพ) เชฎเชพเชเซ 3 เชจเชเชฌเชฐเซ เชธเชพเชฅเซ 0,1,2 เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพ เชซเชพเชเชฒเซ เชเซเชฒเซ เชเซ. เชตเชงเซ เชฎเชพเชนเชฟเชคเซ เชคเชฎเซ เชฒเชฟเชเชเซเชธ เชชเชฐ เชฎเซเชณเชตเซ เชถเชเซ เชเซ
- เชซเชพเชเชฒ เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพ 0 เชจเซ STDIN เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช เชจเซ เชคเซ เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชจเชชเซเช เชธเชพเชฅเซ เชธเชเชเชณเชพเชฏเซเชฒเซเช เชเซ.
- เชซเชพเชเชฒ เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพ 1 เชจเซ STDOUT เชเชนเซเชตเชพเชฎเชพเช เชเชตเซ เชเซ เช เชจเซ เชคเซเชจเซ เชเชชเชฏเซเช เชชเซเชฐเชฟเชจเซเช เชเชฎเชพเชจเซเชกเซเชธ เชเซเชตเซ เชเชเชเชชเซเช เชเชชเซเชฒเชฟเชเซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชฅเชพเชฏ เชเซ.
- เชซเชพเชเชฒ เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพ 2 เชจเซ STDERR เชจเชพเชฎ เชเชชเชตเชพเชฎเชพเช เชเชตเซเชฏเซเช เชเซ เช เชจเซ เชคเซเชจเซ เชเชชเชฏเซเช เชเชชเซเชฒเซเชเซเชถเชจ เชฆเซเชตเชพเชฐเชพ เชญเซเชฒ เชธเชเชฆเซเชถเชพเชเชจเซ เชเชเชเชชเซเช เชเชฐเชตเชพ เชฎเชพเชเซ เชฅเชพเชฏ เชเซ.
เชเซ เชคเชฎเชพเชฐเชพ เชชเซเชฐเซเชเซเชฐเชพเชฎเชฎเชพเช เชคเชฎเซ เชตเชพเชเชเชตเชพ เช เชฅเชตเชพ เชฒเชเชตเชพ เชฎเชพเชเซ เชเซเชเชชเชฃ เชซเชพเชเชฒ เชเซเชฒเซ เชเซ, เชคเซ เชธเชเชญเชตเชคเช เชคเชฎเชจเซ เชชเซเชฐเชฅเชฎ เชฎเชซเชค ID เชฎเชณเชถเซ เช เชจเซ เชคเซ เชจเชเชฌเชฐ 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 เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพ เชซเชพเชเชฒเซ เชธเซเชฏเซเชกเซ-เชเชฐเซเชฎเชฟเชจเชฒ เชเชชเชเชฐเชฃ เชธเชพเชฅเซ เชธเชเชเชณเชพเชฏเซเชฒเซ เชเซ
[user@localhost ]$ echo "hello world" > /proc/15771/fd/0
เช เชจเซ เชชเซเชฐเชฅเชฎ เชเชจเซเชธเซเชฒเชฎเชพเช เชเชชเชฃเซ เชเซเชเชถเซเช
[user@localhost ]$ hello world
เชฐเซเชกเชพเชฏเชฐเซเชเซเช เช เชจเซ เชชเชพเชเชช
เชคเชฎเซ เชฌเซเชถ เชธเชนเชฟเชค เชเซเชเชชเชฃ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช เช 3 เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพ เชซเชพเชเชฒเซเชจเซ เชธเชฐเชณเชคเชพเชฅเซ เชเชตเชฐเชฐเชพเชเชก เชเชฐเซ เชถเชเซ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชฌเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชจเซ เชเซเชกเชคเซ เชชเชพเชเชช (เชชเชพเชเชช) เชฆเซเชตเชพเชฐเชพ, เชเซเช
[user@localhost ]$ cat /dev/zero | sleep 10000
เชคเชฎเซ เช เชเชฆเซเชถ เชเชพเชคเซ เชเชฒเชพเชตเซ เชถเชเซ เชเซ strace -f เช เชจเซ เช เชเชฆเชฐ เชถเซเช เชเชพเชฒเซ เชฐเชนเซเชฏเซเช เชเซ เชคเซ เชเซเช, เชชเชฐเชเชคเซ เชนเซเช เชคเซเชจเซ เชเซเชเชเซเช เชเชฐเซเชถ.
PID 15771 เชธเชพเชฅเซเชจเซ เช เชฎเชพเชฐเซ เชชเซเชฐเซเชจเซเช เชฌเซเชถ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เช เชฎเชพเชฐเชพ เชเชฆเซเชถเชจเซ เชชเชพเชฐเซเชธ เชเชฐเซ เชเซ เช เชจเซ เชฌเชฐเชพเชฌเชฐ เชธเชฎเชเซ เชเซ เชเซ เชเชชเชฃเซ เชเซเชเชฒเชพ เชเชฆเซเชถเซ เชเชฒเชพเชตเชตเชพ เชฎเชพเชเชเซเช เชเซเช, เช เชฎเชพเชฐเชพ เชเชฟเชธเซเชธเชพเชฎเชพเช เชคเซเชฎเชพเชเชฅเซ เชฌเซ เชเซ: เชฌเชฟเชฒเชพเชกเซ เช เชจเซ เชเชเช. เชฌเชพเชถ เชเชพเชฃเซ เชเซ เชเซ เชคเซเชจเซ เชฌเซ เชฌเชพเชณ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชฌเชจเชพเชตเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เช เชจเซ เชคเซเชฎเชจเซ เชเช เชชเชพเชเชชเชฎเชพเช เชฎเชฐเซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ. เชเซเชฒ, เชฌเซเชถเชจเซ 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
เชญเซเชฒเชถเซ เชจเชนเซเช เชเซ เชเซเชฒเซเชจ เชคเชฎเชพเชฎ เชซเชพเชเชฒ เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพเช เชธเชพเชฅเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชเซเชฒเซเชจ เชเชฐเซ เชเซ, เชคเซเชฅเซ เชคเซ เชชเชฟเชคเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช เช เชจเซ เชฌเชพเชณเชเซเชฎเชพเช เชธเชฎเชพเชจ เชนเชถเซ. PID 15771 เชธเชพเชฅเซเชจเซ เชชเซเชฐเซเชจเซเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซเช เชเชพเชฐเซเชฏ เชฌเชพเชณเชเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชชเชฐ เชฆเซเชเชฐเซเช เชฐเชพเชเชตเชพเชจเซเช เชเซ, เชคเซเชฅเซ เชคเซ เชฎเชพเชคเซเชฐ เชฌเชพเชณเชเซเชจเชพ เชชเซเชฐเชคเชฟเชญเชพเชตเชจเซ เชฐเชพเชน เชเซเช เชเซ.
เชคเซเชฅเซ, เชคเซเชจเซ เชชเชพเชเชชเชจเซ เชเชฐเซเชฐ เชจเชฅเซ, เช เชจเซ เชคเซ 3 เช เชจเซ 4 เชจเชเชฌเชฐเซ เชธเชพเชฅเซ เชซเชพเชเชฒ เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพเชเชจเซ เชฌเชเชง เชเชฐเซ เชเซ.
เชชเซเชเชเชกเซ 9004 เชธเชพเชฅเซ เชชเซเชฐเชฅเชฎ เชฌเซเชถ เชเชพเชเชฒเซเชก เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช, เชธเชฟเชธเซเชเชฎ เชเซเชฒ เชเชฐเซ เชเซ
PID 9005 เชธเชพเชฅเซเชจเซ เชฌเซเชเซ เชเชพเชเชฒเซเชก เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช, bash เชซเชพเชเชฒเชจเซ STDIN เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพ เชจเชเชฌเชฐ 2 เชชเชฐ dup0 เชเชฐเซ เชเซ. เชนเชตเซ PID 9005 เชธเชพเชฅเซเชจเซ เช เชฎเชพเชฐเซ เชฌเซเชเซ เชฌเซเชถ เชเซ เชตเชพเชเชเชถเซ เชคเซ เชฌเชงเซเช เชชเชพเชเชชเชฎเชพเชเชฅเซ เชตเชพเชเชเชถเซ.
เชคเซ เชชเชเซ, 3 เช เชจเซ 4 เชจเชเชฌเชฐเซ เชธเชพเชฅเซเชจเชพ เชซเชพเชเชฒ เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพเช เชชเชฃ เชฌเชพเชณ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชฎเชพเช เชฌเชเชง เชเซ, เชเชพเชฐเชฃ เชเซ เชคเซ เชนเชตเซ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชคเชพ เชจเชฅเซ.
เชนเซเช เชเชพเชฃเซเชเซเชเชจเซ เชซเชพเชเชฒ เชกเชฟเชธเซเชเซเชฐเซเชชเซเชเชฐ 255 เชจเซ เช เชตเชเชฃเซเช เชเซเช, เชคเซ เชเชเชคเชฐเชฟเช เชฐเซเชคเซ เชฌเซเชถ เชฆเซเชตเชพเชฐเชพ เชเชชเชฏเซเชเชฎเชพเช เชฒเซเชตเชพเชฏ เชเซ เช เชจเซ เชฌเชพเชณ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชฎเชพเช เชชเชฃ เชฌเชเชง เชเชฐเชตเชพเชฎเชพเช เชเชตเชถเซ.
เชเชเชณ, PID 9004 เชธเชพเชฅเซเชจเซ เชชเซเชฐเชฅเชฎ เชเชพเชเชฒเซเชก เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชฎเชพเช, bash เชธเชฟเชธเซเชเชฎ เชเซเชฒ เชธเชพเชฅเซ เชถเชฐเซ เชฅเชพเชฏ เชเซ
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
เชเซเชฎ เชคเชฎเซ เชเซเช เชถเชเซ เชเซ, เช เชฎเชพเชฐเซ เชชเชพเชเชชเชจเซ เช เชจเชจเซเชฏ เชธเชเชเซเชฏเชพ เชฌเชเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชเชฎเชพเช เชธเชฎเชพเชจ เชเซ. เชเชฎ, เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชเช เช เชชเชฟเชคเซ เชธเชพเชฅเซเชจเซ เชฌเซ เช เชฒเช เช เชฒเช เชชเซเชฐเชเซเชฐเชฟเชฏเชพเช เชตเชเซเชเซเชจเซเช เชเซเชกเชพเชฃ เชเซ.
เชเซเช เชฌเซเชถ เชเชชเชฏเซเช เชเชฐเซ เชเซ เชคเซ เชธเชฟเชธเซเชเชฎ เชเซเชฒเซเชธเชฅเซ เชชเชฐเชฟเชเชฟเชค เชจเชฅเซ, เชนเซเช เชธเซเชเซเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เชเชฆเซเชถเซ เชเชฒเชพเชตเชตเชพเชจเซ เชญเชฒเชพเชฎเชฃ เชเชฐเซเช เชเซเช เช เชจเซ เชเซเช เชเซ เช เชเชฆเชฐ เชถเซเช เชฅเชพเชฏ เชเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชเชจเชพ เชเซเชตเซเช:
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:
"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) เช เชฅเชตเชพ เชเชชเซเชฒเชฟเชเซเชถเชจเชฎเชพเช เชฒเซเชเชฟเชเชเชจเชพ เชตเชฟเชตเชฟเชง เชธเซเชคเชฐเซเชจเซ เชเชชเชฏเซเช เชเชฐเซ เชเซ. Linux เช เชชเชนเซเชฒเชพเชฅเซ เชเชพเชฒเซ เชฐเชนเซเชฒ เชชเซเชฐเซเชเซเชฐเชพเชฎเชจเซ เชเชฐเซเชเชฐ เชฒเชเชตเชพ เช เชจเซ เชฌเชฆเชฒเชตเชพเชจเซ เชเซเชทเชฎเชคเชพ เชชเซเชฐเซ เชชเชพเชกเซ เชเซ, เชเซเชฎ เชเซ เชตเซเชฐเซเชเชฌเชฒเซเชธเชจเซ เชเชฟเชเชฎเชคเซ เชฌเชฆเชฒเชตเซ, เชฌเซเชฐเซเชเชชเซเชเชจเซเช เชธเซเช เชเชฐเชตเซเช, เชตเชเซเชฐเซ เชตเชเซเชฐเซ.
เชซเชพเชเชฒ เชฒเชเชตเชพ เชฎเชพเชเซ เชกเชฟเชธเซเช เชเชเซเชฏเชพเชจเชพ เช เชญเชพเชต เชตเชฟเชถเซเชจเชพ เชฎเซเชณ เชชเซเชฐเชถเซเชจ เชชเชฐ เชชเชพเชเชพ เชซเชฐเซ, เชเชพเชฒเซ เชธเชฎเชธเซเชฏเชพเชจเซเช เช เชจเซเชเชฐเชฃ เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซเช.
เชเชพเชฒเซ เชเชชเชฃเชพ เชชเชพเชฐเซเชเซเชถเชจ เชฎเชพเชเซ เชเช เชซเชพเชเชฒ เชฌเชจเชพเชตเซเช, เชเซเชจเซ เชเชชเชฃเซ เช เชฒเช เชกเซเชฐเชพเชเชต เชคเชฐเซเชเซ เชฎเชพเชเชจเซเช เชเชฐเซเชถเซเช:
[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% เชชเชฐ เชเชฌเชเซ เชเชฐเซเชฏเซ.
เช เชฎเซ เชฏเชพเชฆ เชฐเชพเชเซเช เชเซเช เชเซ เชธเชฎเชธเซเชฏเชพเชจเซ เชชเชฐเชฟเชธเซเชฅเชฟเชคเชฟเช เช เชจเซเชธเชพเชฐ, เช เชฎเซ เชเซเชฌ เช เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชกเซเชเชพ เชฐเซเชเซเชฐเซเชก เชเชฐเชตเชพเชจเซ เชชเซเชฐเชฏเชพเชธ เชเชฐเซ เชฐเชนเซเชฏเชพ เชเซเช เชเซ เชเซเชฎเชพเชตเซ เชถเชเชพเชคเซ เชจเชฅเซ. เช เชจเซ เชเชฎ เชเชฐเชตเชพเชฅเซ, เช เชฎเชพเชฐเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเซ เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชเชฐเซเชฏเชพ เชตเชฟเชจเชพ เชธเซเชตเชพเชจเซ เช เซเช เชเชฐเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ.
เชเชพเชฒเซ เชเชนเซเช เชเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชนเชเซ เชชเชฃ เชกเชฟเชธเซเช เชเชเซเชฏเชพ เชเซ, เชชเชฐเชเชคเซ เชเช เช เชฒเช เชชเชพเชฐเซเชเซเชถเชจเชฎเชพเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, in/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 เชถเซเช เชธเชฟเชธเซเชเชฎ เชเซเชฒ เชเชฐเซ เชเซ เชคเซ เชงเซเชฏเชพเชจเชฎเชพเช เชฐเชพเชเซเชจเซ (เชเชชเชฐ เชเซเช เชเซเชฏเชพเช เช
เชฎเซ เชธเซเชเซเชฐเซเชธ เชเชฒเชพเชตเซ เช
เชจเซ เชเช เชเชชเชจ เชเซเชฒ เชฎเชณเซเชฏเซ), เชซเชพเชเชฒ เชเซเชฒเชตเชพ เชฎเชพเชเซ เช
เชฎเชพเชฐเชพ เชเซเชก เชชเชฐ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชเชฐเชคเซ เชตเชเชคเซ, เช
เชฎเซ เช
เชฎเชพเชฐเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพ เชตเชคเซ เชคเซ เช เชเชฐเซเช เชเซเช, เชชเชฐเชเชคเซ เช
เชฎเชจเซ O_WRONLY|O_CREAT| O_TRUNC เชฌเชฟเชเซเชธ เชธเชเชเซเชฏเชพเชคเซเชฎเช เชฎเซเชฒเซเชฏ เชธเชพเชฅเซ เชฌเชฆเชฒเชพเชฏ เชเซ. เช เชเชฐเชตเชพ เชฎเชพเชเซ, เชเชฐเซเชจเชฒ เชธเซเชคเซเชฐเซเชคเซ เชเซเชฒเซ, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ
# O_WRONLY 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
เชกเซเชเชพ เชเซเชตเชพเช เชเชฏเซ เชจเชฅเซ, เชเชชเซเชฒเชฟเชเซเชถเชจ เชเชพเชฐเซเชฏ เชเชฐเซ เชเซ, เชฒเซเช เชจเชตเชพ เชธเซเชฅเชพเชจ เชชเชฐ เชฒเชเชตเชพเชฎเชพเช เชเชตเซ เชเซ.
เชเชพเชฒเซ เชตเชธเซเชคเซเชเชจเซ เชฅเซเชกเซ เชตเชงเซ เชฎเซเชถเซเชเซเชฒ เชฌเชจเชพเชตเซเช
เชเชฒเซเชชเชจเชพ เชเชฐเซ เชเซ เชกเซเชเชพ เช เชฎเชพเชฐเชพ เชฎเชพเชเซ เชฎเชนเชคเซเชตเชชเซเชฐเซเชฃ เชเซ, เชชเชฐเชเชคเซ เช เชฎเชพเชฐเซ เชชเชพเชธเซ เชเซเชเชชเชฃ เชชเชพเชฐเซเชเซเชถเชจเซเชฎเชพเช เชกเชฟเชธเซเช เชเชเซเชฏเชพ เชจเชฅเซ เช เชจเซ เช เชฎเซ เชกเชฟเชธเซเชเชจเซ เชเชจเซเชเซเช เชเชฐเซ เชถเชเชคเชพ เชจเชฅเซ.
เชเชชเชฃเซ เชเชชเชฃเชพ เชกเซเชเชพเชจเซ เชเซเชฏเชพเชเช เชฐเซเชกเชพเชฏเชฐเซเชเซเช เชเชฐเซ เชถเชเซเช เชเซเช, เชเชฆเชพเชนเชฐเชฃ เชคเชฐเซเชเซ, เชชเชพเชเชช เชชเชฐ, เช
เชจเซ เชจเซเชเชเซเช เชเซเชตเชพ เชชเซเชฐเซเชเซเชฐเชพเชฎ เชฆเซเชตเชพเชฐเชพ เชชเชพเชเชชเชฎเชพเชเชฅเซ เชกเซเชเชพเชจเซ เชจเซเชเชตเชฐเซเช เชชเชฐ เชฐเซเชกเชพเชฏเชฐเซเชเซเช เชเชฐเซเช เชเซเช.
mkfifo เชเชฆเซเชถ เชตเชกเซ เชเชชเชฃเซ เชจเชพเชฎเชตเชพเชณเซ เชชเชพเชเชช เชฌเชจเชพเชตเซ เชถเชเซเช เชเซเช. เชคเซ เชซเชพเชเชฒ เชธเชฟเชธเซเชเชฎ เชชเชฐ เชธเซเชฏเซเชกเซ เชซเชพเชเชฒ เชฌเชจเชพเชตเชถเซ, เชญเชฒเซ เชคเซเชจเชพ เชชเชฐ เชเซเช เชเชพเชฒเซ เชเชเซเชฏเชพ เชจ เชนเซเชฏ.
เชเชชเซเชฒเชฟเชเซเชถเชจ เชชเซเชจเชเชชเซเชฐเชพเชฐเชเชญ เชเชฐเซ เช เชจเซ เชคเชชเชพเชธเซ:
[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
เชนเชตเซ เชเชชเชฃเซ เชเซเชเชชเชฃ เชฐเซเชคเซ เชจเซเชเชตเชฐเซเช เชฆเซเชตเชพเชฐเชพ เช เชชเชพเชเชชเชฎเชพเช เชเชตเชคเชพ เชคเชฎเชพเชฎ เชกเซเชเชพเชจเซ เชฌเซเชเชพ เชธเชฐเซเชตเชฐ เชชเชฐ เชฒเชชเซเชเซ เชฒเซเชตเชพเชจเซ เชเชฐเซเชฐ เชเซ, เชคเซ เช เชจเซเชเชเซเช เช เชฎเชพเชเซ เชฏเซเชเซเชฏ เชเซ.
remote-server.example.com เชธเชฐเซเชตเชฐ เชชเชฐ, เชเชฒเชพเชตเซ
[user@localhost ~]$ nc -l 7777 > 123.txt
เช เชฎเชพเชฐเชพ เชธเชฎเชธเซเชฏเชพ เชธเชฐเซเชตเชฐ เชชเชฐ, เชเช เช เชฒเช เชเชฐเซเชฎเชฟเชจเชฒเชฎเชพเช เชเชฒเชพเชตเซ
[user@localhost ~]$ nc remote-server.example.com 7777 < /mnt/logs/megapipe
เชนเชตเซ เชคเชฎเชพเชฎ เชกเซเชเชพ เชเซ เชชเชพเชเชชเชฎเชพเช เชเชตเชถเซ เชคเซ เชเชชเชฎเซเชณเซ netcat เชฎเชพเช stdin เชชเชฐ เชเชถเซ, เชเซ เชคเซเชจเซ เชชเซเชฐเซเช 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
เชกเซเชเชพ เชธเชพเชเชตเชตเชพเชฎเชพเช เชเชตเซ เชเซ, เชธเชฎเชธเซเชฏเชพ เชนเชฒ เชฅเชพเชฏ เชเซ.
เชนเซเช เชฆเซเชเซเชฐเซเชจเชพ เชธเชนเชเชพเชฐเซเชฏเชเชฐเซเชจเซ เชนเซเชฒเซ เชเชนเซเชตเชพเชจเซ เช เชคเชเชจเซ เชเชชเชฏเซเช เชเชฐเซเช เชเซเช.
เชฐเซเชกเชฟเชฏเซ-เชเซ เชชเซเชกเชเชพเชธเซเช เชธเชพเชเชญเชณเซ.
เชธเซเชจเซ เชธเชพเชฐเซเช.
เชนเซเชฎเชตเชฐเซเช เชคเชฐเซเชเซ, เชเซ เชคเชฎเซ เชจเซเชเซเชจเซ เชเชฆเซเชถ เชเชฒเชพเชตเซ เชเซ เชคเซ เชนเซเช เชฌเชฟเชฒเชพเชกเซ เช เชจเซ เชเชเชเชจเซ เชชเซเชฐเชเซเชฐเชฟเชฏเชพเชจเชพ เชซเชพเชเชฒ เชตเชฐเซเชฃเชจเชเชฐเซเชคเชพเชเชฎเชพเช เชถเซเช เชนเชถเซ เชคเซ เชตเชฟเชถเซ เชตเชฟเชเชพเชฐเชตเชพเชจเซ เชชเซเชฐเชธเซเชคเชพเชต เชฎเซเชเซเช เชเซเช:
[user@localhost ~]$ cat /dev/zero 2>/dev/null| sleep 10000
เชธเซเชฐเซเชธ: www.habr.com