π§ Linux Junior. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄ Linux.
Open in Telegram
ΠΠ°Π½Π°Π» Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Linux. ΠΠΎΡΡΠΈ Π²ΡΠ΅ Python Π΄Π΅Π²Π΅Π»ΠΎΠΏΠ΅ΡΡ Ρ Π½Π°ΠΌΠΈ Π½Ρ ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ΄ΡΡΠ½ΡΡΡΡ. ΠΠΎ ΡΠ΅ΠΊΠ»Π°ΠΌΠ΅: @jannytg @anothertechrock
Show more3 072
Subscribers
+224 hours
+17 days
-1030 days
Posts Archive
ΠΠ»Ρ Π·Π°ΠΌΠ΅Π½Ρ, Π·Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈΠ· ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠ³ΠΎ Π²Π²ΠΎΠ΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΡΠΎΠ»ΡΠ½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°
tr. Π‘ Π΅Π΅ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ:
tr -cd '\11\12\15[:print:]' < bad.txt > clean.txt
ΠΠΏΡΠΈΠΈ:
π΄-c β ΠΈΠ½Π²Π΅ΡΡΠΈΡΡΠ΅Ρ Π½Π°Π±ΠΎΡ, Ρ.Π΅. Π²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, Π½Π΅ Π²Ρ
ΠΎΠ΄ΡΡΠΈΠ΅ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½, Π±ΡΠ΄ΡΡ Π²ΡΠ±ΡΠ°Π½Ρ
π΄-d β ΡΠ΄Π°Π»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°Π½Π½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ (Π²ΠΌΠ΅ΡΡΠΎ Π·Π°ΠΌΠ΅Π½Ρ)
ΠΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² Π΄Π»Ρ Π²ΡΠ±ΠΎΡΠΊΠΈ:
π΄ \11, \12, \15 β ΡΡΠΎ ΡΠ°Π±ΡΠ»ΡΡΠΈΡ (\t), ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄ ΡΡΡΠΎΠΊΠΈ (\n) ΠΈ Π²ΠΎΠ·Π²ΡΠ°Ρ ΠΊΠ°ΡΠ΅ΡΠΊΠΈ (\r), Π·Π°ΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² Π²ΠΎΡΡΠΌΠ΅ΡΠΈΡΠ½ΠΎΠΌ (octal) Π²ΠΈΠ΄Π΅. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ β ΡΡΠΎ ASCII-ΠΊΠΎΠ΄ ΡΠΈΠΌΠ²ΠΎΠ»Π°.
π΄ [:print:] β Π²ΡΠ΅ Π²ΠΈΠ΄ΠΈΠΌΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ.
Π ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΎΡΡΠ°Π²ΠΈΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ°ΡΠ½ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ, ΡΠ°Π±Ρ ΠΈ ΠΏΠ΅ΡΠ΅Π²ΠΎΠ΄Ρ ΡΡΡΠΎΠΊ.
#Π²ΠΎΠΏΡΠΎΡΡβ ΠΠ°ΠΊ ΠΎΡΠΈΡΡΠΈΡΡ ΡΠ΅ΠΊΡΡ ΠΎΡ Π½Π΅ΡΠΈΡΠ°Π΅ΠΌΡΡ
ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ· PDF?
ΠΡΠ²Π΅Ρ ΡΠ΅ΡΠ΅Π· ΡΠ°Ρ.
#Π²ΠΎΠΏΡΠΎΡΡ
π₯ Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠ³ΡΡΠ½ΡΡ
ΡΠΊΠΎΠ±ΠΎΠΊ (brace expansion)
Π€ΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ
{} Π² Bash ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠ°Π·Π²ΠΎΡΠ°ΡΠΈΠ²Π°ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ².
ΠΡΠΎΡΡΠΎΠΉ ΠΏΡΠΈΠΌΠ΅Ρ:
echo {1..10}
# 1 2 3 4 5 6 7 8 9 10
ΠΠΎΠΆΠ½ΠΎ Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ:
echo {10..1}
# 10 9 8 7 6 5 4 3 2 1
βοΈ Π¨Π°Π³ Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅
Π’ΡΠ΅ΡΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ Π·Π°Π΄Π°ΡΡ ΡΠ°Π³:
echo {1..501..100}
# 1 101 201 301 401 501
ΠΠΎΠΆΠ½ΠΎ ΠΈ Π² ΠΎΠ±ΡΠ°ΡΠ½ΡΡ ΡΡΠΎΡΠΎΠ½Ρ:
echo {501..1..100}
# 501 401 301 201 101 1
βοΈ ΠΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ Π±ΡΠΊΠ²
Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ seq, ΡΠΈΠ³ΡΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ ΡΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ Π±ΡΠΊΠ²Π°ΠΌΠΈ:
echo {A..P}
# A B C D E F G H I J K L M N O P
Π¨Π°Π³ ΡΠΎΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ:
echo {A..P..2}
# A C E G I K M O
βοΈ ΠΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΠΏΡΠΈΡΠΌΡ
Π‘ΠΎΠ·Π΄Π°ΡΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΉ:
mkdir ~/Sources/{test1,test2,test3}
Π‘ΡΠ°Π²Π½ΠΈΡΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π» ΠΈ ΠΏΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ:
diff {orig,patched}/path/to/prog.c
Π‘Π΄Π΅Π»Π°ΡΡ Π±ΡΠΊΠ°ΠΏ ΡΠ°ΠΉΠ»Π°:
cp -p file.txt{,.bak}
# ΡΠΎΠ·Π΄Π°ΡΡ file.txt ΠΈ file.txt.bak
π‘ ΠΡΠ»ΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π·Π°ΠΏΡΡΠΎΠΉ Π½ΠΈΡΠ΅Π³ΠΎ Π½Π΅Ρ, Bash ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΠ΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅.
β οΈ ΠΠ°ΠΆΠ½ΠΎ: ΠΏΡΠΎΠ±Π΅Π»Ρ Π²Π½ΡΡΡΠΈ {} Π»ΠΎΠΌΠ°ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅!
echo file{1.. 2}.txt # Π½Π΅ ΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ
βοΈ Π€ΠΎΡΠΌΠ°ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ²ΠΎΠ΄Π°
ΠΠΎΠΆΠ½ΠΎ ΡΠ±ΡΠ°ΡΡ ΠΏΡΠΎΠ±Π΅Π»Ρ ΠΈΠ· Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠ΅ΡΠ΅Π΄Π°Π² Π²ΡΠ²ΠΎΠ΄ Π² tr:
echo {A..P..2} | tr -d " "
# ACEGIKMO
Π‘ΠΎΠ·Π΄Π°Π΄ΠΈΠΌ ΠΏΡΠ΅Π²Π΄ΠΎΠ½ΠΈΠΌ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ n-ΠΉ Π±ΡΠΊΠ²Ρ Π°Π»ΡΠ°Π²ΠΈΡΠ°:
alias nth="echo {A..Z} | tr -d ' ' | cut -c"
nth 10
# J
βοΈ {} vs []
ΠΠ²Π°Π΄ΡΠ°ΡΠ½ΡΠ΅ ΡΠΊΠΎΠ±ΠΊΠΈ [] β ΡΡΠΎ ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠΌ ΠΈΠΌΡΠ½ ΡΠ°ΠΉΠ»ΠΎΠ², Π° ΡΠΈΠ³ΡΡΠ½ΡΠ΅ {} β ΠΏΡΠΎΡΡΠΎ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
ls file[1-9].txt
# ΠΎΡΠ±Π΅ΡΡΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ°ΠΉΠ»Ρ
ls file{1..9}.txt
# ΠΏΠΎΠΏΡΡΠ°Π΅ΡΡΡ Π²ΡΠ²Π΅ΡΡΠΈ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΈΡ
Π½Π΅Ρ
βοΈ ΠΡΡΠΏΠΏΠΈΡΠΎΠ²ΠΊΠ° ΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΡ
ΠΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ Π½Π°Π±ΠΎΡΠΎΠ²:
touch {a,b,c}.{hpp,cpp}
# ΡΠΎΠ·Π΄Π°ΡΡ a.cpp a.hpp b.cpp b.hpp c.cpp c.hpp
ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ:
mkdir -p {source,help{/pages,/yelp,/images}}
Π‘ΡΡΡΠΊΡΡΡΠ° ΠΏΠΎΠ»ΡΡΠΈΡΡΡ ΡΠ°ΠΊΠ°Ρ:
. βββ help β βββ images β βββ pages β βββ yelp βββ source
π©βπ» ΠΠΎΠΌΠ°Π½Π΄Π° watch Π² Linux
ΠΠ°ΠΌ Π·Π½Π°ΠΊΠΎΠΌΠ° ΡΠΈΡΡΠ°ΡΠΈΡ, ΠΊΠΎΠ³Π΄Π° ΠΆΠ΄Π΅ΡΡ ΡΠ΅Π³ΠΎ-ΡΠΎ Π²Π°ΠΆΠ½ΠΎΠ³ΠΎ, Π±ΡΠ΄Ρ ΡΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΏΠΎ FTP? ΠΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΏΡΠΈΡ
ΠΎΠ΄ΠΈΡΡΡ Π²Π²ΠΎΠ΄ΠΈΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°. Π ΡΡΠΎ ΠΏΠΎΡΠΎΠΉ Π±ΡΠ²Π°Π΅Ρ ΡΡΠΎΠΌΠΈΡΠ΅Π»ΡΠ½ΠΎ.
ΠΠ»Ρ ΡΠ°ΠΊΠΈΡ
ΡΠ»ΡΡΠ°Π΅Π² ΠΈ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°
watch. ΠΠ½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠΈΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΅Ρ Π²ΡΠ²ΠΎΠ΄Π° Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅ Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ΅ΡΠ΅Π· Π·Π°Π΄Π°Π½Π½ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΎ ΡΠ΄ΠΎΠ±Π½ΠΎ Π΄Π»Ρ "ΠΆΠΈΠ²ΠΎΠ³ΠΎ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π°" ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
βοΈ Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ:
watch [ΠΎΠΏΡΠΈΠΈ] ΠΊΠΎΠΌΠ°Π½Π΄Π°
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ watch Π·Π°ΠΏΡΡΠΊΠ°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 2 ΡΠ΅ΠΊΡΠ½Π΄Ρ.
βοΈ ΠΠΏΡΠΈΠΈ:
-n <ΡΠ΅ΠΊ> β Π·Π°Π΄Π°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ Π² ΡΠ΅ΠΊΡΠ½Π΄Π°Ρ
(ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ 2).
-d β ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΈΠ²Π°ΡΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡΠΌΠΈ.
-t β ΡΠ±ΡΠ°ΡΡ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (Π±Π΅Π· ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ).
-g β Π·Π°Π²Π΅ΡΡΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ³Π΄Π° Π²ΡΠ²ΠΎΠ΄ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡ.
βοΈ ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
1οΈβ£ ΠΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³ ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΌΠ΅ΡΡΠ° Π½Π° Π΄ΠΈΡΠΊΠ΅. ΠΠ°ΠΆΠ΄ΡΠ΅ 5 ΡΠ΅ΠΊΡΠ½Π΄ ΠΎΠ±Π½ΠΎΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π΄ΠΈΡΠΊΠ°Ρ
:
watch -n 5 df -h
2οΈβ£ ΠΠ°Π±Π»ΡΠ΄Π΅Π½ΠΈΠ΅ Π·Π° ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² apache, ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΆΠ΄ΡΠ΅ 2 ΡΠ΅ΠΊΡΠ½Π΄Ρ:
watch -n 2 ps aux | grep apache
3οΈβ£ ΠΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² /proc/meminfo ΠΈΠ·ΠΌΠ΅Π½ΡΠ½Π½ΡΠ΅ ΡΡΡΠΎΠΊΠΈ Π±ΡΠ΄ΡΡ ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠ΅Π½Ρ:
watch -d cat /proc/meminfo
4οΈβ£ ΠΡΡΠ»Π΅ΠΆΠΈΠ²Π°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ CPU ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ. ΠΠ°ΠΆΠ΄ΡΡ ΡΠ΅ΠΊΡΠ½Π΄Ρ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡ Π·Π°Π³ΡΡΠ·ΠΊΠ° CPU ΠΈ ΠΏΠ°ΠΌΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ firefox:
watch -n 1 "ps -C firefox -o %cpu,%mem,cmd"
5οΈβ£ ΠΠ°Π²Π΅ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ. watch Π±ΡΠ΄Π΅Ρ ΡΠ»Π΅Π΄ΠΈΡΡ Π·Π° ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ΠΌ ΡΠ°ΠΉΠ»Π° ΠΈ Π·Π°Π²Π΅ΡΡΠΈΡΡΡ, ΠΊΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ Π΅Π³ΠΎ Π°ΡΡΠΈΠ±ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡ:
watch -g ls -l file.txtΠΠ°ΠΊΠΈΠΌ Π±ΡΠ΄Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°Ρ, Π΅ΡΠ»ΠΈ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Ρ
cat file1 file2 1>2 2>&1
ΠΡΠΈΠ²Π΅Π΄Π΅Π½Π½Π°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π°
cat Π΄Π°Π΅Ρ ΡΠ°ΠΊΠΎΠΉ Π²ΡΠ²ΠΎΠ΄ β¬οΈΠΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄Π° Π½Π°Ρ
ΠΎΠ΄ΠΈΡ 10 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΡ
ΡΡ IP-Π°Π΄ΡΠ΅ΡΠΎΠ² Π² ΡΠ°ΠΉΠ»Π΅ access.log:
grep -Eo '([0-9]{1,3}\.){3}[0-9]{1,3}' access.log | sort | uniq -c | sort -nr | head
ΠΠΎΠΊΠ°ΠΆΠ΅Ρ ΡΠΎΠΏ IP ΠΏΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ. ΠΠ΅Π·Π°ΠΌΠ΅Π½ΠΈΠΌΠΎ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π° Π²Π΅Π±-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ².
#Π²ΠΎΠΏΡΠΎΡΡβ ΠΠ°ΠΊ Π½Π°ΠΉΡΠΈ ΡΠ°ΠΌΡΠ΅ ΡΠ°ΡΡΠΎ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠΈΠ΅ΡΡ IP-Π°Π΄ΡΠ΅ΡΠ° Π² Π»ΠΎΠ³Π°Ρ
?
ΠΡΠ²Π΅Ρ ΡΠ΅ΡΠ΅Π· ΡΠ°Ρ.
#Π²ΠΎΠΏΡΠΎΡΡ
π₯ Π§ΡΠΎ ΡΠ°ΠΊΠΎΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ (daemons) Π² Linux?
ΠΠ΅ΠΌΠΎΠ½Ρ, ΠΈΠ»ΠΈ "daemons", Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΡ
ΡΠΈΡΡΠ΅ΠΌΠ°Ρ
ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ ΠΈ ΡΠ»Π΅Π΄ΡΡ Π·Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ Π°ΡΠΏΠ΅ΠΊΡΠ°ΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ Π΅Π΅ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ.
ΠΠ½ΠΈ ΠΌΠΎΠ³ΡΡ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅ΡΠ°ΡΡ ΠΈΠ»ΠΈ ΡΠ΅ΡΡ.
Π Linux ΠΎΠ½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ ΡΠ»ΡΠΆΠ±Π°ΠΌ Π² Windows ΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ Π·Π°Π΄Π°ΡΠΈ Π² ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ ΠΈΠ»ΠΈ Π² ΠΎΡΠ²Π΅Ρ Π½Π° ΡΠΎΠ±ΡΡΠΈΡ.
ΠΠ΅ΠΌΠΎΠ½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΏΡΠΈ ΡΡΠ°ΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ
ΡΠ»ΡΠΆΠ±.
ΠΠ½ΠΈ Π½Π΅ ΡΡΠ΅Π±ΡΡΡ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π΄Π»Ρ ΡΠ²ΠΎΠ΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΠΈ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅.
Π‘ΠΎΠ·Π΄Π°ΡΡΡΡ ΠΎΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΡΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΌΠ΅ΡΠΎΠ΄Π° fork(), ΡΠΎΠ·Π΄Π°Π²Π°Ρ ΠΊΠΎΠΏΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°.
ΠΠ΅ΠΌΠΎΠ½Ρ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Ρ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΏΠΎ ΠΈΡ
ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌ, ΠΈΡ
ΠΈΠΌΠ΅Π½Π° ΠΎΠ±ΡΡΠ½ΠΎ Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΡΡ Π½Π° "d".
ΠΡ
ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΡΠ»Π΅ΠΆΠΈΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ
ΠΊΠΎΠΌΠ°Π½Π΄, ΡΠ°ΠΊΠΈΡ
ΠΊΠ°ΠΊ
ps, top, htop ΠΈ pstree. ΠΠΎΠΌΠ°Π½Π΄Π° pstree ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄ΡΠ΅Π²ΠΎΠ²ΠΈΠ΄Π½ΠΎΠΉ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ Π»ΡΡΡΠ΅ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅.
βΉοΈ Π ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΌΠΎΠ³ΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΌΠΎΠ½Ρ, Π²ΠΎΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ· Π½ΠΈΡ
:
π΄ systemd: ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ Π²ΡΠ΅Ρ
ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Ρ PID=1, Π°Π½Π°Π»ΠΎΠ³ init.
π΄ rsyslogd: ΡΠ΅Π³ΠΈΡΡΡΠΈΡΡΠ΅Ρ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΏΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΡ Ρ syslogd.
π΄ udisksd: ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ ΡΡΡΡΠΎΠΉΡΡΠ²Π°ΠΌΠΈ Ρ
ΡΠ°Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ
, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΡΠ°Π·ΠΌΠΎΠ½ΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅.
π΄ logind: ΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ Π²Ρ
ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ Π² ΡΠΈΡΡΠ΅ΠΌΡ.π©βπ» ΠΠΎΠΌΠ°Π½Π΄Π° shred
ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π² Linux ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π°
rm. ΠΠΎ ΡΠ°ΠΉΠ»Ρ, ΡΠ΄Π°Π»Π΅Π½Π½ΡΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, Π½Π΅ ΡΠ΄Π°Π»ΡΡΡΡΡ ΠΎΠΊΠΎΠ½ΡΠ°ΡΠ΅Π»ΡΠ½ΠΎ Ρ Π΄ΠΈΡΠΊΠ°. ΠΡ
ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π° Π΄ΠΈΡΠΊΠ΅ Π΄ΠΎ ΡΠ΅Ρ
ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π·Π°Π½ΡΡΠΎΠ΅ ΠΈΠΌΠΈ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°Π½ΠΎ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ. ΠΠΎΡΡΠΎΠΌΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ.
ΠΠΎ ΡΡΠΎ, Π΅ΡΠ»ΠΈ Π½Π°ΠΌ Π½ΡΠΆΠ½ΠΎ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ ΡΠ°ΠΊ, ΡΡΠΎΠ±Ρ ΠΈΡ
Π½ΠΈΠΊΡΠΎ Π½Π΅ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²ΠΈΠ»? ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° shred.
ΠΠ½Π° ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠ°ΠΉΠ»Π° ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΡΠ°Π·, Π° Π·Π°ΡΠ΅ΠΌ ΠΏΠΎ ΠΆΠ΅Π»Π°Π½ΠΈΡ ΡΠ΄Π°Π»ΡΠ΅Ρ Π΅Π³ΠΎ. ΠΡΠΎ Π΄Π΅Π»Π°Π΅Ρ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠΌ.
βοΈ ΠΠΎΠΌΠ°Π½Π΄Π°:
shred [ΠΎΠΏΡΠΈΠΈ] ΡΠ°ΠΉΠ»
ΠΠΏΡΠΈΠΈ:
-n β ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ» n ΡΠ°Π·
-z β Π΄Π΅Π»Π°Π΅Ρ ΡΠΈΠ½Π°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΡ Π½ΡΠ»ΡΠΌΠΈ, ΡΡΠΎΠ±Ρ ΡΠΊΡΡΡΡ ΡΠ°ΠΌ ΡΠ°ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ shred.
-u, --remove β ΠΏΠΎΡΠ»Π΅ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ ΡΠ°ΠΉΠ» (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠ°ΠΉΠ» Π½Π΅ ΡΠ΄Π°Π»ΡΠ΅ΡΡΡ).
-v β Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ³ΡΠ΅ΡΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»
-f β ΠΏΡΠΈΠ½ΡΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ½ΠΈΠΌΠ°Π΅Ρ Π·Π°ΡΠΈΡΡ ΠΎΡ Π·Π°ΠΏΠΈΡΠΈ (Π΅ΡΠ»ΠΈ ΡΠ°ΠΉΠ» read-only).
βοΈ ΠΡΠΈΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ:
1οΈβ£ ΠΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ» ΠΈ ΠΎΡΡΠ°Π²ΠΈΡΡ Π΅Π³ΠΎ Π½Π° ΠΌΠ΅ΡΡΠ΅:
shred secret.txt2οΈβ£ ΠΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ» 5 ΡΠ°Π· ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ Π΅Π³ΠΎ:
shred -n 5 -u secret.txt
3οΈβ£ ΠΠ΅ΡΠ΅Π·Π°ΠΏΠΈΡΠ°ΡΡ ΡΠ°ΠΉΠ» 1 ΡΠ°Π·, Π·Π°ΡΠ΅ΠΌ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΡ Π½ΡΠ»ΡΠΌΠΈ ΠΈ ΡΠ΄Π°Π»ΠΈΡΡ:
shred -n 1 -z -u secret.txtΠ‘ΠΊΠΎΠ»ΡΠΊΠΎ ΡΡΡΠ»ΠΎΠΊ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΠΈ?
ΠΡΠΈΠ½Π°ΡΠΎΠΌ β ΠΠ’-ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΎΡ Π ΠΎΡΠ°ΡΠΎΠΌΠ° β ΠΈΡΠ΅Ρ ΡΠΊΡΠΏΠ΅ΡΡΠ° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΡ Linux Π² Π‘Π°Π½ΠΊΡ-ΠΠ΅ΡΠ΅ΡΠ±ΡΡΠ³Π΅!
π¨βπ»ΠΠ°ΠΌ ΠΏΡΠ΅Π΄ΡΡΠΎΠΈΡ Π°Π΄ΠΌΠΈΠ½ΠΈΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΠ‘ Linux ΠΈ Windows, ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΠΈΡΡΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΊΠ»ΡΡΠ΅Π²ΡΡ
ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡ
ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, Π½Π°ΡΡΡΠΎΠΉΠΊΠ° ΠΈ ΡΠΎΠΏΡΠΎΠ²ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌ ΠΌΠΎΠ½ΠΈΡΠΎΡΠΈΠ½Π³Π° ΠΈ ΡΠ΅Π½ΡΡΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ, Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π·Π²Π΅ΡΡΡΠ²Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² ΠΈ Π·Π°Π΄Π°Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π²ΠΎΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ.
π€ΠΡ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΠΌ ΡΠ°Π±ΠΎΡΡ Π² Π°ΠΊΠΊΡΠ΅Π΄ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΠ’-ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, Β«Π±Π΅Π»ΡΡ Π·Π°ΡΠΏΠ»Π°ΡΡΒ» 2 ΡΠ°Π·Π° Π² ΠΌΠ΅ΡΡΡ, ΠΎΠ±ΡΡΠ΅Π½ΠΈΠ΅ Π·Π° ΡΡΡΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ, ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ ΠΏΠΎ Π’Π ΠΈ ΠΠΠ‘ (ΡΠΎ ΡΡΠΎΠΌΠ°ΡΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ) Ρ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ Π΄Π½Ρ. ΠΡ ΠΊΠ°Π½Π΄ΠΈΠ΄Π°ΡΠΎΠ² ΠΆΠ΄ΡΠΌ Π½Π°Π²ΡΠΊΠΈ ΡΠ°Π±ΠΎΡΡ Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ ΠΈ ΠΎΠΏΡΡ Π² ΠΈΠΌΠΏΠΎΡΡΠΎΠ·Π°ΠΌΠ΅ΡΠ΅Π½ΠΈΠΈ ΠΈ ΡΠ°Π·Π²ΠΈΡΠΈΠΈ ΠΎΡΠ΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ
ΡΠ΅ΡΠ΅Π½ΠΈΠΉ.
ΠΠ°ΠΊΠΈΠΌ Π±ΡΠ΄Π΅Ρ Π²ΡΠ²ΠΎΠ΄ ΡΡΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ?
π» Π§ΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ 2>&1?
ΠΡΠΎ ΠΏΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ Π²ΡΠ²ΠΎΠ΄Π°. ΠΠ½ΠΈ ΠΈΠΌΠ΅ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠ΅ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΡ:
stdout β 1 (ΠΎΠ±ΡΠΈΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π°)
stderr β 2 (ΠΏΠΎΡΠΎΠΊ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ)
ΠΠΎΠ»ΡΡΠ°Π΅ΡΡΡ (2>&1) = stderr > stdout β Π½Π°ΠΏΡΠ°Π²Π»ΡΠ΅ΠΌ ΠΏΠΎΡΠΎΠΊ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π°. ΠΡΠΈΠ±ΠΊΠΈ Π±ΡΠ΄ΡΡ Π²ΡΠ²ΠΎΠ΄ΠΈΡΡΡΡ Π½Π° ΡΠΊΡΠ°Π½ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Π»Π΅.
π€ ΠΠΎΠ³ΠΈΡΠ½ΡΠΌ Π±ΡΠ»ΠΎ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ 2>1. ΠΠΎ ΡΠ²Ρ, ΡΡΠ° ΡΡ
Π΅ΠΌΠ° ΠΎΡΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄ΡΡΠ³ΡΡ Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ. ΠΠΎΡΠΎΠΊ Ρ ΠΎΡΠΈΠ±ΠΊΠ°ΠΌΠΈ stderr Π±ΡΠ΄Π΅Ρ ΠΏΠΈΡΠ°ΡΡ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π² ΡΠ°ΠΉΠ», Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ Π±ΡΠ΄Π΅Ρ 1.
ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ ΠΈ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ ΡΠΈΠΌΠ²ΠΎΠ»
& (Π°ΠΌΠΏΠ΅ΡΡΠ°Π½Π΄) ΠΏΠ΅ΡΠ΅Π΄ stdout. ΠΡΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΠΎΠ²Π°Π½ΠΎ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ, Π° Π½Π΅ ΠΎΠ±ΡΡΠ½ΡΠΉ ΡΠ°ΠΉΠ».
π€ Π ΠΏΠΎΡΠ΅ΠΌΡ ΡΠΎΠ³Π΄Π° Π½Π΅ &2>&1 ?
Π‘ΠΈΠΌΠ²ΠΎΠ» & ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠΈΡΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΠΉΠ»ΠΎΠ²ΡΠΉ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ.
ΠΠΏΠ΅ΡΠ°ΡΠΈΡ command &2>&1 Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ. command & 2>&1 β ΠΊΠΎΠΌΠ°Π½Π΄Π° command Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅. Π Π·Π°ΡΠ΅ΠΌ Π½Π°ΡΠ½Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡ ΠΊΠΎΠΌΠ°Π½Π΄Π° 2 Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ stdout.
ΠΡΡΡ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠΌ |&.
|& ΡΡΠΎ ΡΠΎΠΊΡΠ°ΡΠ΅Π½Π½ΡΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΡ 2>&1 |
ΠΡΠΈΠΌΠ΅Ρ:
script.sh |& tee -a /var/log/script.log
ΠΡΠ΅ ΡΡΠΎ script.sh Π²ΡΠ²Π΅Π΄Π΅Ρ Π² ΠΏΠΎΡΠΎΠΊΠΈ stdout ΠΈ stderr, Π±ΡΠ΄Π΅Ρ ΠΏΠ΅ΡΠ΅Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Π² ΡΠ°ΠΉΠ» script.log.
Π ΠΎΡΠΈΡΠΈΠ°Π»ΡΠ½ΠΎΠΉ Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΈΠ·ΡΡΠΈΡΡ ΡΡΡ ΡΡΡΠΊΡ.ΠΠ°ΡΠΎΠ»Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Π² Π·Π°ΡΠΈΡΡΠΎΠ²Π°Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ Ρ
ΡΠ°Π½ΠΈΡΡΡ Π²:
ΠΠ°ΠΊΠ°Ρ ΠΊΠΎΠΌΠ°Π½Π΄Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠ΅ΡΠ°ΡΠΈ ΡΠ°ΠΉΠ»ΠΎΠ² (Π½Π° ΠΏΡΠΈΠ½ΡΠ΅ΡΠ΅)?
