แแ แแฎแแ, แแแขแแ แแแฃแก แแ แแก แแแแแฎแแก, แ แแก แแแแแแฅแแแแแแ, แแฃ แแฆแแแแฉแแแ, แ แแ แกแแ แแแกแ แแ แแฃแจแแแแก แแแแก แแแแ, แ แแ แแแกแแก แแแแแแ แแแแแฌแฃแ แ?
แ แแแฅแแแฃแแแ แแฃแแแกแฃแฎแ, แ แแ แแแแฎแแแแ แแ แแแแแแก แแ แแฃ แจแแแซแแแแ, แแแแแกแฃแคแแแแแแแ แแแแแแก.
แจแแแแแ แแแขแแ แแแฃแแ แแ แฐแแแแฎแ, แ แ แแแฎแแแแ, แแฃ แแ แแ แแก แแแแแกแฃแคแแแ แแแแแแ แแแแแงแแคแแ, แแแแ แแ แแกแแแ แแแ แฎแแแแแ แคแแแแแแก, แ แแแแแแแช แแแแ แแแแแแก แแแแแแแแแแ?
แแแแแ แแ แแแฅแแ, แ แแ แแฅแแแ แงแแแแแแแแก แจแแแแซแแแแ แจแแฎแแแแ แฆแแ แคแแแแแก แแฆแฌแแ แแแก, แแแแแแแแแ, lsof แแ แซแแแแแแ, แแ แแแแแแ, แ แแแแแแ แแแแแแแชแแแ แแแแแแแ แแแแแ แแ แกแแแฃแแ แกแแแ แชแ, แจแแแแแ แแ แจแแแแซแแแแ แแแแฅแแแแแ แแแ แแแแแแแแแก แแแฎแแแแแ, แแแแก แแแฎแแแแแ, แกแแญแแ แแ แแฃ แแ แ แแแแแชแแแแแ. .
แแแขแแ แแแฃแแ แแ แแแแ แกแแขแงแแแแ แจแแแแฌแงแแแขแแแ แแ แแแฃแแแขแ แแแแแก แจแแแแแฎแแแก: โแแแแฃแจแแแ, แ แแ แฉแแแ แแ แแแญแแ แแแแ แแแแแชแแแแแ, แแก แแฎแแแแ แแแแแ แแแแก แแฃแ แแแแแ, แแแแ แแ แแแแแแแชแแ แแ แแฃแจแแแแก, แ แแแแแ แแแก แแ แจแแฃแซแแแ แแแแแ แแแแก แแแฌแแ แโ?
โแแแ แแ,โ แแฃแแแกแฃแฎแ แแ, โแฉแแแ แจแแแแแซแแแ แแแแแ แแแ แแแแแ แแแ แแ แแแ แแแแก แแแแคแแแฃแ แแชแแแจแ แแ แแแแแขแแแ แแแ แแแ.โ
แแแขแแ แแแฃแแ แแ แแแแแ แแขแแกแขแ: โแแ แ, แฉแแแ แแ แจแแแแแซแแแ แแแแแแแชแแแก แแแแแขแแแ แแแ, แฉแแแ แฏแแ แแแแแ แแแแฅแแก แแแฎแกแแแ แแแแจแ แจแแแแฎแฃแแ แแแแจแแแแแแแแแ แแแแแชแแแแแ แแ แแแแจแแแแแแแแแ แแแแแแขแแแ แแแแแแจแแ แแแฃแแแ แแแแแ แกแแ แแแกแแแ, แ แแแแแกแแช แฉแแแ แแแ แแแแซแฃแแแแ แฎแแแแฎแแ แแแแแแจแแ แแแแกโ.
โแแแ แแ,โ แแฃแแฎแแ แ แแ, โแแฃ แฉแแแ แแ แจแแแแแซแแแ แแแแแขแแแ แแแ แแแแแแแชแแ แแ แแแแแชแแแแแ แฉแแแแแแแก แแ แแ แแก แแแแจแแแแแแแแแ, แแแจแแ แฉแแแ แจแแแแแซแแแ แฃแแ แแแแ แแแแฌแแแแแแ แแก แฆแแ แคแแแแ แคแแแแแก แแฆแฌแแ แแก แกแแจแฃแแแแแแ, แแฃแแแแช แแก แแแ แแแแแแแฎแแ ls แแ แซแแแแแแจแ. แคแแแแฃแ แกแแกแขแแแแแโ.
แแแขแแ แแแฃแแ แ แแแแงแแคแแแ แแงแ, แแ แแ แแ แ.
แจแแแแแ แแแคแแฅแ แ, แ แแขแแ แแ แแญแ แแแ แแก, แแแแช แฉแแแก แชแแแแแก แแแแฌแแแแก? แแแแ แแ แ แ แแแฎแแแแ, แแฃ แแแแแชแแแแแ แแแแจแแแแแแแแแแ? แ แ แแแฎแแแแ, แแฃ แฉแแแ แแแ แแแแแแขแแแ แแแแ แแ แแชแแกแก แแ แแ แแชแแกแ แฉแแฌแแ แก แคแแแแฃแ แกแแกแขแแแแก แแแแแงแแคแแ, แ แแแแแกแแช แแแแแกแฃแคแแแ แแแแแแ แแ แแฅแแก? แ แ แแแฎแแแแ, แแฃ แฉแแแ แแแ แแแแแแ แแแแ แแ แ แแฎแแแแ แฃแแแ แแแฌแแ แแ แแแแแชแแแแแก, แแ แแแแ แแ แแแแแชแแแแแกแแช, แ แแแแแแกแแช แแก แแ แแชแแกแ แฌแแ แก แแ แชแแแแแแก แแแฌแแ แแก?
แขแฃแแแแ
แฉแแแ แแแ แแแ แแก แแแกแแฌแงแแกแจแ แแชแแแแแแแ แจแแแแฅแแแ แแแขแแ แ แแแแแแแชแแ, แ แแแแแแช แกแแญแแ แแแแแ แแแแฎแแแ แแแแแก แแแคแแ แแแชแแแก แจแแกแแแแฎแแ. แจแแแแแ แแแคแแฅแ แ, แ แแแแ แแแแแแแฎแแแ แแแแฎแแแ แแแแแ แแแก แแแแแชแแแแแแแ. แแแแแแแแแ, แแ แแงแแแก แแแแแแแ แแแแ แแแแแแแแฉแ แแ แแแก แแฅแแก แแแ แแแแฃแแ แแแคแแ แแแชแแ, แแแแ แแ แ แแแแ แจแแแแซแแแ แแแแแแ แแแแแแแแ แแแ? แแแ แแแแแ แจแแแแซแแแ แแฆแแแแจแแ, แ แแ แซแแฆแแ แกแแฎแแแแ "แขแฃแแแแ" แกแฌแแ แแ แแ แแแแแแก แแแฃแแแแแก. แแแแ แแ แ แ แแแฎแแแแ, แแฃ แแก แจแแชแแแแก แกแแฎแแแก แแ แแแแแแก แแแชแแแแ แฎแแแแ, แแแแแแแแแ, แแแแ? แแแ แ แแแแแแ, แ แแ แฉแแแแก แแแแ แแแแแแแแ แแแแแแแแก แซแแฆแแ แแฆแแ แแงแแแแแ แแ แฉแแแแ แขแฃแแแแ แแแแแช แแ แแ แกแแแฃแ แแแแแแก แแแฃแแแแแ. แแแแแชแแแแ แแแแ, แ แแแแแแช แแแแแแฃแ แแแแฎแแแ แแแแแก แแซแแแแแ แฃแแแแแแฃแ แแแแแขแแคแแแแขแแ แก (ID) แแแแฎแแแ แ แแ แแ แแแแแแแก แแแแแแ แแแแก แแ แฉแแแ Tuzik แแแแแฃแแ แแงแ แแ ID-แแแ, แ แแแแแแช, แคแแฅแขแแแ แแแแ, แแฎแแแแ แกแแ แแฃแแ แแแแแ แ แแงแ. แแแ แแแแ, แขแฃแแแก แแคแแแแแแก แฐแฅแแแแ แแแ แแแแแแก แแแฌแแแแแก แแแแแ แ 2 แแ แ แแฆแแช แแแแแแขแจแ แแแแแ แแงแ แแ แแแ แแแแแแก แแแฌแแแแแก แฅแแแจ, แจแแแแแ แแ แแแแ แแแฎแแ แแแแแ แแแ แแแแแแก แแแฌแแแแแก แฅแแแจ. แแแชแแแ แแแแแกแ แแ แแแชแฎแแแแแแแแแก แแ แแแแแแ แแ แแฅแขแแแฃแแแ แแแแแแ แแ.
แคแแแแแก แแฆแแฌแแ แ
แคแแแแแก แแ แแ แแแ แแแแก แแ แแแแแแ, แ แแแแแแช แแฃแจแแแแก แแ แคแแแแแแ, แแแแฎแแแแแแ แแแแแแ, แ แแช แฉแแแแ แซแแฆแแแกแ แแ แแแแแแแแแก แแ แแแแแแ. แแแแฃแจแแแ, แแแแฎแกแแแ แคแแแแ แกแแฎแแแแ 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-แแก แแแแ แแ แแ แ แแแแแแจแแ แแแฃแแ แแแแแแแแแแแก แแแแ .
แแฎแแ แกแแแแแ แแฆแฌแแ แแก แคแแแแ แแกแแชแแ แแแแ แคแกแแแแ แขแแ แแแแแแฃแ แแแฌแงแแแแแแแแกแแแ
[user@localhost ]$ echo "hello world" > /proc/15771/fd/0
แแ แแแ แแแ แแแแกแแแจแ แแแแแแแฎแแแ
[user@localhost ]$ hello world
แแแแแแแกแแแแ แแแแ แแ แแแแแแ
แแฅแแแ แจแแแแซแแแแ แแแ แขแแแแ แแแแแแชแแแแ แแก 3 แแฆแฌแแ แแก แคแแแแ แแแแแกแแแแ แแ แแชแแกแจแ, แแแ แจแแ แแก bash-แจแ, แแแแแแแแแ, แแแแแก แแแจแแแแแแ, แ แแแแแแช แแแแแจแแ แแแก แแ แแ แแชแแกแก, แแฎ.
[user@localhost ]$ cat /dev/zero | sleep 10000
แแ แแ แซแแแแแแก แแแจแแแแ แแแแแ แจแแแแซแแแแ แแแแ -แค แแ แแแฎแแ แ แ แฎแแแแ แจแแแแแ, แแแแ แแ แแแแแแ แแแขแงแแแ.
แฉแแแแ แแจแแแแแ bash แแ แแชแแกแ 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.
แแแ แแแแ แแแแจแแแก แแแจแแก แแ แแชแแกแจแ PID 9004, แกแแกแขแแแฃแ แ แแแ แ
แแแแ แ แจแแแแแก แแ แแชแแกแจแ PID 9005-แแ, bash แแงแแแแแก dup2 แคแแแแแก แแฆแฌแแ แแก STDIN แแแแ แแก แจแแกแแชแแแแแแ. แแฎแแ แงแแแแแคแแ แ, แ แแกแแช แฉแแแแ แแแแ แ bash PID 0-แแ แฌแแแแแแฎแแแก, โโแฌแแแแแแฎแแแ แแแแแแแ.
แแแแก แจแแแแแ, 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
แ แแแแ แช แฎแแแแแ, แฉแแแแ แแแแแก แฃแแแแแแฃแ แ แ แแแแแแแแ แแ แแแ แแ แแชแแกแจแ แแ แแแแแ แแ. แแแ แแแแ, แฉแแแ แแแแฅแแก แแแแจแแ แ แแ แแแแกแฎแแแแแแฃแ แแ แแชแแกแก แจแแ แแก แแ แแกแ แแ แแแแแ แแจแแแแแแแ.
แแแแแแแก, แแแแช แแ แแชแแแแก แกแแกแขแแแฃแ แแแ แแแก, แ แแแแแแกแแช bash แแงแแแแแก, แฃแแฆแ แแกแแ แแแ แฉแแแ แแแฃแจแแแ แแ แซแแแแแแแ strace-แจแ แแ แแแฎแแ แ แ แฎแแแแ แจแแแแแ, แแแแแแแแแ, แแกแ:
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
แแ "แ" แแ แแจแแ
[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% แแแแแแแแฃแแ.
แแแแฎแกแแแก, แ แแ แแแแแแแแแก แแแ แแแแแแก แแแฎแแแแแ, แแชแแแแแแ แฉแแแฌแแ แแ แซแแแแแ แแแแจแแแแแแแแแ แแแแแชแแแแแ, แ แแแแแแ แแแแแ แแแแช แจแแฃแซแแแแแแแ. แแ แแแแแแ แแฃแแแ, แฉแแแ แฃแแแ แแแแแคแแฅแกแแ แแ แกแแ แแแกแ แแ แแชแแกแแก แแแแแขแแแ แแแแก แแแ แแจแ.
แแแฅแแแ, แฏแแ แแแแแ แแแแฅแแก แแแแแแ แแแกแแแ, แแแแ แแ แกแฎแแ แแแแแงแแคแจแ, แแแแแแแแแ, /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 แแแขแ แแชแแแแแ แ แแชแฎแแแแ แแแแจแแแแแแแแ. แแแแกแแแแแก แแแฎแกแแแแ แแแ แแแแก แฌแงแแ แแแแ, แแแแแแแแแ
#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
แฉแแแ แแแแฎแกแแแก แแแแแแแแ แแแแแ - แ แแแแ แชแแแแก 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 แแ แซแแแแแแ. แแก แจแแฅแแแแก แคแกแแแแ แคแแแแก แคแแแแฃแ แกแแกแขแแแแจแ แแแจแแแแช แแ, แแฃ แแแกแแ แแแแแกแฃแคแแแ แแแแแแ แแ แแ แแก.
แแแแแขแแแ แแแ แแแแแแแชแแ แแ แจแแแแแฌแแแ:
[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
แแแแแชแแแแแ แจแแแแฎแฃแแแ, แแ แแแแแแ แแแแแแ แแแฃแแแ.
แแแกแแ แแแแแแ แจแแแแฎแแแแแ แแ แแแแแกแแแแแแ แฉแแแก แแแแแแแแก แแแแแ แแแแ.
แแแฃแกแแแแแ Radio-T แแแแแแกแขแแแก.
แงแแแแแกแแแแแก แแแ แแ.
แ แแแแ แช แกแแจแแแแ แแแแแแแแ, แแแ แฉแแแ แแแคแแฅแ แแแ แแแแแ, แแฃ แ แ แแฅแแแแ แแ แแชแแกแแก แคแแแแแก แแฆแฌแแ แแแ แแแขแ แแ แซแแแ, แแฃ แแแฃแจแแแ แจแแแแแแ แแ แซแแแแแ:
[user@localhost ~]$ cat /dev/zero 2>/dev/null| sleep 10000
แฌแงแแ แ: www.habr.com