cat
파일의 내용을 화면에 출력
1. 형식
[cat] [OPTIONS] [file]
2. 옵션
cat -n : 파일의 내용에 줄번호를 부여해서 출력함
cat file1 file2 > file3 : file1,2 를 합쳐서 file3으로 합침
3. 실습
1) cat 을 활용해서 etc/passwd 의 파일을 화면에 출력해보자
[root@server1 /test]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
..... 중략 .....
2) cat -n 을 활용해서 etc/passwd 의 파일을 화면에 출력해보자
[root@server1 /test]# nl /etc/passwd
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
..... 중략 .....
* 줄번호가 부여됨을 확인할 수 있다. (CMD nl 과 같은기능)
3) cat을 활용하여 file1,2 를 합쳐서 file 3을 만들어보자
[root@server1 /test]# echo 1111
1111
[root@server1 /test]# echo 1111 > file1
[root@server1 /test]# echo 2222
2222
[root@server1 /test]# echo 2222 > file2
[root@server1 /test]# ls
. .. file1 file2
[root@server1 /test]#
[root@server1 /test]# cat file1 file2
1111
2222
[root@server1 /test]# cat file1 file2 > file3
[root@server1 /test]# ls
. .. file1 file2 file3
[root@server1 /test]# cat file3
1111
2222
* file1과 2을 순서대로 입력 시 내용이 합쳐 출력되나 파일생성되진않음 '>' 의 기호를 활용시 파일을 만들고 또한 내용을 합쳐진다는걸 확인 할 수 있다.
* 파일을 쪼개고 싶다면 split 라는 명령어 활용시 쪼갤 수 있다.
[참고] 바이너리 파일의 경우 cat 으로 열지 않는다.
바이너리 파일 : 순수 0과 1로 이루어진 파일로 글자의 경우 조합으로 이루어 져야하나 해당 해석을 할 수 없기에 cat으로 출력시 파일의 내용이 깨져서 보여진다. 해당사항에는 strings -f CMD를 활용하여야만 출력가능. 즉 cat는 바이너리 파일을 열 수 없다. (열어도 해독이 안됨)
more
파일의 양이 많을경우 활용, 페이지단위로 끊어서 화면에 내용을 출력함.
1. 형식
[more] [file]
2. 실습
1) /etc/services 를 cat 과 more 를 비교하여 열어보자.
* 내용이 너무 많아 커맨드 입력창은 생략, 직접 입력해보면 안다. cat 경우 환경의 사양에 따라서 모든 내용을 출력할 수 없다, 그럴경우 나눠서 출력하는 more 를 활용하면 된다.
[참조] more 의 주요 활용처 (출력량이 많은 CMD 혹은 file)
1) ps -ef | more
2) cat /etc/services | more
3) rpm -qa | more
4) systemctl list-unit-files = | more 의 기능이 내장되어있음.
5) netstat -antup | more
* 실제 작업중 cat 으로 파일을 열었을 경우 | (파이프기호) 와 more 를 활용해서 나눠보는 기능으로 자주 사용된다.
* | (파이프기호) : CMD1 | CMD2 의 경우 CMD1 의 내용을 기반으로 CMD2로 실행한다는 의미임. 즉 CMD1 | more 의 경우 [more] [file] 의 형식을 띄어야 하나, 앞 CMD1 의 내용이 [file]으로 활용되어 추가적인 [file]의 내용을 입력하지 않아도 된다.
head
지정된 파일의 상단 10줄을 표기함 (defult)
1. 형식
[head] [OPTIONS] [file]
2. 옵션
head -n : n(출력량) 을 원하는 값으로 지정할 수 있다 기본은 10줄이지만 5 입력시 5줄만 출력
3. 실습
1) head -n 과 | 를 활용하여 많은양의 출력량의 해드라인과 함깨 출력하자.
[root@server1 /test]# ps -ef | head -1 ; ps -ef | grep rsyslogd
UID PID PPID C STIME TTY TIME CMD
root 1078 1 0 09:52 ? 00:00:01 /usr/sbin/rsyslogd -n
root 4228 2816 0 11:02 pts/0 00:00:00 grep --color=auto rsyslogd
* 위의 내용은 너무 길다. 그래서 주로 활용되는 정보는 alies 를 활용한다.
2) alies 로 위 출력 예제를 pps로 등록하여 출력해보자.
[root@server1 /test]# alias pps='ps -ef | head -1 ; ps -ef | grep $1'
[root@server1 /test]# pps rsyslogd
UID PID PPID C STIME TTY TIME CMD
root 1078 1 0 09:52 ? 00:00:01 /usr/sbin/rsyslogd -n
root 4295 2816 0 11:05 pts/0 00:00:00 grep --color=auto rsyslogd
* alias 내 $1 같은경우 1의 환경변수가 아닌 정의된 pps CMD 의 바로 뒤에 오는 첫번재 인자값이라는 뜻으로 사용된다. 즉 alias 정의 후 pps rsyslogd 중 rsyslogd 라는 단어가 $1 의 1자리에 들어가게 된다.
tail
파일의 끝에 있는 10줄을 출력해준다 (defult)
1. 형식
[tail] [OPTIONS] [file]
2. 옵션
tail -n n1 : n1(출력값) 최하단 n 값만큼 출력함
tail -n +n1 : n1(출력값) 최상단 n값 줄 부터 남은 전체를 출력함
taul -f : 파일 내 추가정보가 들어올때 마다 화면에 출력함
3. 실습
1) tail -n 을 활용하여 최하단 5줄과 최상단 2줄제외 나머지를 출력하는 경우를 보자.
[root@server1 /test]# tail -n 5 /etc/passwd
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
rngd:x:975:974:Random Number Generator Daemon:/var/lib/rngd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
fadora:x:1000:1000:fadora:/home/fadora:/bin/bash
apache:x:48:48:Apache:/usr/share/httpd:/sbin/nologin
[root@server1 /test]# tail -n +2 /etc/passwd
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdow
..... 중략 .....
2) tail -f 를 활용하여 log 파일을 실시간 모니터링 해보자
* 선행 telnet 서비스를 open 해야한다
[root@server1 /test]# yum -y install telnet telnet-server
[root@server1 /test]# systemctl start telnet.socket
[root@server1 /test]# systemctl enable telnet.socket
-> 이후 텔넷으로 다른 사용자에 접속해보자.
[root@server1 /test]# telnet localhost
[fedora@server1 ~]$ id
uid=1000(fadora) gid=1000(fadora) groups=1000(fadora)
-> 이제 실습을 진행해보자.
* tail -f 를 이용하여 /var/log/messages 에 추가되는 로그파일을 실시간으로 출력받아 보겠다.
TERM1 [root@server1 /test]# tail -f /var/log/messages
으로 실시간 모니터링을 준비하고
TERM2 에 새로운 user을 만들고 또한 telnet localhost 로 접속하고 TERM1 을 비교하며 진행해보자. 식시간으로 로그파일들이 정의되는걸 볼수 있을것이다.
[참조] 서버를 실시간적으로 모니터링
top (# gnome-system-monitor) -> windows 의 작업관리자 같은곳.
tail -f /var/log/messages (# gnome-logs) -> windows 로그뷰 같은곳.
journalctl -f ( 서버 log 모니터링 )
* 특정 값만 지속적으로 모니터링 하는 방법.
tail -f /var/log/messages | grep -i DHCP
tail -f /var/log/messages | grep -i DNS
tail -f /var/log/messages | grep oracle
tail -f /var/log/messages | grep wasuser
tail -f /var/log/messages | egrep -i '(warn|fail|error|crit|alert|emerg)'
등등으로 다양하게 grep과 tail -f 를 활용하여 터미널로 모니터링이 가능하다.
'모의해킹 침해대응 과정 > Linux 기초' 카테고리의 다른 글
리눅스 기초때기 3일차. / VI 편집기 (0) | 2021.04.01 |
---|---|
리눅스 기초때기 2일차. 기타 관리용 명령어 / WC, SU, SUDO,LAST,WHO,W (0) | 2021.03.31 |
리눅스 기초때기 2일차 파일 관리 / TOUCH, CP, MV, RM (0) | 2021.03.30 |
리눅스 기초때기 1일차 디렉토리 관리 / LS, MKDIR, RMDIR (0) | 2021.03.30 |
리눅스 기초때기 1일차 / 디렉토리 이동 PWD, CD (0) | 2021.03.30 |