자체 데이터베이스를 통해 파일을 찾아주는 명령어이다.

사용법 : 
locate [옵션] 
slocate [옵션] 

파일을 찾는 명령어인 locate는 현재 거의 사용되지 않으며, 이 locate에 보안을 강화한 slocate가 많이 사용된다. 현재 사용되는 locate는 대부분 slocate에 심볼릭 링크로 만들어진 파일이다. 자세한 내용은 slocate를 살펴보자.

[관련 명령어]
find 파일을 찾을 경로, 찾고자 하는 파일의 표현식, 찾을 경우 실행명령으로 파일을 찾는 명령어
slocate locate 명령어의 보안 강화 버전이다.
2005/06/18 12:59 2005/06/18 12:59
procmail에서 접근 제어 파일을 생성하는 명령어이다.

사용법 : lockfile [옵션] 파일명 
-sleeptime : lockfile이 생성시도가 실패한 후, 다시 시도하기까지의 시간을 sleeptime으로 한다. 기본값으로 8초이다. 
-r retries : 파일 생성을 위한 재 시도 후 새로이 시도할 횟수를 지정한다. 
   기본값은 -1로써 정지하지 않고 계속 시도한다. 
-l locktimeout : lockfile이 마지막으로 수정/생성된 후, 지정한 locktimeout 시간이 흐른 후 강제적으로 lockfile이 제거된다. 
-s suspend_time : 지정한 supend_time 후 lockfile이 삭제된다. 기본값은 16초이다. 
-! : 결과값이 역이다. 주로 셀 스크립트에서 사용한다. 
-ml, -mu : 메일 스풀 디렉토리 퍼미션이 허용된다면, 시스템의 메일박스를 lock(-ml) 이나 unlock(-mu) 시킬 수 있다.


lockfile 명령은 procmail 패키지 중 하나로서, 특정 파일이나 디바이스, 리소스에 대해 접근 제어를 해 주는 세마포어 파일인 잠금 파일을 생성하는데 사용한다. 이 잠금 파일은 특정 파일, 디바이스, 리소스를 특정한 프로세스가 쓰고 있다는 플래그로 사용하여 다른 프로세스의 접근을 제한한다. 잠금 파일은 기본적으로 /var/lock에 위치한다.
2005/06/18 12:58 2005/06/18 12:58
주어진 메시지를 /var/log/message 파일에 기록한다.

사용법 : logger [옵션] [메세지...] 
-i : 매 줄마다 logger의 프로세스 ID를 기록한다. 
-s : system log와 같이 메시지를 표준 오류 장치에 기록한다. 
-f file : 지정한 file 파일명의 내용을 로그에 기록한다. 
-p pri : 지정한 pri 우선권으로 메시지를 입력한다. pri에는 숫자 형식으로 오거나, "facility.level" 식으로 올 수도 있다. 예를 들어, "-p local3.info" 옵션은 local3 facility에서 informational 수준으로 메시지가 기록된다. 초기값은 "user.notice."이다. 
-t tag : 지정한 tag를 매 줄마다 기록한다. 

logger는 주어진 메시지를 보내 /var/log/messages 로그에 기록한다.
그럼, 아래 메시지를 로그파일에 저장해 보자.

# logger System Logger Testing 

/var/log/messages 파일의 최신 로그 부분에서 logger 명령으로 저장한 메시지를 살펴 볼수 있다.

# tail /var/log/messages 

[관련 명령어]
syslogd 리눅스 시스템 로그 기록 유틸리티
klogd 커널 로그 데몬
2005/06/17 23:38 2005/06/17 23:38
시스템에 접속하여 개인 설정파일을 읽고 작업할 수 있는 환경을 갖추기 위한 인증 과정 명령이다.

사용법 : login [옵션] [이름] 
-f user : 이미 인증 절차를 거친 사용자라면, 지정한 user의 인증 절차를 무시하게 된다. 만일 user가 root라면 적용되지 않는다. 
-h hostname : 로그인을 원격 로그인(telnetd, rlogind)으로 인식하고 hostname에 로그인을 시도할 호스트의 이름을 입력한다. 
-p : logdin 실행할 때 이전 환경등을 그대로 사용하도록 getty 명령에 의해 사용된다. 

리눅스는 초기 시스템을 시동할 때 init 프로그램으로 자신의 설정 파일을 읽어 들이고, 실행에 필요한 모든 getty를 생성하는데 가상 콘솔에 사용하기 위한 최소 getty 프로그램인 mingetty 프로그램을 사용한다. 이는 로그인 프로세스 실행을 위한 프로그램으로 터미널 회선 속도를 설정하고, 로그인 프롬프트를 실행하는 역할을 한다. 사용자가 접속을 시도하면 mingetty는 login 프로그램을 호출하고, login 프로그램은 프롬프트에서 사용자 이름을 받아서, 암호를 읽게 된다. 인증 절차 후 제대로 입력이 되었다면 /etc/passwd에 있는 셀을 받아 /etc/bashrc와 /etc/profile 등과 홈 디렉토리의 .bash_rc, bash_profile 등등의 환경 설정 파일을 불러와서 프롬프트를 뛰우게 된다. 셀 프롬프트에는 #과 $가 있다. #는 root셀 프롬프트이며, $는 사용자 셀 프롬프트이다. 참고로, /etc/passwd에 사용자의 로그인 접근을 막는 방법은 여러 가지가 있으나 해당하는 사용자 설정의 맨 앞줄에 #로 주석처리를 하거나 /bin/bash를 /bin/false로 변경하게 되면, 접근을 막을수 있다. 다른 방법으로 /etc/nologin 파일에 사용자를 추가 하여 막을수도 있다.
/etc/securetty 파일에서는 root로 접속할 수 있는 터미널들이 나열되어 있다. 이파일에는 root가 접속할 수 있는 터미널이 나열되어 있다. 터미널 이름은 /dev/ 글자를 생략한 터미널 이름 뿐이다. 이 파일에 없다면 root는 모든 터미널에서 접속이 가능하다.
2005/06/17 23:37 2005/06/17 23:37
현재 로그인 한 사용자 이름을 utmp에서 찾아 보여 주는 명령어이다.

사용법 : logname [옵션] 
--help : 사용법을 보여준다. 
--version : 버전정보를 보여준다. 

/var/run/utmp파일에는 현재 로그인한 사용자 이름을 저장하고, 이 파일의 정보를 보여주는 것이 logname 명령어이다. logname와 whoami, id간에는 약간의 차이가 있다. 각 명령어마다 로그인한 사용자를 알 수 있다.

# logname 
admin 
# whoami 
admin 
# id 
uid=500(admin) gid=500(admin) groups=500(admin) 

id 명령어는 사용자의 UID와 GID, 속한 그룹들을 다 볼 수 있다.
su 명령으로 슈퍼 유저로 로그인하여 보자.

$ su 
Passwd: 

logname은 su 명령으로 전환된 슈퍼 유저가 아니라, 초기 로그인한 사용자의 이름을 보여준다. 하지만, whoami 명령으로 su 명령으로 전환된 root을 보여준다.

# logname 
admin 
# whoami 
root 
# id 
uid=0(root) gid=0(root) groups=0(root) 

[관련 명령어]
whoami 로그인한 사용자의 ID를 보여주는 명령어
id 로그인한 사용자의 UID, GID, groups를 보여주는 명령어
2005/06/17 23:29 2005/06/17 23:29
로그 파일을 주기적으로 압축하고 이름을 바꾸어 관리하는 명령어이다.

사용법 : logrotate [옵션] <설정파일> 
-d : 디버거 모드 
-f, --force : 강제적으로 실행한다. 이는 새로운 목록이 추가된 경우나, 오래된 로그 파일을 수동으로 직접 삭제한 경우 유용하다. 
-s, --state [statefile] : 지정된 정책 파일을 사용하여 logrotate를 실행한다. 
--usage : 간단한 사용법을 보여준다. 

cron은 백업과 같이 주기적으로 실행하는 명령들을 자동으로 처리하도록 해주는 도구로, 설정 내용은 /etc/crontab에 있다.
logrotate는 log 파일들을 주기적으로 관리하는 도구다. 지정된 주기에 맞춰서 각각의 log 파일들의 이름을 바꾸거나, 압축하거나 삭제한다. 보통 /etc/cron.daily에 logrotate라는 스크립트를 두어 /usr/sbin/logrotate를 /etc/logrotate.conf라는 설정에 맞춰 매일 실행하게 되어 있다.
/etc/cron.daily/logrotate 파일을 한 번 살펴보자.

# cat /etc/cron.daily/logrotate 
# !/bin/sh 
/usr/sbin/logrotate /etc/logrotate.conf 

/etc/cron.daily/logrotate 파일은 /etc/logrotate.conf파일의 참조하여 실행한다.
그럼, 이파일을 한번 살펴 보도록 하자.

# cat /etc/logrotate.conf 
weekly #1주일에 한번씩 로그 파일이 순환한다. 
rotate 4 #최대 4개까지의 백업 로그 파일을 남긴다. 
create #4개의 로그 파일이 생성된 후 새로운 로그파일을 생성한다. 
compress #압축으로 로그파일을 보관한다. 
include /etc/logrotete.d #rpm 패키지 로그 rotation 정보가 있는 디렉토리 
/var/log/wtmp { #/var/log/wtmp 로그 파일에 대한 설정이다. 
     monthly  #한달에 한번씩 로그파일을 순환한다. 
create 0664 root utmp #0664는 생성하는 파일의 허가권, root는 소유자, utmp는 그룹 
     rotate 1   #백업 로그가 없이 하나의 로그파일만이 생성될 것이다. 
               } 


위의 설정에서 rpm 패키지 로그 로테이션 정보가 있는 디렉토리를 살펴보자.
각 로그 파일 설정을 살펴 보면 각각의 정보를 볼 수 있을 것이다.

# ls /etc/logrotate.d/ 
apache  mysqld  named  proftpd  rpm  snmpd  squid  syslog  tux  up2date 

위의 파일 중 syslog 파일을 한 번 살펴보자. syslog 파일에는 message나 secure mailog같은 중요한 로그 파일에 대한 로테이션 정보를 담고 있다.

# cat /etc/logrotate.d/syslog 
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler /var/log/boot.log /var/log/cron { 
    sharedscripts 
    postrotate 
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true 
    endscript 
} 
2005/06/17 23:24 2005/06/17 23:24
파일에서 주어진 문자열로 시작하는 줄만 검색하여 보여주는 명령어

사용법 : look [옵션] 문자열 [파일] 
-d : 영문자만을 검색한다. 
-f : 대소문자를 구분하지 않는다. 
-a : 대체 사전인 /usr/dict/web2 파일을 사용한다. 
-t character : 문자열 마지막 문자를 지정한다. 

look 명령은 파일에서 검색한 문자열로 시작하는 줄을 찾아 보여준다. 이진파일 검색일 경우에는, 파일 안의 각 줄이 먼저 정렬되어야한다. 파일이 지정되지 않으면, /usr/dict/words 파일을 사용한다. 이 파일은 단지 알파벳 단어만 있으며, 대소문자는 무시된다.
2005/06/17 23:22 2005/06/17 23:22
디렉토리와 파일의 목록을 보여주는 명령어이다.

사용법 : ls [옵션] [파일] 
-a --all : .을 포함한 경로 안의 모든 파일을 나열한다. 
-b, --escape : 알파벳 형식을 사용하는 파일 이름 안에서 그래픽 문자가 아닌 문자들을 사용한다. 
-c, --time=ctime, --time=status : 파일 최근 변경 시간에 따라 정렬해서 보여준다. 
  자세한 나열(-l옵션)이면, 그 파일의 최근 변경 시간을 보여준다. 
-d, --directory : 경로안의 내용을 나열하지 않고, 그 경로를 보여준다. 
   (이것은 쉘 스크립트에서 유용하게 쓰인다.) 
-f : 경로 내용을 정렬하지 않는다 : 이것은 디스크에 저장된 순으로 보여준다. -a와 -U옵션과 같은 뜻이며, -l, -s, -t 옵션과 반대의 뜻이다. 
--full-time : 시간을 간략히 표시하지 않고, 모두 보여준다. 
-i, --inode : 파일 왼쪽에 색인 번호를 보여준다. 
-k, --kilobytes : 파일 크기가 나열되면, kb 단위로 보여준다. 이 옵션은 POSIXLY_CORRECT 환경 변수를 무시한다. 
-l, --format=long, --format=verbose : 파일 나열에 있어, 파일 형태, 사용권한, 하드링크 번호, owner 이름, group 이름, 파일 크기, 시간(따로 지정하지 않으면 파일이 만들어진 날짜)을 자세하게 나열한다. 시간은 여섯 달 이전 것이면, 시간이 생략되고, 파일의 연도가 포함된다. 
-m, --format=commas : 파일을 가로로 나열한다. 가로로 나열할 수 있는만큼 최대한 나열한다. 
-n, --numeric-uid-gid : 이름의 나열에서 UID, GID 번호를 사용한다. 
-p : 파일 형태를 지시하는 문자를 각 파일에 추가한다. 
-q, --hide-control-chars : 파일 이름에 그래픽 문자가 아닌 것이 있으면, ?' 로 표시한다. 
-r, --reverse : 정렬 순서를 내림차순으로 한다. 
-s, --size : 파일 크기를 1kb 단위로 나타낸다. POSIXLY_CORRECT 환경 변수가 지정되면, 512b 단위로 지정된다. 
-t, --sort=time : 파일 시간 순으로 정렬된다. 최근 파일이 제일 먼저 보인다. 
-u, --time=atime, --time=access, --time=use : 파일 사용 시간 순으로 정열한다. 자세한 나열이면, 시간 표시는 만들어진 날짜 대신, 사용된 날짜를 보여준다. 
-x, --format=across, --format=horizontal : 정렬 방식을 가로로 한다. 
-A, --almost-all : .', ..' 경로를 제외하고 디렉토리 안의 모든 파일을 나열한다. 
-B, --ignore-backup : 파일 끝이 ~'인 파일은 목록 나열에 제외된다. 
-C, --format=vertical : 정렬 방식을 세로로 한다. 
-F, --classify : 파일 형식을 알리는 문자를 각 파일 뒤에 추가한다. 일번적으로 실행파일은 "*", 경로는 "/", 심볼릭 링크는 "@", FIFO는 "|", 소켓은 "=", 일반적은 파일은 없다. 
-G, --no-group : 자세한 목록 나열에서 group정보를 제외한다. 
-L, --dereference : 심볼릭 링크 파일들을 그냥 파일로 보여준다. 
-N, --literal : 이름이 영문이 아닌 경우, C에서 사용하는 역슬래쉬 문자(\')와 함께 사용하는 표기 대신 그대로 출력된다. 
-Q, --quote-name : -N 옵션과 반대. 
-R, --recursive : 하위 경로와 그 안에 있는 모든 파일들도 나열한다. 
-S, --sort=size : 파일 크리가 가장 큰 것부터 정렬해서 나열한다. 
-U, --sort=none : 정렬은 하지않고, 디스크에 저장된 순서대로 보여준다. 이 옵션은 -f 옵션을 사용할 수 없다. 유닉스 용 ls -f는 -a 옵션은 가능하나, -l, -s, -t 옵션이 불가능하기 때문이다. 
-X, --sort=extension : 파일 확장자 순으로 정렬한다. 확장자가 없는 파일이 제일 먼저 나열된다. 
-1, --format=single-column : 한 줄에 한 파일씩 나열한다. 
-w, --width cols : 가로 길이를 cols 값으로 지정한다. 기본적으로는 한 화면의 가로 값이된다. 또한 COLUMNS 환경 변수 값으로 지정할 수 있다. 초기값은 80이다. 
-T, --tabsize cols : 탭이 사용될 때, cols 값으로 지정한다. 초기값은 8이다. 0으로 지정되면 탭 문자는 무시된다. 
-l, --ignore pattern : pattern 패턴으로 지정된 파일들은 목록에서 제외된다. 
   이때,  명령행에서 그파일이 지정되면 물론 나열된다. 
--color, --colour, --color=yes, --colour=yes : 파일의 형태에 따라 그 파일의 색깔을 다르게 보여주는 기능한다. 자세한 이야기는 아래 DISPLAY COLORIZATION 부분을 참조한다. 
--color=tty, --colour=tty : --color 옵션과 같으나, 단지 표준 출력에서만 색깔을 사용한다. 이 옵션은 칼라 제어 코드를 지원하지 않는 보기 풀그림을 사용하는 셀 스크립트나, 명령행 사용에서 아주 유용하게 쓰인다. 
--color=no, --colour=no : 파일을 구분하는 색깔을 사용하지 않는다. 이것이 초기값이다. 이 옵션은 색깔 사용을 이미 하고 있다면, 이 값을 무시한다. 
--help : 도움말을 보여준다. 
--version : 버전 정보를 보여준다. 

ls는 표준출력으로 지정한 디렉토리나 파일의 정보를 보여준다. 파일이나 디렉토리를 지정하지 않으면 현재 디렉토리의 내용을 보여준다.
2005/06/17 23:21 2005/06/17 23:21
리눅스 파일시스템의 속성을 보여주는 명령어

사용법 : lsattr [옵션] [파일] 
-R : 디렉토리와 그 안의 내용에 대해 모두 속성값을 출력한다. 
-a : .으로 시작하는 파일을 포함한 디렉토리 내 모든 파일을 보여준다. 
-d : 디렉토리를 보여줄 때 그 안에 든 파일을 보여주는 것이 아나라 일반 파일과 마찬가지로 보여준다. 
-v : 파일 버전을 출력한다. 

lsattr 명령어는 chattr명령으로 변경한 파일의 속성 내용을 볼 수 있다.
구체적인 사용법은 chattr 명령을 참고하자.
chattr +i 옵션으로 /etc/passwd에 i 속성을 부여해 보자. 이는 파일을 지울 수도, 이름을 변경할 수도, 내용을 추가할 수도, 링크를 생성할 수도 없다.

# chattr +i /etc/passwd 

chattr 명령으로 변경된 속성을 살펴보기 위해서는, lsattr 명령이 필요하다.

# lsattr /etc/passwd 
---i---------- /etc/passwd 




[관련 명령어]
chattr 파일시스템의 파일 속성을 변경하는 명령어
2005/06/17 23:20 2005/06/17 23:20
하드웨어 장치 정보와 현재 상태를 확인한다.

사용법 : lsdev 

lsdev 명령은 시스템에 인식된 하드웨어의 장치명과 DMA, IRQ, I/O포트 등의 정보를 보여주는 명령어이다. 이 명령으로 시스템에 인식된 하드웨어 정보를 한 눈에 볼 수 있는 장점이 있다.

# lsdev 
Device            DMA   IRQ  I/O Ports 
------------------------------------------------ 
00:10.0                      e400-e47f 
00:12.0                      e800-e87f 
3Com                         e400-e47f e800-e87f 
3Dfx                         d000-d0ff 
cascade             4     2 
dma                          0080-008f 
dma1                         0000-001f 
dma2                         00c0-00df 
eth0                     12 
eth1                      5 
fpu                          00f0-00ff 
ide0                     14  01f0-01f7 03f6-03f6 f000-f007 
ide1                     15  0170-0177 0376-0376 f008-f00f 
Intel                        4000-403f 5000-501f e000-e01f f000-f00f 
keyboard                  1  0060-006f 
PCI                          0cf8-0cff d000-dfff 
pic1                         0020-003f 
pic2                         00a0-00bf 
rtc                       8  0070-007f 
serial                       02f8-02ff 03f8-03ff 
timer                     0  0040-005f 
usb-uhci                 10  e000-e01f 
vga+                         03c0-03df 
2005/06/17 23:19 2005/06/17 23:19
현재 동작하고 있는 모듈을 확인한다.

사용법 : lsmod 

lsmod 명령으로 시스템에서 현재 동작하고 있는 모듈을 살펴 볼 수 있다.

# lsmod 
Module                  Size  Used by    Not tainted 
iptable_mangle          3040   0  (autoclean) (unused) 
iptable_filter          2560   0  (autoclean) (unused) 
ipt_MASQUERADE          2368   0  (unused) 
iptable_nat            22228   1  [ipt_MASQUERADE] 
ip_tables              13952   6  [iptable_mangle iptable_filter ipt_MASQUERADE iptable_nat] 
ip_conntrack           26164   1  [ipt_MASQUERADE iptable_nat] 
3c59x                  28552   2 
ide-cd                 32256   0  (autoclean) 
cdrom                  32128   0  (autoclean) [ide-cd] 
usb-uhci               24676   0  (unused) 
usbcore                73792   1  [usb-uhci] 
ext3                   65984   1 
jbd                    47500   1  [ext3] 

좀 더 자세한 설명은 modprobe 명령어에서 함께 살펴보자.

[관련 명령어]
insmod 시스템에 모듈 적재 명령어
modprobe insmod 보다 지능적인 시스템에 모듈 적재 명령어
2005/06/17 23:17 2005/06/17 23:17
현재 실행하고 있는 파일의 목록을 확인하고 파일 정보와 프로세스 정보를 보여준다.

사용법 : lsof [옵션] [파일] 
-a : 파일을 선택하는데 AND 연산으로 대상을 보여준다. 
-c : 지정한 COMMAND 필드의 내용만 보여준다. 
-F : 지정한 구분자로 필드를 구분하여 보여준다. 
-g : 지정한 그룹 아이디를 사용하는 관련 프로세스를 보여준다. 
-i : 현재 사용되는 소켓 정보를 보여준다. 
-l : 로그인 네임 대신에 UID를 출력한다. 
-n : 호스트 이름 대신에 IP 주소를 보여준다. 
-P : 포트 서비스이름 대신에 포트 넘버를 보여준다. 
-r : 지정한 초의 주기로 반복해서 보여준다. 기본값은 15초이다. 
-s : 파일의 크기를 보여준다. 
-V : 자세한 정보를 보여준다. 
-?,h : 도움말을 보여준다. 

lsof 명령어는 현재 열려 있는 모든 파일들에 대한 자세한 표와 각각의 파일에 대한 소유자, 크기, 관련 프로세스 등의 정보를 보여준다.

# lsof |more 
COMMAND     PID   USER   FD   TYPE     DEVICE     SIZE      NODE NAME 
init          1   root  cwd    DIR        3,1     4096         2 / 
init          1   root  rtd    DIR        3,1     4096         2 / 
init          1   root  txt    REG        3,1    26920    798208 /sbin/init 
init          1   root  mem    REG        3,1    89547    342064 /lib/ld-2.2.5.s 
o 
init          1   root  mem    REG        3,1  1402035   2036003 /lib/i686/libc- 
2.2.5.so 
init          1   root   10u  FIFO        3,1              37958 /dev/initctl 
---------------------생략------------------ 

COMMAND 필드 중 sshd와 관련된 시스템에서 사용하는 파일들을 살펴보자.

lsof -c sshd 
COMMAND  PID USER   FD   TYPE  DEVICE    SIZE    NODE NAME 
sshd     699 root  cwd    DIR     3,1    4096       2 / 
sshd     699 root  rtd    DIR     3,1    4096       2 / 
sshd     699 root  txt    REG     3,1  260616  358439 /usr/sbin/sshd 
sshd     699 root  mem    REG     3,1   89547  342064 /lib/ld-2.2.5.so 
sshd     699 root  mem    REG     3,1   35698  342154 /lib/libpam.so.0.75 
sshd     699 root  mem    REG     3,1   12102  342086 /lib/libdl-2.2.5.so 
sshd     699 root  mem    REG     3,1   11174  342102 /lib/libutil-2.2.5.so 
sshd     699 root  mem    REG     3,1   59695  325861 /usr/lib/libz.so.1.1.4 
sshd     699 root  mem    REG     3,1   89424  342068 /lib/libnsl-2.2.5.so 
sshd     699 root  mem    REG     3,1  929382  342138 /lib/libcrypto.so.0.9.6b 
sshd     699 root  mem    REG     3,1 1402035 2036003 /lib/i686/libc-2.2.5.so 

-i 옵션을 사용하여 현재 열려있는 소켓 정보를 살펴 볼 수 있다. TCP와 UDP를 각각 지정하여 볼 수도 있다. 지금 시스템에서 NAME 필드의 *:서비스명으로 현재 서비스 대기 상태의 현황을 살 펴 볼 수있다.

# lsof -iTCP 
COMMAND    PID USER   FD   TYPE  DEVICE SIZE NODE NAME 
snmpd      657 root    4u  IPv4     886       TCP *:smux (LISTEN) 
sshd       699 root    3u  IPv4    1195       TCP *:ssh (LISTEN) 
mysqld     780 root    3u  IPv4    1297       TCP *:mysql (LISTEN) 
mysqld     794 root    3u  IPv4    1297       TCP *:mysql (LISTEN) 
mysqld     795 root    3u  IPv4    1297       TCP *:mysql (LISTEN) 
sendmail   796 root    4u  IPv4    1335       TCP *:smtp (LISTEN) 
mysqld     817 root    3u  IPv4    1297       TCP *:mysql (LISTEN) 
----------------중략--------------------------- 
named    10404 root   14u  IPv4 1060445       TCP 192.168.0.1:domain (LISTEN) 
named    10404 root   15u  IPv4 1060447       TCP localhost.localdomain:rndc (LISTEN) 
httpd    10605 root   27u  IPv4 1064911       TCP *:https (LISTEN) 
httpd    10605 root   28u  IPv4 1064912       TCP *:http (LISTEN) 
xinetd   29022 root    5u  IPv4 1274887       TCP *:pop3 (LISTEN) 
xinetd   29022 root    6u  IPv4 1274888       TCP *:ftp (LISTEN) 
2005/06/17 19:08 2005/06/17 19:08
터미널에서 사용하는 메일 클라이언트 프로그램

사용법 : 
mail [-옵션] [-s제목] [-c참조] [-b숨은참조] 받는사람 
mail [-옵션] -f 파일명 
mail [-옵션] -u 사용자ID 
-v : 메일을 보내는 과정의 메세지를 자세히 보여준다. 
-i : tty 인터럽트 신호를 무시한다. 
-n : 메일프로그램 시작 시 /etc/mail.rc 파일을 읽지 않는다. 
-N : 초기 화면에서 메일 목록을 보여 주지 않는다. 
-s 제목 : 발송 메일의 제목을 적는다. 
-c 참조 : 같이 메일을 받을 사람을 추가한다. 
-b 숨은참조 : 같이 메일을 받은 사람을 추가한다. 숨은 참조 된 사람은 메일을 받은 다른사람에게는 보이지 않는다. 
-f : 파일로 부터 메일을 읽어 온다. 
-u : 사용자 계정 지정 

mail은 터미널에서 사용하는 메일 클라이언트 프로그램이다. 메일을 보내고 받고 정리할 수 있다.

받은 편지 확인
자신의 계정을 사용 중에 받은 편지를 확인하려면 mail 만 입력한다.
다음은 관리자 모드에서 특정 계정의 받은 편지를 확인 할 때 쓰인다.

# mail -u pirania 

mail을 실행하면 초기 화면에 받은 편지의 목록이 나온다.

편지상태
N 새 메세지
P 시스템의 메일박스에 저장
U 읽지 않은 메일

처음 수신된 편지부터 확인하려면를 누른다. 특정 편지를 보기를 원한다면 & 편지 번호를 지정한다.

&1 <Enter> 
---------내용---------- 
& 

mail 명령어
mail의 여러기능은 명령어를 통해 이루어진다. 명령어 입력 모드는 "&"로 표시한다.

n 다음 편지로 이동한다.
f <편지번호> 편지목록을 보여준다. f * 또는& f a 모든 편지 목록을 볼 수 있다.
d <편지번호> 지정한 편지 번호의 편지를 지운다.
s <편지번호> 파일파일에 지정한 편지 내용을 저장한다.
u <편지번호> 편지를 지우지 않는다.
R <편지번호> 회신 한다.
r <편지번호> 전체 회신 한다.
q mail 종료
x mail 종료, 시스템 메일박스에서 삭제하지 않는다.
h 메세지의 헤더 부분을 출력한다.
! 셀 명령어를 실행한다.
e Ex 모드로 메세지를 편집한다.

회신 보내기
편지 보기 명령 창에서 현재 메일에 회신을 보내기를 원하면 R 명령을 입력한다.
내용을 다 입력하면 를 눌러 편지 입력을 종요합니다.

편지 보내기
mail을 실행한 상태에서 명령창에 &m 주소의 형식으로 입력하는 것 만으로도 편지를 발송할 수 있다.
mail를 실행시키지 않는 상태에서 참조인(-c) 숨은 참조(-b)을 포함한 메일을 발송해 보자. 메일이 보내는 과정을 보려면 -v 옵션을 사용한다.

mail 명령으로는 바이너리 파일을 바로 첨부할 수 없었다. 그래서 파일을 디코드하여 텍스트 형태로 전송할 수 있게 만들어 보내곤 했다. 현재에는 pine이나 넷스케이프 메일러, K 메일러 등 파일 첨부가 자유로운 메일 클라이언트를 많이 사용한다.
2005/06/17 19:06 2005/06/17 19:06
발송될 메일의 정보를 본다.

사용법 : mailq [옵션] 
-v : 큐 내용을 자세히 보여준다. 

sendmail을 통해 발송 되는 메일은 큐에 쌓여서 발송 대기를 하게 된다. mailq 명령어는 메일이 대기되어 있는 목록을 보여준다.

QID 메일 큐 ID를 보여준다.
Size 본문의 사이즈를 보여준다.
Priority 메일의 우선 순위를 보여준다.
Q-Time 메일이 큐에 들어와 대기하기 시작한 시간을 보여 준다.
Sender/Recipient 메일의 발신인과 수신인을 보여준다. 또한 메일의 상태를 볼 수 있다. 여기서는 deferred 씌어져 발송되 메일이 연기 되었음을 알수 있다.

[관련 명령어]
sendmail -bp 발송될 메일이 대기한 상태를 보여준다. mailq와 같은 명령어이다.
2005/06/17 19:05 2005/06/17 19:05
알고 싶은 명령어의 메뉴얼을 보여준다.

사용법 : man [-옵션] [section] [-M path] [-P pager] [-S list] [-m system] [-p string] 명령어 
-a : 찾고자 하는 명령어가 검색된 메뉴얼 페이지를 모두 보여준다. 
-c : 최신의 cat 페이지가 있어도 소스 메뉴얼 페이지를 재구성한다. 
-d : 실제 메뉴얼을 보여주지 않고, 디버깅 정보 구성을 보여준다. 
-D : -d 옵션을 구성을 보여준 후, 메뉴얼을 보여준다. 
-f : whatis 명령과 동일한다. 
-h : 도움말을 보여준다. 
-k : apropos 명령과 동일한다. 
-K : 모든 메뉴얼 페이지에서 지정한 문자를 찾는다. 
-t : /usr/bin/groff 으로 페이지 형식을 보여준다. 
-w : 찾고자 하는 문자의 메뉴얼 페이지가 있는 위치를 보여준다. 
-W : -w와 비슷하지만, 추가 정보 없이 한 행에 하나씩 표시한다. 
-C 파일명 : 메뉴얼 페이지의 configure 파일을 지정한다. 기본은 /etc/ma n.config 파일이다. 
-M path : 메뉴얼 페이지 검색을 위한 path를 지정한다. 
-P 페이지 : 지정한 pager로 페이지를 지정한다. 
-S 목록 : 콜론으로 구분한 세션 리스트 
-m system : 주어진 시스템 이름에 의해서 검색된 대체 맨 페이지를 지정할 수 있다. 
-p string : nroff or troff 의 앞에 실행하는 전처리기의 차례를 지정한다. 

명령어의 의미나 사용법을 모를 경우 사용한다. man 파일들을 검색하여 해당 명령어의 메뉴얼을 보여준다.

# man httpd 
httpd(8)                                                 httpd(8) 

NAME 
       httpd - Apache hypertext transfer protocol server 

SYNOPSIS 
       httpd [ -X ] [ -R libexecdir ] [ -d serverroot ] [ -f con- 
       fig ] [ -C directive ] [ -c directive ] [ -D parameter ] 

       httpd [ -h ] [ -l ] [ -L ] [ -v ] [ -V ] [ -S ] [ -t  ]  [ 
       -T ] 

DESCRIPTION 
       httpd  is  the  Apache  HyperText Transfer Protocol (HTTP) 
       server program. It is designed to be run as  a  standalone 
       daemon  process. When used like this it will create a pool 
       of child processes to handle requests. To stop it, send  a 
       TERM  signal  to  the initial (parent) process. The PID of 
       this process is written to a file as given in the configu- 
       ration  file.   Alternatively  httpd may be invoked by the 
       Internet daemon inetd(8) each time  a  connection  to  the 
       HTTP service is made. 

만일, 지정한 명령어를 포함하고 있는 메뉴얼 페이지를 모두 보고 싶다면 -K 옵션으로 찾아 볼 수 있다. -K 옵션은 모든 메뉴얼을 검색하여 명령어가 포함된 모든 메뉴얼을 보여준다. 검색된 명령어는[ynq]중 하나늘 선택하여 메뉴얼 보기(y), 메뉴얼 보지않기(n), man 명령에서 나가기(q)를 결정할 수 있다. mtab 관련 파일을 -K 옵션으로 살펴 보자.

# man -K mtab 
/usr/share/man/man8/lsof.8.gz? [ynq] n 
/usr/share/man/man8/rrestore.8.gz? [ynq] n 
/usr/share/man/man8/restore.8.gz? [ynq] n 
/usr/share/man/man8/rpc.mountd.8.gz? [ynq] n 

메뉴얼 페이지에는 각각의 섹션으로 나누어져 있다. 메뉴얼 페이지의 맨 상단 괄호 안의 숫자나, 압축된 메뉴얼페이지 파일명의 끝 숫자가 나타내는 의미이다.

1 실행프로그램 혹은 셀명령
2 시스템 콜(커널 제공함수)
3 라이브러리 콜(시스템 라이브러리 포함 함수)
4 특수 파일(대개 /dev 밑의 파일)
5 파일 포맷 집합 (예, /etc/passwd)
6 게임관련
7 매크로 패키지 집합
8 시스템 관리 명령
9 커널 루틴(비표준)

위의 -K 옵션에서 처음 찾은 lsof.8.gz파일은 8의 의미에서 시스템 관리 명령으로 볼 수 있는 것이다.

[관련 명령어]
apropos 메뉴얼 페이지 설명에 특정 단어를 포함한 명령어 나열 (man -k)
whatis 찾고자 하는 명령어 단어를 확장한다 (man -f)
2005/06/17 18:45 2005/06/17 18:45
MS-DOS파일의 속성을 변경한다.

사용법 : mattrib [+-옵션] 도스파일 [도스파일] 
+-a : 아카이브 비트, 백업프로그램이 새로운 파일을 지정 할 때 사용된다. 
+-r : 읽기 전용 비트, 읽기 전용으로 지정한다. 
+-s : 시스템 비트, MS-DOS가 시스템 파일을 가르킬 때 사용된다. 
+-h : 숨긴 파일 비트, 숨김 파일을 만들 때 사용된다. 

MS-DOS 파일의 속성 플래그를 변경한다.
속성의 변경은 원하는 옵션을 추가(+)와 제거(-)를 통해 이루어 진다. dosfile.txt파일을 읽기 전용과 안보이기 속성을 준다.

# mattrib +rh dosfile.txt 

mdir 명령의 모두 보기 옵션(-a)으로 숨긴 파일을 확인 할수 있다.

# mdir -a a: 
2005/06/17 18:37 2005/06/17 18:37
MS-DOS 파일 시스템으로 포맷한 디스켓의 배드블럭을 검사한다.

사용법 : mbadblocks 드라이브:

MS-DOS파일 시스템을 가지고 있는 플로피 디스켓의 배드블럭을 검사한다. 플로피 디스크를 MS-DOS파일 시스템인 fat형태로 포맷하고 배드블럭을 검사할때 쓰인다.

# mbadblocks a: 
2005/06/17 18:36 2005/06/17 18:36
현재 사용하는 디렉토리를 변경한다.

사용법 : mcd [도스디렉토리] 

mtools에 포함된 명령어는 명령어 인수부분의 drive를 DOS에서와 같이 A: C: D:등으로 사용이 가능하다. MS-DOS디렉토리로 지정된 내용은 mcd 명령어로 확인 할수 있다. 또한 지금 사용하는 디렉토리를 변경할 수 있다.

# mcd 
A:/ 
2005/06/17 18:35 2005/06/17 18:35
MS-DOS 파일의 리눅스/유닉스 파일 교환 명령어이다.

사용법 : mcopy [-옵션] [원본파일] [복사파일 or 디렉토리] 
-t : 텍스트 파일 복사, 도스 텍스트 형식의 라인/엔터 표시가 유닉스 형식의 라인표시로 변경된다. 또한 유닉스에서 도스로 복사할 때는 그 반대로 변경된다. 
-a : 텍스트(AscII)파일 복사, 유닉스 텍스트 파일 형식을 도스형식으로 변경하거나 그 반대로 변경된다. 
-T : 텍스트(AscII) 파일 복사, 캐릭터 셋도 변경 해준다. 
-b : 배치 복사 
-s : 반복 복사 
-p : 원본 파일의 속성을 갖는다. 
-Q : 여러 파일 복사 중 특정 파일의 복사가 실패할 경우 바로 복사를 중지한다. 
-n : 리눅스나 유닉스 파일을 덮어쓰기 할 때 경고 메세지가 나오지 않는다. 
-m : 원본 파일 날짜를 유지한다. 
-v : 복사 과정을 자세히 보여준다. 

mcopy는 도스 파일과 리눅스/유닉스 파일과의 복사 명령어이다. 도스 파일을 유닉스/리눅스 파일로 복사할 수 있다. 물론 리눅스/유닉스 내의 cp명령어로 복사는 가능하지만 mcopy는 도스와 리눅스/유닉스 에서의 Line/Enter 형식이 다른 것을 복사 중 변환하는 기능을 가지고 있어 편리하게 이용할 수 있다.
플로피 디스켓이 DosText.txt파일을 하드에 리눅스/유닉스 텍스트 형식으로 저장하자.

# mcopy -t A:/DosText.txt /home/pirania 

그냥 복사한 경우 서로 Line/Enter 형식이 다르기 때문에 잘못 인식하여 문장 끝에 ^M등의 기호가 찍히게 된다. 위와 같이 mcopy -t 명령으로 Dos 텍스트 파일의 형식을 리눅스/유닉스 텍스트 파일 형식으로 변환할 수 있다.
2005/06/17 18:35 2005/06/17 18:35
MS-DOS 파일 시스템의 도스 파일을 지운다.

사용법 : mdel [옵션] 도스파일 
-v : mtools의 버전을 보여준다. 

MS-DOS 파일 시스템에 있는 파일을 삭제하는데 쓰인다.
MS-DOS 포맷으로 되어있는 플로피 디스켓에서 test.txt 파일을 지운다.

# mdel a:/test.txt 

mdir 명령으로 삭제 된 파일을 확인할 수 있다.
2005/06/17 18:34 2005/06/17 18:34