๊ธฐ๋ณธ์ ์ธ bash shell ์ฌ์ฉ๋ฒ์ ๋ํด ๋ค๋ฃธ. ์์ฃผ ์ค์ํ๊ณ ๊ธฐ๋ณธ์ด ๋๋ ๋ด์ฉ์.
Bash ๋?
Bourne Again Shell. Linux ๊ด๋ฆฌ ๋๊ตฌ.
Shell: ์ด์์ฒด์ ์ ์์ ์ ์ํํ๋๋ก ๋ช ๋ นํ๋ ํ๋ก๊ทธ๋จ
shell์ ๋ช ๋ น์ด ์ ๋ ฅ, ์คํ, ์คํฌ๋ฆฝํธ ์ฌ์ฉํ์ฌ ๋ช ๋ น ์ผ๊ด ์ฒ๋ฆฌ ๊ฐ๋ฅ. csh, zsh ๋ฑ์ด ์์ง๋ง bash๊ฐ ๊ฑฐ์ linux ํ์ค์ด ๋จ. ์๋? linux๋ unix ๊ธฐ๋ฐ์ธ๋ฐ, unix ์ต์ด shell์ธ Bourne shell(sh๋ผ๊ณ ๋ ํจ)๊ณผ bash๊ฐ ํธํ๋๊ธฐ ๋๋ฌธ. bash๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณต๋๋ ๋ช ๋ น, ์ธ๋ถ ํ๋ก๊ทธ๋จ ํธ์ถ ๊ธฐ๋ฅ ๋ฑ์ ๊ณ ์ ๊ธฐ๋ฅ์ด ์์.
bash๋ ๊ฐํธํจ. Unix ๋์์ธ ์ฒ ํ์ด ๊ธฐ์ค์ด ๋๊ธฐ ๋๋ฌธ. Unix์ ๋์์ธ ์ฒ ํ์ด ๋ญ๋?
- ํ๋ก๊ทธ๋จ์ ํ ๊ฐ์ง ์์ ์ ์ฒ๋ฆฌํจ
- ํ๋ก๊ทธ๋จ์ ํจ๊ป ์๋ํจ
- ํ๋ก๊ทธ๋จ์ ํ ์คํธ ์คํธ๋ฆผ์ UI๋ก ์ฌ์ฉํจ (CLI ์ฌ์ฉ)
๋ง์ง๋ง์ด ํต์ฌ์. Unix, Linux์์๋ ํ์ผ์ด ๊ฐ์ฅ ์ค์ํจ. ์ ์ถ๋ ฅ์ด ํค๋ณด๋, ๋์คํฌ ํ์ผ, ์์ผ, ํ์ดํ ๋ฑ ์๊ด์์ด ๋์ผํ ๋ช ๋ น ์ฌ์ฉํ ์ ์๋ค๋ ๋ป์ (??)
Bash ๊ธฐ๋ณธ ์ฌํญ
Bash ๊ตฌ๋ฌธ์ ๋ค์๊ณผ ๊ฐ์.
command [options] [arguments]bash ๋ช
๋ น์ด๋ ๋ชจ๋ ์์ ๊ตฌ์กฐ์.
๋ช
๋ น์ด - ์ต์
- ์ธ์ ์์ผ๋ก ์ธ์ํจ.
options, arguments๋ ์ ํ์ฌํญ์.
ls ๋ช
๋ น์ด๋ก ํ์ฌ ์์
์ค์ธ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ์ ํ์ํจ.
ํ์ฌ ํด๋์ ๋ญ ์๋์ง ํ์ํ๋ค๋ ๋ป์.
ls์๋ ๋ช ๋ น์ด๋ง ์๋๊ฑด๋ฐ ์ธ์๊ฐ ์ฌ ์๋ ์์. ๋ค๋ฅธ ๋๋ ํ ๋ฆฌ์ ๋ด์ฉ๋ฌผ๋ค์ ๋ณด๋ ค๋ฉด ์ด์ผํ๋?
ls /etc/etc ๋๋ ํ ๋ฆฌ ๋ด์ฉ๋ฌผ์ ์ถ๋ ฅํ๊ฒ ๋จ.
ํ์ง๋ง .gitignore ์ฒ๋ผ .์ผ๋ก ์์ํ๊ฑฐ๋ ์จ๊น ํ์ผ์ด๋โฆ
์ด๋ฐ ๊ฒฝ์ฐ์๋ ls ๋ช
๋ น์ด๋ก ์๋ณด์.
์ด๋ฅผ ์ํด -a ํ๋๊ทธ(์ต์
)๋ฅผ ์ถ๊ฐํ๋ฉด ๋จ.
ls -a /etcํ์ผ์ ๊ถํ์ด๋ ํฌ๊ธฐ ๋ญ ๊ทธ๋ฐ๊ฑฐ๊น์ง ๋ ์์ธํ ๋ณด๊ณ ์ถ๋ค?
๊ทธ๋ฌ๋ฉด -l ํ๋๊ทธ ๋ถ์ด๋ฉด ๋จ.
์ด ๊ฒฝ์ฐ์๋ ์ต์
์ด -a, -l ๋ ๊ฐ์ ์ต์
์ด๋๊น.. ์ด ๋์ -al ์ฒ๋ผ ํฉ์น ์ ์์.
ls -al /etc๋์๋ง ๋ณด๊ธฐ
์ต์
๊ณผ ์ธ์๋ ๋ช
๋ น์ ๋ฐ๋ผ ์ ๋ถ ๋ค๋ฆ.
์ด๋ค ๋ช
๋ น์ด์ ์ด๋ค ์ต์
์ด ์๋์ง ๋ค ์ธ์ธ ์๋ ์์.
๊ทธ๋ด ๋๋ man(manual) ๋ช
๋ น์ด๋ก ๋์๋ง์ ๋ณผ ์ ์์.
mkdir(make directory) ๋ช
๋ น์ด์ ๋ํ ๋์๋ง์ ๋ค์๊ณผ ๊ฐ์ด ๋ณผ ์ ์์.
man mkdirman ๋ช
๋ น์ด๋ ๋ช
๋ น์ ์๋ ๋ฐฉ์์ ์ดํดํ ์ ์์.
--help ๋ ๋ช
๋ น์ด์ ์ต์
, ์ธ์๋ฅผ ์ ์ ์๋ ์ต์
์.
๋๋ถ๋ถ์ ๋ช
๋ น์ด๊ฐ ๊ฐ์ง๋ ์ต์
์.
๊ทธ๋ผ ์๊น mkdir ๋ช
๋ น์ด์ ์ด๋ค ์ต์
์ด ์๋์ง๋ ์ด์ผ ์๋?
๊ฑ mkdir --help ํ๋ฉด ๋จ ใ
ใ
Usage: mkdir [OPTION]... DIRECTORY...
Create the DIRECTORY(ies), if they do not already exist.
Mandatory arguments to long options are mandatory for short options too.
-m, --mode=MODE set file mode (as in chmod), not a=rwx - umask
-p, --parents no error if existing, make parent directories as needed
-v, --verbose print a message for each created directory
-Z set SELinux security context of each created directory
to the default type
--context[=CTX] like -Z, or if CTX is specified then set the SELinux
or SMACK security context to CTX
--help display this help and exit
--version output version information and exit
GNU coreutils online help: <http://www.gnu.org/software/coreutils/>
Report mkdir translation bugs to <http://translationproject.org/team/>
Full documentation at: <http://www.gnu.org/software/coreutils/mkdir>
or available locally via: info '(coreutils) mkdir invocation'๋์ถฉ ์ด๋ ๊ฒ ์ถ๋ ฅ๋จ.
--help ์ต์
์ man ๋ณด๋ค ๋ ๊ฐ๊ฒฐํจ.
์์ผ๋์นด๋ ์ฌ์ฉ
์์ผ๋์นด๋๋ โํ๋ ์ด์์ ๋ฌธ์โ๋ฅผ ๋ํ๋ด๋ ๊ธฐํธ์. ์ฃผ๋ก * ๋ง์ด ์.
์๋ฅผ ๋ค์ด PNG ํ์ผ๋ง ํ์ํ๋ ค๋ฉด ์๋์ ๊ฐ์ด ์.
ls *.png๋ฆฌ๋ ์ค๋ ํ์ผ ํ์ฅ์์ ๋ํ ๊ฐ๋ ์ด ์๊ธฐ์ ์ ๋ช ๋ น์ด๋ ๋ฑํ ํน๋ณํ ์๋ฏธ๋ ์์..
PNG ๋ง๊ณ JPG or JPEG ์ฐพ์ผ๋ ค๋ฉด?
ls *.jpg *.jpeg์๋ ์ฒ๋ผ ํ ์๋ ์๋ค.
ls *.jp*g์์ผ๋์นด๋ *๋ โ0๊ฐ ์ด์์ ์ผ์นํ๋ ๋ฌธ์ฅโ
์์ผ๋์นด๋ ?๋ โ๋จ์ผ ๋ฌธ์โ
ls 000?.jpg๋๊ดํธ []๋ฅผ ์ฌ์ฉํ์ฌ ํํฐ๋ง ํ ์๋ ์๋ค.
์๋๋ โํ์ฅ์๊ฐ ์๋ฌธ์ j ๋๋ p๋ก ์์ํ๋ ํ์ผโ์ ํํฐ๋งํ๋ ๋ฐฉ๋ฒ์ด๋ค.
ls *.[jp]*๋ฆฌ๋ ์ค๋ ๋์๋ฌธ์๋ฅผ ๊ตฌ๋ถํ๊ธฐ ๋๋ฌธ์ โํ์ฅ์๊ฐ j, p, J, P๋ก ์์ํ๋ ํ์ผโ์ ์ฐพ๋๋ฒ์ ๋ค์๊ณผ ๊ฐ๋ค.
ls *.[jpJP]*๋ฌธ์ ๋ฒ์๋ ๋ํ๋ผ ์ ์๋ค.
ls [a-z]*ls [a-zA-Z]*ls [0-9]*๊ทผ๋ฐ ์์ผ๋์นด๋ *๊ฐ ์๋๋ผ ๋ฌธ์๋ก ์ฐ๊ณ ์ถ์ผ๋ฉด?
์ญ์ฌ๋์(์ด์ค์ผ์ดํ)๋ฅผ ์์ ๋ถ์ด๋ฉด ๋๋ค.
ls \*.*Bash ๋ช ๋ น ๋ฐ ์ฐ์ฐ์
Bash ๋ช ๋ น
ls
๋๋ ํ ๋ฆฌ ๋ด์ฉ ๋์ด.
-a: ์จ๊น ํ์ผ ํฌํจํ์ฌ ์ถ๋ ฅ
-l: ์์ธํ ๋ด์ฉ ์ถ๋ ฅ (๊ถํ, ์์ ์, ํฌ๊ธฐ, ์์ ์๊ฐ, ํ์ผ/๋๋ ํ ๋ฆฌ๋ช
)
ls -alcat
ํ์ผ ๋ด๋ถ์ ๋ด์ฉ ํ์ธ. ํ ์คํธ ํ์ผ์ด ์๋๋ผ๋ฉด ๋ฌธ์ ๊ฐ ์๊ธธ ์ ์์.
cat /etc/os-release์ ๋ช ๋ น์ด์ ๊ฒฝ์ฐ โ์คํ์ค์ธ ๋ฆฌ๋ ์ค ๋ฐฐํฌํโ์ ๋ํ ์ ๋ณด๋ฅผ ์ถ๋ ฅํจ.
/etc๋๋ ํ ๋ฆฌ๋ ํน์ ๋๋ ํ ๋ฆฌ์. ์์คํ ๊ตฌ์ฑ ํ์ผ์ด ํฌํจ๋๋ ์ญ์ ํ์ง ๋ง ๊ฒ.
sudo
๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ์คํ.
์ํผ ์ฌ์ฉ์ ๊ถํ์ผ๋ก ๋ก๊ทธ์ธํ์ง ์์๋ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ๋ช
๋ น ์คํ ๊ฐ๋ฅ.
sudo = โsuper user doโ
sudo cat ~./zshrccd, mkdir, rmdir
cd: โchange directoryโ
cd ..: ์์ ๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd ~: ํ ๋๋ ํ ๋ฆฌ๋ก ์ด๋
cd Downloadsmkdir: โmake directoryโ
mkdir tempDirํ์ ๋๋ ํ ๋ฆฌ์ ๊ทธ ํ์์ ๋๋ ํ ๋ฆฌ ์ฌ๋ฌ๊ฐ๋ฅผ ๋ง๋ค๊ธฐ ์ํด --parents ํ๋๊ทธ ์ฌ์ฉ.
mkdir --parents tempDir/testํ์ฌ ํด๋์ tempDir ํด๋๊ฐ ๋ง๋ค์ด์ง๊ณ , ๊ทธ ์์ test ํด๋๊ฐ ๋ง๋ค์ด์ง.
rmdir: (๋๋ ํ ๋ฆฌ๊ฐ ๋น ๊ฒฝ์ฐ) ๋๋ ํ ๋ฆฌ ์ญ์ .
rm: โremoveโ. ํ์ผ/๋๋ ํ ๋ฆฌ ์ญ์ .
rm -r: (๋น์ด์์ง ์์) ๋๋ ํ ๋ฆฌ ์ญ์ .
rm
rm: โremoveโ
rm *: ํ์ฌ ๋๋ ํ ๋ฆฌ์ ๋ชจ๋ ํ์ผ ์ญ์
-i ์ต์
์ผ๋ก ์ญ์ ์ ํ์ธ ๊ฐ๋ฅ.
rm -rf / ๋ช
๋ น์ด๋ ๊ฑ ์น ๋ค ์ง์ฐ๋๊น ์ฐ์ง ๋ง๋ผ. (recursion remove)
-f ์ต์
์ ๊ฐ์ ์ญ์ . ํ์ง๋ง๋ผ.
๋ด์ฉ์ด ์๋ ๋๋ ํ ๋ฆฌ ์ญ์ ๊ฐ๋ฅ.
cp
cp: ํ์ผ ๋๋ ๋๋ ํ ๋ฆฌ(์ ํ์ ๋๋ ํ ๋ฆฌ) ๋ณต์ฌ.
cp 1.jpg 2.jpg1.jpg๋ฅผ ๋ณต์ฌํด์ 2.jpg๋ผ๋ ์ด๋ฆ์ ๋ณต์ฌ๋ณธ์ ๋ง๋ ๋ค.
์ด๋ฏธ 2.jpg ๋ผ๋ ์ด๋ฆ์ ํ์ผ์ด ์๋ค๋ฉด ์๋์ผ๋ก ๋ฎ์ด์ฐ๊ฒ ๋๋ ์ฃผ์.
-i ์ต์
์ ์ถ๊ฐํ๋ค๋ฉด โ๊ธฐ์กด ํ์ผ์ ์ญ์ ํ๊ฒ ๋ ๊ฒฝ์ฐโ ๊ฒฝ๊ณ ํ์ํจ. ๋ ์ข์.
cp -i 1.jpg 2.jpg์ฌ๋ฌ ํ์ผ์ ํ๋ฒ์ ๋ณต์ฌํ๋ ๊ฒ๋ ๊ฐ๋ฅํจ. ์๊น ๋ฐฐ์ด ์์ผ๋์นด๋ ์จ๋จน์ผ๋ฉด ๋จ.
cp * photo์๋ ํ์ฌ ๋๋ ํ ๋ฆฌ ๋ชจ๋ ํ์ผ์ ๋ณต์ฌํด photo๋ผ๋ ํด๋์ ๋ฃ์.
๋ง์ฝ photo ๋๋ ํ ๋ฆฌ ๋ด๋ถ ๋ชจ๋ ํ์ผ์ img ํด๋๋ก ์ด๋์ํค๋ ค๋ฉด?
cp photo/* img์ด๋ ๊ฒ ํ๋ฉด ๋จ ใ
ใ
๊ทผ๋ฐ ์ด๊ฑด img ๋๋ ํ ๋ฆฌ๊ฐ ์ด๋ฏธ ์กด์ฌํ๋ค๋ ๊ฐ์ ํ์ ๊ฐ๋ฅํจ.
๋ง์ฝ ์๋ค๋ฉด?
๋๋ ํ ๋ฆฌ๋ฅผ ๋ง๋ค๊ณ ๋ณต์ฌํ๋ ค๋ฉด?
cp -r photo img-r ํ๋๊ทธ๋ โrecursiveโ ๋ผ๋ ๋ป. ์ฌ๊ท์ ์.
photo์์ ํ์ ๋๋ ํ ๋ฆฌ๊ฐ ์์ผ๋ฉด img ํด๋๋ก๋ ๋ณต์ฌ๋๋ค๋ ๋ป.
ps
ps: ํ์ฌ ์คํ์ค์ธ ํ๋ก์ธ์ค ์ถ๋ ฅ.
๊ทผ๋ฐ ๋๋ฌด ๋ง์ผ๋๊น ๋ง์ด ์๋จ.
-e ํ๋๊ทธ๋ฅผ ํฌํจํ๋ฉด ์ง์ง ๋ชจ๋ ํ๋ก์ธ์ค ์ถ๋ ฅํจ.
-ef ํ๋๊ทธ๋ก ๋ ํฌ๊ด์ ์ธ ํ์ธ ๊ฐ๋ฅ.
๋ชจ๋ ํ๋ก์ธ์ค์ ์ด๋ฆ, PID, PPID, ์์์๊ฐ(STIME) ํ์ํจ.
์ฐ๊ฒฐ๋ ํฐ๋ฏธ๋, CPUTIME ๋ฑ์ ํ์ํจ.
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 13:35 ? 00:00:03 /sbin/init
root 2 0 0 13:35 ? 00:00:00 [kthreadd]
root 3 2 0 13:35 ? 00:00:00 [rcu_gp]
root 4 2 0 13:35 ? 00:00:00 [rcu_par_gp]
root 5 2 0 13:35 ? 00:00:00 [kworker/0:0-cgr]
root 6 2 0 13:35 ? 00:00:00 [kworker/0:0H-kb]
root 8 2 0 13:35 ? 00:00:00 [mm_percpu_wq]
root 9 2 0 13:35 ? 00:00:01 [ksoftirqd/0]
root 10 2 0 13:35 ? 00:00:02 [rcu_sched]ps aux ๋ช
๋ น์ด๋ ์ด์ ๊ฐ์ ์์ผ๋ก ์ฌ์ฉํ ์ ์์.
์ด๋ ps -ef์ ๋์ผํจ.
Unix๋ผ๊ณ ๋ค ๊ฐ์๊ฑด ์๋.
- POSIX Unix
- ex) Linux
-ef์ฌ์ฉ
- BSD Unix
- ex) Mac
aux์ฌ์ฉ
Unix ๊ธฐ๋ฐ ์ด์์ฒด์ ๋ ์ผ๋ฐ์ ์ผ๋ก ์ด ๋ ์ค ํ๋๋ฅผ ํ์ฉํจ. ์ด์ฒ๋ผ ๊ท์น์๋ ๋ง์ ์์ธ๊ฐ ์๊ธฐ ๋๋ฌธ์ ์ข ์์ธํ ๋ด์ผ ํจ.
w
w: โwhoโ
์๋ฒ์ ์๋ ์ฌ์ฉ์ ํ์ธ.
์ฌ์ฉ์ ์ด๋ฆ, IP์ฃผ์, ๋ก๊ทธ์ธ ์๊ฐ ๋ฑ ํ์.
sysadmin(๊ด๋ฆฌ์)์๊ฒ ์ ์ฉํจ.
Bash I/O ์ฐ์ฐ์
Bash ๋ช ๋ น + ์ต์ ์ I/O ์ฐ์ฐ์๊น์ง ๊ฒฐํฉํด๋ณด์.
<: ํค๋ณด๋ ์ด์ธ ์๋ณธ์ผ๋ก ์ ๋ ฅ ๋ฆฌ๋๋ ์ >: ํ๋ฉด ์ด์ธ ๋์์ผ๋ก ์ถ๋ ฅ ๋ฆฌ๋๋ ์ >>:>์ ๋์ผํ ์์ ์ ์ํํ๋ ๋ฎ์ด์ฐ์ง ์๊ณ ์ถ๊ฐ|: ํ ๋ช ๋ น์ ์ถ๋ ฅ์ ๋ค๋ฅธ ๋ช ๋ น์ด์ ์ ๋ ฅ์ผ๋ก ํ์ดํ(pipeline)
์๋ฅผ ๋ค์ด..
โํ์ฌ ๋๋ ํ ๋ฆฌ์ ์๋ ํญ๋ชฉ์ ๋์ดํ์ฌ listing.txt์ ์ถ๋ ฅโ :
ls > listing.txtlisting.txt๊ฐ ๋ฏธ๋ฆฌ ์๋ ๊ฒฝ์ฐ์๋ ๋ฎ์ด์ฐ๊ธฐ ํด๋ฒ๋ฆผ.
ls >> listing.txtlisting.txt๊ฐ ๋ฏธ๋ฆฌ ์๋ ๊ฒฝ์ฐ์๋ โlisting.txt์ ๋งจ ์์ ์ถ๊ฐโ๋จ.
ํ์ดํ ์ฐ์ฐ์ |๋ ์์ฃผ ์ฌ์ฉ๋จ.
์ ๋ช
๋ น์ด์ ์ถ๋ ฅ์ ๋ท ๋ช
๋ น์ด์ ์
๋ ฅ์ผ๋ก redirection ํจ.
์๋ฅผ ๋ค์ด, ์คํ์ค์ธ ๋ชจ๋ ํ๋ก์ธ์ค๋ฅผ ๋ณด๋ ค ํ๋ค ํ์.
๊ทผ๋ฐ ๋ชจ๋ ํ๋ก์ธ์ค๋ฉด ์์ฒญ ๋ง์ผ๋ ๋ณด๊ธฐ ํ๋ค์์?
more ๋ช
๋ น์ด๋ก ํ์ดํํด์ ์ฝ๊ฒ ๋ณด๋ฉด ๋จ.
more ๋ช
๋ น์ด๋ ํ
์คํธ ํ์ผ์ ํ ํ๋ฉด์ฉ ์ฝ์ ์ ์๊ฒ ํด์ค.. ๊ทธ๋ฆฌ๊ณ ์ฝ๊ธฐ ์ ์ฉ์.
ps -ef | morehead ๋ช
๋ น์ด๋ฅผ ์จ์ ์ฒ์ ๋ช ์ค๋ง ๋์ค๊ฒ ํ์ํ ์๋ ์์.
ps -ef | headโdaemonโ ์ด๋ผ๋ ๋จ์ด๋ฅผ ํฌํจํ๋ ๊ฒ๋ง ํํฐ๋งํ๋ ค๋ฉด?
grep ๋ช
๋ น์ด๋ฅผ ์ฌ์ฉํ๋ฉด ๋จ.
grep daemon ๋ช
๋ น์ด๋ก ์ํ๋ ๊ธ์๋ง ํฌํจ๋๋๊ฑธ ๊ฐ์ ธ์ฌ ์ ์์.
ps -ef | grep daemonํ์ผ์ ์
๋ ฅ์ผ๋ก ์ธ ์๋ ์์.
์๋ ํ์ค ์
๋ ฅ์ ํค๋ณด๋๋ก ํ์ง๋ง ๋ฆฌ๋๋ ์
๋ ์๋ ์์.
< ๋ช
๋ น์ด๋ก ํค๋ณด๋ ๋์ ํ์ผ์์ ์
๋ ฅ ๊ฐ์ ธ์ค๊ฒ ํ๋ฉด ๋จ.
์ผ๋ฐ์ ์ผ๋ก sysadmin ์์
์ค ํ๋๋ ํ์ผ์ ๋ด์ฉ ์ ๋ ฌ์ธ๋ฐ..
ํ
์คํธ๋ฅผ ์ ๋ ฌํ๋ sort ๋ช
๋ น์ด๋ฅผ ์จ๋ณด์.
sort < file.txtfile.txt๋ฅผ ์
๋ ฅ์ผ๋ก ๋ฐ์ ์ ๋ ฌ ๋ด์ฉ์ ์ถ๋ ฅํจ.
์ด ์ถ๋ ฅ์ ์ ํ์ผ์ ์ ์ฅํ๋ ค๋ฉด??
sort < file.txt > softed_file.txt์๋์๋ ํ๋ฉด ๋๋คโฆ ์ด์ฒ๋ผ I/O ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํด ํ์์ ๋ฐ๋ผ Linux ๋ช ๋ น์ ์ฒด์ด๋ ํ ์ ์์. ์๋ฅผ ๋ค์ด..
cat file.txt | fmt | pr | lprcat ๋ช
๋ น์ด์ ์ถ๋ ฅ์ด fmt๋ก ์ด๋, fmt์ ์ถ๋ ฅ์ด pr๋ก ์ด๋ํจ.
์ฐธ๊ณ ๋ก fmt๋ ๊ฒฐ๊ณผ ํ์์ ๊ฐ๋จํ ๋จ๋ฝ์ผ๋ก ์ง์ ํ๊ณ ,
pr์ ๊ฒฐ๊ณผ์ ํ์ด์ง๋ฅผ ๋งค๊น.
lpr์ ํ์ด์ง ๋งค๊ธด ์ถ๋ ฅ์ ํ๋ฆฐํฐ๋ก ๋ณด๋.
๋ชจ๋ ์ถ๋ ฅ์ด ํ ์ค์ ํฌํจ๋๊ฒ ๋๋ค.
๊ฑ ๊ทธ๋ฐ๊ฐ๋ค ํ๋ฉด ๋๋ค. ์ค์ํ๊ฑด | ๋ช
๋ น์ด๋ก ํ์ดํ๋ผ์ด๋ ํ ์ ์๋ค๋ ๊ฑฐ๋๊น.
์ฐ์ต - Bash ์ฌ์ฉ
Cloud Shell ์์ง
Cloud Shell์ ์ ์ํ์ฌ ls ๋ช
๋ น์ด๋ก ๋๋ ํ ๋ฆฌ ๋ด์ฉ์ ์ถ๋ ฅํด๋ณด์.
์๋์ ๊ฐ์ด ์ถ๋ ฅ๋ ๊ฑฐ๋ค.
yourname@Azure:~$ ls
clouddriveclouddrive: ํ์ฌ ๋๋ ํ ๋ฆฌ์ ํ์ ๋๋ ํ ๋ฆฌ
Cloud Shell ์ฌ์ฉํ ๋ ์ ๊ณต๋๋ ํ์ผ ๊ณต์ ๋๋ผ์ด๋ธ๊ฐ ์ด๊ฑฐ์.
์ด์ ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ pwd(print working directory) ๋ช
๋ น์ด๋ก ์์๋ณด์.
์๋์ ๊ฐ์ ์ถ๋ ฅ์ด ๋์ฌ๊ฑฐ์.
yourname@Azure:~$ pwd
/home/yournamelinux ํ์ผ ์์คํ
๋ฃจํธ์์ home ์ด๋ผ๋ ๋๋ ํ ๋ฆฌ ์์ yourname ์ด๋ผ๋ ๋๋ ํ ๋ฆฌ์ ์ฌ์ฉ์๊ฐ ์์.
์๋ฌดํผ ํ์ฌ ๋๋ ํ ๋ฆฌ์๋ ๋ณ ๋ด์ฉ์ด ์์ด๋ณด์.
ls -a ๋ช
๋ น์ด๋ก ์จ๊ฒจ์ง๊ฑธ ๋ณด์.
yourname@Azure:~$ ls -a
. .. .azure .bash_history .bash_logout .bashrc clouddrive .profile .tmux.conf .viminfo.: ํ์ฌ ๋๋ ํ ๋ฆฌ
..: ์์(๋ถ๋ชจ) ๋๋ ํ ๋ฆฌ
์ ๋์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ถ๋ ฅ๋จ.
.bash_history: shell์ ์
๋ ฅํ๋ ๋ชจ๋ ๋ช
๋ น์ด ์ ์ฅ๋๋ ํน์ Bash ํ์ผ.
.bash_logout: ๋ก๊ทธ์ธ shell์ด ์์ ๋ ๋ง๋ค ์ฝํ๊ณ ์คํ๋๋ ํน์ Bash ํ์ผ. super user๋ ์ด ํ์ผ์ ์์ ํ์ฌ ํ๊ฒฝ์ ์ฌ์ฉ์ ์ง์ ํ ์ ์๋ค.
.bashrc: ์ shell์ ์์ํ ๋ ๋ง๋ค ์คํ๋๋ ์ค์ Bash ๊ตฌ์ฑ ํ์ผ. ์๋ชป ๊ฑด๋๋ ธ๋ค๊ฐ ํฐ์ผ๋ ์ ์์ผ๋ ์ฃผ์ํ ๊ฒ.
์ด์ ๊ธฐ๋ก ๋ถ๋ฌ์ค๊ธฐ, ์๋ ์์ฑ ๋ช ๋ น
๋ณต์กํ ๋ช ๋ น์ด ์ ๋ ฅํ๋ฉด ์ค์ํ ์ ์์. ์ด๊ฑฐ ๋ง๊ธฐ ์ํด Bash shell์์ ๋ช ๊ฐ์ง ๊ธฐ๋ฅ ์ ๊ณตํจ.
๋ช ๋ น ๋ถ๋ฌ์ค๊ธฐ
- ์คํ๊ฐ ์๋ ๊ฒฝ์ฐ ์๋ ๋ช
๋ น ์
๋ ฅ
ls -a .azure/commands/203?*.log
2. ์๋์ ๊ฐ์ด ์ถ๋ ฅ๋๋ค๋ฉด ์ ํจํด๊ณผ ๋ง๋ ํ์ผ์ด ์๋ค๋ ๋ป์.
```bash
ls: cannot access '.azure/commands/203?*.log': No such file or directory
- ์ค์ํ์ผ๋ฉด ๋ค์ ์ ๋ ฅํ์ง ๋ง๊ณ ์ ํ์ดํ์ ์๋ ํ์ดํ๋ก ๋ถ๋ฌ์ฌ ์ ์์.
์๋ ์์ฑ
cat ๋ช
๋ น์ด๋ก ํ์ผ ๋ด์ฉ ์ถ๋ ฅ ๊ฐ๋ฅํจ.
๋ณดํต ์๋ ์ฒ๋ผ ์ฐ์ง?
cat .azure/commands/2020-01-29.21-56-35.login.103.log๊ทผ๋ฐ ๋ณต์กํด์ ์ค์ํ ์ ์์ผ๋ ์๋์์ฑ ์จ๋ณด์. ์๋ ์ฒ๋ผ ์จ๋ณด์ ์ผ๋จ.
cat .a๊ทธ๋ฆฌ๊ณ tabํค ๋๋ฅด๋ฉด .azure/๊ฐ ๋จ๋ฉฐ ์๋์์ฑ ๋จ.
์์ ๋ถ๋ถ๋ง ์
๋ ฅํ๊ณ tabํค ๋๋ฅด๋ฉด ๋๋ค๋ ๋ป.
์ ๋งคํ ๊ฒฝ์ฐ์๋ ์๋ฌด๊ฒ๋ ์๋๋ค.
man ์ฌ์ฉ
๋ง์ฝ cat ๋ช
๋ น์ด๋ฅผ ์ ๋ชจ๋ฅด๋ฉด man ๋ช
๋ น์ด๋ก ๋์๋ง์ ์ป์.
CAT(1) User Commands CAT(1)
NAME
cat - concatenate files and print on the standard output
SYNOPSIS
cat [OPTION]... [FILE]...
DESCRIPTION
Concatenate FILE(s) to standard output.
With no FILE, or when FILE is -, read standard input.
-A, --show-all
equivalent to -vET
-b, --number-nonblank
number nonempty output lines, overrides -n
-e equivalent to -vE
...ํ์ดํ๋ก ์ด๋ํ๊ณ q๋ก ์ข
๋ฃํ๋ฉด ๋จ.
๋๋ ํ ๋ฆฌ ๋ณ๊ฒฝ
cd ~ ๋ช
๋ น์ด๋ก ์ฌ๋ฐ๋ฅธ ์์น(ํ ๋๋ ํ ๋ฆฌ)๋ก ์ด๋ํ์.
pwd ๋ช
๋ น์ด๋ก ํ์ฌ ๋๋ ํ ๋ฆฌ๋ฅผ ๋ค์ ํ์ธํ์.
์ฐธ๊ณ ๋ก ~๋ ํ ๋๋ ํ ๋ฆฌ๋ฅผ ์ฐธ์กฐํ๋ ํน์๋ฌธ์์.
๋ก๊ทธ ํ์ผ์ด ์๋ ๋๋ ํ ๋ฆฌ๋ก ๋ณ๊ฒฝํ๋ ค๋ฉด..
cd .azure/commands/์์(๋ถ๋ชจ) ๋๋ ํ ๋ฆฌ์ธ .azure๋ก ์ด๋ํ๋ ค๋ฉด cd .. ๋ช
๋ น์ด ์ฌ์ฉ.
์ฐ์ต - ์๋ชป ๋์ํ๋ ํ๋ก์ธ์ค ์ข ๋ฃ
์ค๋ฅ๋ ์ ํ๋ก์ธ์ค ์ค๋จ๋๋ฉด ps, grep, kill ๋ช
๋ น์ด๋ก ์ค์ง ๊ฐ๋ฅํจ.
์๋ชป ๋์ํ๋ ํ๋ก์ธ์ค ์์
์ค์ง์ํค๋ ค๋ฉด ์ค๋จํ ํ๋ก์ธ์ค๊ฐ ํ์ํจ. ์ผ๋จ vi๋ก ํ์ผ์ ๋ง๋ค์ด๋ณด์.
vi bad.pyvi๋ ๋ฆฌ๋ ์ค์ ํ ์คํธ ํธ์ง๊ธฐ์ด๋ค. ์ฌ์ฉ๋ฒ์ ๊ตฌ๊ธ๋งํด๋ณด์.
i = 0
while i == 0:
pass(์ผ๋ถ๋ฌ ๋ฌดํ๋ฃจํ ํ๋ก๊ทธ๋จ ๋ง๋ค์์)
๋ช
๋ น์ด๋ฅผ ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํํ๋๋ก ๋ช
๋ น์ด๋ฅผ ์
๋ ฅํ์.
๋ช
๋ น ๋์ &๋ฅผ ์
๋ ฅํ๋ฉด ๋ฐฑ๊ทธ๋ผ์ด๋์์ ์คํ๋จ.
python3 bad.py &์๋ฌดํผ ์ฐ๋ฆฌ๋ ์๋ชป๋ ํ๋ก์ธ์ค๋ฅผ ํ๋ ๋ง๋ ๊ฑฐ์.
ํ๋ก์ธ์ค ์ข ๋ฃ
ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํ๋ ค๋ฉด ํ๋ก์ธ์ค ์ด๋ฆ์ด๋ PID ๋ฅผ ์์์ผ ํจ.
ps ๋ช
๋ น์ด๋ก ์คํ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์ถ๋ ฅํ๊ณ python์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง ๊ฒ์ ๊ฐ์ ธ์ค์.
ps -ef | grep pythonyourname+ 342 254 99 23:34 pts/1 00:00:31 python3 bad.py
yourname+ 344 254 0 23:35 pts/1 00:00:00 grep --color=auto python์ด๋ ๊ฒ ์ถ๋ ฅ๋ ๊ฑฐ์. bad.py๋ CPU์ 99%๋ฅผ ์ฌ์ฉํ๋๊ฑธ๋ก ๋์ด.
kill ๋ช
๋ น์ด๋ PID ๊ธฐ์ค ์คํ์ค์ธ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํจ.
killall ๋ช
๋ น์ด๋ ํ๋ก์ธ์ค ์ด๋ฆ ๊ธฐ์ค์ผ๋ก ์ข
๋ฃํจ.
kill -l ๋ช
๋ น์ด๋ก ์๊ทธ๋ ๋ชฉ๋ก ์ถ๋ ฅํด๋ณด์.
kill ๋ช
๋ น์ด๋ ํ๋ก์ธ์ค์ ํน์ ํ ์๊ทธ๋์ ๋ณด๋ด์ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃ์ํด.
์ด ์๊ทธ๋ ์ค ์ด๋ค ์๊ทธ๋์ด ์๋์ง ํ์ธํ๋ ค๋ฉด -l ๋ช
๋ น์ด๋ฅผ ๋ถ์ด๋ฉด ๋จ.
๋์ถฉ ์๋ ์ฒ๋ผ ๋ชฉ๋ก์ด ์ถ๋ ฅ๋จ.
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
5) SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
9) SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
13) SIGPIPE 14) SIGALRM 15) SIGTERM 16) SIGSTKFLT
...๊ฐ๊ฐ ํ๋ก์ธ์ค ๋ค์ ๋ก๋/์ข
๋ฃ, ์ธํฐ๋ฝํธ ์ ํธ, ์ข
๋ฃ ์์ฒญ, ๊ฐ์ ์ข
๋ฃ ๋ฑ๋ฑ ๋ง์.
์ด ์์ ์ ๊ฒฝ์ฐ 9๋ฒ์ ํด๋น๋๋ SIGKILL ๋ช
๋ น์ด๊ฐ ๋ง์.
๋ฐ๋ผ์ ps -ef์ ์ถ๋ ฅ์์ bad.py์ PID๋ฅผ ๊ฐ์ ธ์ ํ๋ก์ธ์ค๋ฅผ ์ข
๋ฃํด์ผ ํจ.
kill -9 PROCESS_IDkill -s SIGKILL PROCESS_ID๋ก ์
๋ ฅํ ์๋ ์์.
์๊ทธ๋ ์ด๋ฆ์ ์ฌ์ฉํ ์ง, ์๊ทธ๋ ๋ฒํธ๋ฅผ ์ฌ์ฉํ ์ง๋ ๋ง๋๋ก ํ๋ฉด ๋จ.
์ด๋ ๊ฒ ์ข
๋ฃํ์ผ๋ฉด ps ๋ช
๋ น์ด๋ก ์คํ์ข
๋ฃ๋๋์ง ํ์ธํด๋ด๋ผ.
์๋ฌดํผ, ps์ kill์ ์ฉ๋๋ ์๋ชป ๋จ๊ฒจ์ง ํ๋ก์ธ์ค์ธ โ์ข๋น ํ๋ก์ธ์คโ๋ฅผ ์๋ณ, ์ข
๋ฃํ๋๊ฑฐ๋ค.
Bash, grep์ผ๋ก CLI ์ถ๋ ฅ ํํฐ๋ง
๋ฏธ ์๋ถ์์ ์ฌ์ฉ ๊ฐ๋ฅํ Azure VM์ ํฌ๊ธฐ ๋ชฉ๋ก์ ๋ณด๋ ค๋ฉด ๋ค์๊ณผ ๊ฐ์ด ์ ๋ ฅ.
az vm list-sizes --location westus --output tableVM ๋ชฉ๋ก์ด ์ถ๋ ฅ๋ ๊ฑด๋ฐ.. ์ํ๋ ํฌ๊ธฐ์ VM์ผ๋ก ๋ฒ์๋ฅผ ์ขํ๋ ค๋ฉด grep์ ์ฐ์.
ํฌ๊ธฐ๊ฐ DS(๋ฐ์ดํฐ ๊ณผํ์์ ์์ฃผ ์ฌ์ฉ๋จ)์ธ ๊ฒ๋ค์ ์ฐพ์ผ๋ ค๋ฉด..
az vm list-sizes --location westus --output table | grep DS์ฌ์ ํ VM์ด ๋ง์. ๋ฒ์๋ฅผ ๋ ์ขํ์..
az vm list-sizes --location westus --output table | grep DS.*_v2์ด๋ฐ์์ผ๋ก ํํฐ๋ง ํ๋ฉด ๋จ.