๐ Ch04 File System ๐
File System
๋์คํฌ ๋๋ผ์ด๋ธ (Disk Drive)
๋ฌผ๋ฆฌ์ ์ ์ฅ์ฅ์น(ํ๋ ๋์คํฌ, SSD ๋ฑ)
์ฌ๋ฌ ๊ฐ์ ํํฐ์ ์ผ๋ก ๋๋ ์ ์์ผ๋ฉฐ, ๊ฐ๊ฐ์ ํํฐ์ ์ ํ์ผ ์์คํ ์ด ์กด์ฌํ ์ ์์
ํ์ผ ์์คํ (File System)
๊ฐ ํํฐ์ ์๋ ํ์ผ ์์คํ ์ด ํฌํจ๋จ / ํ์ผ ๋ฐ ๋๋ ํฐ๋ฆฌ ๊ด๋ฆฌ
์ฌ๋ฌ ๊ฐ์ Cylinder Group์ผ๋ก ๋๋จ / ์ฌ๋ฌ ๊ฐ์ ํธ๋, ์นํฐ๋ก ๊ตฌ์ฑ๋จ. ๋ฌผ๋ฆฌ์ ์ผ๋ก ๊ฐ๊น์ด ๋ฐ์ดํฐ๋ฅผ ํจ๊ผ ์ ์ฅํด ์ฑ๋ฅ ์ต์ ํ
๋ถํธ ๋ธ๋ก (Boot Block)
ํ์ผ ์์คํ ์ด ํฌํจ๋ ํํฐ์ ์ ์ฒซ ๋ฒ์งธ ์์ญ์ ์์น
์์คํ ์ด ๋ถํ ๋ ๋ ์ด์ ์ฒด์ ๋ฅผ ๋ก๋ํ๋ ๋ฐ ์ฌ์ฉ
์ํผ ๋ธ๋ก (Super Block)
ํ์ผ ์์คํ ์ ๋ํ ๋ฉํ๋ฐ๋ํฐ๋ฅผ ์ ์ฅํ๋ ์์ญ
ํ์ผ ์์คํ ์ ํฌ๊ธฐ, ๋ธ๋ก ํฌ๊ธฐ, ์ฌ์ฉ ๊ฐ๋ฅ ๋ธ๋ก ์, i-node ์ ๋ฑ ์ค์ํ ์ ๋ณด ํฌํจ
ํ์ผ ์์คํ ์ด ์์ → ์ํผ ๋ธ๋ก์ ๋ฐฑ์ ํตํด ๋ณต๊ตฌ ๊ฐ๋ฅ
Cylinder Group (์ค๋ฆฐ๋ ๊ทธ๋ฃน)
๋์คํฌ์ ์ผ๋ถ๋ฅผ ๊ทธ๋ฃน์ผ๋ก ๋ฌถ์ด ๊ด๋ฆฌํ๋ ๋ฐฉ์
์ํผ ๋ธ๋ก ๋ณต์ฌ๋ณธ / cg info / i-node ๋งต / ๋ธ๋ก ๋นํธ๋งต / i-node fltmxm / ๋ฐ์ดํฐ ๋ธ๋ก ๊ฐ์ ์์ ํฌํจ
Unix File System
๋ฃจํธ ํ์ผ ์์คํ (/)
ํ์ผ ์์คํ ์ ์ต์์ ๋๋ ํฐ๋ฆฌ
๋ชจ๋ ๋๋ ํฐ๋ฆฌ์ ํ์ผ์ / ์๋์ ์กด์ฌ
์ฃผ์ ํ์ ๋๋ ํฐ๋ฆฌ
bin - ์คํ ๊ฐ๋ฅํ ๋ฐ์ด๋๋ฆฌ ํ์ผ(๋ช ๋ น์ด)
etc - ์์คํ ์ค์ ํ์ผ
home - ์ฌ์ฉ์ ๊ณ์ ๋ณ ํ ๋๋ ํฐ๋ฆฌ (๋ณ๋ ํํฐ์ )
usr - ์์คํ ๋ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ์ ์ฅ์ (๋ณ๋ ํํฐ์ )
/home ํํฐ์
๊ฐ๋ณ ์ฌ์ฉ์์ ํ ๋๋ ํฐ๋ฆฌ๊ฐ ์ ์ฅ๋๋ ๊ณต๊ฐ
/home์ ๋ณ๋์ ํํฐ์ ์ผ๋ก ๋ถ๋ฅํ๋ ์ด์
์ด์์ฒด์ ์ ๋
๋ฆฝ์ ๊ด๋ฆฌ ๊ฐ๋ฅ (OS ์ฌ์ค์น ์์๋ ์ฌ์ฉ์ ๋ฐ์ดํฐ ์ ์ง)
์ฌ์ฉ์ ๋ฐ์ดํฐ ๋ณดํธ (๋์คํฌ ๊ณต๊ฐ ๋ถ์กฑ ์์๋ OS ์ํฅ ์ต์ํ)
/usr ํํฐ์
์ฌ์ฉ์ ํ๋ก๊ทธ๋จ ๋ฐ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฅํ๋ ๊ณต๊ฐ
์ฃผ์ ๋๋ ํฐ๋ฆฌ
bin - ์์ฉ ํ๋ก๊ทธ๋จ ์คํ ํ์ผ
lib - ํ๋ก๊ทธ๋จ์ด ์ฌ์ฉํ๋ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ
/usr์ ๋ณ๋์ ํํฐ์ ์ผ๋ก ๋ถ๋ฅํ๋ ์ด์
์ฃผ๋ก ์ฝ๊ธฐ ์ ์ฉ์ผ๋ก ์ฌ์ฉ๋์ด ๋ณด์, ์์ ์ฑ ์ฆ๊ฐ
์ฌ๋ฌ ์์คํ
์์ ๊ณต์ ๊ฐ๋ฅ
i-node and data block
i-node
ํ์ผ ์์คํ ์์ ํ์ผ์ ๋ฉํ๋ฐ์ดํฐ ์ ์ฅํ๋ ๋ฐ์ดํฐ ๊ตฌ์กฐ
Unix directory tree
๋ฃจํธ ๋๋ ํฐ๋ฆฌ (/)
ํ์ผ ์์คํ ์ ์ต์์ ๋๋ ํฐ๋ฆฌ
๋ชจ๋ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ๋ / ์๋์ ์์น
์ฃผ์ ๋๋ ํฐ๋ฆฌ ๋ฐ ์ญํ
/dev (devieces) - ์์คํ ์ ์ฅ์น ํ์ผ (ํ๋๋์คํฌ, ํค๋ณด๋, ํ๋ฆฐํฐ)
/etc (system files) - ์์คํ ์ค์ ํ์ผ ๋ฐ ๊ตฌ์ฑ ํ์ผ ์ ์ฅ
/bin (programs) - ํ์ ์คํ ํ์ผ ์ ์ฅ (ex) cp, sh, ls)
/lib (libraries) - ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ํ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฅ
/usr/bin (programs) - ์ผ๋ฐ ์ฌ์ฉ์๊ฐ ์คํํ ์ ์๋ ์์ฉ ํ๋ก๊ทธ๋จ ์ ์ฅ
/usr/lib (libraries) - ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ์ ์ํ ์ถ๊ฐ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ ์ฅ
/usr/include (headers) - C ํ๋ก๊ทธ๋๋ฐ์ ์ํ ํค๋ ํ์ผ(ex)stdio.h) ์ ์ฅ
/home (user directories) - ๊ฐ ์ฌ์ฉ์์ ํ ๋๋ ํฐ๋ฆฌ
Root directory (1) ๋ฃจํธ ๋๋ ํฐ๋ฆฌ
/
root directory of the entire file system hierarchy
ํ์ผ ์์คํ ์ ์ต์์(root) ๋๋ ํฐ๋ฆฌ
/devices
physical device files
๋ฏ๋ฆฌ์ ํ๋์จ์ด ์ฅ์น๋ฅผ ๋ํ๋ด๋ ํ์ผ๋ค์ด ์ ์ฅ๋จ
CPU, ๋ฉ๋ชจ๋ฆฌ, ๋คํธ์ํฌ ์นด๋, ๋์คํฌ ๋ฑ ์ค์ ํ๋์จ์ด์ ๋ํ ์ธํฐํ์ด์ค ์ ๊ณต
/dev
logical device files
์ด์์ฒด์ ์์ ๋ ผ๋ฆฌ์ ์ผ๋ก ๊ด๋ฆฌํ๋ ๋๋ฐ์ด์ค ํ์ผ ์ ์ฅ
์ฅ์น๋ฅผ ์ง์ ์ ๊ทผํ๋ ๊ฒ์ด ์๋๋ผ ํ์ผ์ฒ๋ผ ์ ๊ทผ ๊ฐ๋ฅ
/etc
host-specific system-wide configuration files – /etc is referred to as the etcetera directory, as this directory historically held everything that did not belong elsewhere. Recent interpretations include backronyms such as "Editable Text Configuration" or "Extended Tool Chest"
์์คํ ์ ์ฒด์ ์ค์ ํ์ผ๊ณผ ์คํฌ๋ฆฝํธ ์ ์ฅ
/mnt
temporarily mounted filesystems.
์์๋ก ๋ง์ดํธ๋ ํ์ผ ์์คํ ์ด ์์นํ๋ ๋๋ ํฐ๋ฆฌ
์ธ๋ถ ์ฅ์น(USB, ๋คํธ์ํฌ ๋๋ผ์ด๋ธ ๋ฑ)์ ์ฐ๊ฒฐํ ๋ ์ฌ์ฉ
๊ด๋ฆฌ์๊ฐ ํน์ ๋ชฉ์ ์ ์ํด ๋ง์ดํธํ๋ ๋๋ ํฐ๋ฆฌ / ์์คํ ์ด ์๋์ผ๋ก ์ฌ์ฉํ๋ ๋๋ ํฐ๋ฆฌ X
/opt
optional application software packages
์ถ๊ฐ์ ์ธ ์ํํธ์จ์ด ํจํค์ง๋ฅผ ์ ์ฅํ๋ ๋๋ ํฐ๋ฆฌ
๊ธฐ๋ณธ ์์คํ ํจํค์ง๊ฐ ์๋ ์ 3์ ์ ํ๋ฆฌ์ผ์ด์ ์ด ์ค์น๋จ
/proc
virtual filesystem providing process and kernel information as files
์ด์์ฒด์ ์ ํ๋ก์ธ์ค ๋ฐ ์ปค๋ ์ ๋ณด๋ฅผ ์ ์ฅํ๋ ๊ฐ์ ํ์ผ ์์คํ
๋ฌผ๋ฆฌ์ ์ธ ํ์ผ์ด ์๋๋ผ ์ค์๊ฐ์ผ๋ก ์์ฑ๋๋ ๋ฐ์ดํฐ
์์คํ ์ํ๋ฅผ ๋ชจ๋ํฐ๋งํ๊ณ ํ๋ก์ธ์ค ์ ๋ณด ํ์ธํ ๋ ์ฌ์ฉ
/tmp
temporary files. Not preserved between system reboots.
์์ ํ์ผ ์ ์ฅ ๊ณต๊ฐ
์์คํ ์ฌ๋ถํ ์ ํด๋น ๋๋ ํฐ๋ฆฌ์ ๋ด์ฉ ์ญ์ ๋จ
์ผ์์ ์ธ ํ์ผ ์ ์ฅ, ํ๋ก๊ทธ๋จ ์คํ ์ค ์์ฑ๋๋ ํ์ผ ์ ์ฅ์ ์ฌ์ฉ๋จ
Root directory (2)
/bin
command binaries (same with /usr/bin)
binary
์์คํ ์ด ๋ถํ ๋ ๋ ๊ผญ ํ์ํ ๊ธฐ๋ณธ ๋ช ๋ น์ด๋ค์ด ์์
/sbin
Non-essential system binaries, e.g., daemons for various network-services.
system binary ์์คํ ๊ด๋ฆฌ์์ฉ ๋ช ๋ น์ด๋ค
์ผ๋ฐ ์ฌ์ฉ์๋ณด๋ค๋ root(๊ด๋ฆฌ์)๊ฐ ์ฌ์ฉํ๋ ๋ช ๋ น์ด๊ฐ ์์น
/bin - ์ผ๋ฐ ์ฌ์ฉ์ ๋ช ๋ น์ด /sbin - ์์คํ ์ฉ ๋๊ตฌ
/usr
used for miscellaneous purpose – /usr/bin, /usr/lib, /usr/include
Unix System Resourses
๋ถํ ํ ์ฌ์ฉํ๋ ์์ฉ ํ๋ก๊ทธ๋จ, ๋ผ์ด๋ธ๋ฌ๋ฆฌ, ํค๋ ํ์ผ ๋ฑ์ ๋ด๊ณ ์์
์ผ๋ฐ ์ฌ์ฉ์ ํ๋ก๊ทธ๋จ๋ค์ด ๋ง์ด ๋ค์ด ์์
/lib
libraries for the binaries in /usr/bin/ and /usr/sbin/ (same with /usr/lib)
๊ณตํต ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๋ค์ด ์๋ ๋๋ ํฐ๋ฆฌ
/var
Variable files whose content is expected to continually change during normal operation of the system., such as logs, spool files, and temporary e-mail files.
variable
์์ฃผ ๋ด์ฉ์ด ๋ฐ๋๋ ํ์ผ๋ค์ด ์ ์ฅ๋จ
/home
Users' home directories(Now user’s home is in /export/home)
์ฌ์ฉ์๋ค์ด ์์ ์ ํ์ผ ์ ์ฅํ๋ ๊ณต๊ฐ
๊ฐ๊ฐ์ ์ฌ์ฉ์๋ ์์ ์ ํ ๋๋ ํฐ๋ฆฌ ๊ฐ์ง
/export
open contains remote file systems
์๊ฒฉ ํ์ผ ์์คํ ์ ๊ณต์ ํ๊ฑฐ๋ ๋ง์ดํธํ ๋ ์ฌ์ฉํ๋ ๋๋ ํฐ๋ฆฌ
Navigating file system
$ echo hi > hi.txt
“hi”๋ผ๋ ๋ฌธ์์ด ํ์ผ๋ก ์ ์ฅ
์ถ๋ ฅ ๋ฆฌ๋๋ ์ ์ฐ์ฐ์, ๊ฒฐ๊ณผ๋ฅผ hi.txt๋ผ๋ ํ์ผ์ ์ ์ฅ (ํ๋ฉด์ ๋ณด์ฌ์ฃผ๋ ๋์ , ์ ์ฅ)
์ด๋ฏธ ์กด์ฌํ๋ฉด, ๊ธฐ์กด ๋ด์ฉ ๋ฎ์ด์
$ ls
ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์๋ ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ ๋ชฉ๋ก ๋ณด๊ธฐ
$ cat hi.txt
ํ์ผ ๋ด์ฉ ์ถ๋ ฅ
ํ์ผ ๋ด์ฉ์ ํ ๋ฒ์ ์ ๋ถ ๋ณด์ฌ์ค
$ more /etc/group
/etc/group ํ์ผ์ ํ ํ๋ฉด์ฉ ์คํฌ๋กคํ๋ฉฐ ๋ณด๊ธฐ
space ๋๋ฅด๋ฉด ๋ค์ ํ์ด์ง, q ๋๋ฅด๋ฉด ์ข ๋ฃ
$ head -5 /etc/hosts
/etc/hosts ํ์ผ์ ์ฒ์ 5์ค๋ง ์ถ๋ ฅ
$ tail -f /var/log/syslog
syslog ํ์ผ์ ๋ง์ง๋ง ๋ถ๋ถ์ ์ค์๊ฐ์ผ๋ก ๋ชจ๋ํฐ๋ง
-f - follow ๋ก๊ทธ๊ฐ ์ถ๊ฐ๋ ๋๋ง๋ค ๊ณ์ ๋ณด์ฌ์ค
$ pg /etc/profile
more์ ๋น์ทํ ํ์ด์ง ๋จ์ ํ์ผ ๋ทฐ์ด
ํค๋ณด๋๋ก ์คํฌ๋กค ๊ฐ๋ฅ
/etc/profile - ๋ก๊ทธ์ธ ์ ์คํ๋๋ ์ ์ญ ํ๊ฒฝ ์ค์ ํ์ผ
$ cd /usr/bin
ํ์ฌ ์์น๋ฅผ /usr/bin ๋๋ ํฐ๋ฆฌ๋ก ์ด๋
cd - change directory ๋๋ ํฐ๋ฆฌ ์ด๋ ๋ช ๋ น์ด
/usr/bin ์์คํ ํ๋ก๊ทธ๋จ ์คํ ํ์ผ์ด ๋ชจ์ฌ ์๋ ๋๋ ํฐ๋ฆฌ
$ pwd
print working directory
ํ์ฌ ๋ด๊ฐ ์์นํ ๋๋ ํฐ๋ฆฌ ๊ฒฝ๋ก๋ฅผ ์ถ๋ ฅ
Create file
$ cp hi.txt hi2.txt
hi.txt ํ์ผ์ ๋ณต์ฌํ์ฌ hi2.txt๋ก ๋ง๋ฆ
์๋ณธ ์ ์ง, ๋ณต์ฌ๋ณธ ์์ฑ
$ mv hi2.txt hi3.txt
hi2.txt ํ์ผ์ ์ด๋ฆ์ hi3.txt๋ก ๋ณ๊ฒฝ
๋๋ ๋ค๋ฅธ ์์น๋ก ์ด๋
$ rm hi3.txt
hi3.txt ํ์ผ ์ญ์
์ญ์ ํ๋ฉด ๋ณต๊ตฌ ๋ถ๊ฐ
$ touch a.txt
๋น ํ์ผ a.txt ์์ฑ
์ด๋ฏธ ์กด์ฌํ๋ ํ์ผ์ด๋ฉด ์์ ์๊ฐ ๊ฐฑ์
$ touch h1.txt
$ mkdir dir1
dir1์ด๋ผ๋ ์ ๋๋ ํฐ๋ฆฌ ์์ฑ
$ mv dir1 dir2
๋๋ ํฐ๋ฆฌ dir1์ ์ด๋ฆ์ dir2๋ก ๋ณ๊ฒฝ
$ rmdir dir2
dir2 ๋๋ ํฐ๋ฆฌ ์ญ์ (๋น์ด ์์ ๋๋ง)
$ whereis echo
echo ๋ช ๋ น์ด๊ฐ ์ด๋์ ์๋์ง ์ ์ฒด์ ์ผ๋ก ์ฐพ์
์คํ ํ์ผ, ์์ค ์ฝ๋, ๋ฉ๋ด์ผ ํ์ด์ง ์์น๋ฅผ ๋ชจ๋ ๋ณด์ฌ์ค
$ which echo
ํ์ฌ ์ฌ์ฉ ์ค์ธ ์์์ ์ค์ ๋ก ์คํ๋ ๋ช ๋ น์ด ์์น๋ง ์๋ ค์ค
Create text file
$ echo hi > hi.txt
“hi”๋ผ๋ ๋ฌธ์์ด ํ์ผ๋ก ์ ์ฅ
- ์ถ๋ ฅ ๋ฆฌ๋๋ ์ ์ฐ์ฐ์, ๊ฒฐ๊ณผ๋ฅผ hi.txt๋ผ๋ ํ์ผ์ ์ ์ฅ
์ด๋ฏธ ์กด์ฌํ๋ฉด, ๊ธฐ์กด ๋ด์ฉ ๋ฎ์ด์
$ echo hello >> hi.txt
“hello”๋ผ๋ ํ ์คํธ๋ฅผ hi.txt ํ์ผ์ ์ถ๊ฐ
- ๋ง๋ถ์ด๊ธฐ ์ฐ์ฐ์
$ cp hi.txt hello.txt
hi.txt ํ์ผ ๋ณต์ฌํด hello.txt๋ผ๋ ์ ํ์ผ ๋ง๋ฆ
$ cat > aa.txt
Good morning
See you~
^d
์ง์ ์ ๋ ฅํ ๋ด์ฉ ํ์ผ๋ก ์ ์ฅ
ํค๋ณด๋๋ก ์ ๋ ฅ๋ฐ๋ค๊ฐ Ctrl+D ๋๋ฅด๋ฉด ์ ์ฅ ์ข ๋ฃ
$ cat aa.txt
aa.txt ํ์ผ์ ๋ด์ฉ ์ถ๋ ฅ
$ head -5 /etc/passwd > pass.txt
/etc/passwd ํ์ผ์์ ์ฒ์ 5์ค๋ง ์ถ์ถํด์ pass.txt์ ์ ์ฅ
touch
$ echo Hello > h.txt
$ touch aa.txt
aa.txt is a new file name
create a file of size zero(0)
$ touch h.txt
h.txt is existing file
change last edit time to now
cp and mv
$ cp hi.txt hi2.txt
$ cp hi.txt dir1
hi.txt ํ์ผ์ ๋๋ ํฐ๋ฆฌ dir1 ์์ผ๋ก ๋ณต์ฌ
→ dir1/hi.txt ํ์ผ ์์ฑ
$ cp hi.txt dir1/hi3.txt
hi.txt๋ฅผ dir1 ๋๋ ํฐ๋ฆฌ ์์ hi3.txt๋ผ๋ ์ด๋ฆ์ผ๋ก ๋ณต์ฌ
$ mv h1.txt hi2.txt
์ด๋ฆ ๋ณ๊ฒฝ
$ mv hi.txt dir1
dir ๋๋ ํฐ๋ฆฌ ์์ผ๋ก ์ด๋
$ mv hi.txt dir1/hi2.txt
$ mv dir1 dir2
dir1์ด๋ผ๋ ๋๋ ํฐ๋ฆฌ์ ์ด๋ฆ์ dir2๋ก ๋ณ๊ฒฝ
rm
$ remove file
$ rm h*.txt
remove text file starting with h
h๋ก ์์ํ๊ณ .txt๋ก ๋๋๋ ๋ชจ๋ ํ์ผ ์ญ์
$ rm dir1/*.txt
remove all files in dir1 directory
dir1 ๋๋ ํฐ๋ฆฌ ์์ ์๋ .txt ํ์ผ ์ ๋ถ ์ญ์
๋๋ ํฐ๋ฆฌ๋ ๊ทธ๋๋ก ๋จ์
$ rm -rf dir1
remove all files in dir1 directory and remove dir1 without asking at one time (must be careful)
dir1 ๋๋ ํฐ๋ฆฌ์ ๊ทธ ์์ ๋ชจ๋ ํ์ผ, ํด๋ ์ ๋ถ ์ฆ์ ์ญ์
๋ณต๊ตฌ ๋ถ๊ฐ๋ฅ / ํ์ธ ๋ฉ์์ง X
If ($ rmdir dir1) fails
remove all files and subdirectory in dir
remove dir1
ls -l
$ ls —l
๋๋ ํฐ๋ฆฌ, ํ์ผ์ ์์ธ ์ ๋ณด ์ถ๋ ฅ
-rw-r--r-- 1 unix300 other 3 3์30์ผ00:03 hi.txt
drwxr-xr-x 2 unix300 other 513 3์23์ผ00:39 dir1
File type : permission : link numer : owner : group : last edittong time : file name
๊ถํ : ๋งํฌ์ : ์์ ์ : ๊ทธ๋ฃน : ํฌ๊ธฐ(byte) / ๋ ์ง, ์๊ฐ / ์ด๋ฆ
FIle types
First character of ‘ls —l’ command
ls -l ๋ช ๋ น์ด์ ์ฒซ ๋ฒ์งธ ๋ฌธ์ - ํ์ผ ์ข ๋ฅ ํ๋ณ
ํ์ผ์ด ๋๋ ํฐ๋ฆฌ์ธ์ง, ๋งํฌ์ธ์ง, ์ฅ์น์ธ์ง ๊ตฌ๋ถ
d - The entry is a directory ๋๋ ํฐ๋ฆฌ - ํด๋
b : The entry is a block special file ๋ธ๋ก ์ฅ์น ํ์ผ - ex ๋์คํฌ, USB
c : The entry is a character special file ๋ฌธ์ ์ฅ์น ํ์ผ - ex ํค๋ณด๋, ํฐ๋ฏธ๋
l : The entry is a symbolic link ์ฌ๋ณผ๋ฆญ ๋งํฌ - ๋ค๋ฅธ ํ์ผ ๊ฐ๋ฆฌํค๋ ๋ฐ๋ก๊ฐ๊ธฐ
p : The entry is a first-in, first-out (FIFO) special file (pipe) ํ์ดํ - ํ๋ก์ธ์ค ๊ฐ ํต์ ์ฉ ์ผ์์ ํต๋ก
s : The entry is a local socket ์์ผ ํ๋ก์ธ์ค ๊ฐ ํต์ ์ํ ํน๋ณํ ํ์ผ
- : The entry is an ordinary file ์ผ๋ฐ ํ์ผ (ex ํ ์คํธ, ์ด๋ฏธ์ง, ์คํํ์ผ)
$ file hi.txt (unix command)
ํ์ผ ๋ด์ฉ ๊ธฐ๋ฐ์ผ๋ก ํ์ผ ํ์ ํ์ธ
ํ์ผ์ด ํ ์คํธ์ธ์ง, ์ด๋ฏธ์ง์ธ์ง, ์คํํ์ผ์ธ์ง ์๋ ค์ค
Display file type
hi.txt : ASCII Text
permission
ํ์ผ๊ณผ ๋๋ ํฐ๋ฆฌ์ ๊ถํ
rw-r—r—
rw- ์์ ์ (์ฝ๊ธฐ+์ฐ๊ธฐ ๊ฐ๋ฅ)
r— ๊ทธ๋ฃน (์ฝ๊ธฐ)
r— ๊ธฐํ ์ฌ์ฉ์ (์ฝ๊ธฐ)
User/onwer(rw-), group(r—), other(r—)
r - ์ฝ๊ธฐ / ํ์ผ : ๋ด์ฉ ๋ณด๊ธฐ ๊ฐ๋ฅ, ๋๋ ํฐ๋ฆฌ : ํ์ผ ๋ชฉ๋ก ๋ณด๊ธฐ
w - ์ฐ๊ธฐ / ํ์ผ : ๋ด์ฉ ์์ ๊ฐ๋ฅ, ๋๋ ํฐ๋ฆฌ : ํ์ผ ์์ฑ/์ญ์ ๊ฐ๋ฅ
x - ์คํ / ํ์ผ : ํ๋ก๊ทธ๋จ์ฒ๋ผ ์คํ ๊ฐ๋ฅ, ๋๋ ํฐ๋ฆฌ : cd๋ก ๋ค์ด๊ฐ๊ธฐ ๊ฐ๋ฅ
r(read), w(write), x(execute)
File readable : cat possible
File writable : can edit
File executable : can run that file (program)
Directory readable : ls possible
Directory writable : create/delete possible
Directory executable : cd possible
Link number
Link is a connection between a file name and a file (hard link)
ํ์ผ ์ด๋ฆ๊ณผ ์ค์ ๋ฐ์ดํฐ ์ฌ์ด์ ์ฐ๊ฒฐ
ํ๋์ ํ์ผ์ ์ฌ๋ฌ ์ด๋ฆ(๋งํฌ)๋ก ์ ๊ทผ ๊ฐ๋ฅ
์ด๋์ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ๊ฐ ํ๋ ๋งํฌ ๋๋ ์ํํธ ๋งํฌ
2 type of link
(hard) link - ํ์ผ์ ๋ ๋ค๋ฅธ ์ค์ ์ด๋ฆ / ln ์๋ณธ ์์ด๋ฆ
soft link(symbolic link) - ๋ฐ๋ก๊ฐ๊ธฐ, ์ฐธ์กฐ ํฌ์ธํฐ / ln -s ์๋ณธ ๋งํฌ
$ ln hi.txt hi2.txt
create a new file name (increase link number)
๊ฐ์ ํ์ผ์ ๊ฐ๋ฆฌํค๋ ๋ ๋ค๋ฅธ ์ด๋ฆ
๋ด์ฉ ๊ณต์ ๋จ → ํ๋ ์์ ํ๋ฉด ๋ค๋ฅธ ๊ฒ๋ ๊ฐ์ด ๋ฐ๋
ํ์ผ ์ญ์ ํด๋ ๋งํฌ ์๊ฐ 1 ์ด์์ด๋ฉด ์ค์ ๋ด์ฉ ๋จ์ ์์
i-node ๋ฒํธ๊ฐ ๊ฐ์
๊ฐ์ ํ์ผ ์์คํ ์์๋ง ๊ฐ๋ฅ
$ ln -s hi.txt hi3.txt
make a new soft link
i-node๊ฐ ๋ค๋ฆ
hi.txt๊ฐ ์ญ์ ๋๋ฉด hi3.txt๋ ๊นจ์ง
๊ฒฝ๋ก ๊ธฐ๋ฐ์ผ๋ก ์๋
๋ค๋ฅธ ํ์ผ ์์คํ ์์๋ ๊ฐ๋ฅ
-rw-r--r-- 2 user group 100 3์ 21 10:00 hi.txt
-rw-r--r-- 2 user group 100 3์ 21 10:00 hi2.txt
lrwxrwxrwx 1 user group 6 3์ 21 10:01 hi3.txt -> hi.txt // ์ํํธ ๋งํฌ
cp
$ echo Hi~ > hi.txt
$ cp hi.txt hi2.txt
$ ls -i
ํ์ผ ์์ i-node ๋ฒํธ ํจ๊ป ์ถ๋ ฅ
i-node - ์ค์ ๋ฐ์ดํฐ(๋ด์ฉ)์ ์๋ณํ๋ ๋ฒํธ / i-node๊ฐ ๋ค๋ฅด๋ฉด ๋ณ๊ฐ์ ํ์ผ / ๊ฐ์ผ๋ฉด ๊ฐ์ ๋ด์ฉ ๊ณต์ ํ๋ ํ๋ ๋งํฌ
cp๋ก ๋ณต์ฌํ๋ฉด ๋ด์ฉ์ ๊ฐ์๋ ์์ ํ ๋ค๋ฅธ ํ์ผ ๋ง๋ค์ด์ง๊ณ , ls -i๋ฅผ ํตํด ์๋ก ๋ค๋ฅธ i-node ๋ฒํธ๋ฅผ ํ์ธํ ์ ์์
ln ํ๋ ๋งํฌ
์ค์ ํ์ผ ๋ฐ์ดํฐ(i-nlde) ๊ณต์
์๋ณธ ์ญ์ ํด๋ ์ ์ง๋จ
$ ln hi.txt hi2.txt
๋งํฌ ์๊ฐ 2๋ก ์ฆ๊ฐ
$ ls -il
-i - i-node ๋ฒํธ ํจ๊ป ์ถ๋ ฅ
-l ์์ธ ์ ๋ณด ์ถ๋ ฅ
ln -s ์ฌ๋ณผ๋ฆญ ๋งํฌ
ํ์ผ ๊ฒฝ๋ก ๊ฐ๋ฆฌํด
์๋ณธ ์ญ์ ์ ๋งํฌ ๊นจ์ง
ex) shortcut.txt -> /home/user/real.txt
$ ln -s hi.txt hi2.txt
$ ln -s /export/home/unix300/hi.txt hi3.txt
Contents/Information
File contents : in data blocks
ํ์ผ์ ์ค์ ๋ฐ์ดํฐ(๋ด์ฉ)์ ๋์คํฌ์ ๋ฐ์ดํฐ ๋ธ๋ก์ ์ ์ฅ๋จ
$ cat, more, less, pg, head, tail ์ด์ฉํด ๋ด์ฉ ์ฝ์
File information : in i-node
ํ์ผ์ ๋ํ ์ ๋ณด(๋ฉํ๋ฐ์ดํฐ)๋ i-node์ ์ ์ฅ๋จ
๋ฉํ๋ฐ์ดํฐ - ๋ฐ์ดํฐ์ ๋ํ ๋ฐ์ดํฐ (ex ํ์ผ ํฌ๊ธฐ, ๋ง๋ ๋ ์ง ๋ฑ๋ฑ,,)
$ ls -l ์ด์ฉํด ํ์ธ
Directory contents : $ ls -i (in data blocks)
๋๋ ํฐ๋ฆฌ๋ ์ค์ ๋ก๋ ํ์ผ ์ด๋ฆ + i-node ๋ฒํธ ๋ชฉ๋ก์ด ๋ค์ด ์๋ ํน์ํ ํ์ผ
Directory information : $ ls -ld (in i-node)
๋๋ ํฐ๋ฆฌ ์์ฒด์ i-node ์ ๋ณด ํ์ธํ ๋๋ ls -ld ์ฌ์ฉ
๋๋ ํฐ๋ฆฌ์ ๋ด์ฉ๋ฌผ์ด ์๋ ๋๋ ํฐ๋ฆฌ ์์ฒด ์ ๋ณด๋ง ์ถ๋ ฅ
$ echo 123456 > 123.txt
$ cat 123.txt
$ od -x 123.txt
$ od -c 123.txt
// od - ํ์ผ ๋ด๋ถ๋ฅผ 16์ง์๋ ๋ฌธ์๋ก ๋ถ์ํด์ ๋ณด์ฌ์ฃผ๋ ๋๊ตฌ
find
ํน์ ์กฐ๊ฑด์ ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์ฐพ์์ฃผ๋ ๋ช ๋ น์ด
find [ํ์๊ฒฝ๋ก] [์กฐ๊ฑด] [์ต์ /๋์]
$ find /path -name 'ํ์ผ๋ช ’
Find a file hi.txt under the directory /export/home
ํ์ผ ์ด๋ฆ์ผ๋ก ๊ฒ์
$ find / -name core 2> /dev/null
Find a file and hide error message
๊ถํ์ด ์์ด์ ์๊ธฐ๋ ์ค๋ฅ ๋ฉ์์ง ์ ๋ณด์ด๊ฒ ํ๊ธฐ
$ find / -name core > out.txt
Find a file, save result to out.txt and hide error message
๊ฒฐ๊ณผ๋ out.txt์ ์ ์ฅ
$ find / -name “h*.txt” -exec ๋ช ๋ น {} \;
Find file, and cat the file
/ ์๋์์ ์ด๋ฆ์ด h๋ก ์์ํ๊ณ .txt๋ก ๋๋๋ ํ์ผ์ ์ฐพ์
์ฐพ์ ๊ฐ ํ์ผ์ ๋ํด cat ๋ช ๋ น์ด๋ฅผ ์คํํด์ ๋ด์ฉ ์ถ๋ ฅ
{} ์ฐพ์ ํ์ผ ๊ฒฝ๋ก
\; -exec ์ต์ ๋๋ธ๋ค๋ ํ์
$ file / -name “h*.txt” -ok ๋ช ๋ น {] \;
find file, and cat that file if answer is yes
์คํ ์ ์ฌ์ฉ์์๊ฒ ๋ฌผ์ด๋ด
์ถ๋ ฅ ์์ < ๋ช ๋ น ... ? > y
chmod (symbolic)
chmod [์ต์ ] [ํ์ผ๋ช ]
๊ธฐํธ ๋ฐฉ์์ผ๋ก ํ์ผ/๋๋ ํฐ๋ฆฌ์ ๊ถํ์ ๋ณ๊ฒฝํ๋ ๋ช ๋ น์ด
$ chmod u+w, g-w, o=r— hi.txt
u(ser) g(roup), o(ther), a(ll)
+(add), -(remove), =(set ์ฌ์ค์ )
r(ead), w(rite), x(excutable ์คํ), -(no permission)
$ chmod +x a.sh
same as chmod a+x a.sh
๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์คํ ๊ถํ ๋ถ์ฌ
chmod (numeric, octal)
$ chmod 644 hi.txt
user, group, other
4(read), 2(write), 1(executable), 0(no)
$ chmod 644 a.sh
chmod u=rw-, g=r—, o=r— a.sh
$ chmod 755 dir1
chmod u=rwx, g=r-x, o=r-x dir1
$ chmod 700 a.sh
chmod u=rwx, g=—-, o=—- a.sh
$ chmod 777
๋ชจ๋ ์ฌ์ฉ์์๊ฒ ์์ ๊ณต๊ฐ
umask
ํ์ผ์ด๋ ๋๋ ํฐ๋ฆฌ๋ฅผ ์๋ก ๋ง๋ค ๋ ์๋์ผ๋ก ์ค์ ๋๋ ๊ธฐ๋ณธ ๊ถํ์์ ์ผ๋ถ๋ฅผ ๋ง๋ ๊ฐ
User Mask
์ ํ์ผ์ ๊ธฐ๋ณธ ๊ถํ - 666
์ ๋๋ ํฐ๋ฆฌ์ ๊ธฐ๋ณธ ๊ถํ - 777
์ต์ข ๊ถํ = ๊ธฐ๋ณธ ๊ถํ - umask ๊ฐ (๋บ์ ์ฒ๋ผ ๋์)
Defines masking some permissions
When make a new file or a new directory
Bit 1 masks permission (not give permit)
$ umask [value]
$ umask // see current value ํ์ฌ ๋ง์คํฌ ๊ฐ ํ์ธ
$ umask 022 // set umask as 022 ๋ง์คํฌ ๊ฐ ์ค์
Default file/dir permission (๋ค์ ๊ณต๋ถ)
๋๋ ํฐ๋ฆฌ/ํ์ผ ์์ฑ ์ ์ต์ข ๊ถํ ๊ณ์ฐ ์๋ฆฌ
777 XOR umask → DEF_DIR_MASK
default directory permission
Remove x from DEF_DIR_MASK
default file permission
Example
If umask is 022
777 XOR 022 = 755
default directory permission
X remove from 755 = 644
default file permission
File system management
$ df : disk free
์ ์ฒด ํ์ผ ์์คํ ์ ๋จ์ ๊ณต๊ฐ๊ณผ ์ฌ์ฉ๋์ ๋ณด์ฌ์ค
df -k - see kilobytes ๋จ์๋ฅผ ํฌ๋ก๋ฐ์ดํธ๋ก ๋ณด์ฌ์ค
$ du : disk usage
ํ์ฌ ๋๋ ํฐ๋ฆฌ๋ถํฐ ํ์ ๋๋ ํฐ๋ฆฌ๊น์ง ๋ชจ๋ ๋๋ ํฐ๋ฆฌ์ ์ฌ์ฉ๋ ์ถ๋ ฅ
du -sk - see summary disk usage of each directory
ํ ์ค๋ก ํ์ฌ ๋๋ ํฐ๋ฆฌ์ ์ด ์ฉ๋ ์ถ๋ ฅ
$ mount : see what is currently mounted
ํ์ฌ ๋ง์ดํธ๋ ํ์ผ ์์คํ ๋ชฉ๋ก ์ถ๋ ฅ
๋ง์ดํธ : ์ด์์ฒด์ ์์ ์ ์ฅ ์ฅ์น์ ํ์ผ ์์คํ ์ ํ์ฌ์ ๋๋ ํฐ๋ฆฌ ํธ๋ฆฌ ์์ ์ฐ๊ฒฐํ๋ ๊ฒ / ์ธ๋ถ ์ ์ฅ์ฅ์น์ ํ์ผ ์์คํ ์ ์์คํ ์ ํ ๋ถ๋ถ์ผ๋ก ์ฐ๊ฒฐํด์ฃผ๋ ์์
/etc/mnttab file reflects this information
$ mount -t device_name mount_point
mount -t iso9600 /dev/cdrom /mnt/cdrom
$ mountall
์์คํ ์ค์ ํ์ผ์ ๋ฐ๋ผ ๋ชจ๋ ํ์ผ ์์คํ ์ ์๋ ๋ง์ดํธ
๋ถํ ์ ์๋ ์คํ
Mount all file system as defined /etc/vfstab file
$ Umount : unmount device
๋ง์ดํธ ํด์
CD-ROM์ด๋ ์ธ์ฅ ์ฅ์น ๊ฐ์ ๋ง์ดํธ๋ ์ฅ์น๋ฅผ ํด์ ํจ
Umount /mnt/cdrom
Umount /dev/cdrom
$ Umountall : unmount all without / and core file system
/์ ํต์ฌ ์์คํ ํํฐ์ ์ ์ ์ธํ ๋ชจ๋ ํ์ผ ์์คํ ๋ง์ดํธ๋ฅผ ํด์