๊ธฐ๋ณธ์ ์ธ 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 mkdir

man ๋ช…๋ น์–ด๋Š” ๋ช…๋ น์˜ ์ž‘๋™ ๋ฐฉ์‹์„ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Œ. --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 -al

cat

ํŒŒ์ผ ๋‚ด๋ถ€์˜ ๋‚ด์šฉ ํ™•์ธ. ํ…์ŠคํŠธ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋ฌธ์ œ๊ฐ€ ์ƒ๊ธธ ์ˆ˜ ์žˆ์Œ.

cat /etc/os-release

์œ„ ๋ช…๋ น์–ด์˜ ๊ฒฝ์šฐ โ€œ์‹คํ–‰์ค‘์ธ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒโ€์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์ถœ๋ ฅํ•จ.

/etc ๋””๋ ‰ํ† ๋ฆฌ๋Š” ํŠน์ˆ˜ ๋””๋ ‰ํ† ๋ฆฌ์ž„. ์‹œ์Šคํ…œ ๊ตฌ์„ฑ ํŒŒ์ผ์ด ํฌํ•จ๋˜๋‹ˆ ์‚ญ์ œํ•˜์ง€ ๋ง ๊ฒƒ.

sudo

๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰. ์Šˆํผ ์‚ฌ์šฉ์ž ๊ถŒํ•œ์œผ๋กœ ๋กœ๊ทธ์ธํ•˜์ง€ ์•Š์•„๋„ ๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ ๋ช…๋ น ์‹คํ–‰ ๊ฐ€๋Šฅ. sudo = โ€œsuper user doโ€

sudo cat ~./zshrc

cd, mkdir, rmdir

cd: โ€œchange directoryโ€ cd ..: ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™ cd ~: ํ™ˆ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™

cd Downloads

mkdir: โ€œ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.jpg

1.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.txt

listing.txt๊ฐ€ ๋ฏธ๋ฆฌ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” ๋ฎ์–ด์“ฐ๊ธฐ ํ•ด๋ฒ„๋ฆผ.

ls >> listing.txt

listing.txt๊ฐ€ ๋ฏธ๋ฆฌ ์žˆ๋Š” ๊ฒฝ์šฐ์—๋Š” โ€œlisting.txt์˜ ๋งจ ์•ž์— ์ถ”๊ฐ€โ€๋จ.

ํŒŒ์ดํ•‘ ์—ฐ์‚ฐ์ž |๋Š” ์ž์ฃผ ์‚ฌ์šฉ๋จ. ์•ž ๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ์„ ๋’ท ๋ช…๋ น์–ด์˜ ์ž…๋ ฅ์œผ๋กœ redirection ํ•จ.

์˜ˆ๋ฅผ ๋“ค์–ด, ์‹คํ–‰์ค‘์ธ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ๋ณด๋ ค ํ•œ๋‹ค ํ•˜์ž. ๊ทผ๋ฐ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฉด ์—„์ฒญ ๋งŽ์œผ๋‹ˆ ๋ณด๊ธฐ ํž˜๋“ค์ž–์Œ? more ๋ช…๋ น์–ด๋กœ ํŒŒ์ดํ•‘ํ•ด์„œ ์‰ฝ๊ฒŒ ๋ณด๋ฉด ๋จ. more ๋ช…๋ น์–ด๋Š” ํ…์ŠคํŠธ ํŒŒ์ผ์„ ํ•œ ํ™”๋ฉด์”ฉ ์ฝ์„ ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์คŒ.. ๊ทธ๋ฆฌ๊ณ  ์ฝ๊ธฐ ์ „์šฉ์ž„.

ps -ef | more

head ๋ช…๋ น์–ด๋ฅผ ์จ์„œ ์ฒ˜์Œ ๋ช‡ ์ค„๋งŒ ๋‚˜์˜ค๊ฒŒ ํ‘œ์‹œํ•  ์ˆ˜๋„ ์žˆ์Œ.

ps -ef | head

โ€œdaemonโ€ ์ด๋ผ๋Š” ๋‹จ์–ด๋ฅผ ํฌํ•จํ•˜๋Š” ๊ฒƒ๋งŒ ํ•„ํ„ฐ๋งํ•˜๋ ค๋ฉด? grep ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋จ. grep daemon ๋ช…๋ น์–ด๋กœ ์›ํ•˜๋Š” ๊ธ€์ž๋งŒ ํฌํ•จ๋˜๋Š”๊ฑธ ๊ฐ€์ ธ์˜ฌ ์ˆ˜ ์žˆ์Œ.

ps -ef | grep daemon

ํŒŒ์ผ์„ ์ž…๋ ฅ์œผ๋กœ ์“ธ ์ˆ˜๋„ ์žˆ์Œ. ์›๋ž˜ ํ‘œ์ค€ ์ž…๋ ฅ์€ ํ‚ค๋ณด๋“œ๋กœ ํ•˜์ง€๋งŒ ๋ฆฌ๋””๋ ‰์…˜ ๋  ์ˆ˜๋„ ์žˆ์Œ. < ๋ช…๋ น์–ด๋กœ ํ‚ค๋ณด๋“œ ๋Œ€์‹  ํŒŒ์ผ์—์„œ ์ž…๋ ฅ ๊ฐ€์ ธ์˜ค๊ฒŒ ํ•˜๋ฉด ๋จ. ์ผ๋ฐ˜์ ์œผ๋กœ sysadmin ์ž‘์—… ์ค‘ ํ•˜๋‚˜๋Š” ํŒŒ์ผ์˜ ๋‚ด์šฉ ์ •๋ ฌ์ธ๋ฐ.. ํ…์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•˜๋Š” sort ๋ช…๋ น์–ด๋ฅผ ์จ๋ณด์ž.

sort < file.txt

file.txt๋ฅผ ์ž…๋ ฅ์œผ๋กœ ๋ฐ›์•„ ์ •๋ ฌ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•จ. ์ด ์ถœ๋ ฅ์„ ์ƒˆ ํŒŒ์ผ์— ์ €์žฅํ•˜๋ ค๋ฉด??

sort < file.txt > softed_file.txt

์š”๋ž˜์š”๋ž˜ ํ•˜๋ฉด ๋œ๋‹คโ€ฆ ์ด์ฒ˜๋Ÿผ I/O ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด ํ•„์š”์— ๋”ฐ๋ผ Linux ๋ช…๋ น์„ ์ฒด์ด๋‹ ํ•  ์ˆ˜ ์žˆ์Œ. ์˜ˆ๋ฅผ ๋“ค์–ด..

cat file.txt | fmt | pr | lpr

cat ๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ์ด fmt๋กœ ์ด๋™, fmt์˜ ์ถœ๋ ฅ์ด pr๋กœ ์ด๋™ํ•จ. ์ฐธ๊ณ ๋กœ fmt๋Š” ๊ฒฐ๊ณผ ํ˜•์‹์„ ๊ฐ„๋‹จํ•œ ๋‹จ๋ฝ์œผ๋กœ ์ง€์ •ํ•˜๊ณ , pr์€ ๊ฒฐ๊ณผ์— ํŽ˜์ด์ง€๋ฅผ ๋งค๊น€. lpr์€ ํŽ˜์ด์ง€ ๋งค๊ธด ์ถœ๋ ฅ์„ ํ”„๋ฆฐํ„ฐ๋กœ ๋ณด๋ƒ„. ๋ชจ๋“  ์ถœ๋ ฅ์ด ํ•œ ์ค„์— ํฌํ•จ๋˜๊ฒŒ ๋œ๋‹ค. ๊ฑ ๊ทธ๋Ÿฐ๊ฐ‘๋‹ค ํ•˜๋ฉด ๋œ๋‹ค. ์ค‘์š”ํ•œ๊ฑด | ๋ช…๋ น์–ด๋กœ ํŒŒ์ดํ”„๋ผ์ด๋‹ ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฑฐ๋‹ˆ๊นŒ.

์—ฐ์Šต - Bash ์‚ฌ์šฉ

Cloud Shell ์ˆ™์ง€

Cloud Shell์— ์ ‘์†ํ•˜์—ฌ ls ๋ช…๋ น์–ด๋กœ ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด์šฉ์„ ์ถœ๋ ฅํ•ด๋ณด์ž. ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ๋ ๊ฑฐ๋‹ค.

yourname@Azure:~$ ls
clouddrive

clouddrive: ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ์˜ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ Cloud Shell ์‚ฌ์šฉํ•  ๋•Œ ์ œ๊ณต๋˜๋Š” ํŒŒ์ผ ๊ณต์œ  ๋“œ๋ผ์ด๋ธŒ๊ฐ€ ์ด๊ฑฐ์ž„.

์ด์ œ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ pwd(print working directory) ๋ช…๋ น์–ด๋กœ ์•Œ์•„๋ณด์ž. ์•„๋ž˜์™€ ๊ฐ™์€ ์ถœ๋ ฅ์ด ๋‚˜์˜ฌ๊ฑฐ์ž„.

yourname@Azure:~$ pwd
/home/yourname

linux ํŒŒ์ผ ์‹œ์Šคํ…œ ๋ฃจํŠธ์—์„œ 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์—์„œ ๋ช‡ ๊ฐ€์ง€ ๊ธฐ๋Šฅ ์ œ๊ณตํ•จ.

๋ช…๋ น ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

  1. ์˜คํƒ€๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ ์•„๋ž˜ ๋ช…๋ น ์ž…๋ ฅ
    ls -a .azure/commands/203?*.log

2. ์•„๋ž˜์™€ ๊ฐ™์ด ์ถœ๋ ฅ๋œ๋‹ค๋ฉด ์œ„ ํŒจํ„ด๊ณผ ๋งž๋Š” ํŒŒ์ผ์ด ์—†๋‹ค๋Š” ๋œป์ž„.
	```bash
	ls: cannot access '.azure/commands/203?*.log': No such file or directory
  1. ์‹ค์ˆ˜ํ–ˆ์œผ๋ฉด ๋‹ค์‹œ ์ž…๋ ฅํ•˜์ง€ ๋ง๊ณ  ์œ„ ํ™”์‚ดํ‘œ์™€ ์•„๋ž˜ ํ™”์‚ดํ‘œ๋กœ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ์Œ.

์ž๋™ ์™„์„ฑ

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.py

vi๋Š” ๋ฆฌ๋ˆ…์Šค์˜ ํ…์ŠคํŠธ ํŽธ์ง‘๊ธฐ์ด๋‹ค. ์‚ฌ์šฉ๋ฒ•์€ ๊ตฌ๊ธ€๋งํ•ด๋ณด์ž.

i = 0
while i == 0:
	pass

(์ผ๋ถ€๋Ÿฌ ๋ฌดํ•œ๋ฃจํ”„ ํ”„๋กœ๊ทธ๋žจ ๋งŒ๋“ค์—ˆ์Œ)

๋ช…๋ น์–ด๋ฅผ ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰ํ•˜๋„๋ก ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•˜์ž. ๋ช…๋ น ๋์— &๋ฅผ ์ž…๋ ฅํ•˜๋ฉด ๋ฐฑ๊ทธ๋ผ์šด๋“œ์—์„œ ์‹คํ–‰๋จ.

python3 bad.py &

์•„๋ฌดํŠผ ์šฐ๋ฆฌ๋Š” ์ž˜๋ชป๋œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•˜๋‚˜ ๋งŒ๋“ ๊ฑฐ์ž„.

ํ”„๋กœ์„ธ์Šค ์ข…๋ฃŒ

ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•˜๋ ค๋ฉด ํ”„๋กœ์„ธ์Šค ์ด๋ฆ„์ด๋‚˜ PID ๋ฅผ ์•Œ์•„์•ผ ํ•จ. ps ๋ช…๋ น์–ด๋กœ ์‹คํ–‰์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ถœ๋ ฅํ•˜๊ณ  python์ด๋ผ๋Š” ์ด๋ฆ„์„ ๊ฐ€์ง„ ๊ฒƒ์„ ๊ฐ€์ ธ์˜ค์ž.

ps -ef | grep python
yourname+    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_ID

kill -s SIGKILL PROCESS_ID๋กœ ์ž…๋ ฅํ•  ์ˆ˜๋„ ์žˆ์Œ. ์‹œ๊ทธ๋„ ์ด๋ฆ„์„ ์‚ฌ์šฉํ• ์ง€, ์‹œ๊ทธ๋„ ๋ฒˆํ˜ธ๋ฅผ ์‚ฌ์šฉํ• ์ง€๋Š” ๋ง˜๋Œ€๋กœ ํ•˜๋ฉด ๋จ.

์ด๋ ‡๊ฒŒ ์ข…๋ฃŒํ–ˆ์œผ๋ฉด ps ๋ช…๋ น์–ด๋กœ ์‹คํ–‰์ข…๋ฃŒ๋๋Š”์ง€ ํ™•์ธํ•ด๋ด๋ผ. ์•„๋ฌดํŠผ, ps์™€ kill์˜ ์šฉ๋„๋Š” ์ž˜๋ชป ๋‚จ๊ฒจ์ง„ ํ”„๋กœ์„ธ์Šค์ธ โ€˜์ข€๋น„ ํ”„๋กœ์„ธ์Šคโ€™๋ฅผ ์‹๋ณ„, ์ข…๋ฃŒํ•˜๋Š”๊ฑฐ๋‹ค.

Bash, grep์œผ๋กœ CLI ์ถœ๋ ฅ ํ•„ํ„ฐ๋ง

๋ฏธ ์„œ๋ถ€์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ Azure VM์˜ ํฌ๊ธฐ ๋ชฉ๋ก์„ ๋ณด๋ ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅ.

az vm list-sizes --location westus --output table

VM ๋ชฉ๋ก์ด ์ถœ๋ ฅ๋ ๊ฑด๋ฐ.. ์›ํ•˜๋Š” ํฌ๊ธฐ์˜ 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

์ด๋Ÿฐ์‹์œผ๋กœ ํ•„ํ„ฐ๋ง ํ•˜๋ฉด ๋จ.