áá áºáá«á á¡ááºáá¬áá»á°ážáá áºáá¯ááŸá¬á disk áá±áá¬ááœááºáá¯ááºááœá¬ážááá¯á· á¡áá¯ááºááá¯ááºáá²á· áááºáá±á¬ááºááŸá¯áá áºáá¯ááᯠááœá±á·ááẠáá¬áá¯ááºááá²ááá¯á· áá±ážáá«áááºá
áá¯ááºáá«áááºá áá®áá±áá¬ááᯠááááºážááá¯ááºáá¬ážáá¬ááœá±ááᯠááŒáá·áºáááºá ááŒá
áºááá¯ááºááẠáá±áá¬ááᯠááá·áºááŸááºážáá±ážáá¯ááºááẠááá¯ááŒá®áž ááŒááºááŒá±á¬áá²á·áááºá
ááá¯á·áá±á¬áẠá¡ááºáá¬áá»á°ážáá°áá±ážáááºá á¡áááºážááá·áºááœáẠáá±áá¬ááœááºáááŸááá«áá ááá¯á·áá±á¬áº áá±áá¬á¡á¬ážáá¯á¶ážáá°ááá·áº ááá¯ááºáá»á¬ážááᯠáááºáááœá±á·áá«áá
á€á¡ááœááºááŒá±á¬áá·áº áááºááẠopen file descriptors áá»á¬ážááᯠá¥ááᬠlsof command ááŒáá·áº á¡ááŒá²áááºážááŒáá·áºááŸá¯ááá¯ááºááŒá®áž áááºááá·áº application á០áááŸáááá¯ááºáá±á¬ space á¡á¬ážáá¯á¶ážááᯠááá°áá¬ážááŒá±á¬ááºáž áá¬ážáááºááŒá®ážáá±á¬áẠdata ááá¯á¡ááºááŸá¯áá±á«áºáá°áááºá á¡ááŒá±á¡áá±áá»á¬ážá¡ááá¯áẠáá¯ááºáá±á¬ááºááá¯ááºáááºáᯠáá«ááŒá±á¬áá²á·áááºá .
á¡ááºáá¬áá»á°ážáá°ááẠáá»áœááºá¯ááºá¡á¬áž áá±á¬ááºáá¯á¶ážá áá¬ážáá¯á¶ážááŒáá·áº ááŸá±á¬áá·áºááŸááºáá²á·ááŒá®áž áááºážááá±ážááœááºážááᯠâáá»áœááºá¯ááºááá¯á· áá±áá¬áááá¯á¡ááºáá°ážááá¯áá«á áá¯á·á áááºážááẠá¡ááŸá¬ážá¡ááœááºážááŸááºáááºážáá áºáá¯áá»áŸáá¬ááŒá áºáá±á¬áºáááºážá á¡ááºááºáá®áá±ážááŸááºážááẠá¡ááŸá¬ážá¡ááœááºážááᯠááá±ážááá¯ááºáá±á¬ááŒá±á¬áá·áº á¡áá¯ááºááá¯ááºáá«âá
"áá±á¬ááºážááŒá®á" "áá»áœááºá¯ááºááá¯á·ááẠá¡ááá®áá±ážááŸááºáž config ááœáẠá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááááºááŒá®áž áááºážááᯠááŒááºáááºá
áááºááá¯ááºáá«áááºá"
á¡ááºáá¬áá»á°ážáá°ááŸááá·áºááœááºáááº- "ááá¯ááºáá«á áá»áœááºá¯ááºááá¯á·ááẠáá»áŸá±á¬ááºááœáŸá¬ááᯠááŒááºáááºá
áááºááááá«á áá»áœááºá¯ááºááá¯á·ááœáẠá¡áá±ážááŒá®ážáá±á¬áá±áá¬áá»á¬ážááᯠááŸááºáá¬ááºááœáẠááááºážáááºážáá¬ážáá²ááŒá
áºááŒá®áž á¡áá±ážááŒá®ážáá±á¬áá±á¬ááºáááºáá»á¬ážááẠáááºáá±á¬ááºááŸá¯ááá¯ááºááá¯ááºááŸáá·áº áá»áááºáááºáá¬ážáá±á¬ááŒá±á¬áá·áº áááºáá¶áá»áááºáááºáááºá¡áááºážá¡ááŒááºáááŒá
áºááá¯ááºáá«á"
"áá±á¬ááºážááŒá®á" áá»áœááºá¯ááºá "áá»áœááºá¯ááºááá¯á·ááẠapplication ááá¯ááŒááºáááºá áááºááááá«áá áá±áá¬áááºáá»áœááºá¯ááºááá¯á·á¡ááœááºá¡áá±ážááŒá®ážáááºááá¯ááºáá«áá ls command ááœááºáá»áœááºá¯ááºááá¯á·áááœá±á·áá«ááááºážááá¯ááá¯ááºáá±á¬áºááŒáá»ááºááŸáááá·áºá€ááœáá·áºááá¯ááºááá¯ááá¯ážááŸááºážá áœá¬ááŸááºážáááºážááá¯ááºáááºá ááá¯ááºá áá áºáá±á«áºááŸá¬á"
á¡ááºáá¬áá»á°ážáá° áá»á±áááºáá±á¬áºáááºáž áá»áœááºáá±á¬áº ááá»á±áááºáá«á
ááá¯á¡áá« áá»áœááºá¯ááºááẠáá»áœááºá¯ááºá á¡ááááá¬ááᯠá
ááºážáááºáá±áá°ááẠá¡áááºááŒá±á¬áá·áº áááºáá²áááºááẠáááºáá²ááááºážáᯠááœá±ážááá¯ááºáááááºá áá«áá±ááá·áº á¡áá»ááºá¡áááºá á¡áá±ážááŒá®ážááẠáááºááá¯áá¯ááºááá²á áá»áœááºá¯ááºááá¯á·ááẠáá¯ááºáááºážá
ááºááᯠááŒááºáááºá
áááºááááá«áá áá¯ááºáááºážá
ááºááẠáá±áá¬ááœááºáááŸááá±á¬ á¡áááºážááá·áºáá
áºáá¯ááŸá ááá¯ááºá
áá
áºááá¯á· á
á¬áá±ážáááºááá¯áá«á á¡áááºáááºážá áá±ážááŒá®ážáá¬áž data ááœá±áá¬áá áá® process ááá±ážáᬠáá«ááŸááá¯áẠáá±ážááá¯á·ááŒáá¯ážá
á¬ážáá²á· data ááœá± ááá¯á¶ážááŸá¯á¶ážááá¯ááºááẠáá¬ááŒá
áºááá²á
Tuzik
á¡áááºááœá±ážáááºážááŒá±á¬ááºáž á¡á á±á¬ááá¯ááºážááœááºá á¡áá¯á¶ážááŒá¯áá° á¡áá»ááºá¡ááẠááááºážáááºážááẠááá¯á¡ááºáá±á¬ á¡ááá®áá±ážááŸááºážáááºáá±áž áá áºáá¯ááᯠáááºáá®ážááẠááŒáá¯ážá á¬ážáá²á·áááºá ááŒá®ážáá±á¬á· á¡áá¯á¶ážááŒá¯áá°ááᯠáá°á·áá±áá¬áá²á· áááºááᯠááŸááºááá¯ááºááá²ááá¯á· á ááºážá á¬ážáááá«áááºá á¥ááá¬á¡á¬ážááŒáá·áºá áá«á·ááŸá¬ Ivanov Ivan Ivanovich ááŸááááºá áá°á·ááŸá¬ á¡áá»ááºá¡áááºááá»áá¯á·ááŸááááºá áá«áá±ááá·áº áá«áá°ááá¯á·áá²á· áááºááá¯ááááºááœá²á·áááá²á "Tuzik" áá°áá±á¬ááœá±ážááẠá€á¡áá¯ááºáááºáááá¯ááºááŒá±á¬ááºáž áá»áœááºá¯áẠááá¯ááºááá¯áẠáá±á¬ááºááŒááá¯ááºáááºá áá«áá±ááá·áº áá°áá¬áááºááŒá±á¬ááºážááŒá®áž Ivan á¡á á¬áž Olya ááŒá áºááœá¬ážáááºáá±á¬á ááá¯á¡áá«áá»áœááºá¯ááºááá¯á·á Olya Ivanovna Ivanova áááºááœá±ážááŸááá±á¬á·áááºááá¯ááºááŒá±á¬ááºážááŸáá·áºáá»áœááºá¯ááºááá¯á·á Tuzik áááºáááºááŸáááŒááºážáááŸááá±á¬ Ivan ááŸáá·áºáááºáááºááá¯ááºááá¯ááºáááá·áºáááºá áá¯á¶ážá áœá²áá°áá áºáŠážá á®á¡á¬áž áá®ážááá·áºá¡ááŸááºá¡áá¬áž (ID) áá±ážáá¬ážááá·áº áá±áá¬áá±á·á áºáá áºáá¯ááẠá€ááŒá¿áá¬ááᯠááŒá±ááŸááºážáá¬ááœáẠá¡áá±á¬ááºá¡áá°ááŒá áºá á±ááŒá®áž áá»áœááºá¯ááºá Tuzik ááẠááááºáá±á¬á· áá¶áá«ááºá ááºáá áºáá¯áá»áŸáá¬ááŒá áºááŒá®áž ဠID ááŸáá·áº áá»áááºáááºáá¬ážáááºá ááá¯á·ááŒá±á¬áá·áºá á¡á±á·á áºáááá¯ááºááŸááºááœáẠID áá¶áá«áẠ2 ááŸáááŒá®áž áá áºáá»áááºáá»áááºááœáẠá¡áá¯ááºáááºááẠဠID á¡á±á¬ááºááœááºááŸááá±áá¬á ááá¯á·áá±á¬áẠOlya ááẠáá°áá®áá±á¬ ID á¡á±á¬ááºááœáẠááŒá áºáá¬áá²á·áááºá áá°áá¬ážáá»áá¯ážááœááºááŸáá·áº áááá á¹áá¬ááºááœá±ážááŒá°áá±ážááŒá¿áá¬ááᯠáááºááœá±á·áá»áá» ááŒá±ááŸááºážááá¯ááºáá²á·áááºá
ááá¯ááºáá±á¬áºááŒáá»ááº
ááá¯ááºáááŒá¿áá¬ááŸáá·áº á€ááá¯ááºááŸáá·áºá¡áá¯ááºáá¯ááºáá±á¬áááá¯ááááºááẠáá»áœááºá¯ááºááá¯á·áááœá±ážááŸáá·áºáá°ááŸáá·áºá¡áá®ážá
ááºáá¯á¶ážáá°áá®áá«áááºá ivan.txt áá¯áá±á«áºáá±á¬ ááá¯ááºááá¯ááœáá·áºááŒá®áž áááºážááœáẠtuzik áá°áá±á¬ á
áá¬ážáá¯á¶ážááᯠá
áááºáá±ážáá¬ážáá²á·áááºááá¯áá«á
áá¯á·á ááá¯á·áá±á¬áº ááá¯ááºáá²ááœáẠáááá
á¬áá¯á¶áž âtâ ááá¯áᬠáá±ážáá¬ážááá¯ááºáá²á·ááŒá®áž á€ááá¯ááºááᯠáá
áºá
á¯á¶áá
áºáŠážá០á¥ááá¬á¡á¬ážááŒáá·áº olya.txt áᯠá¡áááºááŒá±á¬ááºážáá²á·áááºááá¯áá«á
áá¯á·á áá«áá±ááá·áº ááá¯ááºá áá®á¡ááá¯ááºážáá² áá»ááºáá±áá±ážááŒá®áž áá»áœááºáá±á¬á·áºáá²á· ace ááᯠááŸááºáááºážáááºáá»ááºáá«áááºá á
áá
áºáá±á«áºááá¯ááŸá¯ááŒáá·áº ááá¯ááºáá
áºáá¯ááᯠááœáá·áºááá¯ááºááá¯ááºáž
Linux ááœááºá libc á
á¬ááŒáá·áºááá¯ááºááẠ3 áá¶áá«ááºááŒáá·áº áá¯ááºáá±á¬ááºáá±ááá·áº á¡ááá®áá±ážááŸááºážáá
áºáá¯á
á®á¡ááœáẠáá±á¬áºááŒáá»ááºááá¯áẠ0,1,2 áá¯ááᯠááœáá·áºáá±ážáá«áááºá á¡áá±ážá
áááºá¡áá»ááºá¡áááºáá»á¬ážááᯠááá·áºááºáá»á¬ážááœáẠááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
- ááá¯ááºáá±á¬áºááŒáá»áẠ0 ááᯠSTDIN áá¯áá±á«áºááŒá®áž á¡ááá®áá±ážááŸááºážááá·áºááœááºážááŒááºážááŸáá·áº áááºá ááºáá±áááºá
- ááá¯ááºáá±á¬áºááŒáá»áẠ1 ááᯠSTDOUT áá¯áá±á«áºááŒá®áž áááá·áºáá¯ááºááá·áºá¡áááá·áºáá»á¬ážáá²á·ááá¯á·áá±á¬ á¡áá»ááºá¡áááºáá¯ááºáá±ážáááºá¡ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬ážá á¡áá¯á¶ážááŒá¯áááºá
- ááá¯ááºáá±á¬áºááŒáá»áẠ2 ááᯠSTDERR áá¯áá±á«áºááŒá®áž á¡ááŸá¬ážá¡ááœááºážá á¬ááá¯áá»á¬ážáá¯ááºáááºá¡ááœáẠá¡ááá®áá±ážááŸááºážáá»á¬ážá á¡áá¯á¶ážááŒá¯áááºá
ááá·áºáááá¯ááááºááœáẠáááºáááºááẠááá¯á·ááá¯áẠá á¬áá±ážáááºá¡ááœáẠáááºááá·áºááá¯ááºááá¯ááœáá·áºáá¬ážáá«á áááºááẠááááá¯á¶ážá¡ááá²á· ID ááá¯áááŸááááºááŒá áºááŒá®áž áááºážááẠáá¶áá«áẠ3 ááŒá áºáááá·áºáááºá
áááºážá PID ááᯠáááºáááá«á áááºááá·áºáá¯ááºáááºážá ááºá¡ááœááºáááᯠááá¯ááºáá±á¬áºááŒáá°á á¬áááºážááᯠááŒáá·áºááŸá¯ááá¯ááºáá«áááºá
á¥ááá¬á¡á¬ážááŒáá·áºá bash ááœááºááá¯ážááºááá¯ááœáá·áºááŒá®áž áá»áœááºá¯ááºááá¯á·ááá¯ááºáááºážá ááºá PID ááᯠááŒáá·áºááŒáá«á áá¯á·
[user@localhost ]$ echo $$
15771
áá¯ááá console ááœáẠrun ááŒáá«á áá¯á·
[user@localhost ]$ ls -lah /proc/15771/fd/
total 0
dr-x------ 2 user user 0 Oct 7 15:42 .
dr-xr-xr-x 9 user user 0 Oct 7 15:42 ..
lrwx------ 1 user user 64 Oct 7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 255 -> /dev/pts/21
á€áá±á¬ááºážáá«ážááááºááœááºáá»ááºáá»á¬ážá¡ááœáẠááá¯ááºáá±á¬áºááŒáá°áá¶áá«áẠ255 ááᯠááẠáá±ážáááºážá áœá¬ áá»á áºáá»á°ááŸá¯ááá¯ááºáááºá áááºážááᯠbash ááá¯ááºááá¯ááºá áá»áááºáááºáá¬ážááá·áº á á¬ááŒáá·áºááá¯ááºááŸááá¯ááºáá² áááºážáááá¯á¡ááºáá»ááºáá»á¬ážá¡ááœáẠááœáá·áºáá¬ážáááºá
ááá¯á¡áá« áá±á¬áºááŒáá»ááºááá¯áẠ3 áá¯á
áá¯á¶ážááẠpseudo terminal á
ááºááŸáá·áº áááºá
ááºáá±áá«áááºá
[user@localhost ]$ echo "hello world" > /proc/15771/fd/0
ááá console ááœááºáá»áœááºá¯ááºááá¯á·ááœá±á·áááá·áºáááºá
[user@localhost ]$ hello world
Redirect ááŸáá·áº Pipe
bash á¡áá«á¡ááẠáááºááá·áºáá¯ááºáááºážá ááºááœááºáááᯠá€áá±á¬áºááŒáá»ááºááá¯áẠ3 áá¯ááᯠááœááºáá°á áœá¬ áá»á±á¬áºááœáŸá¬ážááá¯ááºáááºá á¥ááᬠáá¯ááºáááºážá ááºááŸá áºáá¯ááᯠáá»áááºáááºáá¬ážáá±á¬ ááá¯ááºáá áºáá¯ááŸáááá·áº ááŒáá·áºáá«á
[user@localhost ]$ cat /dev/zero | sleep 10000
á€á¡áááá·áºááᯠáááºááá¯ááºááá¯áẠáá¯ááºáá±á¬ááºááá¯ááºáááºá ááŒá±áá¬-f á¡áá²ááŸá¬áá¬ááœá±ááŒá áºáá±áá²ááŒáá·áºá áá«áá±ááá·áº á¡ááá¯áá»á¯á¶ážááŒá±á¬ááŒáááºá
PID 15771 ááŒáá·áº áá»áœááºá¯ááºááá¯á·á parent bash áá¯ááºáááºážá ááºááẠáá»áœááºá¯ááºááá¯á·áá¡áááá·áºááᯠááœá²ááŒááºážá áááºááŒá¬ááŒá®áž áá»áœááºá¯ááºááá¯á·áá¯ááºáá±á¬ááºááá¯áá±á¬ command áááºáá»áŸááᯠá¡ááá¡áá»áá¬ážáááºááá¯ááºáááºá áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœáẠáááºážááá¯á·áá²á០ááŸá áºáá¯ááŸááááº- cat ááŸáá·áº sleepá Bash ááẠááá±ážáá¯ááºáááºážá ááºááŸá áºáá¯ááᯠáááºáá®ážááŒá®áž áááºážááá¯á·ááᯠááá¯ááºáá áºáá¯áá²ááá¯á· áá±á«ááºážá ááºážááẠááá¯á¡ááºááŒá±á¬ááºáž Bash áááááºá á á¯á á¯áá±á«ááºážá bash ááẠááá±ážáá¯ááºáááºážá áẠá áá¯ááŸáá·áº ááá¯ááºáá áºáᯠááá¯á¡ááºáááºááŒá áºáááºá
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
ááá¯á·áá±á¬áẠsystem call ááá¯á¡áá¯á¶ážááŒá¯áá«á
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 ááẠááá¯ááºáá±á¬áºááŒáá»ááºá¡á¬ážáá¯á¶ážááŸáá·áºá¡áá° áá¯ááºáááºážá ááºááᯠclone ááŒá¯áá¯ááºáá¬ážáááºááᯠááá±á·áá«ááŸáá·áºá ááá¯á·ááŒá±á¬áá·áº áááºážááá¯á·ááẠááááá¯ááºáááºážá ááºááŸáá·áº ááá±ážáá»á¬ážááœáẠá¡áá°áá°áááºááŒá áºáááºá PID 15771 áá«ááŸáááá·áº ááááá¯ááºáááºážá ááºá á¡áá¯ááºááŸá¬ ááá±ážááŒá áºá ááºáá»á¬ážááᯠá á±á¬áá·áºááŒáá·áºáááºááŒá áºááŒá®ážá ááá¯á·ááŒá±á¬áá·áº ááá±ážáá¶á០áá¯á¶á·ááŒááºááŸá¯ááᯠá á±á¬áá·áºááá¯ááºážáá±áá«áááºá
ááá¯á·ááŒá±á¬áá·áºá áááºážááẠááá¯ááºáááá¯á¡ááºáá² áá¶áá«áẠ3 ááŸáá·áº 4 áá«áá±á¬ ááá¯ááºáá±á¬áºááŒáá»ááºáá»á¬ážááᯠááááºáááºá
PID 9004 ááŒáá·áº ááááá¯á¶áž ááá±áž bash áá¯ááºáááºážá
ááºááœááºá á
áá
áºáá±á«áºááá¯ááŸá¯
PID 9005 ááŸáá·áº áá¯áááááá±ážáá¯ááºáááºážá ááºááœááºá bash ááẠááá¯ááºáá±á¬áºááŒáá»áẠSTDIN áá¶áá«áẠ2 ááá¯ááŒá±á¬ááºážáá²ááẠdup0 ááá¯á¡áá¯á¶ážááŒá¯áááºá ááá¯áá»áœááºá¯ááºááá¯á·ááá¯ááá bash ááŸáá·áºá¡áá° PID 9005 áááºááá·áºá¡áá¬á¡á¬ážáá¯á¶ážááᯠááá¯ááºááŸáááºáá«áááºá
áááºážáá±á¬ááºááœááºá áá¶áá«áẠ3 ááŸáá·áº 4 ááŸááá±á¬ ááá¯ááºáá±á¬áºááŒáá»ááºáá»á¬ážá¡á¬áž áááºážááá¯á·á¡áá¯á¶ážáááŒá¯áá±á¬á·áá±á¬ááŒá±á¬áá·áº ááá±ážáá¯ááºáááºážá ááºáá»á¬ážááœááºáááºáž ááááºáá¬ážáá«áááºá
áá»áœááºá¯ááºááẠááá¯ááºáá±á¬áºááŒáá»áẠ255 ááᯠááááºááᬠáá»á áºáá»á°ááŸá¯áá«áááºá áááºážááᯠbash ááá¯ááºááá¯ááºá á¡ááœááºážáááºááœááºáá»ááºá¡ááœáẠá¡áá¯á¶ážááŒá¯ááŒá®áž ááá±ážáá¯ááºáááºážá ááºáá»á¬ážááœááºáááºáž ááááºáá«áááºá
ááá¯á·áá±á¬ááºá PID 9004 ááŒáá·áº áááááá±ážáá¯ááºáááºážá
ááºááœáẠbash ááẠá
áá
áºáá±á«áºááá¯ááŸá¯ááᯠá
áááºá¡áá¯á¶ážááŒá¯áááºá
PID 9005 ááŒáá·áº áá¯áááááá±áž áá¯ááºáááºážá ááºááœááºá bash ááẠáá»áœááºá¯ááºááá¯á·á ááá á¹á ááœááºá /usr/bin/sleep ááœáẠáá»áœááºá¯ááºááá¯á·áááºááŸááºáá¬ážáá±á¬ áá¯áááááŒá±á¬áẠáá¯ááºáá±á¬ááºáá»ááºááᯠáá¯ááºáá±á¬ááºáá«áááºá
á¡ááœáá·áºáá±á«áºááá¯ááŸá¯ááŒá¯áá¯ááºáá»áááºááœáẠO_CLOEXEC á¡áá¶ááŒáá·áº ááœáá·áºáá¬ážááŒááºážáááŸááá«á exec á áá áºáá±á«áºááá¯ááŸá¯ááẠááá¯ááºáááºááá¯ááºáá»á¬ážááᯠááááºáááºááá¯ááºáá«á áá»áœááºá¯ááºááá¯á·áá¡ááŒá±á¡áá±ááœááºá áááºáááºááá¯ááºáá±á¬ááá¯ááºáá»á¬ážááá¯ááœáá·áºááŒá®ážáá±á¬ááºá áááºááŸáááá¯ááºáá±á¬áºááŒáá»ááºá¡á¬ážáá¯á¶ážááᯠááááºážáááºážááœá¬ážáá«áááºá
ááœááºááá¯ážááºááœáẠá á áºáá±ážáá«-
[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 á¡áá¯á¶ážááŒá¯áá±á¬ system calls ááŸáá·áº ááááºážááŸá®ážáá±á¬áá°áá»á¬ážá¡ááœááºá strace ááŸáááá·áº command áá»á¬ážááᯠrun ááŒá®áž internal ááœááºááŒá áºáá»ááºáá±áááºáá»á¬ážááá¯ááŒáá·áºáá«á á¥ááá¬á¡á¬ážááŒáá·áº á€áá²á·ááá¯á·ááŒá áºáááº-
strace -s 1024 -f bash -c "ls | grep hello"
áá¯ááºáááºážá ááºááᯠááŒááºáááºá áááºááŒááºážáááŒá¯áá² áá áºááºáá±áá¬ááœááºáá¯ááºááœá¬ážááŒá®áž áá±áá¬ááááºážáááºážááẠáá»áœááºá¯ááºááá¯á·áááŒá¿áá¬ááᯠááŒááºááœá¬ážááŒáá«á áá¯á·á áá áºá áá¹ááá·áºáá»áŸáẠ1 megabyte ááá·áºááᯠdisk ááá¯á· áá±ážáá±ážááá·áº áááá¯ááááºáá±ážáá áºáᯠáá±ážááŒáá·áºáá¡á±á¬ááºá ááá¯á·á¡ááŒááºá á¡ááŒá±á¬ááºážáá áºáá¯áá¯ááŒá±á¬áá·áº áá»áœááºá¯ááºááá¯á·ááẠdisk ááá¯á· data ááá±ážááá¯ááºáá«áá áááºážááᯠááá¯ážááŸááºážá áœá¬ áá»á áºáá»á°ááŸá¯ááŒá®áž áá±áá¬ááᯠáá áºá áá¹ááá·áºá¡ááœááºáž áááºáá±ážááẠááŒáá¯ážá á¬ážáá«áááºá áá»áœááºáá±á¬áº 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
áááá¯ááááºááᯠrun ááŒá®áž ááá¯ááºáá±á¬áºááŒáá»ááºááœá±ááᯠááŒáá·áºáá¡á±á¬ááº
[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 ááẠáááºááŸááááºáááºáá±áá±á¬ áááá¯ááááºáá áºáá¯á¡á¬áž á¡ááŸááºááááºáá±ážáá¬ážááŒááºážááŸáá·áº ááŒá±á¬ááºážáá²ááá¯ááºá áœááºážááᯠáá¶á·ááá¯ážáá±ážáááºá á¥ááá¬á ááááºážááŸááºáá»á¬ážá áááºááá¯ážáá»á¬ážááᯠááŒá±á¬ááºážáá²ááŒááºážá breakpoint áááºááŸááºááŒááºáž á áááºááŒáá·áºá
ááá¯ááºáá áºáá¯áá±ážááẠdisk áá±áá¬á¡áá¯á¶á¡áá±á¬ááºáááŸáááŒááºážááŸáá·áºáááºáááºá áá°áááºážáá±ážááœááºážááá¯á· ááŒááºááœá¬ážáᬠááŒá¿áá¬ááᯠáá¯á¶áá±á¬áºááŒáá·áºáá¡á±á¬ááºá
áá®ážááŒá¬ážáá áºáá áºáá¯á¡ááŒá Ạáááºáááºááá·áº áá»áœááºá¯ááºááá¯á·á partition á¡ááœáẠááá¯ááºáá áºáá¯ááᯠáááºáá®ážááŒáá«á áá¯á·á
[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% ááááºážááá¯ááºáá¬ážáááºá
á¡áá¯ááºáá¡ááŒá±á¡áá±áá»á¬ážá¡áá áá»áœááºá¯ááºááá¯á·ááẠááá¯á¶ážááŸá¯á¶ážááá¯ááºáá±á¬ á¡ááœááºá¡áá±ážááŒá®ážáá±á¬ á¡áá»ááºá¡áááºáá»á¬ážááᯠááŸááºáááºážáááºááẠááŒáá¯ážá á¬ážáá±ááŒá±á¬ááºáž áááááá«á áá áºáá»áááºáááºážááŸá¬áááºá áá¯ááºáááºážá ááºááᯠááŒááºáááºá áááºááŒááºážáááŒá¯áá² áááºáá±á¬ááºááŸá¯ááᯠáá»áœááºá¯ááºááá¯á· ááŒááºáááºááẠááá¯á¡ááºáá«áááºá
áá»áœááºá¯ááºááá¯á·ááœáẠdisk space ááŸááá±áá±ážáááºááá¯áá«á áá¯á·á ááá¯á·áá±á¬áº á¥ááá¬á¡á¬ážááŒáá·áº /home ááœáẠááá°áá®áá±á¬ partition áá áºáá¯ááœááºááŸááááºá
áá»áœááºá¯ááºááá¯á·ááá¯ááºááᯠâá¡áá»ááºá¡ááŒáẠááŒááºáááºáááá¯ááááºâ áá¯ááºááŒáá·áºáá¡á±á¬ááºá
disk space á¡á¬ážáá¯á¶ážááᯠá á¬ážáá¯á¶ážáá±ážáá±á¬ áá»áœááºá¯ááºááá¯á·á áá¯ááºáááºážá ááºá 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 áá
áºáá»á¬ážááᯠááááºážáááºááá¯ážááŒáá·áº á¡á
á¬ážááá¯ážáááºá áá«ááá¯áá¯ááºááá¯á·á á¥ááá¬á 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
ááá¯ááºáá±á¬áºááŒáá»ááºáá»á¬ážá¡á¬áž ááá¯ááºááŒáá·áº á¥ááá¬- 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
áá±áá¬ááá¯á¶ážááŸá¯á¶ážáá«á á¡ááá®áá±ážááŸááºážá¡áá¯ááºáá¯ááºáááºá ááŸááºáááºážáá»á¬ážááá¯áááºáá±áá¬á¡áá áºááá¯á·áá±ážáá«á
á¡áá¯ááºáááºážáááºážááŸá¯ááºáá¡á±á¬ááº
áá±áá¬ááẠáá»áœááºá¯ááºááá¯á·á¡ááœáẠá¡áá±ážááŒá®ážáááºáᯠá áááºáá°ážááŒáá·áºááŒáá«á áá¯á·á ááá¯á·áá±á¬áº áá»áœááºá¯ááºááá¯á·ááœáẠáááºááá·áºá¡ááá¯ááºážááœááºáááᯠdisk space ááŸáááŒá®áž disk ááᯠáá»áááºáááºááááá«á
áá»áœááºá¯ááºááá¯á·áá¯ááºáá±á¬ááºááá¯ááºááá·áºá¡áá¬ááŸá¬ áá»áœááºá¯ááºááá¯á·ááá±áá¬ááᯠáá
áºáá±áá¬áá¬ááá¯á· áááºážááŒá±á¬ááºážááœáŸá²ááẠá¥ááá¬á¡á¬ážááŒáá·áº ááá¯ááºááá¯á· áááºážááŒá±á¬ááºážááŒá±á¬ááºážáá±ážááŒá®ážá á¥ááá¬á¡á¬ážááŒáá·áº á¡áá»áá¯á·áá±á¬áááá¯ááááºááŸáááá·áº ááá¯ááºááŸáá±áá¬ááᯠááœááºáááºááá¯á· ááŒááºááœáŸááºážááŒááºážááŒá
áºáááºá
mkfifo command ááŒáá·áº á¡áááºáá±ážáá¬ážáá±á¬ ááá¯ááºáá
áºáá¯ááᯠáááºáá®ážááá¯ááºáááºá áááºážááœáẠáá±áá¬ááœááºáááŸááá±á¬áºáááºáž áááºážááẠááá¯ááºá
áá
áºáá±á«áºááœáẠ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
disk áá±áá¬áááŸááá±á¬áºáááºážá áá»áœááºá¯ááºááá¯á·ááẠááá¯áá±áá¬ááœáẠá¡áááºááŸááá±á¬ ááá¯ááºáá áºáá¯ááᯠá¡á±á¬ááºááŒááºá áœá¬ áááºáá®ážááá¯ááºáááº-
[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
ááá¯á¡áá«ááœáẠááá¯ááºááœáẠá¡áá»á¯á¶ážáááºááá·áº áá±áá¬á¡á¬ážáá¯á¶ážááẠnetcat ááœáẠstdin ááá¯á· á¡ááá¯á¡áá»á±á¬áẠáá±á¬ááºááœá¬ážáááºááŒá áºááŒá®áž áááºážááẠ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_WROONLY áá¬ááá¯á¡ááºááŒá®áž áááºážááá¯ááŸááºážáááºážáááºáááá¯á¡ááºáá«á
[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 áá±á«á·ááºáá¬á
áºáá»á¬ážááᯠáá¬ážáá±á¬ááºáá«á
á¡á¬ážáá¯á¶ážá¡áá±á¬ááºážá
á¡áááºá á¬á¡áá±ááŒáá·áºá áááºááẠá¡á±á¬ááºáá« command ááᯠrun áá«á process file descriptors cat and sleep ááœáẠáááºáááºááᯠá ááºážá á¬ážááẠá¡ááŒá¶ááŒá¯á¡ááºáá«áááºá
[user@localhost ~]$ cat /dev/zero 2>/dev/null| sleep 10000
source: www.habr.com