파일 시스템 > 개발자팁

개발자팁

개발과 관련된 유용한 정보를 공유하세요.
질문은 QA에서 해주시기 바랍니다.

파일 시스템 정보

Linux 파일 시스템

본문

파일 시스템

4.1 디렉토리
다중 사용자 모드를 지원하는 시스템은 각 계정 사용자별로 파일을 관리하거나 분산시킬 수 있는 구조를 지원한다. 개인용 서버 시스템에서 수많은 시스템 파일들과 사용자 파일들이 한 곳에 있다면 파일 관리가 어려울 것이다. 단일 사용자라도 파일을 분할하여 관리할 수 있는 구조가 필요하다.
그리고 거의 모든 운영체제에서 계층적 트리 구조로 파일 관리를 한다.

4.1.1 최상위 디렉토리
리눅스에서 최상위 디렉토리는 root 디렉토리라고 하는데 "/"로 표시한다.

4.1.2 "." 과 ".." 디렉토리
이들은 sub 디렉토리에만 존재한다.
"."은 현재 디렉토리를 의미하고 ".."은 현재 디렉토리의 상위 디렉토리를 의미한다.

4.1.3 현재 디렉토리의 확인
시스템에 로그인한 후에 사용자가 현재 어느 디렉토리를 사용 중인지를 알아보려면 "pwd" 명령어를 입력한다.
사용자의 홈 디렉토리로 이동하기 위해서는 cd ~ 를 사용해야 한다.

4.1.4 디렉토리 생성과 삭제
4.1.4.1 디렉토리 생성
mkdir 명령어를 사용한다.
[root @edu00 /home]#mkdir linux
한번에 여러개의 디렉토리를 만들고자 한다면 생성하고자 하는 디렉토리명을 한칸씩 띄어서 입력하면 된다.
[root @edu00 linux]#mkdir public_html doc tmp
4.1.4.2 디렉토리 삭제
특정의 디렉토리를 삭제하기 위해서는 rm과 rmdir 명령어를 사용한다.
[root @edu00 linux]#rmdir doc

 


[root @edu00 linux]#rm –rf tmp

4.1.5 디렉토리 목록 확인
디렉토리 목록을 확인하는 명령은 "ls"이다.
현재 디렉토리나 지정된 디렉토리내에 파일의 목록을 list 시켜준다.
[root @edu00 linux]#ls
[root @edu00 linux]#ls -l
[root @edu00 linux]#man ls

4.1.6 디렉토리의 이동
[root @edu00 linux]#cd ..
[root @edu00 linux]#cd /home

4.2. 경로(path)
경로명은 리눅스 파일시스템에서 파일(또는 디렉토리)의 위치를 나타낸다.

4.2.1 절대 경로
리눅스 시스템에서 사용자들은 파일을 계층적인 디렉토리 구조안에 저장하게 된다.
그리고 그 파일을 다시 사용하기 위해 파일의 이름 뿐만 아니라 그 파일이 어떤 디렉토리 내에 있는지도 지정을 해주어야 한다.
최상위 root 디렉토리로부터의 경로를 의미한다

4.2.2 상대 경로
현재 디렉토리를 중심으로 다른 디렉토리나 파일의 경로를 지정한다.

4.3 홈 디렉토리
login을 하게 되면 각 계정 사용자별로 각각의 특정한 디렉토리가 지정되고 이를 홈 디렉토리라 한다.
일반 사용자들의 홈 디렉토리는 /home 디렉토리 아래에 사용자 계정명으로 생성된다.

4.4 파일 입출력 방법

 

 

4.4.1 cat
cat은 표준 입력을 받아서 표준 출력을 해주는 명령어이다.
[root @edu00 linux]#cat > file1
I am a linuxer.
Linux is good.
^D
 
[root @edu00 linux]#cat test.txt namebook > newfile

[root @edu00 linux]#cat >> ~/.bashrc
umask 022
<Ctrl+D>

[root @edu00 linux]#cat > ~/.exrc
set nu
set tabstop=3
Ctrl+D
 
[root @edu00 linux]##cat > ~/.vimrc
set tabstop=3
set number
Ctrl+D

4.4.2 파일과 디렉토리 복사
4.4.2.1 파일 복사
[root @edu00 linux]#cp /etc/passwd .
4.4.2.2 디렉토리 복사
[root @edu00 linux]# cp -r /home/linux .

4.4.3 파일과 디렉토리의 삭제
rm과 rmdir

 

 

4.4.4 파일과 디렉토리 이동 그리고 파일명의 변경
[root @edu00 linux]#mv test.txt text.txt
[root @edu00 linux]#mv text.txt /root

4.5 파일의 인덱스 노드 번호(i-node)와 link 파일
파일의 I-node는 달리 파일에 고유한 index node number를 가리킨다.
그리고 기본적으로 링크의 효용은 디스크 공간의 절약에 있다.
4.5.1 File and i-node
하드디스크와 같은 파일시스템은 Boot Block, Super Block, I-node Block, Data Block으로 구분되어 있다.
Boot Block은 시스템 부팅시에 참조할 정보들이 기록되어 있다.
Super Block은 전체 파일 시스템에 대한 정보를 담고 있다.
Data Block은 파일의 정보 자체가 저장되는 곳이다.
inode란 Data Block에 위치한 파일들에 대한 개별적인 정보를 담고 있는 일종의 연결고리이다. inode는 실제의 데이타 파일들과 1:1로 대응을 이루며 파일의 크기와 생성일, 접근 권한과 같은 외적인 사항들을 저장해 놓은 별도의 파일이다.
리눅스 시스템상의 모든 파일들은 고유의 inode 번호를 가지고 있다.
[root @edu00 linux]#stat /etc/passwd
[root @edu00 linux]#ls -i
[root @edu00 linux]#ls -ii

4.5.2 link
4.5.2.1 Hard link
두 파일명은 같은 inode와 같은 Data Block들을 가리킨다.
원본 파일과 완전히 동일하고, 디스크 공간을 차지하지 않는다.
파일시스템을 넘어갈 수 없고, 디렉토리에 대한 하드링크를 만들 수 없다.
[root @edu00 linux]#pwd
/home/linux
[root @edu00 linux]#cp /etc/passwd passwd
[root @edu00 linux]#ln passwd hardlink
[root @edu00 linux]#stat passwd
[root @edu00 linux]#stat hardlink

 


[root @edu00 linux]#ls -il
[root @edu00 linux]#ln /home home  (x)
[root @edu00 linux]#df -h
[root @edu00 linux]#ln /etc/passwd pass    (x)

4.5.2.2 Symbolic link
symbolic link는 자신의 inode를 가지며 작은 양의 디스크 공간을 차지한다.
symbolic link를 사용하면 2개의 서로 다른 파일들이 존재하게 된다.
실제 data를 가지는 원본 파일과 원본 파일의 이름만을 가지고 있는 링크 파일이 그것이다. symbolic link는 파일시스템을 넘어가거나 다른 컴퓨터로 넘어갈 수도 있으며, 디렉토리에 대한 symbolic link도 가능하다.
[root @edu00 linux]#ln -s passwd symbolic
[root @edu00 linux]#ls -il
[root @edu00 linux]#rm -f passwd
[root @edu00 linux]#ls -l
[root @edu00 linux]#cat hardlink
[root @edu00 linux]#cat symbolic  (x)
[root @edu00 linux]#ln -s /usr/doc document
[root @edu00 linux]#ls -il
[root @edu00 linux]#cd document
[root @edu00 doc]#pwd
/usr/doc
[root @edu00 linux]#ls
[root @edu00 linux]#ls -l /bin | grep ^l
[root @edu00 linux]#ls -l /lib | grep ^l
[root @edu00 linux]#ls -l /etc/rc.d/rc3.d | grep ^l

4.6 파일 permission
리눅스는 다중 사용자 시스템이기 때문에 정보나 파일들이 다른 사용자들에게 노출될 수가 있다. 그러므로 리눅스 사용자들은 서로간에 자신들의 정보를 보호할 수 있는 방법이 필요하다.

 

 

4.6.1 파일 퍼미션
[root @edu00 linux]#ls -l
-rw-rw-r--    1  linux  linux    38 Apr 10 17:41 test.txt
drwxrwxrwx   2  linux  linux    4096 Apr 10 17:41 .test
여기서의 권한은 그 파일 자체에 대한 권한이 아닌 파일의 data에 대해서이다.
즉 파일의 data를 읽거나 수정할 수 있다. 하지만 그 파일명을 바꿀 수는 없다.
디렉토리에서 r은 디렉토리 안에 있는 파일들을 볼 수 있고 복사가 가능하다.
디렉토리에서 w는 디렉토리 안에 파일을 생성하거나 삭제가 가능하다.
디렉토리에서 x는 디렉토리 안에 있는 파일들을 access할 수 있다.
그리고  실행 파일에 대해서는 실행 가능하다. 

4.6.2 사용자 분류(ownership)
rwx가 3개가 있는데, 이것은 각각 user, group, other 사용자들에게 적용되는 권한이다.
[root @edu00 linux]#ls -l
-rw-rw-r--    1  linux  linux    38 Apr 10 17:41 test.txt
drwxrwxrwx   2  linux  linux    4096 Apr 10 17:41 .test
처음 나오는 linux는 user가 되고 두번째 linux는 group이 된다.
사용자가 파일에 접근할 때 id가 linux이면 처음 권한을 갖고, linux라는 그룹에 속해 있으면 두번째 권한을 갖고, 이도 저도 아니면 3번째 권한을 가진다.

4.6.3 권한 결정
-rwxrw-r--   1   linux   web   30 Apr 10 17:41 file
linux 사용자 : 파일의 소유자이기 때문에 처음 나오는 rwx 권한을 갖게 된다.
web 그룹에 속한 linuxna 사용자 : 그룹에 속해 있기 때문에 rw 권한을 갖게 된다.
other 사용자 : r 권한만을 갖게 된다.

4.6.4 퍼미션 변경
[root @edu00 linux]#ls -l
-rw-rw-r--  1  linux web 38 Apr 10 17:41 file
[root @edu00 linux]#chmod g-w file
: 그룹의 권한에서 w를 없앤다.

 

 

-rw-r--r--  1  linux  web  38 Apr 10 17:41 file
[root @edu00 linux]#chmod o+w file
: other에게 w 권한을 추가한다.
-rw-r--rw-  1  linux  web  38 Apr 10 17:41 file
[root @edu00 linux]#chmod a=r file
: 다른 권한은 없애고 r권한만 추가한다.
-r--r--r--  1  linux  web  38 Apr 10 17:41 file
: u는 user의 권한이며 g는 group의 권한, o는 other 사용자의 권한을 의미하고 a는 all의 약자로 user, group, other 사용자 모두를 의미한다.
권한을 없앨 때는 "-" 기호를 사용하며 권한을 부여할 때는 "+" 기호를 사용하고 "="는 기존의 퍼미션을 새로운 퍼미션으로 일치시킨다.
파일의 권한을 바꿀 수 있는 사용자는 그 파일의 소유자(user)와 root뿐이다.

4.6.5 소유권 변경
[root @edu00 linux]#ls -l file
-rw-rw-r--  1  linux web 38 Apr 10 17:41 file
[root @edu00 linux]#chown linux1 file
: user(owner)를 linux1로 변경한다
[root @edu00 linux]#ls -l file
-rw-rw-r--  1  linux1 web 38 Apr 10 17:41 file
[root @edu00 linux]#chgrp linux2 file
: group의 소유권을 변경한다.
[root @edu00 linux]#ls -l file
-rw-rw-r--  1  linux1 linux2 38 Apr 10 17:41 file
[root @edu00 linux]#chown .linux1 file

위의 과정을 한번에 할 수 있다.
[root @edu00 linux]#chown linux1.linux2 file
[root @edu00 linux]#chown linux2:linux1 file

 

 

 

4.6.6 mode bit (8진법 표현)
rwx : 111  --> 7
rw- : 110  --> 6
--x : 001  --> 1
2진수로 계산하여 8진법 표현: 2의 0승, 2의 1승, 2의 2승 ..
[root @edu00 linux]#chmod 755 file
-rwxr-xr-x 1 linux1 linux 38 Apr 10 17:41 file

4.6.7 umask
처음 생성되는 파일의 권한을 부여하는 것은 umask 값이다.
[root @edu00 linux]#umask
002
[root @edu00 linux]#mkdir aa
[root @edu00 linux]#touch bb

명령행에서 설정한 값은 umask 값을  변경하지만 현재 쉘에서만 적용, 다음 로그인시에는 적용되지 않음
[root @edu00 linux]#umask 002
[root @edu00 linux]#umask
002

계속 적용하고자 한다면 다음과 같이 한다.
[root @edu00 linux]#vi /etc/bashrc
------------
......
umask 022
.............
-----------
혹은
[root @edu00 linux]#cat >> ~/.bashrc
umask 022
^D

 


4.7 파일 검색  find
find [경로] [수식]

4.7.1 수식
4.7.1.1 조건
-name filename
-type b : block device 파일
c : character device 파일
d : 디렉토리
f : 일반 파일
l : 심볼릭 링크  파일
p : named pipe
s : socket
-perm mode  
-inum number(inode)
-user uname
-group gname
-size n[문자수]
-atime n  // n일전 파일에 접근
-ctime n  // n일전 파일의 상태 변경
-mtime n  // n일전 파일의 내용 변경
-amin n
-cmin n
-mmin n
-links n
-empty  // 파일 크기가 0 
-uid n  
-gid n  

4.7.1.2 행동
exec command  ;까지의 문자열을 실행, {}은 현재 선택된 파일명으로 대체
-print

 


-print()
-fprint file
-printf format
-prune  현재 디렉토리 아래로는 내려가지 않는다.
-ls  파일을 ls -dils 형태로 출력
-ok command -exec와 같지만 매번 사용자에게 실행여부를 질의
 
4.7.1.3 예제
#find / -empty
#find / -name "*.mp3"
#find /home -uid 500 
/home 디렉토리 하에서 소유자 UID가 500인 파일을 찾음

#find /tmp -type d  
/tmp 디렉토리 하의 디렉토리를 찾음

#find /tmp -type f -exec chmod a+x {} \;
/tmp 디렉토리에서 일반적인 파일을 찾은 후에 퍼미션에 실행 퍼미션을 더함

#find . -name "*.[ch]" -type f -exec rm {} \;
확장자가 c나 h인 일반 파일을 찾아 삭제

#find / -user linux -type f -exec mv '{}' /dev/null \;
파일의 소유자가 linux인 일반파일을 /dev/null로

#find / \( -perm -04000 -o -name '*.o' \) -exec ls '{}' \;
 
4.8디렉토리 구조

4.8.1 최상위 디렉토리(/)
최상위 디렉토리는 root 디렉토리라고 하며 하나의 시스템에 유일하게 하나가 존재한다.

 

 

root 디렉토리는 root partition이 시작되는 위치이기 때문에 될 수 있는 데로 빈 상태로 유지하는 것이 좋다.
root 디렉토리는 모든 디렉토리의 출발점인 동시에 다른 시스템과의 연결점이 된다.

4.8.2 /boot
환경 설정 파일을 제외한 부팅 과정에서 필요한 모든 구성 요소들이 위치한다.
System Map과 kernel 압축 image 파일이 이곳에 위치한다.

4.8.3 /bin
시스템의 모든 사용자가 이용할 수 있는 일반적인 명령어 파일, 예를 들어 ls, cp, mv, mkdir 등의 파일들이 존재한다.

4.8.4 /dev
리눅스에서는 장치 관리를 파일로 처리한다. 장치에 관련된 특수 파일들이 위치한다.

4.8.5 /etc
환경 설정을 위해서 필요한 파일들이 있다.
web server 프로그램이나 sendmail 프로그램, bind 프로그램 등의 서비스 구현을 위한 환경 설정 파일들이 이곳에 있다.

4.8.6 /home
일반 계정 사용자들의 HOME 디렉토리가 위치한다.

4.8.7 /lib
shared library가 위치하며 /lib에는 커널 모듈과 사용자 인증 모듈이 위치한다.

4.8.8 /var
시스템 로그를 비롯한 가변적인 파일들이 기록되는 곳이다.
data의 크기가 자주 변하는 파일들을 위해서 사용한다.
/var/log/messages
/var/spool
/var/spool/mail

 


4.8.9 /usr
공유 가능한 대부분의 프로그램들이 설치되며 네트워크를 이용해서 여러 개의 시스템을 연결할 경우, 이 디렉토리를 공유해서 설치된 프로그램들을 활용할 수 있다.
읽기 전용으로 mount되어야 한다.

4.8.10 /proc
프로세스와 커널의 내부적인 정보를 제공하기 위한 가상 파일 시스템을 위한 디렉토리이다.

4.8.11 /sbin   - 시스템 관리에 사용될 실행 명령어

4.8.12 lost+found
시스템이 비정상적으로 종료되었을 때 램상에 있는 작업들이 정상적으로 언마운트되지 못하여 이 디렉토리에 저장된다.

4.9 key 설정
명령 입력 도중 백스페이스 키를 누르면 입력 문자가 지워지고 Ctrl+U 키를 누르면 전체 행이 삭제되고 Ctrl+C 키를 누르면 명령이 실행 도중에 중단된다. Ctrl+Z 키를 누르면 명령이 일시 중단된 상태가 되며 탭키를 누르면 나머지 명령이 채워진다.
이러한 기능이 작동하지 않을 때 설정하는 명령어가 있다.

[root @edu00 /root]#stty -a
[root @edu00 /root]#stty erase ^H
[root @edu00 /root]#stty kill ^U
[root @edu00 /root]#stty intr ^C
[root @edu00 /root]#stty susp ^Z

4.10 /proc 해부
각종 시스템 정보를 담고 있는 파일들이 위치해 있으며 실행 중인 프로세스들에 대한 정보를 사용자가 원할 때 확인할 수 있다.
이 디렉토리의 파일 시스템은 실제로 존재하지 않는 일종의 허상이며 커널이 메모리 상에 구현해 놓은 것으로 디스크상에는 존재하지 않는다.

 


실행중인 커널에 대한 정보를 포함하고 있는 일종의 가상의 파일시스템이다.

[root @edu00 /roor]#cat /proc/file_name - 파일의 내용을 자세히 확인
어떤 시스템의 경우에는 커널과 통신하기 위해서 /proc 파일 시스템을 요구하기 때문에 반드시 마운트해야 한다.
   
4.10.1 /proc 디렉토리 내용
/proc/1
: 프로세스 번호 1번인 init process에 대한 정보가 있는 디렉토리로, 각 프로세스는 자신만의 디렉토리를 /proc 아래에 갖게 되는데, 자신의 프로세스 식별 번호(process identification number)가 그 디렉토리의 이름이 된다.

/proc/cpuinfo
: 프로세서의 정보가 들어 있다. cpu의 타입, 모델, 제조회사, 성능 등에 관한 정보를 알려준다. #cat /proc/cpuinfo라고 명령을 내리면 CPU에 대한 내용을 볼 수 있다.

/proc/devices
: 현재 커널에 설정되어 있는 장치의 목록을 볼 수 있다.

/proc/dma
: 현재 어느 DMA 채널이 사용 중인지를 알려준다. DMA settings

/proc/filesystems
: 어떤 파일시스템이 커널에 설정되어 있는지 알 수 있다.

/proc/interrupts 
: 현재 어느 인터럽트가 얼마나 많이 사용 중인지 알 수 있다. IRQ settings

/proc/ioports    
: 현재 어느 I/O 포트가 사용 중인지에 대한 정보를 갖고 있다. I/O settings

 

 


/proc/kcore
: 시스템에 장착된 실제 메모리의 이미지(즉, 실제 메모리의 내용을 그대로 본뜬 것)로, 이 파일의 크기는 실제 메모리의 크기와 정확히 일치하는 것처럼 보인다. 그러나 이 파일은 프로그램이 필요로 하는 부분의 이미지만 그때 그때 만들어 내도록 되어 있어서, 실제로 메모리를 그만큼 차지하고 있는 것은 아니다.
(/proc 디렉토리의 내용을 다른 곳에 복사하지만 않는다면, /proc 안의 내용은 아무런 디스크 공간을 차지 하지 않는다는 점을 기억하자)

/proc/kmsg
: 커널이 출력하는 메시지들로 syslog 파일에도 기록된다.

/proc/ksyms
: 커널이 사용하는 심볼들의 표를 보여준다.

/proc/loadavg
: 시스템의 평균부하량(load average)을 보여주는 것으로, 지금 시스템이 해야 하는 일들이 얼마나 많은지 알려주는 세가지 지표를 볼 수 있다.

/proc/meminfo
: 메모리 사용량에 대한 정보를 보여주는 것으로, 실제 메모리와 가상 메모리를 모두 다룬다. available memory, free memory, swap, cached memory, buffers

/proc/net
: 네트워크 프로토콜들의 상태에 대한 정보가 들어 있다.

/proc/self
: 이곳은 이 디렉토리를 들여다보는 프로그램 자신의 프로세스 디렉토리로 링크가 되어있다. 즉, 서로 다른 두 프로세스가 /proc 을 본다면 그들은 서로 다른 링크를 보게 되는 것이다. 이렇게 하면 프로그램들이 자신의 프로세스 디렉토리가 어디인지를 쉽게 알 수가 있다.

 

 


/proc/stat
: 이곳에는 시스템의 상태에 관한 다양한 정보가 있다. 즉, 부팅 후 page fault가 몇번 일어났는가 하는 것들을 알아 볼 수가 있다.

/proc/uptime
: 시스템이 얼마나 오랫동안 살아 있었는지 보여준다. uptime and idle time

/proc/version
: 커널의 버젼을 알려준다. host, date 등
위에 나열한 파일들 대부분이 알아보기 쉬운 텍스트 파일로 되어 있긴 하지만, 어떤 경우에는 쉽게 알아보기 힘든 형식을, 가지고 있기도 하다.
그래서 이런 파일들을 좀 더 쉽게 알아볼 수 있도록 해주는 명령들이 준비되어 있는데, free 명령은 이것을 kilobyte 단위로 좀 더 알기 쉽게 나타낸다.

4.10.2 /proc/subdirectory*
/proc/scsi :
/proc/ide  :
/proc/net  : network activity
/proc/sys  : kernel configuration parameters       

4.10.3 /proc/sys
커널에서 CONFIG_SYSCTL이 활성화되었다면 실행중인 시스템에서 파라미터를 수정할 수 있다. 수정 값은 일시적이고 시스템 종료시에 저장되지 않는다.
[root @edu00 /root]#echo "1" > /proc/sys/net/ipv4/ip_forward 
: IP forwarding 가능
[root @edu00 /root]#echo "8192" > /proc/sys/fs/file-max 
: 파일 핸들 수를 2배로 한다.
 [root @edu00 /root]#echo "60 70 80" > /proc/sys/vm/buffermem

 

 

 


부팅시에 /etc/rc.d/rc.sysinit은 #sysctl -p /etc/sysctl.conf를 호출한다.
sysctl은 /etc/sysctl.conf를 세팅한다.
[root @edu00 /root]#sysctl -p /etc/sysctl.conf
[root @edu00 /root]#sysctl -a
[root @edu00 /root]#sysctl -A

[root @edu00 /root]#vi /etc/sysctl.conf
# Disables IPv4 packet forwarding
net.ipv4.ip_forward = 0
# Enables source route verification
# This drops packets that come in over interfaces they shouldn't;
# for example, a machine on an external net claiming to be one on
yourlocal network
net.ipv4.conf.all.rp_filter = 1
# Disables automatic defragmentation
net.ipv4.ip_always_defrag = 0
# Enables the magic-sysrq key
kernel.sysrq = 1
# Disables stop-a on the sparc
kernel.stop-a = 0
 
4.11시스템 복구
파일시스템의 가벼운 손상은 부팅할 때 시스템에서 자동으로 복구를 시켜준다. 하지만 손상의 정도가 크다면 수동으로 복구를 해줘야 한다.
[root @edu00 linux]#mv /etc/passwd /etc/passwd.bak
[root @edu00 linux]#vi /etc/fstab
------------------------------------------------
......
LABEL=/home / ext2 defaults 1 1
LABEL=/  /home ext2 defaults 1 2
......
----------------------------------------------

 


[root @edu00 linux]#reboot
.......
boot:vmlinuz 1 root=/dev/hda2
bash#mv /etc/passwd.bak /etc/passwd
bash#reboot
.......
.......
boot:linux rescue
.......
bash#ls
bin dev etc lib linuxrc lost+found mnt modules proc sbin tmp usr
bash#mkdir /mnt/hd
bash#mknod /dev/hda b 3 0
bash#fdisk -l /dev/hda
.......
/dev/hda2 * 1 20 160618+  83 Linux

bash#mknod /dev/hda2 b 3 2
bash#mount -t ext2 /dev/hda2 /mnt/hd
bash#ls /mnt/hd
bash#cd /mnt/hd/etc
bash#vi fstab
Command not found ...
bash#pico fstab
--------------
bash#exit
 

[이 게시물은 관리자님에 의해 2011-10-31 17:32:05 Linux에서 이동 됨]
추천
0

댓글 0개

전체 5,397
개발자팁 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1402호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT