á ááľ áá á áá áá áá áá áľ á˛áľáŠ áŁáś áŚáł á ááĽááą ááááŤáľ á¨ááá°áŤ á áááááľ á˘áŤáááľ áá áłá°áááá˝á?
áĽááἠááᣠá áá
áŚáł á¨á°áŤááá ááá¨áľ áĽá á¨á°áťá áŚáłáá áĽáá°áá¸áłá áááľáŠááľá˘
á¨ááŤá áá-áá áá
á áľáŤáá á ááአáá ááá áá áŚáł á¨áááľ, ááá áá áááá áŚáł á¨ááá áááá˝á áŤááŠáľ?
ááá á áá áá áááľ á¨ááá ááááá˝á áá¨áľ áá˝áá ᣠáááłá á lsof áľááá ᣠáĽá á¨áľáá áá°áá áŞáŤ áááá áŚáł áĽáá°áá°á° áá¨áą áĽá á¨á፠áĽáá° áááłá ââââáá¨áá á áľááá á¨áá áá á áááľá¨áľ áĽááá ááá°áľ áá˝áá á áአᢠ.
áá-áá áá á áľáŤáá á áá¨á¨áťá áá áá á áá¨á á, áá° áĽáŤáá á¨ááŻá: "áá¨áá á áŤáľááááá áĽáá á, á¨áľá á°áľ áááἠááľáłááť áĽáť áá, ááá áá á áááŹá˝á á áá°áŤá ááááŤáąá áá¨á ááťá á áá˝áá"?
âáĽáşáŁ á áá°áá áŞáŤ áá
á¨áľ ááľáĽ áá¨á ááĽááľ áĽá áĽáá°áá ááľááá áĽáá˝áááâ áĽáŹ áááľáŠááľá˘
áá-áá áá á áľáŤáá á°ááááĄ- âá áᣠá áááŹá˝áá áĽáá°áá ááľááá á áá˝ááᣠá ááá á áľááá áá¨á á áá
á°á¨ áľááľáł ááľáĽ á°á¨áá˝áˇáᣠáĽá á áľááá á°áá áá˝ á¨áŤáą á áááááľ áá á¨á°ááá áá¸áᣠáá
á áĽáá°áá áĽáá˛ááá ááľáá°áľ á áá˝ááá˘
âáĽáşâ á ááŠáľáŁ âáá°áá áŞáŤáá áĽáá°áá ááľááá áŤááťáá áĽá ááᥠááĽá á áľááá áŤáááᣠáá á áááľ ááá á ls áľáĽáá áŁáá¨áá á ááá á ááá ááá á áŠá áĽáá¸áłáááᢠá ááá áľáááą áá"
á áŤáá á°á°áľáťááᣠáá á ááá ááŠáá˘
á¨á ááááľáá áĽááá´á á¨áááľáá á°á ááá á áá
áĽá á ááááá? áá ááᥠá¨ááá á áá á áľááá á¨áááľ? á ááľá áá°áľ áĽáá°áá ááľááá áŤááťáá áĽá áá°áą áá áŚáł á ááá ááá áá áááá áľáááą á˘á˝ááľ? áá°á á˛á á¨á°áááá ááἠáĽáť áłááá áá
áá°áľ á¨áá˝ááá ááá áááá á¨ááááá áá¨á ááŁáľ áŁáá˝ááľ?
áąáá
á áľáŤáŹ ááááŞáŤ áá á¨á°á áá áá¨áá ááá¨áá¸áľ á¨ááŤáľááá áľáá˝ áá°áá áŞáŤ áááá á ááᏠáá áᢠáĽá á¨á፠á°á áááá á¨ááᥠáá áĽáá´áľ ááááľ áĽá˝ááá áĽáŹ á á°áĽáŠá˘ áááłá, á˘áŤáá á˘áŤá á˘áŤááŞá˝ á áá, áĽá áĽáą á¨á°áá°á áá¨á á áá, áá á¨áĽááą áá áĽáá´áľ áá°áááľ áááĽá¨áľ áĽá˝ááá? "áąáá" á¨á°áŁá ááť á¨áá á¨á˘áŤá áĽáá°áá á ááĽáł áá áá áĽá˝ááá. áá áľáá á˘ááá áĽá á á˘áŤá ááľá áááłá áŚá፠á˘áááľ? á¨á፠á¨áĽá áŚá፠á˘áŤááŤá á˘áŤá፠ááť áĽáá°áááá¨á áĽá á¨áĽá áąáá á ááá á¨ááá á˘áŤá ááááᢠááĽáŤááłááą á°á áá áአáá፠(ááłáááŤ) á¨á°á á áłáłá¤á áá áá á˝áá ááááłáľ á¨áľáˇáᣠáĽá á¨áĽá áąáá á¨áá ááłáá፠áá á¨á°áłá°á¨ ááᣠáá á á áĽáááą á¨áá፠ááĽá áĽáť áá áᢠáľááá , á¨á á´á áŁáá¤áľ ááłáá፠ááĽá 2 áá á¨á, áĽá á á°áá°á áá á˘áŤá á áá ááłáá፠áľá áá á, á¨ááŤá áŚá፠á á°ááłáłá ááłáá፠áľá ááá˝. á¨á°á áá áĽá á¨áĽááľáłáľ áĽááŁáł á˝áá á á°ááŁá á°ááľáˇá.
á¨ááá ááá
á¨ááá á˝áá áĽá á¨áá
ááá áá á¨áá°áŤá ááŽááŤá á áááľ áá áĽáá° ááť áĽá á°á á°ááłáłá ááᢠá˘áŤá.áľááľáľ á¨ááŁá ááá á¨ááź áąáá á¨áááá áá ááá áááአáĽáá á ááá áá á ááá ááľáĽ á¨ááááŞáŤáá áá°á âtâ áááá áĽáť á¨áťááŠáľ áá
ááá á á ááľ á°á áááłá áá° olya.txt á°áááŻáᢠááá áá ááá á ááľ á áááľ áá, áĽá á ááá á¨áĽáá á á´á á áĽáą ááľáĽ áá
áłáľ áĽááááá. ááá á áľáááľ áĽáŞ á á°á¨áá° ááĽá
á ááááľ ááľáĽáŁ á¨áá˘á á¤á°-áá˝áááľ ááĽáŤááłááą á ááľ áá°áá áŞáŤ (áá°áľ) 3 ááá áááá˝á áá¨ááłáᣠááĽá 0,1,2áŁXNUMXáŁXNUMXᢠá°á¨á᪠áá¨á á á áááá˝ áá ááá áá˝áá
- á¨ááá ááá 0 STDIN ááŁáá áĽá á¨áá°áá áŞáŤ áá¤áľ áá á¨á°áŤáŤá áá
- ááá ááá 1 STDOUT ááŁáá áĽá áĽáá° á¨á áľááľ áľáááá˝ áŤá áá¨ááá˝á ááááŁáľ áá°áá áŞáŤáá˝ áá ááá
- á¨ááá ááá 2 STDERR ááŁáá áĽá á áá°áá áŞáŤáá˝ á¨áľá á°áľ áááááśá˝á ááááŁáľ áŤáááááá˘
á ááŽááŤáá ááľáĽ áááá ἠááá áááá áááááá ááá á¨á¨ááą ááááŁáľ á¨ááááŞáŤáá áá ááłáá፠áŤááá áĽá ááĽá 3 ááááá˘
áá áá˛áá áŤáá á¨ááá ááá áááá áááááá áá°áľ ááłá áá˝ááá˘
áááłá á¨áŁá˝ áŽááśáá áĽáá¨ááľ áĽá á¨áá°áłá˝áá 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á á á°á á á˝á áááľ áľá˝ááá˝áᤠáááááą á¨á°á¨áá°á á áŁá˝ á áŤáą áĽáá á á°áááá á¤á°-áá˝áááľ á áá°ááá˘
á áá ááá 3 ááá áááá˝ á¨ááľáá á°áááá ááłáŞáŤ áá á°áŤáááá
[user@localhost ]$ echo "hello world" > /proc/15771/fd/0
áĽá á ááááŞáŤá áŽááśá ááľáĽ áĽááŤáá
[user@localhost ]$ hello world
ááá áĽá á§áá§
áĽááá á 3 ááá áááá˝ á ááááá áá°áľ ááľáĽ á ááá ááťá áá˝ááᣠáŁá˝á á¨ááŽáŁ áááłá áááľ áá°áśá˝á á ááŤááá áąáŚáŁ áááá¨áą
[user@localhost ]$ cat /dev/zero | sleep 10000
áá áá áľááá áĽáŤáľá áááľ áá˝áá strace -f áĽá á¨ááľáĽ áá áĽá¨á°áŤáá° áĽááłá áááá¨áą, áá á á áአáĽáááááłáá.
á¨áĽá á¨ááá áŁá˝ áá°áľ á áá áᲠ15771 áľáááá˝áá áá°ááľáá áĽá áá áŤá á áľáááá˝á ááľáŹáľ áĽáá°ááááá á áľááá áááááŁá ᣠá áĽá áááł áááą á á-áľááľ áĽá áĽáá ááᢠáŁá˝ áááľ á¨ááá áá°áśá˝á ááá á áĽáá°ááŤáľáááá áŤááá, áĽá áá° á ááľ á§á᧠áŤáá áą. á á á ááá, bash 2 á¨áá áá°áśá˝ áĽá á ááľ á§á᧠áŤáľááááá.
Bash á¨ááá˝ áá°áśá˝á á¨ááá አá ááľ á¨áľáááľ áĽáŞá áŤáŤááłá
áááá áá°áľ ᣠááľááá á§á᧠áŤá áááľáá ᣠáá áĽáľáŤáá ááá á¨ááá áá°áśá˝ á¨ááá˘
PID command
15771 bash
lrwx------ 1 user user 64 Oct 7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:42 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:42 255 -> /dev/pts/21
á¨á፠á¨áľáááľ áĽáŞáá áá áá
PID command
15771 bash
lrwx------ 1 user user 64 Oct 7 15:42 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:42 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:42 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:42 255 -> /dev/pts/21
PID command
9004 bash
lrwx------ 1 user user 64 Oct 7 15:57 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 255 -> /dev/pts/21
PID command
9005 bash
lrwx------ 1 user user 64 Oct 7 15:57 0 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 1 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 2 -> /dev/pts/21
lrwx------ 1 user user 64 Oct 7 15:57 3 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 4 -> pipe:[253543032]
lrwx------ 1 user user 64 Oct 7 15:57 255 -> /dev/pts/21
ááá áá°áąá á¨ááá á¨ááá ááááá˝ áá áĽáá°áááá á áááą, áľááá á ááá áá°áľ áĽá á áá áá á ááľ á áááľ áááá. á PID 15771 á¨ááá áá°áľ áĽáŤ á¨ááá áá°áśá˝ áá¨áłá°á áá, áľááá á¨ááá˝ ááá˝ áĽáť áá áĽáá.
áľááá , á§á᧠á áŤáľááááá, áĽá á¨ááá ááááá˝á á ááĽá 3 áĽá 4 áááá.
á PID 9004 á¨ááááŞáŤ áá
áŁá˝ áá°áľ ᣠá¨áľáááą áĽáŞ
á ááá°áá á¨á áááľ áá°áľ á PID 9005, bash dup2 á á áá áá á¨ááá ááááá STDIN ááĽá 0 áááá¨á á áá ááá°á áŁá˝ ᨠPID 9005 áá á¨ááŤáá á ááá áá á¨á§áá§á áá ááá áŁá.
á¨áá á áá á¨ááá ááááá˝ ááĽá 3 áĽá 4 áĽáá˛á á ááá˝ áá°áśá˝ ááľáĽ á°ááá°áá, ááááŤáąá á¨áĽááá˛á áĽá á áá á áááá.
áá áĽáŹ á¨ááá ááá 255á á˝á áĽáááᤠáááľáŁá ááááá˝ á áŁá˝ á áŤáą áĽá á áá áááá áĽá á ááá˝ áá°áśá˝ ááľáĽá ááááá˘
á ááá áᣠá PID 9004 á¨ááááŞáŤ áá
áá°áľáŁ bash á¨áľáááľ áĽáŞá áá áá ááááŤá
á ááá°áá á¨á áááľ áá°áľ á PID 9005ᣠbash á¨ááá ááá ááá°á á°ááá áŤá°áááᣠá áĽá áááł /usr/bin/sleepá˘
áááľ áĽáŞ á á°á°á¨áá áľ áá á 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 áááŁááľ á á°á¨ááľ áá° á˛áľá á¨áá˝á áľáá˝ ááŽááŤá áĽáááᢠá¨áá á á áá á áá ááááŤáľ á á˛áľá áá áá¨á ááá áŤááťáá á ááá áá áá á˝á áĽáááá áĽá áááĄá á á ááľ á°á¨ááľ ááľáĽ áĽáá°áá áááťá áĽááááŤáá. áĽá Python áĽá¨á°á áááŠá áľ áŁáá ááłá ááľáĽ áááááá áá á¨ááŽááŤááá ááá áá áá áá˝ááá˘
[user@localhost ]$ cat openforwrite.py
import datetime
import time
mystr="a"*1024*1024+"n"
with open("123.txt", "w") as f:
while True:
try:
f.write(str(datetime.datetime.now()))
f.write(mystr)
f.flush()
time.sleep(1)
except:
pass
ááŽááŤáá áĽááŤááľ áĽá á¨ááá ááááá˝á áĽáá
[user@localhost ]$ python openforwrite.py &
[1] 3762
[user@localhost ]$ ps axuf | grep [o]penforwrite
user 3762 0.0 0.0 128600 5744 pts/22 S+ 16:28 0:00 | _ python openforwrite.py
[user@localhost ]$ ls -la /proc/3762/fd
total 0
dr-x------ 2 user user 0 Oct 7 16:29 .
dr-xr-xr-x 9 user user 0 Oct 7 16:29 ..
lrwx------ 1 user user 64 Oct 7 16:29 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 7 16:29 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 7 16:29 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 7 16:29 3 -> /home/user/123.txt
áĽáá°áááá¨áąáľ, á¨áĽá 3 áá°á á ááá ááá áĽá á ááľ á°á¨á᪠á¨á¨ááľá á áá. á¨áááá áá á áĽáááľá˝áĄ-
[user@localhost ]$ ls -lah 123.txt
-rw-rw-r-- 1 user user 117M Oct 7 16:30 123.txt
ááᥠá ááťá áá ááᣠá ááá áá áŤááľá áááśá˝ áááá¨á áĽááááŤáááĄ-
[user@localhost ]$ sudo chown root: 123.txt
[user@localhost ]$ ls -lah 123.txt
-rw-rw-r-- 1 root root 168M Oct 7 16:31 123.txt
[user@localhost ]$ ls -lah 123.txt
-rw-rw-r-- 1 root root 172M Oct 7 16:31 123.txt
á°á ááá áá° ááá á¨ááá áááľ áŁááá¨áá ááᥠá ááá áĽá¨á°áá áááá áĽááŤááᢠáĽáąá áááľáááľ áĽáááááĄ-
[user@localhost ]$ sudo rm 123.txt
[user@localhost ]$ ls 123.txt
ls: cannot access 123.txt: No such file or directory
áá¨áá á¨áľ áá á¨á°ááá? áĽá á ááŤá˝ á¨á°áťá áá¸á? áĽá áĽáááľáťáááĄ-
[user@localhost ]$ ls -la /proc/3762/fd
total 0
dr-x------ 2 user user 0 Oct 7 16:29 .
dr-xr-xr-x 9 user user 0 Oct 7 16:29 ..
lrwx------ 1 user user 64 Oct 7 16:29 0 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 7 16:29 1 -> /dev/pts/22
lrwx------ 1 user user 64 Oct 7 16:29 2 -> /dev/pts/22
l-wx------ 1 user user 64 Oct 7 16:29 3 -> /home/user/123.txt (deleted)
á áᣠá¨áĽá ááá ááá á ááá á á áĽá áá á ááá ááá áĽáá° á áŽáá ááá ááááá áĽáá˝áááᣠáĽáááŁááᣠááá¸áłá áĽá áá áłáľ áĽáá˝áááá˘
á¨áááá áá á áĽáááĄ-
[user@localhost ]$ lsof | grep 123.txt
python 31083 user 3w REG 8,5 19923457 2621522 /home/user/123.txt
á¨ááá áá á 19923457 ááᢠáááá áááĽáŤáľ áĽáááááĄ-
[user@localhost ]$ truncate -s 0 /proc/31083/fd/3
[user@localhost ]$ lsof | grep 123.txt
python 31083 user 3w REG 8,5 136318390 2621522 /home/user/123.txt
áĽáá°áááá¨áąáľ, á¨ááá áá á áĽá¨á¨áᨠáĽáť áá áĽá á¨áĽá áááľ á áá°áŤá. á¨áľáááľ áĽáŞ á°ááśá˝á áĽáááá¨áľ
with open("123.txt", "w") as f:
ááľááἠá ááĽá
with open("123.txt", "a") as f:
á "w" áŁáá˛áŤ á ááá°á˝ áá
[user@localhost ]$ strace -e trace=open python openforwrite.py 2>&1| grep 123.txt
open("123.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
áĽá ᨠ"a" áŁáá˛áŤ áá
[user@localhost ]$ strace -e trace=open python openforwrite.py 2>&1| grep 123.txt
open("123.txt", O_WRONLY|O_CREAT|O_APPEND, 0666) = 3
ááľáááá á¨áááľ áá°áľá áááľ
áĽá áá ááŽááŤááŽá˝ ááŽááŤáá˝á á˛ááĽáŠ áĽá á˛ááአá áŤááá˝á (áááłá GDB) ááá á¨á°ááŤáŠ á¨ááá˘áŤ á°á¨ááá˝á áá áááᢠááááľ ááľááá áĽá¨á°áŤ áŤááá ááŽááŤá á¨ááá áĽá á¨ááá¨á á˝ááł áá°áŁá ᣠáááłá ᣠá¨á°ááááŽá˝á áĽá´áśá˝á áááἠᣠáááť ááĽáĽ ááááᾠᣠááᰠᣠááá°.
ááá áááťá á á á¨á˛áľá áŚáł áľáááá áá° ááá áĽáŤá áľááááľáŁ á˝ááŠá áááá°á áĽááááá˘
áĽáá° á¨á°áᨠá˛áľá á¨áááááá ááááá˝á ááá áĽááá áá˘
[user@localhost ~]$ dd if=/dev/zero of=~/tempfile_for_article.dd bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.00525929 s, 2.0 GB/s
[user@localhost ~]$
á¨ááá áľáááľ áĽááá ááĄ-
[user@localhost ~]$ mkfs.ext4 ~/tempfile_for_article.dd
mke2fs 1.42.9 (28-Dec-2013)
/home/user/tempfile_for_article.dd is not a block special device.
Proceed anyway? (y,n) y
...
Writing superblocks and filesystem accounting information: done
[user@localhost ~]$
á¨ááá áľáááąá ááŤá;
[user@localhost ~]$ sudo mount ~/tempfile_for_article.dd /mnt/
[sudo] password for user:
[user@localhost ~]$ df -h | grep mnt
/dev/loop0 8.7M 172K 7.9M 3% /mnt
á¨áŁáá¤áłá˝á áá áá፠áĽáááĽáŤáááĄ-
[user@localhost ~]$ sudo mkdir /mnt/logs
[user@localhost ~]$ sudo chown user: /mnt/logs
á ááŽááŤáá˝á ááľáĽ áĽáť áááá áááá áĽáááá°ááĄ-
with open("/mnt/logs/123.txt", "w") as f:
á áľááá
[user@localhost ]$ python openforwrite.py
áĽááľ á°á¨ááśá˝ áĽáá áĽáááá˘
[user@localhost ~]$ df -h | grep mnt
/dev/loop0 8.7M 8.0M 0 100% /mnt
áľááá , á áá á˝áá ááááŞáŤ áá á¨á°ááá¸á á˝áá á ááĽá. áá áŚáł 0, 100% á°ááá.
áĽáá° áĽáŤá áááł, áá á á¨ááá˝á á áŁá á áľááá áá¨ááá˝á áááááἠáĽá¨áá¨áá áááá áĽááľáłááłáá. áĽá á á°ááłáłá áá áá°áąá áĽáá°áá áłáááአá áááááąá ááľá°áŤá¨á á ááĽá.
á ááá á¨á˛áľá áŚáł á áá áĽáá áᣠáá á á°áᨠáááááᣠáááłá á /á¤áľá˘
á¨áĽáá áŽáľ "á ááἠáá áĽáá°áá ááááľ" áĽáááá.
áááá á¨á˛áľá áŚáł á¨á ááá á¨áá°áłá˝áá 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
áááá á¨ááŁááá á˛áľá°á áá áĽáá°áá ፠á¨áááᤠááľáĽ á ááľááŁáľ (á¨áá á áŠáŤ áŽá á áááľ áĽáŞáá áŤáááá áľá áááá¨áą)ᣠáŽáłá˝áá áľáá°áŤ ááá áľáá¨ááľ áĽáŤáłá˝áá áá°áłá˝áá áááá á°ááłáłá ááá áĽáá°ááááᣠááá áá 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
ááłááá á¨ááá áá áĽááľáłááłáá - áŁá˝ á¨ááá ááááá˝á áĽáá´áľ áĽáá°áááá áĽá ᨠ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 áááłá ᣠáá á áá° á ááłá¨ áá¨áĽ á áááľ 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
ááá: hab.com