linux basic command
0. ๊ธฐ๋ณธ๋ช
๋ น์ด
ls : list
/ : to root directory
~ : to home directory
cd : change directory
pwd : print working directory
man [command] : command ์ฐ๋ ๋ฒ์ ๋ํ manual ํ์
1. ํ์ผ์์คํ
touch [filename] : ์ ๊ท ํ์ผ ์์ฑ
cat [filename] : concatenate. ์ฐ๊ฒฐ์ํจ๋ค๋ ์๋ฏธ๋ฅผ ๊ฐ์ง๊ณ ์์. ์ด๋ฆ๊ณผ ์ผ์นํ๋ ํ์ผ ๋ด์ฉ์ ์ฝ์ด ํ๋ฉด์ ์ถ๋ ฅ
mv [๊ธฐ์กด๊ฒฝ๋ก] [์๋ก์ด ๊ฒฝ๋ก] : ๊ธฐ์กด ๊ฒฝ๋ก์์ ์๋ก์ด ๊ฒฝ๋ก๋ก ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ด๋์ํจ๋ค. ๊ฒฝ๋ก์๋ ์ฎ๊ธธ ํ์ผ์ ์ด๋ฆ์ด๋ ๋๋ ํ ๋ฆฌ๊น์ง ํฌํจ์์ผ์ผํ๋ค.
rm [filename] : ์ญ์
rm -r : recursive ํ๊ฒ ์ญ์ . ๋๋ ํ ๋ฆฌ๋ฅผ ์ญ์ ํ ๋ ์ฌ์ฉํ๋ค.
rm -rf : recursive + forcibly ํ๊ฒ ์ญ์ . ๋๋ ํ ๋ฆฌ ๋ด๋ถ์ ๋ชจ๋ ํ์ผ์ ๊ฐ์ ๋ก ์ญ์ ํ๋ค.
mkdir : ๋๋ ํ ๋ฆฌ ์์ฑ
file !s : ํ์ผ์ ์์ฑ
cp -R <source_folder> <destination_folder> : ๋๋ ํ ๋ฆฌ ๋ณต์ฌ
cp <source_file> <destination_file> : ํ์ผ ๋ณต์ฌ
2. head
๋ฌธ์ ๋ด์ฉ์ ์๋ถ๋ถ๋ง ์ถ๋ ฅ
head /etc/passwd : ์์ 10์ค๋ง ์ถ๋ ฅ
head -n 1 /etc/passwd : ์์ 1์ค๋ง ์ถ๋ ฅ
head -c 10 /etc/passwd : ์์ 10๋ฐ์ดํธ๋ง ์ถ๋ ฅ / ์์์ 10๊ธ์๋ง ์ถ๋ ฅ๋จ
cat /etc/passwd | head -n 15 : cat์ผ๋ก ์ถ๋ ฅํ ๊ฒฐ๊ณผ์์ ์์ 15์ค๋ง ์ถ๋ ฅ
cat /etc/passwd | head -n -5 : cat์ผ๋ก ์ถ๋ ฅํ ๊ฒฐ๊ณผ์์ ํ์ 5์ค์ ์ ์ธํ๊ณ ์ถ๋ ฅ
3. tail
tail /etc/passwd -n 1 : ์๋์์ 1์ค๋ง ์ถ๋ ฅ
tail /etc/passwd -n +5 : ์์์ 5๋ฒ์งธ์ค๋ถํฐ ๋ง์ง๋ง๊น์ง ์ถ๋ ฅ
cat /etc/passwd | tail -n 15 : cat ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ก๋ถํฐ ์๋์์๋ถํฐ 15์ค ์ถ๋ ฅ
cat /etc/passwd | tail -n +5 : cat ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ก๋ถํฐ ์์์ 5์ค๋ถํฐ ๋ง์ง๋ง๊น์ง ์ถ๋ ฅ
tail -f : ํ์ผ์ ์ถ๊ฐ๋๋ ๋ด์ฉ์ ๋๊ธฐํ๋ค.
์ถ๊ฐ๋๋ ๋ด์ฉ์ appendํ์ฌ ์ถ๋ ฅํ๋ค.
๋ก๊ทธ๋ฅผ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋งํ ๋ ์์ฃผ ์ฐ์ธ๋ค.
ํ์ผ์ด ์ค๊ฐ์ ์ฌ๋ผ์ง๋ฉด, ์ถ๋ ฅ๋์ง ์๊ณ ๋ฉ์ถ๋ค.
tail -F : ํ์ผ์ด ์ค๊ฐ์ ์ฌ๋ผ์ง๋๋ผ๋, ๋ค์ ์์ฑํ์ฌ ๋ด์ฉ์ append ํ๋ฉฐ ์ถ๋ ฅํ๋ค.
4. wc
ํ์ผ์ line/word/byte ๋ฅผ count ๊ฐ์ ์ถ๋ ฅํ๋ค.
wc /etc/passwd
19 24 922 /etc/passwd
19์ค, 24๋จ์ด, 922 ๋ฐ์ดํธ์ ํ์ผ์์ ๋ํ๋ธ๋ค.
wc -l /etc/passwd
๋ผ์ธ์๋ง ์ถ๋ ฅ๋๋ค.
19 /etc/passwd
cat /etc/passwd | wc -l : cat ํด์ ์ถ๋ ฅ๋ ๊ฒฐ๊ณผ์ ๋ผ์ธ์๋ง ์ถ๋ ฅํ๋ค.
19
wc -l /etc/passwd | cut -d ' ' -f 1
๊ณต๋ฐฑ๋ฌธ์์ด์ delimiter ๋ก ํ์ฌ cut ํ ๊ฒฐ๊ณผ์์ 1๋ฒ์งธ ๋ฌธ์๋ฅผ ์ถ๋ ฅ : 19
wc ํด์ ๋์จ ๊ฒฐ๊ณผ : 19 /etc/passwd
wc -l /etc/passwd | awk '{ print $1 }'
wc ํด์ ๋์จ ๊ฒฐ๊ณผ : 19 /etc/passwd
awk ๋ฅผ ์ด์ฉํ์ฌ ์ฒซ๋ฒ์งธ ๋ณ์๋ง ์ถ๋ ฅ : 19
wc *.c : ํ์ฅ์๊ฐ .c์ธ ํ์ผ๋ค์ ํฉ๊ณ ์ถ๋ ฅ
5. nl
ํ์ผ ๋ด์ฉ์ ๋ผ์ธ ๋๋ฒ์ ํจ๊ป ์ถ๋ ฅํ๋ค.
nl /etc/passwd : ํ์ผ ๋ด์ฉ์ ๋ผ์ธ๋๋ฒ์ ํจ๊ป ์ถ๋ ฅํ๋ค.
nl -ba /etc/passwd : ๋ชจ๋ ๋ผ์ธ์ ๋ํด์ ๋ผ์ธ ๋๋ฒ๋ง์ ํ์ฌ ์ถ๋ ฅํ๋ค.
nl -v 5 /etc/passwd : ์์ํ ๋ผ์ธ๋ฒํธ๋ฅผ -v ๋ค์ ์ซ์๋ก ์ง์ ํ๋ค. 5๋ถํฐ ๋๋ฒ๋ง ์์
nl -ba -s "==>" /etc/passwd : -ba
๋ชจ๋ ๋ผ์ธ์ ๋ํด์ ์ถ๋ ฅํ๊ณ ,
-s "===>" : ๋ผ์ธ๋๋ฒ ๋ค์ ๋ถ์ฌ์ค seperator ๋ฅผ ์ง์ ํ๋ค.
nl -ba -s "==>" /etc/passwd | tail
์์ ๊ฒฐ๊ณผ์์ ๋ฐ์์ 10๋ฒ์งธ ์ค๋ง ์ถ๋ ฅ
6. sort
๋ง๊ทธ๋๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ค.
sort /etc/passwd : ์ํ๋ฒณ ์์๋ก ์ ๋ ฌ
sort /etc/passwd -t: -k 3 : ":" ๋ฅผ ๊ตฌ๋ถ์๋ก, 3๋ฒ์งธ ํค๊ฐ์ ๋ํด์ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅ
sort /etc/passwd -n -t: -k 3 : ":" ๋ฅผ ๊ตฌ๋ถ์๋ก, 3๋ฒ์งธ ํค๊ฐ์ ์ซ์๋ก ๊ฐ์ฃผํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก ์ถ๋ ฅ
sort /etc/passwd -t: -k 3,3 : ":" ๋ฅผ ๊ตฌ๋ถ์๋ก ํ๋, 3๋ฒ์งธ๋ถํฐ 3๋ฒ์งธ ํค๋ฅผ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ถ๋ ฅ
sort /etc/passwd -t: -k 4,4 -k 3,3 : ":" ๋ฅผ ๊ตฌ๋ถ์๋ก ํ๋, 4๋ฒ์งธ ํค๋ฅผ ์ฒซ๋ฒ์งธ ๊ธฐ์ค์ผ๋ก, 3๋ฒ์งธ ํค๋ฅผ ๋๋ฒ์งธ ๊ธฐ์ค์ผ๋ก ์ผ์ ์ค๋ฆ์ฐจ์ ์ถ๋ ฅ
ls -al | sort : ls -al ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ ฌํ์ฌ ์ถ๋ ฅ
ls -al | sort -k 5n : ls -al ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ 5๋ฒ์งธ ํค์๋๋ฅผ ์ซ์๋ก ๊ฐ์ฃผํ์ฌ ์ ๋ ฌํ์ฌ ์ถ๋ ฅ
ls -al | sort -k 5 -r : ls -al ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ 5๋ฒ์งธ ํค์๋๋ฅผ ์ซ์๋ก ๊ฐ์ฃผํ์ฌ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅ
sort -u : unique ์ค๋ณต๋ ๊ฒฐ๊ณผ์ ๋ํด์๋ 1๊ฐ๋ง ๋ ธ์ถ
7. uniq
์ค๋ณต๋ ๋ด์ฉ์ ์ ๊ฑฐํ๊ณ ์ถ๋ ฅํ๋ค.
uniq [ํ์ผ๋ช ] | nl : ํ์ผ ๋ด์ ์๋ ์ค๋ณต๊ฐ์ ์ ๊ฑฐํ๊ณ ๋ผ์ธ๋ฒํธ๋ฅผ ๋ถ์ฌ ์ถ๋ ฅ
sort [ํ์ผ๋ช ] | uniq | nl
ํ์ผ ๋ด๋ถ๋ฅผ ์ด๋ฆ์์ผ๋ก ์ ๋ ฌํ ๋ค
์ค๋ณต์ ์ ๊ฑฐํ๊ณ
๋ผ์ธ๋ฒํธ๋ฅผ ๋ถ์ฌ ์ถ๋ ฅ
sort [ํ์ผ๋ช ] | uniq -i | nl
ํ์ผ ๋ด๋ถ๋ฅผ ์ด๋ฆ์์ผ๋ก ์ ๋ ฌํ ๋ค
๋์๋ฌธ์๋ฅผ ๋ฌด์ํ๊ณ ์ค๋ณต์ ์ ๊ฑฐํ ๋ค
๋ผ์ธ๋ฒํธ๋ฅผ ๋ถ์ฌ ์ถ๋ ฅํ๋ค.
sort [ํ์ผ๋ช ] | uniq -d | nl
ํ์ผ ๋ด๋ถ๋ฅผ ์ด๋ฆ์์ผ๋ก ์ ๋ ฌํ ๋ค
์ค๋ณต๋ ํญ๋ชฉ๋ง
๋ผ์ธ๋ฒํธ๋ฅผ ๋ถ์ฌ ์ถ๋ ฅํ๋ค.
sort [ํ์ผ๋ช ] | uniq -u | nl
ํ์ผ ๋ด๋ถ๋ฅผ ์ด๋ฆ์์ผ๋ก ์ ๋ ฌํ ๋ค
์ค๋ณต๋์ง ์์ ๋ด์ฉ๋ง
๋ผ์ธ๋ฒํธ๋ฅผ ๋ถ์ฌ ์ถ๋ ฅํ๋ค.
grep "[keyword]" *.c | awk -F: '{ print $1 }' | uniq
[keyword] ๋ฅผ ํฌํจํ ํ์ฅ์ c ํ์ผ๋ค ๋ชฉ๋ก์์
ํ์ฅ์๋ฅผ ์ ์ธํ๊ณ ํ์ผ๋ช ๋ง ์ถ๋ ค์
์ค๋ณต์ ์ ๊ฑฐํ ๋ค ์ถ๋ ฅํ๋ค.
8. cut
head /etc/passwd | cut -d ':' -f 1,7
-d : tab ๋์ ์ฌ์ฉํ delimiter ์ง์
-f : ํ๋(์ปฌ๋ผ) ์ ํ
head /etc/passwd | cut -d ':' -f 1,7 --output-delimiter='==>'
--output-delimiter=STRING : ์ถ๋ ฅ์ ์ฌ์ฉํ ๊ตฌ๋ถ์ ์ง์
ls -al | cut -b -10
ls -al ๊ฒฐ๊ณผ๋ฅผ 10๋ฐ์ดํธ๊น์ง ์ถ๋ ฅ
ls -al | cut -b -10 --complement
์์ ๊ฒฐ๊ณผ์ ๋ฐ๋๋ก ์ถ๋ ฅ
ls -al | cut -c 10
10๋ฒ์งธ ๊ธ์๋ง ์ถ๋ ฅ
ls -al | cut -c 1-15
1๋ถํฐ 15๋ฒ์งธ ๊ธ์๊น์ง ์ถ๋ ฅ
9. tr
translate. ์ด๋ค ๋ด์ฉ์ ๋ณํํ๋ค.
head /etc/passwd | tr ':' '^โ
๋ชจ๋ : ์ ^์ผ๋ก ๋ณํํ๋ค.
head /etc/passwd | tr [:lower:] [:upper:]
๋ชจ๋ ์๋ฌธ์๋ฅผ ๋๋ฌธ์๋ก ๋ณํํ๋ค.
head /etc/passwd | tr -d ':'
๋ชจ๋ : ์ ์ง์ด๋ค.
head /etc/passwd | tr ':' '\n'
๋ชจ๋ :์ ๊ฐํ๋ฌธ์๋ก ๋ณํํ๋ค.
ls -al | tr -d [:blank:]
๋ชจ๋ ๊ณต๋ฐฑ๋ฌธ์์ด์ ์ง์ด๋ค.
ls -al | tr -d [:space:]
๋ชจ๋ ๊ณต๋ฐฑ๋ฌธ์์ด+๊ฐํ์ ์ง์ด๋ค.
ls -al | tr -s ' '
๋ฐ๋ณต๋๋ ๊ณต๋ฐฑ์ ์ง์ด๋ค.
10. sed
stream editor
- {RANGE}p : range ๋ด์์ print
- {RANGE}d : range ๋ด์์ ์ญ์ delete
- /SEARCHPATTERN/p : print SEARCHPATTERN๊ณผ ๋งค์น๋๋ ๋ผ์ธ์ ์ถ๋ ฅ
- /SEARCHPATTERN/d : SEARCHPATTERN ๊ณผ ๋งค์น๋๋ ๋ผ์ธ์ ์ญ์
- s/REGEX/REPLACE/ : REGEX์ ๋งค์น๋๋ ๋ถ๋ถ์ REPLACE๋ก ๊ต์ฒด(substitute)
sed -n
sed ์์ฒด๋ก ์๋ ์ถ๋ ฅ๋๋ ๋ด์ฉ์ ์ถ๋ ฅํ์ง ์์
head /etc/passwd | sed '1,3p'
1๋ผ์ธ๋ถํฐ 3๋ผ์ธ๊น์ง ์ถ๋ ฅํ๋ค.
๊ธฐ์กด์ head ๋ช ๋ น์ด๋ก ์ธํด ์ถ๋ ฅ์์ ์ด์๋ ์๋ 10๊ฐ์ ๋ฆฌ์คํธ์ 1๋ผ์ธ๋ถํฐ 3๋ผ์ธ๊ฐ์ง ํ๋ฒ์ฉ ๋ ์ถ๋ ฅ๋๋ค.
head /etc/passwd | sed -n '1,3p'
1๋ผ์ธ๋ถํฐ 3๋ผ์ธ๊น์ง ์ถ๋ ฅํ๋ค.
๊ธฐ์กด์ head ๋ช ๋ น์ด๋ก ์ธํด ์ถ๋ ฅ์์ ์ด์๋ ์๋ 10๊ฐ์ ๋ฆฌ์คํธ๋ ์ถ๋ ฅํ์ง์๊ณ 1๋ผ์ธ๋ถํฐ 3๋ผ์ธ ๊น์ง๋ง ์ถ๋ ฅ๋๋ค.
head /etc/passwd | sed -n '/nologin/p'
nologin
๋จ์ด๋ฅผ ํฌํจํ ๋ผ์ธ๋ง ์ถ๋ ฅํ๋ค.
head /etc/passwd | sed -n '/nologin/d'
nologin
๋จ์ด๋ฅผ ํฌํจํ ๋ผ์ธ์ ์ญ์ ํ ๋ค ์ถ๋ ฅํ๋ค.
head /etc/passwd | sed -n '/bin:/p'
bin:
๊ฐ ํฌํจ๋ ๋ผ์ธ๋ง ์ถ๋ ฅํ๋ค.
head /etc/passwd | sed '/bin:/d'
bin:
๋จ์ด๊ฐ ํฌํจ๋ ๋ผ์ธ์ ์ญ์ ํ๊ณ ์ถ๋ ฅํ๋ค.
head /etc/passwd | sed 's/root/ROOT/'
์ ์ผ ์ฒ์ ๋ฑ์ฅํ๋ root์ ๋ํ์ฌ ROOT ๋ก ๊ต์ฒดํ๋ค.
head /etc/passwd | sed 's/root/ROOT/g'
๋ชจ๋ root์ ๋ํ์ฌ ROOT ๋ก ๊ต์ฒดํ๋ค.
head /etc/passwd | sed '3,5 s/:/==>/g'
3๋ผ์ธ๋ถํฐ 5๋ผ์ธ๊น์ง์ ๋ฒ์ ์ค์์ ๋ชจ๋ (g) :์ => ๋ก ๊ต์ฒดํ๋ค.
head /etc/passwd | sed -n '/games/,+2p'
-n : ์ ์ฒด๋ฅผ ์ถ๋ ฅํ์ง์๊ณ , ๋ค์ ์กฐ๊ฑด์ ๋ง๋ ๊ฒฝ์ฐ๋ง ์ถ๋ ฅ
games ํค์๋๋ฅผ ๊ฐ์ง ๋ผ์ธ๋ถํฐ ๊ทธ ์ดํ์ 2๊ฐ์ ๋ผ์ธ๊น์ง ์ถ๋ ฅํ๋ค.
11. awk
ํ ์คํธ ์ฒ๋ฆฌ script language
- -F : file seperator ์ง์
- $1, $2, $3 .. : Nth field
- NR : number of records
- NF : number of fields
- FS : field seperator (default : white space)
- RS : record seperator (default : new line)
- OFS : output field seperator
- ORS : output record seperator
head /etc/passwd | awk '/nologin/ {print}'
"nologin" ๋จ์ด๋ฅผ ํฌํจํ๋ ๋ผ์ธ์ ์ถ๋ ฅํ๋ค.
head /etc/passwd | awk -F: '/nologin/ {print $1, $7 }'
seperator : ์ ๊ธฐ์ค์ผ๋ก "nologin" ๋จ์ด๋ฅผ ํฌํจํ๋ ๋ผ์ธ์ ๋ํ์ฌ ์ฒซ๋ฒ์งธ ํ๋์ 7๋ฒ์งธ ํ๋๋ฅผ ๊ฐ๊ฐ ์ถ๋ ฅํ๋ค.
head /etc/passwd | awk -F: '/nologin/ {print NR, $1 }'
seperator : ์ ๊ธฐ์ค์ผ๋ก "nologin" ๋จ์ด๋ฅผ ํฌํจํ๋ ๋ผ์ธ์ ๋ํ์ฌ ๋ผ์ธ ๋ฒํธ์ ์ฒซ๋ฒ์งธ ํ๋๋ฅผ ์ถ๋ ฅ
head /etc/passwd | awk -F: '/nologin/ {print $1, NF }'
seperator : ์ ๊ธฐ์ค์ผ๋ก "nologin" ๋จ์ด๋ฅผ ํฌํจํ๋ ๋ผ์ธ ์ค์์ 1๋ฒ์งธ ํ๋์ ๊ทธ ๋ผ์ธ์ ์ด ํ๋ ์๋ฅผ ์ถ๋ ฅ
head /etc/passwd | awk -F: '/nologin/ {print $1 "->" $NF }'
seperator : ์ ๊ธฐ์ค์ผ๋ก "nologin" ๋จ์ด๋ฅผ ํฌํจํ๋ ๋ผ์ธ ์ค์์ "1๋ฒ์งธ ํ๋ -> ๊ฐ์ฅ ๋ง์ง๋ง ํ๋"๋ฅผ ์ถ๋ ฅ
12. find
๊ฒ์
์ต์
-name, -regex, -empty, -size(-N, +N)
ํ์
-type d : directory
-type p : named pipe
-type f : regular file
-type l : softlink
-type s : socket
๊ถํ
-perm mode : ์ ํํ ์ผ์นํ๋ ํ์ผ
-perm +mode : ๋ชจ๋ flag๊ฐ ํฌํจ๋ ํ์ผ
-perm /mode : ์ด๋ค flag๋ผ๋ ํฌํจ๋ ํ์ผ
๋ช ๋ น์ด
-delete : ํ์ผ ์ญ์
-ls : ls โdils ๋ช ๋ น ์ํ
-print : ํ์ผ ์ด๋ฆ ์ถ๋ ฅ
-printf : ํ์ผ ์ด๋ฆ์ ํฌ๋งท์ ๋ง๊ฒ ์ถ๋ ฅ
-exec : ์ฃผ์ด์ง ๋ช ๋ น ์ํ
-execdir : ํด๋น ๋๋ ํฐ๋ฆฌ๋ก ์ด๋ํ์ฌ ๋ช ๋ น ์คํ
-ok : ์ฌ์ฉ์์๊ฒ ํ์ธ ํ exec
-okdir : ์ฌ์ฉ์์๊ฒ ํ์ธ ํ ์คํ execdir
find . -name "*.pyโ
ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ํ์ผ์ด๋ฆ ์ค .py ๋ฅผ ํฌํจํ ํ์ผ์ ๋ชจ๋ ์ฐพ๋๋ค.
find
pwd
-name โ*.pyโํ์ฌ ๋๋ ํ ๋ฆฌ์์ ํ์ผ์ด๋ฆ ์ค .py ๋ฅผ ํฌํจํ ํ์ผ์ ๋ชจ๋ ์ฐพ๋๋ค.
find . -regextype egrep -regex '.*hash.*.c$'
hash ๋จ์ด๋ฅผ ํฌํจํ๊ณ , ํ์ฅ์๊ฐ .c ๋ก ๋๋๋ ํ์ผ์ ์ฐพ๋๋ค.
find . -empty
ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ๋น ํ์ผ์ ๋ชจ๋ ์ฐพ๋๋ค.
find . -type d
ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ๋ชจ๋ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐพ๋๋ค.
find . -type f
ํ์ฌ ๋๋ ํ ๋ฆฌ์์ ๋ชจ๋ ํ์ผ์ ์ฐพ๋๋ค.
find . -perm 0644
๊ถํ์ด 644์ธ ํญ๋ชฉ์ ๋ชจ๋ ์ฐพ๋๋ค.
find . -perm /u+x
๊ถํ์ด u+x ์ธ ํญ๋ชฉ์ ๋ชจ๋ ์ฐพ๋๋ค.
find -perm /g+w
๊ถํ์ด g+w ์ธ ํญ๋ชฉ์ ๋ชจ๋ ์ฐพ๋๋ค.
find -type f -perm 644 -printf '%f-%i\n'
find -type f -name "*.log" -exec stat {} \;
ํ์ผ๋ช ์ .log ๊ฐ ์กด์ฌํ๋ ํ์ผ๋ค์ ๋ํด์ stat ์ ์ถ๋ ฅํ๋ค.
find . -type f -perm 755 -execdir pwd ; | uniq
find . -type f -name "README" -ok rm {} ;
ํ์ผ๋ช ์ด README ์ธ ํ์ผ์ ๋ํด์ ์ฌ์ฉ์์๊ฒ ๋ฌผ์ด๋ณธ ๋ค, ์ญ์
13. grep
ํ์ผ ๋ด์ฉ ์ค ์ํ๋ ๋ด์ฉ์ ์ฐพ๋๋ค.
grep [options] PATTERN [FILE...]
-r : recursive
-i : ignore case
-v : invert match. ๋งค์น๊ฐ ์๋๋ ๊ฒ์ ์กฐํ
-q : quiet mode. ๊ฒ์์ด ์ฑ๊ณตํ์ ๋, exit status ๋ฅผ ๋ฐ์์ฌ ์ ์๋๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋ง๊ณ , ์ฑ๊ณต๊ณผ ์คํจ๋ง ์๊ณ ์ถ์ ๋ ์ด์ฉํ๋ค.
grep "run" *.log | awk -F: '{ print $1 }' | sort -u
run ์ด๋ผ๋ ๋จ์ด๋ฅผ ํฌํจํ๊ณ
ํ์ฅ์๊ฐ .log ์ธ ํ์ผ๋ค ์ค์์
: ๋ฅผ ๊ธฐ์ค์ผ๋ก ๋๋์ด ์ฒซ๋ฒ์งธ ๋ณ์๋ฅผ ํ๋ฆฐํธํ ๊ฒฐ๊ณผ๋ฅผ unique ํ๊ฒ ์ ๋ ฌํ๋ค.
grep run *.log -q / grep dkahkdlshksld *.log
run ํค์๋๊ฐ ํฌํจ๋์๊ณ + ํ์ฅ์๊ฐ log ์ธ ํ์ผ๋ค์ ์กฐํํ๋ค.
-q : ๊ฒ์ ๊ฒฐ๊ณผ๋ฅผ ํ๋ฆฐํธํ์ง ์๊ณ , ์ฑ๊ณต๊ณผ ์คํจ (0๊ณผ 1)๋ก๋ง ๋ฐํํ๋ ํ๋ฆฐํธํ์ง ์๋๋ค.
์ด๋ฅผ ์กฐํํ๊ธฐ ์ํด์๋ echo $? ๋ก ๊ฒฐ๊ณผ๋ฅผ ํ์ธํ ์ ์๋ค.
grep "<run>" *.log
run ์ด๋ผ๋ ๋จ์ด์ ์ ํํ ์ผ์นํ๋ ๋ด์ฉ๋ง ์ถ๋ ฅํ๋ค.
grep "^run" *.log
run ์ผ๋ก ์์ํ๋ ๋ด์ฉ๋ง ์ถ๋ ฅํ๋ค.
grep "^static.*(void)$" *.c
static ์ผ๋ก ์์ํ๊ณ , ์์์ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ค๊ฐ (void)๋ก ๋๋๋ ๋ด์ฉ๋ง ์ถ๋ ฅํ๋ค.
apropos [keyword]
= man -k [keyword]
man page ์ ํฌํจ๋์ด์๋ ํค์๋๋ฅผ ์ฐพ๋๋ค.
apropos pthread -s 7
ํ์ํ ์น์ ์ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ ๋ ฅ
apropos '^sem_'
sem_ ๋ก ์์ํ๋ ๋ช ๋ น์ด์ ์ฌ์ฉ๋ฒ์ ์ฐพ๋๋ค.
apropos '.*'
apropos '.*' -s 5:6:7
ํ์ํ ์น์ ์ ์ฝ๋ก ์ผ๋ก ๊ตฌ๋ถํ์ฌ ์ ๋ ฅ
14. locate
ํ์ผ์ ์์น๋ฅผ ์ฐพ์ ๋ณด์ฌ์ค๋ค. ์์คํ ์ ์ฒด๋ฅผ ๋์์ผ๋ก.
ํ์ผ์ ์์น๋ฅผ ๋น ๋ฅด๊ฒ ๊ฒ์ํด์ ๋ณด์ฌ์ฃผ๊ธฐ ์ํด ์์คํ ์์์์ updatedb ์ ๋ฏธ๋ฆฌ ํ์ผ์ ์์น์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธ์์ผ๋๋๋ค.
locate ๋ช ๋ น์ด๋ฅผ ์ํํ๋ฉด, updatedb ๊ฐ ์ ์ฅํด๋์ db ํ์ผ ๋ด์์ ๊ฒ์ํ๋ฏ๋ก ๋๋ฝ ํ์ผ์ด ์๊ธธ์๋ ์๋ค.
์ ๋ฐ์ดํธ ์์ ์ cron ์ ์ด์ฉํด์ OS ๊ฐ ์งํํ๋ค.
locate -i
๋์๋ฌธ์ ๊ตฌ๋ถ์์ด ๊ฒ์
locate -l 10
์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ LIMIT ๊ฐ์ ๋งํผ๋ง ์ถ๋ ฅํ๋ค.
locate -n 10
์ถ๋ ฅ ๊ฒฐ๊ณผ๋ฅผ 10๊ฐ ๋งํผ๋ง ์ถ๋ ฅํ๋ค.
locate --regex "/usr/src/.*\<main.c$"
PATTERN ์ ๋ง๋ ํ์ผ๋ค์ ์ฐพ์ ์์น ์ถ๋ ฅ
15. which
์คํ ํ์ผ์ ์์น๋ฅผ ๋ณด์ฌ์ค๋ค. ์ผ๋ฐ ํ ์คํธ ํ์ผ์ ๊ฒ์์ด ๋์ง ์๋๋ค.
which ls / which chmod
๋ช ๋ น์ด์ ํด๋นํ๋ ์คํํ์ผ์ ์์น๋ฅผ ํ๋ฆฐํธํ๋ค.
which ls strace chmod
๋ ์คํํ์ผ์ ์์น๋ฅผ ๋์์ ๋ณด์ฌ์ค๋ค.
16. ps
process status ์ถ๋ ฅ
-e : all processes
-f : full-format
-L : print including thread
--forest : tree type print
-o : output formatting
--sort : sorting
<output ์ปฌ๋ผ>
TTY : terminal
c : cpu load - cpu์ ๋ช %๋ฅผ ์ฐจ์งํ๊ณ ์๋์ง
ps -ef
๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ full format ์ผ๋ก ์ถ๋ ฅ
ps -ef | grep java
๋ณดํต ์๋ฒ์์ ์ฑ์ด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋๊ณ ์์ ๋, ๋ชจ๋ํฐ๋ง์ ์ํด์ ์ฌ์ฉํ๋ค.
ps --ppid 1033 -f
์์์ ํ๋ก์ธ์ค ์์ด๋๊ฐ 1033 ์ธ ํ๋ก์ธ์ค๋ฅผ full format ์ผ๋ก ์ถ๋ ฅ
ps -ef --forest
๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ํธ๋ฆฌ ํํ๋ก ์ถ๋ ฅ
ps -eF --sort=%mem | head
memori utilization ์ ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ 10์ค ๊น์ง๋ง ์ถ๋ ฅํ๋ผ
-F : ์ข ๋ ๋ง์ ์ปฌ๋ผ ์ ๋ณด๋ฅผ ๋ณด์ฌ์ค๋ค.
ps -eF --sort=-%mem
-%mem : ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ๋ถํฐ ์ถ๋ ฅ (๋ด๋ฆผ์ฐจ์์ผ๋ก ์ถ๋ ฅ)
ps -eo,pid,c,user,args --sort pid
-o : output ์ pid, c, user, args ๋ง ์ถ๋ ฅํ๋ผ
17. top
ํ๋ก์ธ์ค๋ฅผ ์ด๋ค ๊ธฐ์ค์ผ๋ก ์ ๋ ฌํ์ฌ n๊ฐ์ ํ๋ก์ธ์ค๋ฅผ ์กฐํ/๋ชจ๋ํฐ๋ง
<COMMANDS>
space : update
q : quit
c : full command line search
1(number) : ๋ชจ๋ CPU ์ํ๋ฅผ ์กฐํํ๋ค.
<SORTING>
M : memory usage
P : CPU usage
N : process ID
T : running time
R : reverse order
18. lsof
์ด๋ ค์๋ ํ์ผ (์ผ๋ฐํ์ผ, ์์ผ, ๋๋ฐ์ด์ค ๋ฑ) ๋ชฉ๋ก์ ์กฐํํ๋ค. (=ls opened file)
-U : unix domain socket
-i : internet domain socket
-p : specific pid
-u : user ID
lsof -U : unix domain
lsof -i 4 : ipv4 only
lsof -i tcp : tcp only
lsof -u `whoami` : ํ์ฌ ๋ก๊ทธ์ธํ ์ฌ์ฉ์ ์์ ์ ์ด๋ฆฐ ํ์ผ์ ๋ณด ์กฐํ
lsof -c Xorg : Xorg ๊ฐ ์ด๊ณ ์๋ ํ์ผ๋ค
19. netstat
๋คํธ์ํฌ/์์ผ ์ํ๋ฅผ ์กฐํํ ์ ์๋ ํด
-a : all types of port
-n : numerical address
-t : TCP socket only
-u : UDP socket only
-x : unix domain socket only
-l : listening socket only
-p : pid
-r : routing table
-s : network statistics
netstat -an : ์ ์ฒด๋ฅผ ์ถ๋ ฅํ๋, ์ซ์ ์ฃผ์ ํํ๋ก ์ถ๋ ฅํ๋ค.
netstat -t
netstat -p : ๋ค์ pid ๋ฐ program name ์ด ์ถ๋ ฅ๋จ
netstat -s : ํ๋กํ ์ฝ๋ณ๋ก ํต๊ณ์ ๋ณด ์ถ๋ ฅ
netstat -r : ๋ผ์ฐํ ํ ์ด๋ธ์ ๊ฒ์ํ๋ค.
20. sysctl
์ฌ๋ฌ๊ฐ์ง ์์คํ ์ค์ ์ ์กฐํ, ์ค์ ํ๋ค. ์๋์ฐ์ ๋ ์ง์คํธ๋ฆฌ์ ๋น์ทํ ์ค์ ๋ฐฉ๋ฒ์ด๋ค.
-w : set value
-r : variable search pattern
sysctl -a | grep net
-a : all variables
sysctl -a -r 'net' --names
-N : print variable only
sysctl -a -r 'net' -values
-n : print value only
sysctl -w net.ipv4tcp_syn_retries=4
ํน์ ์ค์ ๊ฐ์ 4๋ก ๋ณ๊ฒฝ
21. df
disk ์ ์ฌ์ฉ๋์ ์กฐํํ๋ค.
df -a
-a : ๋ชจ๋ ๊ฒ์ ์ถ๋ ฅ
df -h
-h : human readable ํ์์ผ๋ก ์ถ๋ ฅ
df -t ext4
-t : ์ง์ ๋ ํ์ผ์์คํ ์ ๋ํด์๋ง ์ถ๋ ฅ
df FILE
22. du
ํน์ ํ์ผ์ด๋ ๋๋ ํ ๋ฆฌ๊ฐ ์ ์ ํ๊ณ ์๋ disk usage ๋ฅผ ์กฐํํ๋ค.
du -a : all files including directories
du -b L byte
du -h : human readable
du -d --maxt-depth=N : set max depth
du -c : total sum
du -s : summary
23. dmidecode
SMBIOS ์กฐํ ํด
DMI (Desktop Management Interface)
SMBIOS (System Management BIOS) : BIOS ๊ฐ ์์ฑํ ์์คํ ํ๋์จ์ด ์ ๋ณด. (old name : DMIBIOS)
dmidecode -t bios
์ง์ ๋ ํ์ ๋ง ์ถ๋ ฅํ๋ค.
dmidecode -s system-uuid
์ง์ ๋ ํค์๋๋ง ์ถ๋ ฅํ๋ค.
24. free
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋ ์กฐํ ํด
cat /proc/meminfo ๊ธฐ๋ฐ์ผ๋ก ์กฐํ
free -w -h
-w :
-h " human readable output
free -s 1 -c 10 -h
-s N : --seconds N. N์ด๋ง๋ค ๋ฐ๋ณต ์ถ๋ ฅ
-c N : --count N. Nํ ์ถ๋ ฅ ํ ์ข ๋ฃ
25. lscpu
cpu ๊ตฌ์กฐ์ ๋ณด๋ฅผ ์ถ๋ ฅํด์ค๋ค.
-e, --extended : extended readable format
-p, --parse : parsable format
lscpu
lscpu -e
lscpu -e=SOCKET,CORE,CPU
lscpu -p=SOCKET,CORE,CPU
์ฐธ๊ณ ) ์์ฆ ์ปดํจํฐ์ CPU
์์ฆ ์ปดํจํฐ๋ค์ ๋ค์๊ณผ ๊ฐ์ด ๊ตฌ์ฑ๋์ด์๋ค.
processor : 1๊ฐ
core : 2๊ฐ
thread : 4๊ฐ -> ์ด๊ฒ์ ๋๊ณ CPU๊ฐ 4๊ฐ์ด๋ค๋ผ๊ณ ๋งํ๋ค.
์บ์๋ฉ๋ชจ๋ฆฌ
L1 : ์ฝ์ด ๋ด์์๋ง ๊ณต์ ๋๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ
L2 : ์ฝ์ด๋ค๊ฐ ๊ณต์ ๋๋ ์บ์ ๋ฉ๋ชจ๋ฆฌ
L3
Last updated