4장. UNIX 시스템 사용 명령어

     

    4.1 시동과 종료 

    4.1.1 login 
    : login은 사용자가 console을 이용할 때와 터미널을 이용할 때는 다소 차이가 있지만 그렇지 않는 경우도 있다. 예를 들자면 어떤 telnet 접속프로그램으로 접속할 경우 뜨지 않던  openwindows가 다른 프로그램에서는 뜰수도 있다. 

    4.1.2 command line의 입력형식 
    : UNIX는 명령어 입력 시에 대소문자 구분이 있다는 점과 항상 명령어의 사용법에 있어서  자신이 없을 때에는 아래의 형식으로 도움말을 이용토록 한다. 그리고 앞으로 나오는 프롬 프트는 '#'로 통일한다. 이러한 프롬프트에 대해서는 크게 연연하지 않아도 된다. 예를 들자면 시스템에 Solaris 2.5를 설치한 다음 처음 뜨는 root용 프롬프트는 '#'이다. 하지만  이것을 수정할 수도 있다. Solaris를 설치하게 되면 먼저 root는 Sun Shell(이하 sh)로 셋팅이 되어 있어서 그렇게 뜬다. 하지만 C Shell(이하 csh)로 설정할 경우 틀려진다. 그리고   
    자신만의 Shell파일(.cshrc)에서 set prompt문법을 이용하여 아예 프롬프트를 바꿀 수도 있으므로 이 부분에 대해서는 크게 신경을 쓰지 않도록 하자. 

    # man ls   

    4.1.3 비밀번호의 설정과 변경 
    : 비밀번호는 시스템을 사용함에 있어서 가장 소중히 다뤄야 할 부분이다. 쉽게 알 수 없는  즉 자신의 신상명세와 연관없는 것을 고르고 남들이 알지 못하도록 해야 한다. 예를 들자면  규칙을 이용하여 암호를 설정하는 습관을 가지는 것도 도움이 된다. 다음의 명령어로 암호 를 바꿀 수 있다. 

    # passwd   
      
     Enter New password :   
     Re-enter New password :   

    4.1.4 logout 
    : 시스템 사용을 종료할 때에는 실행중인 프로세스가 없는지 확인을 하고 종료한다. 

    # ps -a   
     ............. 

    # logout   

    종료할 때에는 logout 과 exit 또는   Ctrl + D 이다. 

    4.2 파일과 디렉토리 

    4.2.1 파일의 종류 

    (1) 정규파일 
    : 정규파일이란 .login 이나 a.txt 같은 보통파일을 말한다. 

    (2) 디렉토리 파일 
    : UNIX에서는 정규파일과 디렉토리 파일을 다해서 파일이라고도 부른다. 디렉토리 파일은  ./data 같은 디렉토리를 의미한다.  
     다음의 표에서는 / 밑에 있는 디렉토리를 성격별로 나타낸 것이다. 
     

 
/ : UNIX 커널의 실행화일 및 시스템 관리에 중요한 .login, .profile드의 파일이 포함된다. 
/bin : UNIX의 기본 커맨드 파일들이 위치한다. 
/etc : init, passwd등 시스템 관리용의 커맨드나 데이터 파일들이 위치한다. 
/lib : 커맨드들이 사용하는 기본적인 파일들이 배치된다. 
/temp : 커맨드 실행 중에 필요한 임시 파일들을 위치시키기 위하여 사용되는 디렉토리이 
다. 
/usr : 일반적으로 시스템 관리자의 파일들이 배치한다. 
/usr/bin : 워드, 데이터 베이스관리 프로그램들과 개발된 프로그램등이 포함된다. 
/usr/home : 사용자들의 홈 디렉토리로서 대표적으로 지정하는 것이나 시스템을 설치할  
때 다른곳으로 정해줄수도 있으며 사용자계정을 만들 때에 다른 곳으로 만들어 줄 수도  
있다. 
/usr/include : C언어의 header 파일들이 포함된다. 
/usr/man : UNIX의 매뉴얼이 위치한다. 
/usr/spool : CPU와 주변장치를 중첩하여 수행시키기 위하여 주변장치로 출력되는 데이터  
파일들을 임시로 저장하는 스풀용의 디렉토리다. 
/usr/adm : UNIX의 사용자와 프로세스의 작동을 monitor하는 accounting error reports  
같은 프로그램들이나 데이터 파일들이 포함된다. 
 
 
(3) 특수화일 
 /dev밑의 파일들을 일컽는데 이곳에는 입출력장치의 제어기를 이곳에서 맞추어 장치를 연결할 수 있게 한다. 예를 들면 /dev/tty12는 12번 터미널을 의미한다. 이곳에서는 자신이 가지고있는 장치가 /dev 디렉토리내의 어떤 형식의 장치를 가지고 있는가를 알고만 있어도  장치를 인식할 수 있다. 

4.2.2 파일명과 경로명 
: UNIX 시스템의 파일명은 255문자이내에서 사용 가능하다. 주의할 것은 대·소문자를 구별 한다는 것이다. 또 한가지 "." 나 "_"로 시작되는 파일명은 시스템 파일들이 많이 사용하기 때문에 사용하지 않는 것이 바람직하다. 

(1) 상대경로명 
: 만약 현재의 /home/pctop/pub 에서 /home/pctop/data 로 이동하려고 할 때 cd ../pub  라고 입력하면 된다. 이때 쓰이는 방식이 상대경로 이동방식이다. 

(2) 절대경로명 
: 만약 현재의 /home/pub 에서 /home/a 로 이동하려고 할 때 cd /home/a   라고 입력하면 된다. 이때 쓰이는 방식이 절대경로 이동방식이다.  

4.2.3 파일의 특성 
 파일의 보안성을 유지하기 위해서는 무엇보다도 첫째, 허가모드를 중요시 여겨야 한다. 파일의 허가모드의 순서는 다음과 같다. 
 

 
 user  group  others
 rwx  rwx  rwx
 
파일의 유형에는 다음의 7가지에 한한다 
 
 
- : 정규파일 
d : directory 
l : symbolic link 
c : character type 
b : block type 
s : socket 
p : named pipe 
 
 
이 허가모드를 변경하기 위해서는 chmod 명령어를 이용해야 하며 그에 대한 상세한 설명은  4.3의 기본적인 명령어중 chmod를 참조하기 바란다. 

4.3 기본적인 명령어  

기본적으로 UNIX는 대소문자를 구별한다. 그리고 alias가 되어있지 않는한 소문자로 명령어 를 입력하는 것이 일반적이므로 이에 주의하여야만 한다.  

id : 사용자의 이름과 번호의 표시(사용자가 속한 group id와 user id를 표시함)  
 # id   

pwd : 사용자의 현재의 디렉토리 표시  
 # pwd  

tty : 사용자 단말기의 장치파일명 표시  
 # tty  

stty : 터미널 제어특성의 표시 및 지정, 현재 컴퓨터 시스템과 연결되어 있는 단말기나 콘솔의 입출력을 논리적으로 변경  
 #stty  

date : 시스템의 날짜와 시간의 표시  
 #date  

cal : 현재의 달력을 보고자 할 때 사용한다.  
 #cal  

who : 현재 접속되어 있는 사용자들 표시  
 #who  

whoami : 현재 접속해 있는 자신의 id를 표시  
 #whoami  

finger : 시스템 사용자의 개인 정보표시(이 정보에서 이름은 가입할 당시의 comment만 찍  
힘)를 위한 것이지만 이렇게 안 나올 경우도 있다.   
 #finger root  

그것은 자신이 시스템에 오래 접속하지 못할 사정이 생겨서 다른 사용자가 이 명령어를 이용하여 검색할 때 '지금 저는 출장중입니다' 라는 메시지가 나오도록 한다면 얼마나 좋을 것인가. 자! 방법이 있다. 자신의 로그인 디렉토리(이하 홈 디렉토리)에 .plan 이라는 파일을 만들어 보자. 이때는 일반 텍스트편집기를 사용하면 된다. 예를 들면 VI Editor 같은 것이다. VI를 이용하여 '저는 출장중입니다' 라는 메시지를 쓰고 저장후 종료하면 .plan 이라는 파일을 cat을 이용하여 내용을 확인한 후 명령프롬프트 상에서 시험해보자.   
만약 자신의 id가 kcs 라면 'finger kcs'를 입력해본다. 그러면 '저는 출장중입니다'라는  메시지가 뜰 것이다. 잠깐! 한글로 썼을 경우 안나타날수도 있다. 그러면 영어로 써야한다   

그것은 자신이 시스템에 오래 접속하지 못할 사정이 생겨서 다른 사용자가 이 명령어를 이용하여 검색할 때 '지금 저는 출장중입니다' 라는 메시지가 나오도록 한다면 얼마나 좋을 것인가. 자! 방법이 있다. 자신의 로그인 디렉토리(이하 홈 디렉토리)에 .plan 이라는 파일을 만들어 보자. 이때는 일반 텍스트편집기를 사용하면 된다. 예를 들면 VI Editor 같은 것이다. VI를 이용하여 '저는 출장중입니다' 라는 메시지를 쓰고 저장후 종료하면 .plan 이라는 파일을 cat을 이용하여 내용을 확인한 후 명령프롬프트 상에서 시험해보자.   
만약 자신의 id가 kcs 라면 'finger kcs'를 입력해본다. 그러면 '저는 출장중입니다'라는  메시지가 뜰 것이다. 잠깐! 한글로 썼을 경우 안나타날수도 있다. 그러면 영어로 써야한다.   

주사용 명령어. 

 
where  찾고자 하는 파일이나 디렉토리의 위치를 알려준다 # where index.html 
 
ps process의 상태표시  # ps -ajx 
option) 
-a : 다른 사람에 의해 소유된 프로세스에 대한 정보를 포함 
-c : command 이름을 표시 
-C : %cpu field내에 decaying average 대신에 raw CPU time을 표기 
-e : argument 외에도 환경을 표기 
-g : 이 option이 없으면 interesting 프로세스만 프린트 
-j : PPID, PID, PGID, SID, TT, TPGID, STDT, UID, TIME정보 포함 표기 
-u : USER, %CPU, %MEN, SZ, RSS, START field 포함 
-x : no controlling terminal 가진 프로세스 포함 
중간용어설명) 
PPID : process의 parent의 number id 
PGID : process group id of process 
SID : process 가 속해있는 session의 number id 
TPGID : TT 아래 명시된 터미널과 관계 있는 process group의 number id 
UID = 0 : Super-User 
 
 
df  디스크의 사용가능한공간표시 # df -u
cp  copy # cp index.html index_old.html
mv  move # mv index.html index_new.html
rm  remove # rm index.html
rmdir  remove directory # rmdir ./images
mkdir  make directory # mkdir photo
chdir  change directory # chdir /usr/local
cd  change directory # cd /usr/local/bin
du  디스크의 사용공간 표시(옵션이 없으면 현재의 위치에서 하위의 모든 파일들의 공간표시) # du ./ 
 
hostname 현재 접속해 있는 host의 이름을 표시 # hostname
man 해당하는 command의 manual을 참조하고자 할 때, 단 /usr/man에 그 항목이 있어야만 한다. # man ls 
 
&  background 처리를 위하여 명령어 뒤에 붙여준다. # test & 
 
alias  특정한 명령어를 자신이 임의로 수정 # alias cx chmod 
위와 같이 하면 cx는 chmod명령어를 대신한다. 이러한 작용을 shell에 추가시킬때는 다음과 같이 추가한다. 
alias cx 'chmod' 
alias를 해제하고자 할 때는 unalias를 사용한다. 
ex) # unalias cx 
그리고 현재 설정된 alias들을 보고 싶을때는 alias를 입력하면 된다. 다음은 한 예이다 
 
path 경로를 지정 
일반적을 shell에 지정하지만 명령어로서 수정할 수도 있다. 추가하는 방법은 다음곽 같다 
 
set path = ( ~/bin /bin /usr/bin /usr/local . ) 
 %set path = ( $path /usr/bin /usr/local /usr/local/etc ) 
두 번째 라인의 %set 명령어는 기존의 path에 추가할 때 사용하는 방법이다. 
 
find  디렉토리를 탐색하여 지정화일의 위치표시 # find index.html
cat  파일의 내용을 표시, DOS에서의 type명령어와 유사 # cat index.html 
 
more  파일의 내용을 한면씩 화면에 표시 # cat index.html | more
pg  파일의 내용을 표시 # pg index.html
head  파일의 처음 부분을 표시(기본값은 10라인) # head index.html
tail  파일의 마지막 부분을 표시(기본값은 10라인) # tail index.html
lp  파일의 내용의 인쇄요청 # lp index.html
pr  인쇄를 위한 파일의 페이지화, 파일을 인쇄하기 위한 준비로서 페이지를 분리한다. 각 페이지는 파일명, 날짜, 시간 및 페이지 번호를 표시하는 header를 포함한다. # pr index.html 
 
chmod  change mode # chmod 755 ./htdocs 
위에서 755가 의미하는 것을 해석해보면 만약 "ls -al  "을 입력했을 때 다음의 형식으로 나타났다고 가정하자 
# ls -al 
 drwxrw-rw-       ./htdocs 
 lrwxr--r--       ./pub ----> ./public_html 
위와 같이 나나났다면 처음의 d는 디렉토리를 의미하며 다음의 rwx 는 ./htdocs에 대한 소유주의 권한이 read,write,excute 의 세 가지 권한이 다 주어진 것이다. 다음의 rw- 는 소유주가 속한 그룹에게 주어진 권한이며, 다음의 rw- 는 그룹이외의 사용자에게 주어진 권한이다. 즉, 디렉토리이면서 소유주는 읽기·쓰기·실행이 가능하며 그룹에게는 읽기·쓰기 가능, 이외의 사용자는 읽기·쓰기가 가능하다. 여기서 각 권한블럭마다 3비트를 할당하고 있음을 알 수 있다. 즉 소유주에 대한 권한 rwx 를  2진으로 바꾼다면 1112 이다. 이것을 10진수로 바꾸면 7이며, 그룹에 대한 권한 rw- 를 2진으로 바꾼다면 1102 이며 10진수는 6이다. 그룹이외의 사용자도 마찬가지로 10진수 6이다. 그러므로 이 디렉토리에 대한 권한을 숫자로 표기한다면 766이다. 이것을 소유주는 읽기·쓰기·실행이 다 가능하면서 그룹과 이 외의 사용자는 읽기·실행만 가능하게 한다면 십진수로 755가 될 것이다. 그러므로 변경을 위해서는 chmod 755 ./htdocs   를 입력하면 된다. 모드부분에서 "lrwxr--r--"중 'l' 부분은 link를 의미하는 것으로서 ./public_html과 링크 되어 있음을 의미한다. 
 이것을 보다 쉽게 바꾸는 방법도 있다. 그룹은 g를 이 외의 사용자는 o로 나타낼 수 있는데 현재의 권한 766에서 744로 변경하고자 할 때에는 그룹이 가지고 있는 쓰기 권한을 박탈하는 동시에 이 외의 사용자에게도 쓰기 권한을 박탈해야만 한다. 이때 사용하는 용법은 다음과 같다. 
 
chown  change owner # chown webadm ./htdocs
chgrp  change group # chgrp student webadm
ln  link, 예 : ln -s list3 /tmp/list # ln -s /usr/local/etc/httpd/htdocs ./htdocs 
UNIX에서의 link는 공간의 절약을 꾀할 수 있으나 연결상태를 잘 파악하고 사용하여야 한다. ln의 option중에서 -s의 의미는 다른 file system에 있는 것도 link할 수 있는 symbolic link를 사용함으로서 유용한 option이다. 
 
 
 
    4.4 압축 유틸리티 사용법  

    4.4.1 .tar 
     tar는 정확히 말하자면 압축유틸리티가 아니다. 이것은 단순히 여러 개의 파일을 하나의  덩어리로 결속시키는 것이다. 이렇게 해서 하나의 덩어리로 만든 다음에 압축을 하는 것이  대개의 과정이다. 결속 할 때의 사용법은 다음과 같다.  

    # tar -cvf <만들 파일이름>.tar <묶고자하는 파일이름>  
    결속된 .tar 파일을 풀고자 할 때의 사용법은 다음과 같다.  
    # tar -xvf <묶여있는 파일이름>.tar 

    4.4.2 .tar.z 
     위에서 .tar를 살펴본 것처럼 .tar로 결속을 시킨 다음 압축을 이행한다. 이때는 compress 라는 유틸리티를 이용하게 된다. 그렇게 하여 압축을 하면 원래의 파일에 .z가 추가적으로  붙게 된다. 압축하는 과정과 푸는 과정은 다음과 같다.  

    # compress filename   
    # uncompress filename  

    4.4.3 .gz 또는 .z 
    compress외에 gzip이라는 유틸리티도 이용되는데, 사용법은 다음과 같다.  

    #gzip filename   (압축할 때) 
    # gzip -d filename 

    4.5 작업제어 관련 명령어 

    4.5.1 background 작업 프로세스의 정지와 삭제 
     정지는 아래의 stop 명령어로 제어될 수 있다. 그리고 현재의 진행중인 작업을 보려면  jobs라는 명령어로 체크할 수 있다. %job_number는 현재 실행중인 프로세스 번호를 적는 것 으로서 pid와 동일한 값을 갖는다. 
    # stop %job_number   
    # jobs (show job#) 

    삭제를 위해서는  명령어를 사용하는데 사용법은 다음과 같다. 여기서 pid는 프로세스 id이며, 'ps -a' 명령어로 알 수 있다. 
    # kill -9 pid 

    4.5.2 foreground 작업 프로세스의 정지와 삭제 
     현재 작업중인 프로세스를 background작업으로 돌리기 위해서는 'Ctrl + z  '를 입력한다. 그리고 이렇게 background로 전환된 작업은 다음의 명령어로 제어될 수 있다. 

    # fg   ☞ foreground 로 다시 전환시킴 
    # \   ☞ 종료를 시킴 
    # bg   ☞ 계속 진행시킴 

    4.5.3 기타 작업제어 관련 명령어 
     # command&   ☞ background 작업개시 
     # ps   ☞ 현재 실행중인 프로세스 id 디스플레이 
     # jobs   ☞ background 작업번호 및 상태 디스플레이 
     # nohup command&   ☞ logout 후에도 명령 실행 계속유지 
     # fg   ☞ 현재작업을 foreground 로 전환시킴 
     # fg %n   ☞ n 번 작업을 foreground 로 전환시킴 

    4.5.4 history 
     이전에 사용된 명령어를 호출하는 명령어이다. history의 개수지정은 자신의 shell에서 변수로 지정할 수 있으며, 지정하는 방법은 다음과 같다. 개수를 50개로 한다면, 

    set history=50 
     



[ HOME ][ PREV ][ NEXT ]