[Linux] find ๋ช…๋ น์–ด ์‹ค๋ฌด ํŒจํ„ด 3๊ฐ€์ง€: ํŒŒ์ผ๋ช…, ์ˆ˜์ • ์‹œ๊ฐ„, ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰(grep) ํ™œ์šฉ

๋ฆฌ๋ˆ…์Šค(CentOS 7) ํ™˜๊ฒฝ์—์„œ ์›ํ•˜๋Š” ํŒŒ์ผ์„ ๋น ๋ฅด๊ณ  ์ •ํ™•ํ•˜๊ฒŒ ์ฐพ๊ธฐ ์œ„ํ•œ find ๋ช…๋ น์–ด์˜ ํ•„์ˆ˜ ์˜ต์…˜์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†๋Š” ๊ฒ€์ƒ‰, ์ตœ๊ทผ ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ ํƒ์ƒ‰, ๊ทธ๋ฆฌ๊ณ  xargs๋ฅผ ์กฐํ•ฉํ•œ ํŒŒ์ผ ๋‚ด์šฉ ๊ฒ€์ƒ‰ ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)
  • Shell: Bash

1. ํŒŒ์ผ๋ช…์œผ๋กœ ๊ฒ€์ƒ‰ (By Name)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์‚ฌ์šฉ๋ฒ•์ž…๋‹ˆ๋‹ค. -name ์˜ต์…˜์€ ์ •ํ™•ํ•œ ์ด๋ฆ„์„, -iname ์˜ต์…˜์€ ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๋ฌด์‹œํ•˜๊ณ  ๊ฒ€์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ฒ€์ƒ‰

# ์ „์ฒด ๊ฒฝ๋กœ(/)์—์„œ Mem.sh ํŒŒ์ผ ์ฐพ๊ธฐ
find /sw -name "Mem.sh"

# ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ(.)์—์„œ ์ฐพ๊ธฐ
find . -name "Mem.sh"

๋Œ€์†Œ๋ฌธ์ž ๋ฌด์‹œ ๊ฒ€์ƒ‰ (Insensitive)

ํŒŒ์ผ๋ช…์˜ ๋Œ€์†Œ๋ฌธ์ž๊ฐ€ ํ™•์‹คํ•˜์ง€ ์•Š์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

# Mem.sh, MEM.sh ๋ชจ๋‘ ๊ฒ€์ƒ‰๋จ
find /sw -iname "Mem.sh"
Tip (์—๋Ÿฌ ์ˆจ๊ธฐ๊ธฐ):
๊ฒ€์ƒ‰ ๋„์ค‘ Permission denied ๋ฉ”์‹œ์ง€๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์ด ๋œฌ๋‹ค๋ฉด ๋ช…๋ น์–ด ๋’ค์— 2>/dev/null์„ ๋ถ™์—ฌ ์—๋Ÿฌ ๋ฉ”์‹œ์ง€๋ฅผ ๋ฒ„๋ฆด ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
์˜ˆ: find / -name "test" 2>/dev/null

2. ์ˆ˜์ • ์‹œ๊ฐ„์œผ๋กœ ๊ฒ€์ƒ‰ (By Time)

์žฅ์•  ๋ฐœ์ƒ ์‹œ์ ์ด๋‚˜ ๋กœ๊ทธ ๋ถ„์„ ์‹œ, ํŠน์ • ์‹œ๊ฐ„ ๋‚ด์— ๋ณ€๊ฒฝ๋œ ํŒŒ์ผ์„ ์ฐพ์„ ๋•Œ -mtime(Modification Time) ์˜ต์…˜์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์‚ฌ์šฉ ์˜ˆ์‹œ

# ์ตœ๊ทผ 1์ผ(24์‹œ๊ฐ„) ์ด๋‚ด์— ์ˆ˜์ •๋œ .sh ํŒŒ์ผ ๊ฒ€์ƒ‰
find /sw -name "*.sh" -mtime -1

์˜ต์…˜ ์ƒ์„ธ ์„ค๋ช…

  • -mtime -n: ์ตœ๊ทผ n์ผ ์ด๋‚ด์— ๋ณ€๊ฒฝ๋จ (Today)
  • -mtime +n: n์ผ ์ด์ „์— ๋ณ€๊ฒฝ๋จ (Old files)
  • -mtime n: ์ •ํ™•ํžˆ n์ผ ์ „์— ๋ณ€๊ฒฝ๋จ

3. ํŒŒ์ผ ๋‚ด์šฉ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ (With Grep)

find๋กœ ์ฐพ์€ ํŒŒ์ผ๋“ค์˜ ๋‚ด์šฉ(Content)์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‹ถ์„ ๋•Œ, ํŒŒ์ดํ”„(|)์™€ xargs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ grep์œผ๋กœ ๋„˜๊ฒจ์ค๋‹ˆ๋‹ค.

๊ฒ€์ƒ‰ ํŒŒ์ดํ”„๋ผ์ธ

[ํŒŒ์ผ ์ฐพ๊ธฐ][๋ชฉ๋ก ์ „๋‹ฌ][๋‚ด์šฉ ๊ฒ€์ƒ‰]์˜ ํ๋ฆ„์ž…๋‹ˆ๋‹ค.

# 1์ผ ์ด๋‚ด ์ˆ˜์ •๋œ sh ํŒŒ์ผ๋“ค ์ค‘์—์„œ "Mem"์ด๋ผ๋Š” ๊ธ€์ž๊ฐ€ ํฌํ•จ๋œ ๋ผ์ธ ์ถœ๋ ฅ
find /sw -name "*.sh" -mtime -1 | xargs grep "Mem"

์‹คํ–‰ ๊ฒฐ๊ณผ ํ•ด์„

/sw/Mem.sh:MEMINFO=`cat /proc/meminfo...`  <-- ํŒŒ์ผ๋ช…:๋‚ด์šฉ
/sw/Mem1.sh: TOTAL=`free | grep ^Mem...`
/sw/Mem1.sh: USED=`free | grep ^Mem...`

grep์ด find๊ฐ€ ์ฐพ์•„๋‚ธ ํŒŒ์ผ๋“ค์„ ํ•˜๋‚˜์”ฉ ์—ด์–ด์„œ "Mem" ํ‚ค์›Œ๋“œ๊ฐ€ ์žˆ๋Š”์ง€ ํ™•์ธํ•˜๊ณ , ํ•ด๋‹น ๋ผ์ธ์„ ํŒŒ์ผ๋ช…๊ณผ ํ•จ๊ป˜ ์ถœ๋ ฅํ•ด ์ค๋‹ˆ๋‹ค.


Next Step:
ํŒŒ์ผ์„ ๋‹จ์ˆœํžˆ ์ฐพ๋Š” ๊ฒƒ์„ ๋„˜์–ด, -exec ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฒ€์ƒ‰๋œ ํŒŒ์ผ์˜ ๊ถŒํ•œ์„ ์ผ๊ด„ ๋ณ€๊ฒฝ(chmod)ํ•˜๊ฑฐ๋‚˜ ์‚ญ์ œ(rm)ํ•˜๋Š” ๋“ฑ์˜ ๊ณ ๊ธ‰ ํ™œ์šฉ๋ฒ•์„ ์ตํ˜€๋ณด์„ธ์š”.

[Linux] ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ์†Œ์œ ๊ถŒ(Owner/Group) ๋ณ€๊ฒฝ: chown ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ• ๋ฐ ์ฃผ์˜์‚ฌํ•ญ

๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ(CentOS 7)์—์„œ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์†Œ์œ ์ž(User)์™€ ๊ทธ๋ฃน(Group)์„ ๋ณ€๊ฒฝํ•˜๋Š” chown ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํ•˜์œ„ ๊ฒฝ๋กœ๊นŒ์ง€ ์ผ๊ด„ ๋ณ€๊ฒฝํ•˜๋Š” -R ์˜ต์…˜๊ณผ ์‹ค๋ฌด ์˜ˆ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ์ง€์‹ (Context)

๋ฆฌ๋ˆ…์Šค์˜ ๋ชจ๋“  ํŒŒ์ผ์€ ํŠน์ • ์‚ฌ์šฉ์ž์™€ ๊ทธ๋ฃน์— ์†ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ๋ณดํ†ต root ๊ถŒํ•œ์œผ๋กœ ์„ค์น˜ํ•˜๊ฑฐ๋‚˜ ๋ณต์‚ฌํ•œ ํŒŒ์ผ์€ ์†Œ์œ ๊ถŒ์ด root๋กœ ๋˜์–ด ์žˆ์–ด, ์ผ๋ฐ˜ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ณ„์ •(์˜ˆ: wasadm, tomcat ๋“ฑ)์—์„œ ์ ‘๊ทผํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ํ•  ๋•Œ "Permission denied" ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ chown์„ ์‚ฌ์šฉํ•˜์—ฌ ์†Œ์œ ๊ถŒ์„ ์ ์ ˆํ•œ ๊ณ„์ •์œผ๋กœ ๋„˜๊ฒจ์ฃผ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)
  • User: root (๋ช…๋ น์–ด ์‹คํ–‰ ์ฃผ์ฒด), wasadm (๋Œ€์ƒ ๊ณ„์ •)

1. ๊ธฐ๋ณธ ๋ฌธ๋ฒ• (Syntax)

chown(Change Owner) ๋ช…๋ น์–ด์˜ ๊ธฐ๋ณธ ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค. ๋ฃจํŠธ(Superuser) ๊ถŒํ•œ์ด ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

# ์†Œ์œ ์ž๋งŒ ๋ณ€๊ฒฝ
chown [USER] [FILE]

# ์†Œ์œ ์ž์™€ ๊ทธ๋ฃน ๋™์‹œ ๋ณ€๊ฒฝ (๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ)
chown [USER]:[GROUP] [FILE]

# ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊นŒ์ง€ ์žฌ๊ท€์  ๋ณ€๊ฒฝ
chown -R [USER]:[GROUP] [DIRECTORY]

2. ์‹ค๋ฌด ์‚ฌ์šฉ ์˜ˆ์‹œ (Examples)

์ œ๊ณตํ•ด์ฃผ์‹  ๋กœ๊ทธ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ์ƒํ™ฉ๋ณ„ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์„ ๋ถ„์„ํ•ฉ๋‹ˆ๋‹ค.

Step 1: ์ „์ฒด ์ดˆ๊ธฐํ™” (root ๊ถŒํ•œ์œผ๋กœ ์„ค์ •)

-R ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ(*)์˜ ๋ชจ๋“  ํŒŒ์ผ๊ณผ ํด๋”๋ฅผ root:root ์†Œ์œ ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

[root@localhost sw]# chown -R root:root *

# ํ™•์ธ
[root@localhost sw]# ls -alrt
drwxrwxrwx.  2 root root   6 Feb  5 01:49 img
drwx------.  2 root root   6 Feb  5 01:49 was
...
์ฃผ์˜ (Warning):
chown -R์€ ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ์‹ค์ˆ˜๋กœ ๋ฃจํŠธ ๋””๋ ‰ํ† ๋ฆฌ(/)๋‚˜ ์‹œ์Šคํ…œ ๋””๋ ‰ํ† ๋ฆฌ์—์„œ ์‹คํ–‰ํ•  ๊ฒฝ์šฐ ์‹œ์Šคํ…œ ๋ถ€ํŒ…์ด ๋ถˆ๊ฐ€๋Šฅํ•ด์งˆ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, ์‹คํ–‰ ์ „ ํ˜„์žฌ ๊ฒฝ๋กœ(pwd)๋ฅผ ๋ฐ˜๋“œ์‹œ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.

Step 2: ํŠน์ • ์„œ๋น„์Šค ๊ณ„์ •์œผ๋กœ ์ด๊ด€

WAS๋‚˜ ์›น ์„œ๋ฒ„ ์šด์˜์„ ์œ„ํ•ด ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ(img, was)์™€ ์Šคํฌ๋ฆฝํŠธ(Mem.sh)์˜ ์†Œ์œ ๊ถŒ์„ wasadm ๊ณ„์ •์œผ๋กœ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค.

# ๋””๋ ‰ํ† ๋ฆฌ ๋ฐ ํŒŒ์ผ ์†Œ์œ ๊ถŒ ๋ณ€๊ฒฝ (wasadm ๊ณ„์ •, wasadm ๊ทธ๋ฃน)
[root@localhost sw]# chown wasadm:wasadm img
[root@localhost sw]# chown wasadm:wasadm was
[root@localhost sw]# chown wasadm:wasadm Mem.sh

Step 3: ๋ณ€๊ฒฝ ๊ฒฐ๊ณผ ๊ฒ€์ฆ (Verification)

ls -l ๋ช…๋ น์–ด๋กœ ๋ณ€๊ฒฝ๋œ ์†Œ์œ ๊ถŒ์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. 3๋ฒˆ์งธ ์ปฌ๋Ÿผ(Owner)๊ณผ 4๋ฒˆ์งธ ์ปฌ๋Ÿผ(Group)์ด ๋ณ€๊ฒฝ๋œ ๊ฒƒ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[root@localhost sw]# ls -alrt
total 8
# ๋ณ€๊ฒฝ๋œ ํ•ญ๋ชฉ (wasadm)
drwxrwxrwx.  2 wasadm wasadm   6 Feb  5 01:49 img
drwx------.  2 wasadm wasadm   6 Feb  5 01:49 was
-rwxr-xr-x.  1 wasadm wasadm 428 Feb  8 01:16 Mem.sh

# ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ํ•ญ๋ชฉ (root ์œ ์ง€)
drwx------.  2 root   root     6 Feb  5 01:49 web
drwxr-xr-x.  2 root   root     6 Feb  5 01:49 bin
...

Next Step:
์†Œ์œ ๊ถŒ ๋ณ€๊ฒฝ์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ํ•ด๋‹น ์‚ฌ์šฉ์ž๊ฐ€ ํŒŒ์ผ์— ๋Œ€ํ•ด ์–ด๋–ค ์ž‘์—…์„ ํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •ํ•˜๋Š” ๊ถŒํ•œ(Permission) ์„ค์ •(chmod) ๋‹จ๊ณ„๋กœ ๋„˜์–ด๊ฐ€์•ผ ํ•ฉ๋‹ˆ๋‹ค.

[Linux] CentOS 7 ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ๋ถ„์„ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: free ๋ช…๋ น์–ด ๋ณ€ํ™”์™€ ์‹ค์งˆ ์‚ฌ์šฉ๋Ÿ‰ ๊ณ„์‚ฐ

CentOS 7(RHEL 7)๋ถ€ํ„ฐ free ๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ ํ˜•์‹์ด ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์˜ buffers/cache ๋ผ์ธ์ด ์‚ฌ๋ผ์ง€๊ณ  available ์ปฌ๋Ÿผ์ด ์ถ”๊ฐ€๋œ ๋ฐฐ๊ฒฝ์„ ์ดํ•ดํ•˜๊ณ , ์ •ํ™•ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์„ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ์ง€์‹: CentOS 6 vs 7 ์ฐจ์ด์ 

๋ฆฌ๋ˆ…์Šค๋Š” ๋‚จ๋Š” ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ๊ทน์ ์œผ๋กœ ์บ์‹œ(Cache)๋กœ ์‚ฌ์šฉํ•˜์—ฌ ์„ฑ๋Šฅ์„ ๋†’์ž…๋‹ˆ๋‹ค. ๋”ฐ๋ผ์„œ 'Used'๊ฐ€ ๋†’๋‹ค๊ณ  ํ•ด์„œ ๋ฐ˜๋“œ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ ๊ฒƒ์€ ์•„๋‹™๋‹ˆ๋‹ค.

  • CentOS 6 ์ดํ•˜: -/+ buffers/cache ํ–‰์„ ํ†ตํ•ด ์‹ค์งˆ ์‚ฌ์šฉ๋Ÿ‰์„ ํ™•์ธํ–ˆ์Šต๋‹ˆ๋‹ค.
  • CentOS 7 ์ด์ƒ: ์ปค๋„์ด ์ง์ ‘ ๊ณ„์‚ฐํ•œ available ์ปฌ๋Ÿผ์„ ํ†ตํ•ด "์ฆ‰์‹œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ"๋ฅผ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (Kernel 3.10.0-957.el7.x86_64)

1. ๋ฉ”๋ชจ๋ฆฌ ํ™•์ธ ๋ช…๋ น์–ด (free)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ํ™•์ธ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค. -m ์˜ต์…˜์€ Megabyte ๋‹จ์œ„๋กœ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

[root@localhost sw]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7803         892        4686         263        2224        6277
Swap:          8064           0        8064

์‹ค์‹œ๊ฐ„ ๋ชจ๋‹ˆํ„ฐ๋ง ๋ฐ ์ƒ์„ธ ๋ณด๊ธฐ

-w(wide) ์˜ต์…˜์„ ์ฃผ๋ฉด buffer์™€ cache๋ฅผ ๋ถ„๋ฆฌํ•ด์„œ ๋ณผ ์ˆ˜ ์žˆ๊ณ , -s(seconds) ์˜ต์…˜์œผ๋กœ ๋ฐ˜๋ณต ์กฐํšŒ๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

# 1์ดˆ ๊ฐ„๊ฒฉ์œผ๋กœ buffer/cache๋ฅผ ๋ถ„๋ฆฌํ•˜์—ฌ ์ถœ๋ ฅ
free -mw -s 1

2. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ๊ณ„์‚ฐ ๊ณต์‹ (Calculation)

๋‹จ์ˆœํžˆ used / total๋กœ ๊ณ„์‚ฐํ•˜๋ฉด ์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๊นŒ์ง€ ์‚ฌ์šฉ๋Ÿ‰์— ํฌํ•จ๋˜์–ด ์ˆ˜์น˜๊ฐ€ ๊ณผ๋„ํ•˜๊ฒŒ ๋†’๊ฒŒ ๋‚˜์˜ต๋‹ˆ๋‹ค. ๋ชฉ์ ์— ๋”ฐ๋ผ ๊ณ„์‚ฐ ๋ฐฉ์‹์„ ๋‹ฌ๋ฆฌํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ณต์‹ A: OS ๊ด€์ ์˜ ์‚ฌ์šฉ๋ฅ  (์บ์‹œ ํฌํ•จ)

๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์‹ค์ œ๋กœ ์–ผ๋งˆ๋‚˜ ํ• ๋‹น๋˜์–ด ์žˆ๋Š”์ง€(๋ฐ˜๋‚ฉ๋˜์ง€ ์•Š์€ ์ƒํƒœ) ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

$$ Usage(\%) = \frac{used}{total} \times 100 $$

๊ณต์‹ B: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€์ ์˜ ์‹ค์งˆ ์‚ฌ์šฉ๋ฅ  (๊ถŒ์žฅ)

"์‹ค์ œ๋กœ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ๋ถ€์กฑํ•œ๊ฐ€?"๋ฅผ ํŒ๋‹จํ•  ๋•Œ๋Š” available ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

$$ Usage(\%) = \frac{total - available}{total} \times 100 $$

Tip: sar -r 1 ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด์„œ๋„ %memused(๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ )๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

3. ์ฃผ์š” ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช… (Parameters)

CentOS 7 free ๋ช…๋ น์–ด์˜ ๊ฐ ์ปฌ๋Ÿผ์ด ์˜๋ฏธํ•˜๋Š” ๋ฐ”๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŒŒ๋ผ๋ฏธํ„ฐ ์„ค๋ช…
total ์„ค์น˜๋œ ์ „์ฒด ๋ฌผ๋ฆฌ ๋ฉ”๋ชจ๋ฆฌ ํฌ๊ธฐ
used ํ˜„์žฌ ํ• ๋‹น๋˜์–ด ์‚ฌ์šฉ ์ค‘์ธ ๋ฉ”๋ชจ๋ฆฌ (total - free - buff/cache)
free ์•„๋ฌด ์šฉ๋„๋กœ๋„ ์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š” ์™„์ „ํ•œ ์œ ํœด ๋ฉ”๋ชจ๋ฆฌ
shared tmpfs(๋žจ๋””์Šคํฌ) ๋“ฑ ํ”„๋กœ์„ธ์Šค ๊ฐ„ ๊ณต์œ ๋˜๋Š” ๋ฉ”๋ชจ๋ฆฌ
buff/cache ์ปค๋„ ๋ฒ„ํผ ๋ฐ ํŒŒ์ผ ์‹œ์Šคํ…œ ์บ์‹œ (ํ•„์š”์‹œ ์ฆ‰์‹œ ๋ฐ˜ํ™˜ ๊ฐ€๋Šฅ)
available (ํ•ต์‹ฌ) ์Šค์™€ํ•‘(Swapping) ์—†์ด ์ƒˆ๋กœ์šด ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์— ์ฆ‰์‹œ ํ• ๋‹น ๊ฐ€๋Šฅํ•œ ๋ฉ”๋ชจ๋ฆฌ ์ถ”์ •์น˜

Next Step:
๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์ด ๋น„์ •์ƒ์ ์œผ๋กœ ๋†’๋‹ค๋ฉด(available ๋ถ€์กฑ), top ๋ช…๋ น์–ด๋กœ ๋ฉ”๋ชจ๋ฆฌ ๋ˆ„์ˆ˜(Leak)๊ฐ€ ์˜์‹ฌ๋˜๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ๊ฑฐ๋‚˜, echo 3 > /proc/sys/vm/drop_caches ๋ช…๋ น์–ด๋กœ ์บ์‹œ๋ฅผ ๊ฐ•์ œ ๋ฐ˜ํ™˜ํ•˜์—ฌ ๊ฐ€์šฉ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒ€ํ† ํ•ด ๋ณด์„ธ์š”.

[Linux] Java ์‹ค์ œ ์„ค์น˜ ๊ฒฝ๋กœ ํ™•์ธ ๋ฐฉ๋ฒ•: which vs readlink ์ฐจ์ด์  ๋ฐ JAVA_HOME ์„ค์ •

๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ์—์„œ java ๋ช…๋ น์–ด์˜ ์‹ค์ œ ์„ค์น˜ ์œ„์น˜(Absolute Path)๋ฅผ ์ฐพ๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋‹จ์ˆœ ๊ฒฝ๋กœ ํ™•์ธ์šฉ์ธ which์™€ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์˜ ์›๋ณธ์„ ์ฐพ์•„์ฃผ๋Š” readlink -f์˜ ์ฐจ์ด์ ์„ ์ดํ•ดํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด JAVA_HOME์„ ์„ค์ •ํ•˜๋Š” ํŒ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ์ง€์‹ (Context)

๋ฆฌ๋ˆ…์Šค(ํŠนํžˆ CentOS/RHEL ๊ณ„์—ด)๋Š” alternatives ์‹œ์Šคํ…œ์„ ์‚ฌ์šฉํ•˜์—ฌ ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ ํ”„๋กœ๊ทธ๋žจ์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋•Œ๋ฌธ์— /usr/bin/java๋Š” ์‹ค์ œ ์‹คํ–‰ ํŒŒ์ผ์ด ์•„๋‹ˆ๋ผ, ์—ฌ๋Ÿฌ ๋‹จ๊ณ„์˜ ๋ฐ”๋กœ๊ฐ€๊ธฐ(Symbolic Link)๋กœ ์—ฐ๊ฒฐ๋œ ๊ป๋ฐ๊ธฐ์ผ ํ™•๋ฅ ์ด ๋†’์Šต๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7 (3.10.0-957.el7.x86_64)
  • Package: OpenJDK 1.8

1. ๋ช…๋ น์–ด ๊ฒฝ๋กœ ํ™•์ธ (which)

๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค. ํ™˜๊ฒฝ ๋ณ€์ˆ˜ $PATH์— ๋“ฑ๋ก๋œ ๊ฒฝ๋กœ ์ค‘ ์–ด๋””์— ์žˆ๋Š” ๋ช…๋ น์–ด๊ฐ€ ์‹คํ–‰๋˜๋Š”์ง€ ์•Œ๋ ค์ค๋‹ˆ๋‹ค.

[wasadm@localhost ~]$ which java
/usr/bin/java
ํ•œ๊ณ„์ : ์œ„ ๊ฒฐ๊ณผ์ธ /usr/bin/java๋Š” ์‹ค์ œ ํŒŒ์ผ์ด ์•„๋‹Œ ์‹ฌ๋ณผ๋ฆญ ๋งํฌ์ผ ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์•„์„œ, ์ด ๊ฒฝ๋กœ๋ฅผ JAVA_HOME์œผ๋กœ ์„ค์ •ํ•˜๋ฉด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

2. ์›๋ณธ ๊ฒฝ๋กœ ์ถ”์  (readlink -f)

์‹ฌ๋ณผ๋ฆญ ๋งํฌ๊ฐ€ ์•„๋ฌด๋ฆฌ ์—ฌ๋Ÿฌ ๋‹จ๊ณ„๋กœ ๊ผฌ์—ฌ ์žˆ์–ด๋„, ์ตœ์ข… ์›๋ณธ ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ๋ฅผ ํ•œ ๋ฒˆ์— ์ฐพ์•„์ฃผ๋Š” ๊ฐ€์žฅ ํ™•์‹คํ•œ ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

# ๊ตฌ๋ฌธ: readlink -f [์‹ฌ๋ณผ๋ฆญ_๋งํฌ_๊ฒฝ๋กœ]
[wasadm@localhost ~]$ readlink -f /usr/bin/java

# ์ถœ๋ ฅ ๊ฒฐ๊ณผ (์‹ค์ œ ์„ค์น˜ ์œ„์น˜)
/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/bin/java

์œ„ ๊ฒฐ๊ณผ์—์„œ ๋งˆ์ง€๋ง‰ /bin/java๋ฅผ ์ œ์™ธํ•œ ์•ž๋ถ€๋ถ„์ด ๋ฐ”๋กœ JAVA_HOME์ด ๋ฉ๋‹ˆ๋‹ค.


3. ๋งํฌ ๊ตฌ์กฐ ๋‹จ๊ณ„๋ณ„ ํ™•์ธ (ls -l)

readlink๊ฐ€ ์–ด๋–ป๊ฒŒ ๋™์ž‘ํ•˜๋Š”์ง€ ls -l ๋ช…๋ น์–ด๋กœ ํ•œ ๋‹จ๊ณ„์”ฉ ์ถ”์ ํ•ด๋ณด๋ฉด ๋ฆฌ๋ˆ…์Šค์˜ alternatives ๊ตฌ์กฐ๋ฅผ ์ดํ•ดํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Step 1: ์‹คํ–‰ ํŒŒ์ผ ํ™•์ธ

[wasadm@localhost ~]$ ls -l /usr/bin/java
lrwxrwxrwx 1 root root 22 Feb  5 01:36 /usr/bin/java -> /etc/alternatives/java

/usr/bin/java๋Š” /etc/alternatives/java๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

Step 2: alternatives ํ™•์ธ

[wasadm@localhost ~]$ ls -l /etc/alternatives/java
lrwxrwxrwx 1 root root 71 Feb  5 01:36 /etc/alternatives/java -> /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre/bin/java

/etc/alternatives/java๊ฐ€ ๋น„๋กœ์†Œ ์‹ค์ œ JDK๊ฐ€ ์„ค์น˜๋œ ๊ฒฝ๋กœ๋ฅผ ๊ฐ€๋ฆฌํ‚ค๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. readlink -f๋Š” ์ด ๊ณผ์ •์„ ํ•œ ๋ฒˆ์— ์ˆ˜ํ–‰ํ•ด ์ค๋‹ˆ๋‹ค.


4. ํ™œ์šฉ: JAVA_HOME ํ™˜๊ฒฝ ๋ณ€์ˆ˜ ์„ค์ •

์œ„์—์„œ ์ฐพ์€ ๊ฒฝ๋กœ๋ฅผ ํ™œ์šฉํ•˜์—ฌ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๋“ฑ๋กํ•ฉ๋‹ˆ๋‹ค. (/etc/profile ๋˜๋Š” ~/.bash_profile)

# ์›๋ณธ ๊ฒฝ๋กœ: /usr/lib/jvm/java-1.8.0-.../jre/bin/java
# bin/java ์•ž๋ถ€๋ถ„๊นŒ์ง€๋งŒ ๋ณต์‚ฌ

export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.181-7.b13.el7.x86_64/jre
export PATH=$JAVA_HOME/bin:$PATH

Next Step:
๋งŒ์•ฝ ์„œ๋ฒ„์— ์—ฌ๋Ÿฌ ๋ฒ„์ „์˜ Java๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ์–ด ๊ธฐ๋ณธ ์‹คํ–‰ ๋ฒ„์ „์„ ๋ณ€๊ฒฝํ•˜๊ณ  ์‹ถ๋‹ค๋ฉด, alternatives --config java ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ„ํŽธํ•˜๊ฒŒ ์Šค์œ„์นญํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Linux] ํŒŒ์ผ/๋””๋ ‰ํ† ๋ฆฌ ๊ถŒํ•œ ๊ด€๋ฆฌ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: chmod ๋ช…๋ น์–ด์™€ 755, 777์˜ ์˜๋ฏธ

๋ฆฌ๋ˆ…์Šค ํ™˜๊ฒฝ(CentOS 7)์—์„œ ํŒŒ์ผ ๋ฐ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์ ‘๊ทผ ๊ถŒํ•œ์„ ์ œ์–ดํ•˜๋Š” chmod ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ์ˆซ์ž ๋ชจ๋“œ(755, 644)์™€ ๋ฌธ์ž์—ด ๋ชจ๋“œ(u+x)์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๊ณ , -R ์˜ต์…˜์„ ํ†ตํ•ด ํ•˜์œ„ ๊ฒฝ๋กœ๊นŒ์ง€ ์ผ๊ด„ ์ ์šฉํ•˜๋Š” ์‹ค๋ฌด ์˜ˆ์ œ๋ฅผ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ์ง€์‹: ๊ถŒํ•œ์˜ ๊ตฌ์กฐ (Permission Structure)

๋ฆฌ๋ˆ…์Šค์˜ ํŒŒ์ผ ๊ถŒํ•œ์€ ์†Œ์œ ์ž(User), ๊ทธ๋ฃน(Group), ๊ธฐํƒ€(Other) ์„ธ ๊ฐ€์ง€ ๋Œ€์ƒ์— ๋Œ€ํ•ด ์ฝ๊ธฐ(r), ์“ฐ๊ธฐ(w), ์‹คํ–‰(x) ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•˜๋Š” ๊ตฌ์กฐ์ž…๋‹ˆ๋‹ค.

๊ถŒํ•œ ํ™•์ธ (ls -l)

ls -l
# ๊ฒฐ๊ณผ ์˜ˆ์‹œ: drwxr-xr-x (755)
# d(๋””๋ ‰ํ† ๋ฆฌ) | rwx(์†Œ์œ ์ž) | r-x(๊ทธ๋ฃน) | r-x(๊ธฐํƒ€)

1. ๊ถŒํ•œ ๋ณ€๊ฒฝ (chmod)

chmod(Change Mode) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ์˜ ๊ถŒํ•œ์„ ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฏธ ์ƒ์„ฑ๋œ ํŒŒ์ผ์˜ ํ˜„์žฌ ์ƒํƒœ๋ฅผ ๋ณ€๊ฒฝํ•˜๋Š” ๋ช…๋ น์–ด์ž…๋‹ˆ๋‹ค.

์˜ต์…˜ ์„ค๋ช…

  • -R (--recursive): ๋””๋ ‰ํ† ๋ฆฌ ๋‚ด๋ถ€์˜ ๋ชจ๋“  ํŒŒ์ผ๊ณผ ํ•˜์œ„ ๋””๋ ‰ํ† ๋ฆฌ๊นŒ์ง€ ์žฌ๊ท€์ ์œผ๋กœ(์ผ๊ด„) ๋ณ€๊ฒฝํ•ฉ๋‹ˆ๋‹ค. (๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ)

์‹ค๋ฌด ์‚ฌ์šฉ ์˜ˆ์‹œ

# 1. WAS ๋””๋ ‰ํ† ๋ฆฌ: ์†Œ์œ ์ž๋งŒ ๋ชจ๋“  ๊ถŒํ•œ(7), ๋‚˜๋จธ์ง€๋Š” ์ ‘๊ทผ ๋ถˆ๊ฐ€(0)
chmod -R 700 ./was

# 2. ์›น ๋ฃจํŠธ ๋ฐ ๋ฐ”์ด๋„ˆ๋ฆฌ: ์†Œ์œ ์ž(7), ๊ทธ๋ฃน/๊ธฐํƒ€๋Š” ์ฝ๊ธฐ/์‹คํ–‰๋งŒ(5) - ์ผ๋ฐ˜์ ์ธ ์„ค์ •
chmod -R 755 ./web
chmod -R 755 ./bin

# 3. ์ด๋ฏธ์ง€ ์—…๋กœ๋“œ ํด๋”: ๋ˆ„๊ตฌ๋‚˜ ์“ฐ๊ณ  ์ฝ๊ธฐ ๊ฐ€๋Šฅ (๋ณด์•ˆ ์ฃผ์˜!)
chmod -R 777 ./img

2. ๊ถŒํ•œ ์„ค์ • ๋ฐฉ์‹ A: ์ˆซ์ž ๋ชจ๋“œ (Octal Mode)

๊ฐ€์žฅ ์ง๊ด€์ ์ด๊ณ  ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค. ๊ฐ ๊ถŒํ•œ์— ํ• ๋‹น๋œ ์ ์ˆ˜(4, 2, 1)๋ฅผ ๋”ํ•ด์„œ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

๊ถŒํ•œ (Permission) ๊ธฐํ˜ธ (Symbol) ์ˆซ์ž ๊ฐ’ (Octal)
Read (์ฝ๊ธฐ) r 4
Write (์“ฐ๊ธฐ) w 2
Execute (์‹คํ–‰) x 1

์กฐํ•ฉ ์˜ˆ์‹œ

  • 7 (rwx): 4 + 2 + 1 (๋ชจ๋“  ๊ถŒํ•œ)
  • 6 (rw-): 4 + 2 (์ฝ๊ธฐ/์“ฐ๊ธฐ - ์ผ๋ฐ˜ ํŒŒ์ผ)
  • 5 (r-x): 4 + 1 (์ฝ๊ธฐ/์‹คํ–‰ - ์‹คํ–‰ ํŒŒ์ผ, ๋””๋ ‰ํ† ๋ฆฌ)
  • 0 (---): ๊ถŒํ•œ ์—†์Œ

3. ๊ถŒํ•œ ์„ค์ • ๋ฐฉ์‹ B: ๋ฌธ์ž์—ด ๋ชจ๋“œ (Symbolic Mode)

ํŠน์ • ๋Œ€์ƒ์˜ ๊ถŒํ•œ๋งŒ ์ฝ• ์ง‘์–ด์„œ ์ถ”๊ฐ€(+)ํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐ(-)ํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋Œ€์ƒ (Who) ์—ฐ์‚ฐ์ž (Op) ๊ถŒํ•œ (Permission)
u: User (์†Œ์œ ์ž)
g: Group (๊ทธ๋ฃน)
o: Other (๊ธฐํƒ€)
a: All (์ „์ฒด, ugo)
+: ์ถ”๊ฐ€
-: ์ œ๊ฑฐ
=: ์ง€์ •
r: ์ฝ๊ธฐ
w: ์“ฐ๊ธฐ
x: ์‹คํ–‰

์‚ฌ์šฉ ์˜ˆ์‹œ

# run.sh ํŒŒ์ผ์— ์‹คํ–‰(x) ๊ถŒํ•œ ์ถ”๊ฐ€ (๋ชจ๋“  ์‚ฌ์šฉ์ž์—๊ฒŒ)
chmod +x run.sh

# ๊ทธ๋ฃน(g)์—๊ฒŒ ์“ฐ๊ธฐ(w) ๊ถŒํ•œ ์ œ๊ฑฐ
chmod g-w file.txt

# ๊ธฐํƒ€ ์‚ฌ์šฉ์ž(o)์—๊ฒŒ ์ฝ๊ธฐ(r) ๊ถŒํ•œ๋งŒ ํ• ๋‹น
chmod o=r file.txt

Next Step:
ํŒŒ์ผ์˜ ๊ถŒํ•œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์†Œ์œ ๊ถŒ์„ ๋ณ€๊ฒฝํ•ด์•ผ ํ•  ๋•Œ๋Š” chown(Change Owner) ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. chown user:group filename ํ˜•์‹์„ ํ•จ๊ป˜ ์ตํ˜€๋‘์„ธ์š”.

[Windows] CMD๋ฅผ ๋ฆฌ๋ˆ…์Šค ํ„ฐ๋ฏธ๋„์ฒ˜๋Ÿผ: doskey๋ฅผ ์ด์šฉํ•œ Alias(๋งคํฌ๋กœ) ์„ค์ • ๋ฐ ์˜๊ตฌ ์ ์šฉ

Windows CMD ํ™˜๊ฒฝ์—์„œ ls, cp, rm ๋“ฑ ์ต์ˆ™ํ•œ Linux ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด doskey ๋งคํฌ๋กœ๋ฅผ ์„ค์ •ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ฐฐ์น˜ ํŒŒ์ผ(alias.cmd)์„ ์ž‘์„ฑํ•˜๊ณ  ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ(AutoRun)์— ๋“ฑ๋กํ•˜์—ฌ CMD ์‹คํ–‰ ์‹œ ์ž๋™์œผ๋กœ ๋ณ„์นญ์ด ์ ์šฉ๋˜๋„๋ก ๊ตฌ์„ฑํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ (Context)

Windows CMD๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ dir, copy, del ๋“ฑ์˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. Linux์˜ ls, cp ๋“ฑ์— ์ต์ˆ™ํ•œ ์‚ฌ์šฉ์ž๋Š” ๋งค๋ฒˆ ์˜คํƒ€๋ฅผ ๋‚ด๊ฑฐ๋‚˜ ๋ถˆํŽธํ•จ์„ ๊ฒช๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด doskey ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ช…๋ น์–ด์˜ ๋ณ„์นญ(Alias)์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Test Environment

  • OS: Windows 10 / 11
  • Shell: Command Prompt (CMD)

1. ๋งคํฌ๋กœ ํŒŒ์ผ ์ž‘์„ฑ (alias.cmd)

๋จผ์ €, ๋งคํฌ๋กœ ์ •์˜๋ฅผ ๋‹ด์„ ๋ฐฐ์น˜ ํŒŒ์ผ์„ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค. ์ ๋‹นํ•œ ์œ„์น˜(์˜ˆ: C:\Utils\alias.cmd)์— ํŒŒ์ผ์„ ๋งŒ๋“ค๊ณ  ์•„๋ž˜ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค.

Tip: $*๋Š” ์ž…๋ ฅ๋œ ๋ชจ๋“  ์ธ์ž(Arguments)๋ฅผ ๊ทธ๋Œ€๋กœ ์ „๋‹ฌํ•˜๊ฒ ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค. (์˜ˆ: ls -al ์ž…๋ ฅ ์‹œ dir -al๋กœ ๋ณ€ํ™˜)
@echo off

:: --- System & Utility ---
doskey alias   = doskey $*
doskey clear   = cls
doskey history = doskey /history
doskey man     = help $*

:: --- Process Management ---
doskey ps      = tasklist $*
doskey kill    = taskkill /PID $*

:: --- File & Directory Management ---
doskey ls      = dir $*
doskey ll      = dir $*
doskey cat     = type $*
doskey pwd     = cd
doskey cp      = copy $*
doskey mv      = move $*
doskey rm      = del $*

:: --- Search (grep -> findstr ๊ถŒ์žฅ) ---
:: find๋Š” ๋‹จ์ˆœ ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰, findstr์€ ์ •๊ทœ์‹ ์ง€์›
doskey grep    = find $* :: --- Permissions (Approximate) ---
doskey sudo    = runas /user:administrator $*

2. ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ๋“ฑ๋ก (์˜๊ตฌ ์ ์šฉ)

์œ„์—์„œ ๋งŒ๋“  alias.cmd ํŒŒ์ผ์€ CMD๋ฅผ ์ผค ๋•Œ๋งˆ๋‹ค ์‹คํ–‰ํ•ด์ค˜์•ผ ํ•˜๋Š” ๋ฒˆ๊ฑฐ๋กœ์›€์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ด๋ฅผ ์ž๋™ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ์˜ AutoRun ๊ธฐ๋Šฅ์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

์„ค์ • ๊ฒฝ๋กœ ๋ฐ ๊ฐ’

  • ๊ฒฝ๋กœ: HKEY_CURRENT_USER\Software\Microsoft\Command Processor
  • ๋ฌธ์ž์—ด ๊ฐ’(String Value): AutoRun
  • ๋ฐ์ดํ„ฐ(Data): [alias.cmd ํŒŒ์ผ์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ]

๋“ฑ๋ก ๋ฐฉ๋ฒ• A: ๋ช…๋ น์–ด๋กœ ํ•œ๋ฐฉ์— ๋“ฑ๋ก (๊ถŒ์žฅ)

๊ด€๋ฆฌ์ž ๊ถŒํ•œ์œผ๋กœ CMD๋ฅผ ์—ด๊ณ  ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์ž…๋ ฅํ•ฉ๋‹ˆ๋‹ค. (๊ฒฝ๋กœ๋Š” ๋ณธ์ธ ํŒŒ์ผ ์œ„์น˜์— ๋งž๊ฒŒ ์ˆ˜์ •ํ•˜์„ธ์š”)

:: ๊ฒฝ๋กœ ์˜ˆ์‹œ: E:\software\google\2_Shellscript\alias.cmd
reg add "HKCU\Software\Microsoft\Command Processor" /v AutoRun /t REG_SZ /d "E:\software\google\2_Shellscript\alias.cmd" /f

๋“ฑ๋ก ๋ฐฉ๋ฒ• B: regedit ์‚ฌ์šฉ (์ˆ˜๋™)

  1. Win + R ํ‚ค๋ฅผ ๋ˆ„๋ฅด๊ณ  regedit ์‹คํ–‰
  2. ์ปดํ“จํ„ฐ\HKEY_CURRENT_USER\Software\Microsoft\Command Processor ๊ฒฝ๋กœ๋กœ ์ด๋™
  3. ์šฐ์ธก ๋นˆ ๊ณต๊ฐ„ ์šฐํด๋ฆญ > ์ƒˆ๋กœ ๋งŒ๋“ค๊ธฐ > ๋ฌธ์ž์—ด ๊ฐ’ ์„ ํƒ
  4. ์ด๋ฆ„์„ AutoRun์œผ๋กœ ์ง€์ •
  5. ๋”๋ธ” ํด๋ฆญํ•˜์—ฌ ๊ฐ’ ๋ฐ์ดํ„ฐ์— alias.cmd์˜ ์ ˆ๋Œ€ ๊ฒฝ๋กœ ์ž…๋ ฅ

3. ์ ์šฉ ํ™•์ธ (Verification)

์„ค์ •์ด ์™„๋ฃŒ๋˜์—ˆ๋‹ค๋ฉด, ์ƒˆ๋กœ์šด CMD ์ฐฝ์„ ์—ด์–ด์„œ ๋ฆฌ๋ˆ…์Šค ๋ช…๋ น์–ด๊ฐ€ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

:: 1. CMD ์‹คํ–‰
C:\Users\User>

:: 2. ls ๋ช…๋ น์–ด ํ…Œ์ŠคํŠธ
C:\Users\User> ls
 C ๋“œ๋ผ์ด๋ธŒ์˜ ๋ณผ๋ฅจ์—๋Š” ์ด๋ฆ„์ด ์—†์Šต๋‹ˆ๋‹ค.
 ... (๋””๋ ‰ํ† ๋ฆฌ ๋ชฉ๋ก ์ถœ๋ ฅ) ...

:: 3. alias ๋ชฉ๋ก ํ™•์ธ
C:\Users\User> alias /macros

Next Step:
๋งŒ์•ฝ CMD๊ฐ€ ์•„๋‹Œ PowerShell์„ ์ฃผ๋กœ ์‚ฌ์šฉํ•˜์‹ ๋‹ค๋ฉด, Microsoft.PowerShell_profile.ps1 ํŒŒ์ผ์— Set-Alias ๋ช…๋ น์–ด๋ฅผ ์ถ”๊ฐ€ํ•˜์—ฌ ๋™์ผํ•œ ํ™˜๊ฒฝ์„ ๊ตฌ์ถ•ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Linux] ์„œ๋ฒ„ ๊ด€๋ฆฌ ํ•„์ˆ˜ ๋ช…๋ น์–ด ๋ชจ์Œ: ๋กœ๊ทธ ์ •๋ฆฌ(find), ๋„คํŠธ์›Œํฌ(netstat), ๋ฉ”๋ชจ๋ฆฌ ์ ๊ฒ€

๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ์šด์˜ ์ค‘ ๋กœ๊ทธ ํŒŒ์ผ ์ •๋ฆฌ, ๋””์Šคํฌ ์šฉ๋Ÿ‰ ํ™•๋ณด, ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ์ƒํƒœ ์ ๊ฒ€, ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ํ™•์ธ์„ ์œ„ํ•ด ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๋ช…๋ น์–ด ํŒจํ„ด(One-Liner)์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. RedHat/CentOS 7 ํ™˜๊ฒฝ์„ ๊ธฐ์ค€์œผ๋กœ ์ž‘์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7, RedHat 7.2
  • Shell: Bash

1. ํŒŒ์ผ ๊ฒ€์ƒ‰ ๋ฐ ์ •๋ฆฌ (File Management)

์„œ๋ฒ„ ์šด์˜ ์ค‘ ๊ฐ€์žฅ ํ”ํ•œ ์ด์Šˆ๋Š” ๋กœ๊ทธ ํŒŒ์ผ๋กœ ์ธํ•œ ๋””์Šคํฌ ํ’€(Disk Full)์ž…๋‹ˆ๋‹ค. find ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์˜ค๋ž˜๋œ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  ์‚ญ์ œํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค.

์ตœ๊ทผ ์ˆ˜์ •๋œ ํŒŒ์ผ ์ฐพ๊ธฐ

์„ค์ • ํŒŒ์ผ(xml ๋“ฑ)์ด ์ตœ๊ทผ์— ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•  ๋•Œ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

# ์ตœ๊ทผ 7์ผ ์ด๋‚ด(-7)์— ์ˆ˜์ •๋œ xml ํŒŒ์ผ ๊ฒ€์ƒ‰
find . -type f -name "*.xml" -mtime -7 -print

์˜ค๋ž˜๋œ ๋กœ๊ทธ ํŒŒ์ผ ์‚ญ์ œ

๋กœ๊ทธ ๋””๋ ‰ํ† ๋ฆฌ ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ์ผ์ • ๊ธฐ๊ฐ„์ด ์ง€๋‚œ ํŒŒ์ผ์„ ์‚ญ์ œํ•ฉ๋‹ˆ๋‹ค. ์‚ญ์ œ ๋ช…๋ น(rm)์„ ์‹คํ–‰ํ•˜๊ธฐ ์ „, ๋ฐ˜๋“œ์‹œ ์กฐํšŒ(ls)๋ฅผ ๋จผ์ € ์ˆ˜ํ–‰ํ•˜์—ฌ ๋Œ€์ƒ์„ ๊ฒ€์ฆํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

# 1. ๋Œ€์ƒ ํ™•์ธ (7์ผ์ด ์ง€๋‚œ ๋กœ๊ทธ ํŒŒ์ผ ์กฐํšŒ)
find /log/server1 -name "*.log" -mtime +7 -print

# 2. ์‚ญ์ œ ์‹คํ–‰ (๋ฐฉ๋ฒ• A: -delete ์˜ต์…˜ ์‚ฌ์šฉ)
find /log/server1 -name "*.log" -mtime +7 -delete

# 2. ์‚ญ์ œ ์‹คํ–‰ (๋ฐฉ๋ฒ• B: -exec rm ์‚ฌ์šฉ, ๊ฐ€์žฅ ๋ฒ”์šฉ์ )
find /log/server1 -name "*.log" -mtime +7 -exec rm -f {} \;

# 3. 30์ผ ์ด์ƒ ๋œ ๋กœ๊ทธ ํŒŒ์ผ๋งŒ ๊ฐ•์ œ ์‚ญ์ œ
find /log/server1 -type f -name "*.log" -ctime +30 -exec rm -rf {} \;

๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ๊ฒ€์ƒ‰

๋””์Šคํฌ ์šฉ๋Ÿ‰์„ ๋งŽ์ด ์ฐจ์ง€ํ•˜๋Š” ํŒŒ์ผ์„ ์ฐพ์Šต๋‹ˆ๋‹ค.

# 3GB ์ด์ƒ์ธ ํŒŒ์ผ์„ ์ฐพ์•„ ์šฉ๋Ÿ‰๊ณผ ํ•จ๊ป˜ ์ถœ๋ ฅ
find . -size +3000000k -exec ls -lh {} \+

๋‚ ์งœ์ˆœ ํŒŒ์ผ ์ •๋ ฌ ๋ณด๊ธฐ

๊ธฐ๋ณธ ls -l์˜ ๋‚ ์งœ ํฌ๋งท์ด ๋ณด๊ธฐ ํž˜๋“ค ๋•Œ ISO ํฌ๋งท์œผ๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค.

ls --time-style="+%Y-%m-%d %H:%M:%S" -altr | grep ^- | more

2. ๋„คํŠธ์›Œํฌ ์ƒํƒœ ์ ๊ฒ€ (Network Monitoring)

์›น ์„œ๋ฒ„๋‚˜ DB ์„œ๋ฒ„์˜ ํ˜„์žฌ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์—ฌ ํŠธ๋ž˜ํ”ฝ ์ŠคํŒŒ์ดํฌ๋‚˜ ์—ฐ๊ฒฐ ๋ˆ„์ˆ˜(Leak)๋ฅผ ์ ๊ฒ€ํ•ฉ๋‹ˆ๋‹ค.

๋™์‹œ ์ ‘์†์ž ์ˆ˜ ํ™•์ธ (Web Server)

ESTABLISHED ์ƒํƒœ๋Š” ํ˜„์žฌ ์—ฐ๊ฒฐ์ด ์ˆ˜๋ฆฝ๋˜์–ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ์ƒํƒœ๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

# 80 ํฌํŠธ ๋™์‹œ ์ ‘์†์ž ์ˆ˜ ์นด์šดํŠธ
netstat -nap | grep :80 | grep ESTABLISHED | wc -l

# 8080 ํฌํŠธ(WAS) ๋™์‹œ ์ ‘์†์ž ์ˆ˜ ์นด์šดํŠธ
netstat -nap | grep :8080 | grep ESTABLISHED | wc -l

DB ์—ฐ๊ฒฐ ํ’€(Connection Pool) ํ™•์ธ

WAS์—์„œ DB๋กœ ๋งบ์€ ์—ฐ๊ฒฐ ๊ฐœ์ˆ˜๋ฅผ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํฌํŠธ ๋ฒˆํ˜ธ๋กœ grepํ•˜์—ฌ ์ •๋ ฌํ•ฉ๋‹ˆ๋‹ค.

# ํŠน์ • ํฌํŠธ์™€ ์—ฐ๊ฒฐ๋œ ์†Œ์ผ“ ์ •๋ณด ํ™•์ธ
netstat -anp | grep {port_number}

# ์—ฐ๊ฒฐ ๊ฐœ์ˆ˜ ์นด์šดํŠธ
netstat -anp | grep {port_number} | wc -l

3. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ  ์ ๊ฒ€ (Memory Check)

๋ฆฌ๋ˆ…์Šค์˜ free ๋ช…๋ น์–ด๋Š” ๋ฒ„ํผ/์บ์‹œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ํฌํ•จํ•˜์—ฌ ๋ณด์—ฌ์ฃผ๊ธฐ ๋•Œ๋ฌธ์—, ์‹ค์ œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ(Actual Used)๋ฅผ ๊ณ„์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณ„๋„์˜ ์—ฐ์‚ฐ์ด ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ๊ณ„์‚ฐ ์Šคํฌ๋ฆฝํŠธ (Shell)

์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ๋Œ€๋น„ ์‹ค์ œ ์‚ฌ์šฉ๋ฅ ์„ ๋ฐฑ๋ถ„์œจ(%)๋กœ ๊ณ„์‚ฐํ•˜๋Š” ์Šคํฌ๋ฆฝํŠธ์ž…๋‹ˆ๋‹ค.

#!/bin/sh
# free ๋ช…๋ น์–ด์˜ ์ถœ๋ ฅ ์ปฌ๋Ÿผ ์œ„์น˜๋Š” OS ๋ฒ„์ „์— ๋”ฐ๋ผ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ํ™•์ธ ํ•„์š” (awk $2, $3...)

# Total Memory
TOTAL=`free | grep ^Mem | awk '{print $2}'`

# Used Memory (OS ๊ด€์ )
USED1=`free | grep ^Mem | awk '{print $3}'`

# Used Memory (Buffer/Cache ์ œ์™ธ, CentOS 6 ์ดํ•˜ ๊ตฌ๋ฒ„์ „ ๋ฐฉ์‹)
# USED2=`free | grep ^-/+ | awk '{print $3}'`

# CentOS 7 ์ด์ƒ (available ์ปฌ๋Ÿผ ๋“ฑ ๊ณ ๋ ค ํ•„์š”ํ•˜๋‚˜ ๋‹จ์ˆœ ๊ณ„์‚ฐ ์‹œ)
# ๋ฒ„ํผ/์บ์‹œ๋ฅผ ํฌํ•จํ•œ ๋‹จ์ˆœ ์‚ฌ์šฉ๋ฅ 
NOMINAL=$((100*USED1/TOTAL))

echo "Memory Usage: ${NOMINAL}%"

One-Liner (๊ฐ„ํŽธ ๊ณ„์‚ฐ)

awk๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ•œ ์ค„๋กœ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ๋ฅ ์„ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

# ์ „์ฒด ๋ฉ”๋ชจ๋ฆฌ ๋Œ€๋น„ ์‚ฌ์šฉ๋Ÿ‰(Used) ๋น„์œจ
awk '/^Mem/ {printf("Used: %u%%", 100*$3/$2);}' <(free -m)

# (์ฐธ๊ณ ) ๋ฒ„ํผ/์บ์‹œ๋ฅผ ์ œ์™ธํ•œ ์‹ค ์‚ฌ์šฉ๋ฅ  ๊ณ„์‚ฐ์€ free -m์˜ available ์ปฌ๋Ÿผ์„ ํ™œ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ •ํ™•ํ•ฉ๋‹ˆ๋‹ค.
free -m | awk 'NR==2{printf "Memory Usage: %.2f%%\n", ($3/$2)*100 }'

Next Step:
๋ฐ˜๋ณต์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” ์œ„ ๋ช…๋ น์–ด๋“ค์„ ~/.bash_profile์— alias๋กœ ๋“ฑ๋กํ•ด๋‘๋ฉด, ๊ธด ๋ช…๋ น์–ด๋ฅผ ํƒ€์ดํ•‘ํ•˜๋Š” ์ˆ˜๊ณ ๋ฅผ ๋œ๊ณ  ์˜คํƒ€๋กœ ์ธํ•œ ์‚ฌ๊ณ ๋ฅผ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

[Linux] CentOS 7 ํ˜ธ์ŠคํŠธ๋„ค์ž„(Hostname) ์˜๊ตฌ ๋ณ€๊ฒฝ ๋ฐ ํ•„์ˆ˜ ํ›„์† ์กฐ์น˜ (hostnamectl)

CentOS 7 ๋ฐ systemd ๊ธฐ๋ฐ˜ ๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ์—์„œ hostnamectl ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ŠคํŠธ๋„ค์ž„์„ ์˜๊ตฌ์ ์œผ๋กœ ๋ณ€๊ฒฝํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋ณ€๊ฒฝ ํ›„ ์‰˜ ํ”„๋กฌํ”„ํŠธ์— ์ฆ‰์‹œ ๋ฐ˜์˜ํ•˜๋Š” ๋ฐฉ๋ฒ•๊ณผ /etc/hosts ํŒŒ์ผ ์ˆ˜์ •์˜ ์ค‘์š”์„ฑ์„ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

0. ๋ฐฐ๊ฒฝ ์ง€์‹ (Context)

ํ˜ธ์ŠคํŠธ๋„ค์ž„์€ ๋„คํŠธ์›Œํฌ ์ƒ์—์„œ ์„œ๋ฒ„๋ฅผ ์‹๋ณ„ํ•˜๋Š” ์ด๋ฆ„์ž…๋‹ˆ๋‹ค. ๊ณผ๊ฑฐ์—๋Š” /etc/sysconfig/network ํŒŒ์ผ์„ ์ˆ˜์ •ํ•˜๊ณ  ์žฌ๋ถ€ํŒ…ํ•ด์•ผ ํ–ˆ์œผ๋‚˜, CentOS 7๋ถ€ํ„ฐ๋Š” hostnamectl ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ์žฌ๋ถ€ํŒ… ์—†์ด ์ฆ‰์‹œ ์„ค์ •์„ ์˜๊ตฌ ๋ฐ˜์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7.2
  • System: systemd based

1. ํ˜ธ์ŠคํŠธ๋„ค์ž„ ๋ณ€๊ฒฝ (hostnamectl)

hostnamectl ๋ช…๋ น์€ ์ปค๋„ ํ˜ธ์ŠคํŠธ๋„ค์ž„ ์„ค์ •๊ณผ /etc/hostname ํŒŒ์ผ ์ˆ˜์ •์„ ๋™์‹œ์— ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ƒํƒœ ํ™•์ธ

hostnamectl status

๋ณ€๊ฒฝ ๋ช…๋ น์–ด

# ๊ตฌ๋ฌธ: hostnamectl set-hostname [์ƒˆ๋กœ์šด_์ด๋ฆ„]
hostnamectl set-hostname web-server-01

2. ๋ณ€๊ฒฝ ์‚ฌํ•ญ ํ™•์ธ ๋ฐ ์ ์šฉ (Verification)

๋ช…๋ น์–ด ์‹คํ–‰ ์ฆ‰์‹œ ์‹œ์Šคํ…œ ์„ค์ •์€ ๋ณ€๊ฒฝ๋˜์ง€๋งŒ, ํ˜„์žฌ ๋กœ๊ทธ์ธ๋œ ํ„ฐ๋ฏธ๋„์˜ ํ”„๋กฌํ”„ํŠธ(Shell Prompt)์—๋Š” ๋ฐ˜์˜๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ณ€๊ฒฝ ํ™•์ธ

# 1. ์„ค์ •๊ฐ’ ํ™•์ธ
hostname

# 2. ์ƒ์„ธ ํ™•์ธ
hostnamectl status

ํ„ฐ๋ฏธ๋„ ํ”„๋กฌํ”„ํŠธ ๊ฐฑ์‹ 

๋กœ๊ทธ์•„์›ƒ ํ›„ ๋‹ค์‹œ ๋กœ๊ทธ์ธ(Reconnect)ํ•˜๋ฉด ํ”„๋กฌํ”„ํŠธ๊ฐ€ ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค. ์žฌ์ ‘์† ์—†์ด ๋ฐ”๋กœ ํ™•์ธํ•˜๋ ค๋ฉด ์•„๋ž˜ ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”.

# ํ˜„์žฌ ์‰˜ ์„ธ์…˜ ๊ฐฑ์‹ 
exec bash

๊ฒฐ๊ณผ: [root@old-name ~]# ์—์„œ [root@web-server-01 ~]# ๋กœ ๋ณ€๊ฒฝ๋จ.


3. ํ•„์ˆ˜ ํ›„์† ์กฐ์น˜: /etc/hosts ์ˆ˜์ •

ํ˜ธ์ŠคํŠธ๋„ค์ž„์„ ๋ณ€๊ฒฝํ–ˆ๋‹ค๋ฉด, ์„œ๋ฒ„ ์ž์‹ ์ด ์ž์‹ ์˜ ์ด๋ฆ„์„ ์ฐพ์•„๊ฐˆ ์ˆ˜ ์žˆ๋„๋ก ๋กœ์ปฌ DNS ์„ค์ • ํŒŒ์ผ์ธ /etc/hosts๋„ ๋ฐ˜๋“œ์‹œ ์ˆ˜์ •ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋ฅผ ๋ˆ„๋ฝํ•˜๋ฉด sudo ๋ช…๋ น์–ด ์‹คํ–‰์ด ๋А๋ ค์ง€๊ฑฐ๋‚˜ ์ผ๋ถ€ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ธฐ๋™ ์‹œ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํŒŒ์ผ ์ˆ˜์ •

vi /etc/hosts

์ˆ˜์ • ๋‚ด์šฉ

๊ธฐ์กด ํ˜ธ์ŠคํŠธ๋„ค์ž„์ด ์ ํžŒ ๋ถ€๋ถ„์„ ์ƒˆ๋กœ์šด ์ด๋ฆ„์œผ๋กœ ๋ณ€๊ฒฝํ•˜๊ฑฐ๋‚˜ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค.

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6

# ๋ณ€๊ฒฝ๋œ ํ˜ธ์ŠคํŠธ๋„ค์ž„ ์ถ”๊ฐ€ (์ž์‹ ์˜ IP ๋˜๋Š” Loopback์— ๋งคํ•‘)
127.0.0.1   web-server-01
Tip: ํด๋Ÿฌ์Šคํ„ฐ๋ง(Cluster) ํ™˜๊ฒฝ์ด๋‚˜ WAS(WebSphere, JBoss) ํ™˜๊ฒฝ์—์„œ๋Š” 127.0.0.1 ๋Œ€์‹  ์‹ค์ œ ์„œ๋ฒ„์˜ ๊ณต์ธ IP(๋˜๋Š” ์‚ฌ์„ค IP)์— ํ˜ธ์ŠคํŠธ๋„ค์ž„์„ ๋งคํ•‘ํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค.

[Linux] FTP CLI ๋ช…๋ น์–ด ์™„๋ฒฝ ๊ฐ€์ด๋“œ ๋ฐ ์ƒํƒœ ์ฝ”๋“œ(Response Code) ์ •๋ฆฌ

๋ฆฌ๋ˆ…์Šค ์‰˜ ํ™˜๊ฒฝ์—์„œ FTP ์„œ๋ฒ„์— ์ ‘์†ํ•˜์—ฌ ํŒŒ์ผ์„ ์—…๋กœ๋“œ/๋‹ค์šด๋กœ๋“œํ•˜๋Š” ํ•„์ˆ˜ ๋ช…๋ น์–ด์™€ ์ฃผ์š” ์˜ต์…˜์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ๋˜ํ•œ ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ… ์‹œ ์œ ์šฉํ•œ FTP ์‘๋‹ต ์ฝ”๋“œ(Response Code)์˜ ์˜๋ฏธ๋ฅผ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

[Image of FTP client server data transfer diagram]

1. ์„œ๋ฒ„ ์ ‘์† ๋ฐ ๋กœ๊ทธ์ธ (Connection)

FTP ํด๋ผ์ด์–ธํŠธ๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ์›๊ฒฉ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๋Š” ๊ณผ์ •์ž…๋‹ˆ๋‹ค. open ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ์‹คํ–‰ ์‹œ ์ธ์ž๋กœ IP๋ฅผ ์ „๋‹ฌํ•ฉ๋‹ˆ๋‹ค.

[test@zeroTest]$ ftp 210.xxx.xxx.xxx
Connected to 210.xxx.xxx.xxx.
220 web17 FTP server (Version 5.60) ready.
Name (210.xxx.xxx.xxx:test): [์•„์ด๋”” ์ž…๋ ฅ]
331 Password required for user.
Password: [ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ]
230 User test logged in.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

2. ๋””๋ ‰ํ† ๋ฆฌ ํƒ์ƒ‰ (Navigation)

FTP๋Š” ์›๊ฒฉ(Remote) ์„œ๋ฒ„์™€ ๋กœ์ปฌ(Local) ํด๋ผ์ด์–ธํŠธ์˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ ๋™์‹œ์— ์ œ์–ดํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๋กœ์ปฌ ๋ช…๋ น์–ด ์•ž์—๋Š” ์ฃผ๋กœ l(local)์ด ๋ถ™์Šต๋‹ˆ๋‹ค.

์›๊ฒฉ ์„œ๋ฒ„ (Remote) ์ œ์–ด

  • pwd : ์›๊ฒฉ ์„œ๋ฒ„์˜ ํ˜„์žฌ ๊ฒฝ๋กœ ํ™•์ธ
  • ls (๋˜๋Š” dir) : ์›๊ฒฉ ์„œ๋ฒ„์˜ ํŒŒ์ผ ๋ชฉ๋ก ์ถœ๋ ฅ
  • cd [path] : ์›๊ฒฉ ์„œ๋ฒ„์˜ ๋””๋ ‰ํ† ๋ฆฌ ์ด๋™
  • cdup : ์›๊ฒฉ ์„œ๋ฒ„์—์„œ ์ƒ์œ„ ๋””๋ ‰ํ† ๋ฆฌ๋กœ ์ด๋™

๋กœ์ปฌ ํด๋ผ์ด์–ธํŠธ (Local) ์ œ์–ด

  • !pwd : ๋กœ์ปฌ ํด๋ผ์ด์–ธํŠธ์˜ ํ˜„์žฌ ๊ฒฝ๋กœ ํ™•์ธ
  • lcd [path] : ๋กœ์ปฌ ํด๋ผ์ด์–ธํŠธ์˜ ์ž‘์—… ๋””๋ ‰ํ† ๋ฆฌ ๋ณ€๊ฒฝ (๋‹ค์šด๋กœ๋“œ/์—…๋กœ๋“œ ์œ„์น˜ ๋ณ€๊ฒฝ ์‹œ ํ•„์ˆ˜)
# ๋กœ์ปฌ ๋‹ค์šด๋กœ๋“œ ๊ฒฝ๋กœ๋ฅผ /bin์œผ๋กœ ๋ณ€๊ฒฝ ์˜ˆ์‹œ
ftp> lcd /bin
Local directory now /bin

3. ํŒŒ์ผ ์ „์†ก ์„ค์ • (Transfer Settings)

ํŒŒ์ผ ์ „์†ก ์ „, ์ „์†ก ๋ชจ๋“œ์™€ ์‹œ๊ฐ์  ํ”ผ๋“œ๋ฐฑ ์˜ต์…˜์„ ์„ค์ •ํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

์ „์†ก ๋ชจ๋“œ (Transfer Mode)

๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ(์ด๋ฏธ์ง€, ์‹คํ–‰ํŒŒ์ผ, ์••์ถ•ํŒŒ์ผ ๋“ฑ) ์ „์†ก ์‹œ ๋ฐ˜๋“œ์‹œ binary ๋ชจ๋“œ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํŒŒ์ผ ๊นจ์ง์„ ๋ฐฉ์ง€ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

  • ascii (๋˜๋Š” as) : ํ…์ŠคํŠธ ํŒŒ์ผ ์ „์†ก ๋ชจ๋“œ
  • binary (๋˜๋Š” bi) : ๋ฐ”์ด๋„ˆ๋ฆฌ ์ „์†ก ๋ชจ๋“œ (๊ถŒ์žฅ)

ํŽธ์˜ ์˜ต์…˜

  • hash : ํŒŒ์ผ ์ „์†ก ์ง„ํ–‰ ์ƒํ™ฉ์„ #(Hash Mark)๋กœ ํ‘œ์‹œ (๋Œ€์šฉ๋Ÿ‰ ํŒŒ์ผ ์ „์†ก ์‹œ ์œ ์šฉ)
  • prompt : ๋‹ค์ค‘ ํŒŒ์ผ ์ „์†ก(mget/mput) ์‹œ ํŒŒ์ผ๋งˆ๋‹ค ํ™•์ธํ•˜๋Š” ๊ณผ์ •์„ On/Off
ftp> binary
200 Type set to I.
ftp> hash
Hash mark printing on (1024 bytes/hash mark).

4. ํŒŒ์ผ ์—…๋กœ๋“œ ๋ฐ ๋‹ค์šด๋กœ๋“œ

๋‹จ์ผ ํŒŒ์ผ ์ฒ˜๋ฆฌ์™€ ๋‹ค์ค‘ ํŒŒ์ผ(Wildcard * ์‚ฌ์šฉ) ์ฒ˜๋ฆฌ ๋ช…๋ น์–ด๊ฐ€ ๊ตฌ๋ถ„๋ฉ๋‹ˆ๋‹ค.

๋‹ค์šด๋กœ๋“œ (Server -> Local)

  • get [filename] : ๋‹จ์ผ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ
  • mget [pattern] : ๋‹ค์ค‘ ํŒŒ์ผ ๋‹ค์šด๋กœ๋“œ (์˜ˆ: mget *.pdf)
ftp> get thinkinjava.pdf
local: R389.PDF remote: R389.PDF
200 PORT command successful.
150 Opening BINARY mode data connection for R389.PDF (44028 bytes).
#######################
226 Transfer complete.

์—…๋กœ๋“œ (Local -> Server)

  • put [filename] : ๋‹จ์ผ ํŒŒ์ผ ์—…๋กœ๋“œ
  • mput [pattern] : ๋‹ค์ค‘ ํŒŒ์ผ ์—…๋กœ๋“œ (์˜ˆ: mput *.html)

5. ๊ธฐํƒ€ ๊ด€๋ฆฌ ๋ช…๋ น์–ด

  • delete [filename] / mdelete [pattern] : ์›๊ฒฉ ํŒŒ์ผ ์‚ญ์ œ
  • mkdir [dirname] / rmdir [dirname] : ์›๊ฒฉ ๋””๋ ‰ํ† ๋ฆฌ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ
  • chmod [mode] [file] : ์›๊ฒฉ ํŒŒ์ผ ๊ถŒํ•œ ๋ณ€๊ฒฝ (์˜ˆ: chmod 755 run.sh)
  • rename [old] [new] : ํŒŒ์ผ ์ด๋ฆ„ ๋ณ€๊ฒฝ
  • size [filename] : ํŒŒ์ผ ํฌ๊ธฐ(Byte) ํ™•์ธ
  • bye, quit, exit : ์ ‘์† ์ข…๋ฃŒ

6. FTP ์‘๋‹ต ์ฝ”๋“œ (Response Codes)

์„œ๋ฒ„๊ฐ€ ๋ฐ˜ํ™˜ํ•˜๋Š” 3์ž๋ฆฌ ์ˆซ์ž๋ฅผ ํ†ตํ•ด ํŠธ๋Ÿฌ๋ธ”์ŠˆํŒ…์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ฃผ์š” ์ฝ”๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

Code Description (์˜๋ฏธ)
150 ํŒŒ์ผ ์ƒํƒœ ์ •์ƒ. ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์„ ์—ฝ๋‹ˆ๋‹ค. (์ „์†ก ์‹œ์ž‘)
200 ๋ช…๋ น์–ด ์„ฑ๊ณต (OK)
220 ์„œ๋น„์Šค ์ค€๋น„ ์™„๋ฃŒ (์ ‘์† ์ดˆ๊ธฐ ๋ฉ”์‹œ์ง€)
226 ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ ๋‹ซํž˜. ์š”์ฒญ ์ž‘์—… ์„ฑ๊ณต (์ „์†ก ์™„๋ฃŒ)
230 ์‚ฌ์šฉ์ž ๋กœ๊ทธ์ธ ์„ฑ๊ณต
331 ์‚ฌ์šฉ์ž ์ด๋ฆ„ ํ™•์ธ๋จ. ํŒจ์Šค์›Œ๋“œ ํ•„์š”
421 ์„œ๋น„์Šค ์‚ฌ์šฉ ๋ถˆ๊ฐ€. ์—ฐ๊ฒฐ ์ข…๋ฃŒ
425 ๋ฐ์ดํ„ฐ ์—ฐ๊ฒฐ์„ ์—ด ์ˆ˜ ์—†์Œ (๋ฐฉํ™”๋ฒฝ, Passive ๋ชจ๋“œ ์ด์Šˆ ๋“ฑ)
530 ๋กœ๊ทธ์ธ ์‹คํŒจ (ID/PW ์˜ค๋ฅ˜)
550 ์š”์ฒญ ์ž‘์—… ์‹คํŒจ (ํŒŒ์ผ ์—†์Œ, ๊ถŒํ•œ ๋ถ€์กฑ ๋“ฑ)

Next Step:
FTP๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์•”ํ˜ธํ™”ํ•˜์ง€ ์•Š์•„ ๋ณด์•ˆ์— ์ทจ์•ฝํ•ฉ๋‹ˆ๋‹ค. OpenSSH์— ํฌํ•จ๋œ sftp ๋ช…๋ น์–ด๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์•”ํ˜ธํ™”๋œ ํŒŒ์ผ ์ „์†ก ํ™˜๊ฒฝ์„ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๊ฒ€ํ† ํ•ด๋ณด์‹ญ์‹œ์˜ค.

[Windows] CMD ํ”„๋กœ์„ธ์Šค ๋ฐ ํฌํŠธ ๊ด€๋ฆฌ ์™„์ „ ์ •๋ณต (tasklist, netstat, taskkill)

Windows CMD ํ™˜๊ฒฝ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค๋ฅผ ์กฐํšŒํ•˜๊ณ , ํŠน์ • ํฌํŠธ๋ฅผ ์ ์œ  ์ค‘์ธ ์„œ๋น„์Šค๋ฅผ ์‹๋ณ„ํ•˜๋ฉฐ, ๋ฌธ์ œ ๋ฐœ์ƒ ์‹œ ํ•ด๋‹น ํ”„๋กœ์„ธ์Šค๋ฅผ ๊ฐ•์ œ๋กœ ์ข…๋ฃŒํ•˜๋Š” ํ•„์ˆ˜ ๋ช…๋ น์–ด(tasklist, netstat, taskkill) ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

1. ํ”„๋กœ์„ธ์Šค ์กฐํšŒ (tasklist)

ํ˜„์žฌ ์‹œ์Šคํ…œ์—์„œ ์‹คํ–‰ ์ค‘์ธ ํ”„๋กœ์„ธ์Šค ๋ชฉ๋ก์„ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค. ํ•„ํ„ฐ(/fi) ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ํŠน์ • ํ”„๋กœ์„ธ์Šค๋งŒ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰

ํŠน์ • ์‹คํ–‰ ํŒŒ์ผ๋ช…(Image Name)์„ ๊ธฐ์ค€์œผ๋กœ ํ”„๋กœ์„ธ์Šค๋ฅผ ์ฐพ์Šต๋‹ˆ๋‹ค. (์˜ˆ: java.exe)

:: ์‚ฌ์šฉ๋ฒ•: tasklist /fi "imagename eq [ํ”„๋กœ์„ธ์Šค๋ช…]"
C:\Users> tasklist /fi "imagename eq java.exe"

์ด๋ฏธ์ง€ ์ด๋ฆ„                    PID ์„ธ์…˜ ์ด๋ฆ„              ์„ธ์…˜#  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
========================= ======== ================ =========== ============
java.exe                      1234 Console                    1    150,000 K

2. ํฌํŠธ ์ ์œ  ํ™•์ธ (netstat)

๋„คํŠธ์›Œํฌ ์ƒํƒœ๋ฅผ ํ™•์ธํ•˜์—ฌ ํŠน์ • ํฌํŠธ๋ฅผ ๋ฆฌ์Šจ(LISTEN)ํ•˜๊ณ  ์žˆ๋Š” ํ”„๋กœ์„ธ์Šค์˜ PID๋ฅผ ์‹๋ณ„ํ•ฉ๋‹ˆ๋‹ค.

Listening ํฌํŠธ ๋ฐ PID ํ™•์ธ

-ano ์˜ต์…˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ชจ๋“  ์—ฐ๊ฒฐ, ์ˆซ์ž ํ˜•์‹์˜ ์ฃผ์†Œ, ๊ทธ๋ฆฌ๊ณ  ์†Œ์œ  ํ”„๋กœ์„ธ์Šค ID(PID)๋ฅผ ํ•จ๊ป˜ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

:: ์‚ฌ์šฉ๋ฒ•: netstat -ano | find "[๋ฌธ์ž์—ด]"
C:\Users> netstat -ano | find "LISTEN"

  ํ”„๋กœํ† ์ฝœ   ๋กœ์ปฌ ์ฃผ์†Œ              ์™ธ๋ถ€ ์ฃผ์†Œ               ์ƒํƒœ            PID
  TCP    0.0.0.0:80             0.0.0.0:0              LISTENING       564
  TCP    0.0.0.0:135            0.0.0.0:0              LISTENING       892

3. PID๋กœ ํ”„๋กœ์„ธ์Šค ์‹๋ณ„ (Reverse Lookup)

netstat์œผ๋กœ ํ™•์ธํ•œ PID(์˜ˆ: 564)๊ฐ€ ์‹ค์ œ๋กœ ์–ด๋–ค ์„œ๋น„์Šค์ธ์ง€ tasklist๋ฅผ ํ†ตํ•ด ์—ญ์ถ”์ ํ•ฉ๋‹ˆ๋‹ค.

PID๋กœ ๊ฒ€์ƒ‰

:: ์‚ฌ์šฉ๋ฒ•: tasklist /fi "pid eq [PID]"
C:\Users> tasklist /fi "pid eq 564"

์ด๋ฏธ์ง€ ์ด๋ฆ„                    PID ์„ธ์…˜ ์ด๋ฆ„              ์„ธ์…˜#  ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
========================= ======== ================ =========== ============
svchost.exe                    564 Services                   0     11,444 K

4. ํ”„๋กœ์„ธ์Šค ๊ฐ•์ œ ์ข…๋ฃŒ (taskkill)

์‘๋‹ตํ•˜์ง€ ์•Š๊ฑฐ๋‚˜ ํŠน์ • ํฌํŠธ๋ฅผ ์ ์œ ํ•˜์—ฌ ์ถฉ๋Œ์„ ์ผ์œผํ‚ค๋Š” ํ”„๋กœ์„ธ์Šค๋ฅผ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

PID๋ฅผ ์ด์šฉํ•œ ๊ฐ•์ œ ์ข…๋ฃŒ

/f ์˜ต์…˜์€ ๊ฐ•์ œ ์ข…๋ฃŒ(Force)๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ, /pid ์˜ต์…˜์œผ๋กœ ๋Œ€์ƒ์„ ์ง€์ •ํ•ฉ๋‹ˆ๋‹ค.

:: ์‚ฌ์šฉ๋ฒ•: taskkill /f /pid [PID]
C:\Users> taskkill /f /pid 6985

์„ฑ๊ณต: ํ”„๋กœ์„ธ์Šค(PID 6985)๊ฐ€ ์ข…๋ฃŒ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ด๋ฏธ์ง€ ์ด๋ฆ„์„ ์ด์šฉํ•œ ๊ฐ•์ œ ์ข…๋ฃŒ

๋™์ผํ•œ ์ด๋ฆ„์˜ ๋ชจ๋“  ํ”„๋กœ์„ธ์Šค๋ฅผ ํ•œ ๋ฒˆ์— ์ข…๋ฃŒํ•  ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค.

:: ์‚ฌ์šฉ๋ฒ•: taskkill /f /im [์ด๋ฏธ์ง€์ด๋ฆ„]
C:\Users> taskkill /f /im notepad.exe

5. ๋„์›€๋ง ๋ฐ ์˜ต์…˜ ํ™•์ธ

๊ฐ ๋ช…๋ น์–ด์˜ ์ƒ์„ธํ•œ ํ•„ํ„ฐ ์˜ต์…˜์ด๋‚˜ ์‚ฌ์šฉ๋ฒ•์ด ๊ถ๊ธˆํ•  ๊ฒฝ์šฐ /? ํ”Œ๋ž˜๊ทธ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

tasklist /?
taskkill /?

Next Step:
CMD ๋ช…๋ น์–ด๋ณด๋‹ค ๋” ๊ฐ•๋ ฅํ•˜๊ณ  ๊ฐ์ฒด ์ง€ํ–ฅ์ ์ธ ๊ด€๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด, PowerShell์˜ Get-Process, Stop-Process, Get-NetTCPConnection Cmdlet ์‚ฌ์šฉ๋ฒ•์„ ํ•™์Šตํ•ด ๋ณด์‹œ๊ธธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

[Linux] zip/unzip ์„ค์น˜ ๋ฐ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ• (Password ์„ค์ •, Legacy Unix ์ˆ˜๋™ ์„ค์น˜)

Linux ๋ฐ Unix ํ™˜๊ฒฝ์—์„œ zip ํฌ๋งท์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•œ ์„ค์น˜ ๋ฐฉ๋ฒ•๊ณผ ๋ช…๋ น์–ด ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. yum์„ ์ด์šฉํ•œ ๊ฐ„ํŽธ ์„ค์น˜๋ถ€ํ„ฐ ํŒจ์Šค์›Œ๋“œ ์„ค์ • ๋ฐฉ๋ฒ•, ๊ทธ๋ฆฌ๊ณ  ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋Š” Legacy Unix ํ™˜๊ฒฝ(AIX, Solaris ๋“ฑ)์—์„œ์˜ ์ˆ˜๋™ ์„ค์น˜ ์ ˆ์ฐจ๋ฅผ ํฌํ•จํ•ฉ๋‹ˆ๋‹ค.

1. ํŒจํ‚ค์ง€ ์„ค์น˜ (Installation)

CentOS, RHEL ๋“ฑ ์ผ๋ฐ˜์ ์ธ ๋ฆฌ๋ˆ…์Šค ๋ฐฐํฌํŒ์—์„œ๋Š” ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋ฅผ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์„ค์น˜ ํ™•์ธ ๋ฐ ์„ค์น˜

# ์„ค์น˜ ์—ฌ๋ถ€ ํ™•์ธ
rpm -qa | grep zip

# ํŒจํ‚ค์ง€ ์„ค์น˜ (root ๊ถŒํ•œ ํ•„์š”)
yum install zip unzip

2. zip ๋ช…๋ น์–ด (์••์ถ•ํ•˜๊ธฐ)

ํŒŒ์ผ์ด๋‚˜ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ .zip ํฌ๋งท์œผ๋กœ ์••์ถ•ํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ตฌ๋ฌธ

# ํ˜•์‹
zip [์˜ต์…˜] [์ƒ์„ฑํ• ํŒŒ์ผ๋ช….zip] [๋Œ€์ƒํŒŒ์ผ_๋˜๋Š”_๋””๋ ‰ํ† ๋ฆฌ]

์‚ฌ์šฉ ์˜ˆ์‹œ

# 1. ๋””๋ ‰ํ† ๋ฆฌ ์žฌ๊ท€์  ์••์ถ• (-r ์˜ต์…˜ ํ•„์ˆ˜)
# directory ํด๋” ํ•˜์œ„์˜ ๋ชจ๋“  ํŒŒ์ผ์„ name.zip์œผ๋กœ ์••์ถ•
zip -r name.zip directory

# 2. ํŒจ์Šค์›Œ๋“œ ์„ค์ • ์••์ถ• (-P ์˜ต์…˜)
# ๋ณด์•ˆ์ƒ ์ฃผ์˜: ๋ช…๋ น์–ด ํžˆ์Šคํ† ๋ฆฌ์— ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๋‚จ์„ ์ˆ˜ ์žˆ์Œ
zip -P [password] -r name.zip directory

3. unzip ๋ช…๋ น์–ด (์••์ถ• ํ•ด์ œ)

.zip ํŒŒ์ผ์˜ ์••์ถ•์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

๊ธฐ๋ณธ ๊ตฌ๋ฌธ

# ํ˜•์‹
unzip [ํŒŒ์ผ๋ช….zip]

์‚ฌ์šฉ ์˜ˆ์‹œ

# 1. ๊ธฐ๋ณธ ์••์ถ• ํ•ด์ œ
unzip filename.zip

# 2. ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ์— ์••์ถ• ํ•ด์ œ (-d ์˜ต์…˜)
unzip filename.zip -d /target/path

# 3. ํŒจ์Šค์›Œ๋“œ๊ฐ€ ๊ฑธ๋ฆฐ ํŒŒ์ผ ํ•ด์ œ
# ๋ฐฉ๋ฒ• A: ๋ช…๋ น์–ด ์ž…๋ ฅ ์‹œ ํŒจ์Šค์›Œ๋“œ ์ž…๋ ฅ (ํžˆ์Šคํ† ๋ฆฌ ๋…ธ์ถœ ์œ„ํ—˜)
unzip -P [password] filename.zip

# ๋ฐฉ๋ฒ• B: ๋ช…๋ น์–ด ์‹คํ–‰ ํ›„ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•˜๊ฒŒ ์ž…๋ ฅ (๊ถŒ์žฅ)
unzip filename.zip
# (Enter password ํ”„๋กฌํ”„ํŠธ ์ถœ๋ ฅ ์‹œ ์ž…๋ ฅ)

4. Legacy Unix ์ˆ˜๋™ ์„ค์น˜ (Manual Installation)

์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ์ด ์ œํ•œ์ ์ด๊ฑฐ๋‚˜ ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๊ฐ€ ์—†๋Š” Unix ํ™˜๊ฒฝ(AIX, HP-UX, Solaris ๋“ฑ)์—์„œ๋Š” Oracle ๋“ฑ์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฐ”์ด๋„ˆ๋ฆฌ๋ฅผ ์ˆ˜๋™์œผ๋กœ ์„ค์น˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋ฐ”์ด๋„ˆ๋ฆฌ ๋‹ค์šด๋กœ๋“œ

๊ฐ ํ”Œ๋žซํผ์— ๋งž๋Š” unzip ์œ ํ‹ธ๋ฆฌํ‹ฐ๋ฅผ ๋‹ค์šด๋กœ๋“œํ•ฉ๋‹ˆ๋‹ค. (Oracle Data Server 9i Release 2 ๊ธฐ์ค€ ๋ ˆ๊ฑฐ์‹œ ์ž๋ฃŒ)

  • Compaq Tru64 UNIX
  • Compaq OpenVMS (Alpha)
  • HP-UX 11.0
  • IBM RS/6000 AIX
  • LINUX Intel
  • Sun SPARC Solaris

Note: ์ตœ์‹  ๋ฒ„์ „์˜ ์†Œ์Šค ์ฝ”๋“œ๋Š” Info-ZIP ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€์—์„œ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

UNIX ํ”Œ๋žซํผ ์„ค์น˜ ์ ˆ์ฐจ

  1. ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒŒ์ผ์„ ๋‹ค์šด๋กœ๋“œํ•˜์—ฌ Binary Mode๋กœ ์„œ๋ฒ„์— ์ „์†กํ•ฉ๋‹ˆ๋‹ค.
  2. ํŒŒ์ผ ์••์ถ•์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
    % uncompress unzip_<os>
  3. ์‹คํ–‰ ํŒŒ์ผ์„ PATH ํ™˜๊ฒฝ๋ณ€์ˆ˜๊ฐ€ ์žกํžŒ ๊ฒฝ๋กœ(์˜ˆ: /usr/bin, /usr/local/bin)๋กœ ์ด๋™ํ•ฉ๋‹ˆ๋‹ค.
  4. ์‹คํ–‰ ๊ถŒํ•œ์„ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค.
    % chmod 751 unzip_<os>
  5. ์„ค์น˜๋œ ๋ช…๋ น์–ด๋กœ ์••์ถ•์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.
    % unzip_<os> filename.zip

Compaq OpenVMS (Alpha) ์ถ”๊ฐ€ ์„ค์ •

OpenVMS ํ™˜๊ฒฝ์—์„œ๋Š” ์œ ํ‹ธ๋ฆฌํ‹ฐ์— ๋Œ€ํ•œ ์‹ฌ๋ณผ(Symbol) ์ •์˜๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.

unzip == $disk:[dir]unz550xV-axp.exe

Next Step:
๋Œ€์šฉ๋Ÿ‰ ๋กœ๊ทธ ํŒŒ์ผ ๊ด€๋ฆฌ ๋“ฑ์„ ์œ„ํ•ด tar ๋ช…๋ น์–ด์™€ cron์„ ๊ฒฐํ•ฉํ•˜์—ฌ ์ฃผ๊ธฐ์ ์ธ ๋ฐฑ์—… ์Šคํฌ๋ฆฝํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ํ•™์Šตํ•ด ๋ณด์‹œ๊ธธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.

[Linux] find ๋ช…๋ น์–ด ์™„๋ฒฝ ๊ฐ€์ด๋“œ: ํŒŒ์ผ ๊ฒ€์ƒ‰๋ถ€ํ„ฐ ์ผ๊ด„ ์ฒ˜๋ฆฌ๊นŒ์ง€

๋ฆฌ๋ˆ…์Šค ์‹œ์Šคํ…œ ๊ด€๋ฆฌ์—์„œ ๊ฐ€์žฅ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ ์ค‘ ํ•˜๋‚˜์ธ find ๋ช…๋ น์–ด์˜ ์˜ต์…˜๊ณผ ์‚ฌ์šฉ๋ฒ•์„ ์ •๋ฆฌํ•ฉ๋‹ˆ๋‹ค. ํŒŒ์ผ๋ช…, ๊ถŒํ•œ, ์‹œ๊ฐ„, ํฌ๊ธฐ ๋“ฑ ๋‹ค์–‘ํ•œ ์กฐ๊ฑด์œผ๋กœ ํŒŒ์ผ์„ ๊ฒ€์ƒ‰ํ•˜๊ณ  -exec๋‚˜ xargs๋ฅผ ํ†ตํ•ด ํ›„์ฒ˜๋ฆฌํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

Test Environment

  • OS: CentOS 7
  • Shell: Bash

1. ๊ธฐ๋ณธ ๊ตฌ๋ฌธ (Syntax)

find ๋ช…๋ น์–ด๋Š” ์ง€์ •๋œ ๊ฒฝ๋กœ ํ•˜์œ„์˜ ๋ชจ๋“  ํŠธ๋ฆฌ๋ฅผ ํƒ์ƒ‰ํ•˜๋ฏ€๋กœ ๊ฒ€์ƒ‰ ๋ฒ”์œ„ ์„ค์ •์— ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

find [๊ฒฝ๋กœ] [์กฐ๊ฑด] [๋™์ž‘]

์ฃผ์š” ๊ฒ€์ƒ‰ ์กฐ๊ฑด (Predicates)

  • -name [pattern]: ํŒŒ์ผ ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰ (์™€์ผ๋“œ์นด๋“œ ์‚ฌ์šฉ ๊ฐ€๋Šฅ)
  • -type [d/f]: ํŒŒ์ผ ํƒ€์ž… (d: ๋””๋ ‰ํ† ๋ฆฌ, f: ์ผ๋ฐ˜ ํŒŒ์ผ)
  • -user [name]: ์†Œ์œ ์ž ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰
  • -group [name]: ๊ทธ๋ฃน ์ด๋ฆ„์œผ๋กœ ๊ฒ€์ƒ‰
  • -perm [mode]: ํŒŒ์ผ ๊ถŒํ•œ์œผ๋กœ ๊ฒ€์ƒ‰
  • -size [n]: ํŒŒ์ผ ํฌ๊ธฐ๋กœ ๊ฒ€์ƒ‰ (+n: ์ด์ƒ, -n: ์ดํ•˜, ๋‹จ์œ„: k, M, G)
  • -empty: ๋นˆ ํŒŒ์ผ ๋˜๋Š” ๋นˆ ๋””๋ ‰ํ† ๋ฆฌ ๊ฒ€์ƒ‰

์‹œ๊ฐ„ ๊ด€๋ จ ์กฐ๊ฑด (Time Stamps)

์‹œ๊ฐ„ ์˜ต์…˜์—์„œ +n์€ n์ผ ์ด์ „(Old), -n์€ n์ผ ์ด๋‚ด(New)๋ฅผ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.

  • -atime [n]: Access Time (๋งˆ์ง€๋ง‰ ์ ‘๊ทผ ์‹œ๊ฐ„, ์ผ ๋‹จ์œ„)
  • -mtime [n]: Modify Time (๋งˆ์ง€๋ง‰ ์ˆ˜์ • ์‹œ๊ฐ„, ์ผ ๋‹จ์œ„)
  • -ctime [n]: Change Time (๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ ์‹œ๊ฐ„, ์ผ ๋‹จ์œ„)

2. ๊ธฐ๋ณธ ์‚ฌ์šฉ ์˜ˆ์ œ

ํŒŒ์ผ๋ช… ๋ฐ ํƒ€์ž… ๊ฒ€์ƒ‰

# 1. ํ˜„์žฌ ๋””๋ ‰ํ† ๋ฆฌ(.)์—์„œ ์ด๋ฆ„์— 'test'๊ฐ€ ํฌํ•จ๋œ ํŒŒ์ผ ์ฐพ๊ธฐ
find . -name "*test*" -print

# 2. ์‹œ์Šคํ…œ ์ „์ฒด(/)์—์„œ 'foobar'๋ผ๋Š” ์ด๋ฆ„์˜ ํŒŒ์ผ ์ฐพ๊ธฐ
find / -name "foobar" -print

# 3. ๋””๋ ‰ํ† ๋ฆฌ๋งŒ ์ฐพ๊ธฐ
find . -type d

# 4. ์ˆจ๊ฒจ์ง„ ํŒŒ์ผ(์ ์œผ๋กœ ์‹œ์ž‘ํ•˜๋Š” ํŒŒ์ผ) ์ฐพ๊ธฐ
find . -name ".*" -print

๊ถŒํ•œ(Permission) ๋ฐ ์†Œ์œ ์ž ๊ฒ€์ƒ‰

# 1. ๊ถŒํ•œ์ด 700์ธ ํŒŒ์ผ ์ฐพ๊ธฐ
find . -perm 700 -print

# 2. ๊ถŒํ•œ์ด 400 ์ด๊ฑฐ๋‚˜ 200์ธ ํŒŒ์ผ ์ฐพ๊ธฐ (๋…ผ๋ฆฌ ์—ฐ์‚ฐ OR ์‚ฌ์šฉ)
# ๊ด„ํ˜ธ ์•ž์—๋Š” ๋ฐ˜๋“œ์‹œ escape(\) ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค.
find . \( -perm 400 -o -perm 200 \) -print

# 3. ํŠน์ • ์‚ฌ์šฉ์ž(foobar) ์†Œ์œ ์˜ ํŒŒ์ผ ์ฐพ๊ธฐ
find / -user foobar -print

# 4. ์†Œ์œ ์ž๋‚˜ ๊ทธ๋ฃน์ด ์—†๋Š”(์‚ญ์ œ๋œ ๊ณ„์ • ๋“ฑ) ํŒŒ์ผ ์ฐพ๊ธฐ (๊ณ ์•„ ํŒŒ์ผ)
find / \( -nouser -o -nogroup \) -print

# 5. ์‹คํ–‰ ๊ถŒํ•œ์ด ์žˆ๋Š” ํŒŒ์ผ ์ฐพ๊ธฐ (Others์—๊ฒŒ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋“ฑ ๋ณด์•ˆ ์ ๊ฒ€ ์‹œ ์œ ์šฉ)
find / -perm -2 -print

3. ๊ณ ๊ธ‰ ํ™œ์šฉ ๋ฐ ์ผ๊ด„ ์ฒ˜๋ฆฌ (Actions)

๊ฒ€์ƒ‰๋œ ํŒŒ์ผ์— ๋Œ€ํ•ด -exec ๋˜๋Š” xargs๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ถ”๊ฐ€ ๋ช…๋ น์„ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

-exec ์˜ต์…˜ ์‚ฌ์šฉ

{}๋Š” ๊ฒ€์ƒ‰๋œ ํŒŒ์ผ๋ช…์„ ์˜๋ฏธํ•˜๋ฉฐ, \;๋กœ ๋ช…๋ น์„ ์ข…๋ฃŒํ•ฉ๋‹ˆ๋‹ค.

# 1. ์ด๋ฆ„์ด core์ธ ํŒŒ์ผ์„ ์ฐพ์•„ ์ƒ์„ธ ์ •๋ณด ์ถœ๋ ฅ(ls -l)
find . -name core -exec ls -l {} \;

# 2. *.bak ํŒŒ์ผ์„ ์ฐพ์•„ ์ฆ‰์‹œ ์‚ญ์ œ
find . -name "*.bak" -exec rm -f {} \;

# 3. *.txt ํŒŒ์ผ ๋‚ด์—์„œ ํŠน์ • ๋ฌธ์ž์—ด ์น˜ํ™˜ (Perl ์ด์šฉ)
find / -name "*.txt" -exec perl -pi -e 's/OldString/NewString/g' {} \;

xargs ํŒŒ์ดํ”„ ์—ฐ๊ณ„

๋งŽ์€ ์ˆ˜์˜ ํŒŒ์ผ์„ ์ฒ˜๋ฆฌํ•  ๋•Œ๋Š” -exec๋ณด๋‹ค xargs๊ฐ€ ์„ฑ๋Šฅ์ƒ ์œ ๋ฆฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# 1. ํŒŒ์ผ ๋‚ด์šฉ์—์„œ ํŠน์ • ๋ฌธ์ž์—ด ๊ฒ€์ƒ‰ (grep)
find . -type f | xargs grep "๊ฒ€์ƒ‰์–ด"

# 2. 100MB ์ด์ƒ์ธ ํŒŒ์ผ์„ ์ฐพ์•„ ํฌ๊ธฐ์ˆœ ๋ณด๊ธฐ
find / -size +100M -print | xargs ls -lh

# 3. ์ตœ๊ทผ 30์ผ ๋™์•ˆ ์ˆ˜์ •๋˜์ง€ ์•Š์€ ํŒŒ์ผ ๋ชฉ๋ก ์ €์žฅ
find / -mtime +30 -print > old_files.txt

4. ์‹ค๋ฌด ์œ ์šฉํ•œ ํŒจํ„ด ์ •๋ฆฌ

๋””์Šคํฌ ์ •๋ฆฌ ๋ฐ ๊ด€๋ฆฌ

# 1. ๋นˆ ํŒŒ์ผ(0 byte) ์ฐพ๊ธฐ
find / -empty -print
# ๋˜๋Š”
find / -size 0 -print

# 2. ์ตœ๊ทผ 30์ผ๊ฐ„ ์ ‘๊ทผํ•˜์ง€ ์•Š์€ ํŒŒ์ผ ๋ฆฌ์ŠคํŠธ ์ถ”์ถœ
# ! (NOT) ์—ฐ์‚ฐ์ž์™€ -a (AND) ์—ฐ์‚ฐ์ž ์กฐํ•ฉ
find / ! \( -atime -30 -a \( -type d -o -type f \) \) | xargs ls -l > not_access.txt

# 3. ํŠน์ • ๋””๋ ‰ํ† ๋ฆฌ ํ•˜์œ„์˜ *.bak ํŒŒ์ผ์„ ๋ฐฑ์—… ํด๋”๋กœ ์ด๋™
# (์ฃผ์˜: ๋ฐฑํ‹ฑ ` ์‚ฌ์šฉ ์‹œ ํŒŒ์ผ๋ช…์ด ๋„ˆ๋ฌด ๋งŽ์œผ๋ฉด ์—๋Ÿฌ ๋ฐœ์ƒ ๊ฐ€๋Šฅ์„ฑ ์žˆ์Œ)
mv `find . -name "*.bak"` /home/bak/

๋ณด์•ˆ ์ ๊ฒ€

# 1. Root ๊ถŒํ•œ์œผ๋กœ ์‹คํ–‰๋˜๋Š” SetUID ํŒŒ์ผ ์ฐพ๊ธฐ (+4000)
find / \( -user root -a -perm +4000 \) -print

# 2. Others์—๊ฒŒ ์“ฐ๊ธฐ ๊ถŒํ•œ์ด ์žˆ๋Š” ํŒŒ์ผ์„ ์ฐพ์•„ ์“ฐ๊ธฐ ๊ถŒํ•œ ์ œ๊ฑฐ
find / -perm -2 -exec chmod o-w {} \;

Next Step:
find ๋ช…๋ น์–ด๋กœ ํŒŒ์ผ์„ ์ฐพ์€ ๋’ค, ๋กœ๊ทธ ๋ถ„์„์ด๋‚˜ ํ…์ŠคํŠธ ์ฒ˜๋ฆฌ๊ฐ€ ํ•„์š”ํ•˜๋‹ค๋ฉด grep, awk, sed ๋ช…๋ น์–ด์˜ ์ •๊ทœํ‘œํ˜„์‹(Regex) ํ™œ์šฉ๋ฒ•์„ ํ•™์Šตํ•ด ๋ณด์‹œ๊ธธ ๊ถŒ์žฅํ•ฉ๋‹ˆ๋‹ค.