20160418 리눅스 기초
모의해킹 침해대응 전문가 과정 / 2016. 4. 19. 01:27
5일차
==============================안내==============================
파이썬(해커의 언어) + 쉘 스크립트 해두면 좋다 해라
==============================복습==============================
chmod CMD
심볼릭 모드 # chmod u+x file1
옥탈 모드 # chmod 744 file1
심볼릭 모드 # chmod u+x file1
옥탈 모드 # chmod 744 file1
파일 & 디렉토리 퍼미션 의미 r, w, x
umask의 정의 - default permission의 정의를 변경할 때 쓰는 CMD
특수 퍼미션 SetUID, SetGID, Sticky Bit 의미/설정/관리
특수 퍼미션 SetUID, SetGID, Sticky Bit 의미/설정/관리
프로그램이 실행되는 동안, 게시판처럼 (ex tmp)
# chmod 4755 file1
# chmod 2755 file1
# chmod 1777 file1
# chmod 4755 file1
# chmod 2755 file1
# chmod 1777 file1
사용자와 통신할 때 사용하는 명령어
talk CMD
[참고] 서비스 on/off 관리 툴 종료
(GUI) # system-config-services (# serviceconf)
(TUI) # ntsysv (# setup)
(CLI) # chkconfig ntalk on/off
talk CMD
[참고] 서비스 on/off 관리 툴 종료
(GUI) # system-config-services (# serviceconf)
(TUI) # ntsysv (# setup)
(CLI) # chkconfig ntalk on/off
==============================강의==============================
사용자와 통신할 때 사용하는 명령어
wall CMD
wall CMD
관리자 알아두면 좋은 명령어들
diff/cmp CMD
# cmp -s file1 file2 // -s: silent mode
# diff file1 file2
# diff -c file1 file2
# diff --recursive dir1 dir2
sort CMD
# cmd | sort -k 3
# cmd | sort -k 3 -r
diff/cmp CMD
# cmp -s file1 file2 // -s: silent mode
# diff file1 file2
# diff -c file1 file2
# diff --recursive dir1 dir2
sort CMD
# cmd | sort -k 3
# cmd | sort -k 3 -r
# df -k
# du -sk /var
# cd /var ; du -sk * | sort -nr | more
file CMD
# du -sk /var
# cd /var ; du -sk * | sort -nr | more
file CMD
검색 관련 명령어
grep CMD
# cmd OPTIONS PATTERN file1
OPTIONS: -l, -i. -v, -w, --color
PATTERN: * . ^ $ [abc]
grep CMD
# cmd OPTIONS PATTERN file1
OPTIONS: -l, -i. -v, -w, --color
PATTERN: * . ^ $ [abc]
# cmd | grep root
# cat /etc/passwd | grep root
# rpm -qa | grep talk
# ps -ef | grep xinetd
# chkconfig --list | grep xinetd
# cat /etc/passwd | grep root
# rpm -qa | grep talk
# ps -ef | grep xinetd
# chkconfig --list | grep xinetd
[참고] egrep/fgrep CMD
# cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'
find CMD
# find / -name core -type f
# find / -user user1 -group class1
# find / -mtime [-7|7|+7]
# find / -size [-300c|300c|+300c]
# find / -perm [-755|755]
# find / -name core -type f -exec rm -f {} \;
# cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'
find CMD
# find / -name core -type f
# find / -user user1 -group class1
# find / -mtime [-7|7|+7]
# find / -size [-300c|300c|+300c]
# find / -perm [-755|755]
# find / -name core -type f -exec rm -f {} \;
# find /log -name "*.log" -type f -mtime +30 -exec rm -f {} \;
# find /log -type f -mtime -2 -size +1G
# find / -perm -4000 -o -perm -2000
# find /source -type f -exec grep -l 'Server Error' {} \;
# find /log -type f -mtime -2 -size +1G
# find / -perm -4000 -o -perm -2000
# find /source -type f -exec grep -l 'Server Error' {} \;
압축과 아카이빙 관련 명령어
compress CMD
gzip/gunzip CMD
# gzip file1
# gunzip -c file1.gz
# gunzip file1.gz
bzip2/bunzip2 CMD
# bzip2 file1
# bunzip2 -c file1.bz2
# bunzip2 file1.bz2
archive CMD
tar CMD
# tar cvf file.tar file1 file2 file3
# tar tvf file.tar
# tar xcf file.tar
compress + archive CMD
tar CMD
# tar cvzf file.tar.gz file1 file2 file3
# tar tvzf file.tar.gz
# tar xczf file.tar.gz
compress CMD
gzip/gunzip CMD
# gzip file1
# gunzip -c file1.gz
# gunzip file1.gz
bzip2/bunzip2 CMD
# bzip2 file1
# bunzip2 -c file1.bz2
# bunzip2 file1.bz2
archive CMD
tar CMD
# tar cvf file.tar file1 file2 file3
# tar tvf file.tar
# tar xcf file.tar
compress + archive CMD
tar CMD
# tar cvzf file.tar.gz file1 file2 file3
# tar tvzf file.tar.gz
# tar xczf file.tar.gz
# tar cvjf file.tar.bz2 file1 file2 file3
# tar tvjf file.tar.bz2
# tar xcjf file.tar.bz2
jar CMD
# jar cvf file.jar file1 file2 file3
# jar tvf file.jar
# jar xcf file.jar
zip CMD
# zip [-r] file.zip file1 file2 file3
# unzip -l file.zip
# unzip file.zip
# tar tvjf file.tar.bz2
# tar xcjf file.tar.bz2
jar CMD
# jar cvf file.jar file1 file2 file3
# jar tvf file.jar
# jar xcf file.jar
zip CMD
# zip [-r] file.zip file1 file2 file3
# unzip -l file.zip
# unzip file.zip
쉘의 특성
리다이렉션
리다이렉션
==============================실습==============================
오른쪽 위에서 업데이트 말풍선 끄는 방법(업데이트 서비스 끄는 방법)
[root@linux220 ~]# chkconfig --list | grep update
yum-updatesd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
[root@linux220 ~]# who -r
run-level 5 2016-04-18 16:01 last=S
[root@linux220 ~]# chkconfig yum-updatesd off
[root@linux220 ~]# chkconfig --list | grep update
yum-updatesd 0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제
[root@linux220 ~]# service yum-updatesd stop
yum-updatesd를 정지 중: [ OK ]
[root@linux220 ~]# chkconfig --list | grep update
yum-updatesd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
[root@linux220 ~]# who -r
run-level 5 2016-04-18 16:01 last=S
[root@linux220 ~]# chkconfig yum-updatesd off
[root@linux220 ~]# chkconfig --list | grep update
yum-updatesd 0:해제 1:해제 2:해제 3:해제 4:해제 5:해제 6:해제
[root@linux220 ~]# service yum-updatesd stop
yum-updatesd를 정지 중: [ OK ]
wall CMD
# wall "test messages"
[터미널1] user01
[root@linux220 ~]# telnet localhost
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
[root@linux220 ~]# telnet localhost
Trying 127.0.0.1...
Connected to localhost.localdomain (127.0.0.1).
Escape character is '^]'.
linux220.example.com (Linux release 2.6.18-194.el5 #1 SMP Fri Apr 2 14:58:35 EDT 2010) (2)
login: user01
Password:
Last login: Fri Apr 15 19:47:21 from linux220
[user01@linux220 ~]$ id
uid=501(user01) gid=501(user01) groups=501(user01)
[user01@linux220 ~]$ pwd
/home/user01
[user01@linux220 ~]$
Broadcast message from root (pts/3) (Mon Apr 18 16:15:41 2016):
Password:
Last login: Fri Apr 15 19:47:21 from linux220
[user01@linux220 ~]$ id
uid=501(user01) gid=501(user01) groups=501(user01)
[user01@linux220 ~]$ pwd
/home/user01
[user01@linux220 ~]$
Broadcast message from root (pts/3) (Mon Apr 18 16:15:41 2016):
hello hell oh
Broadcast message from root (pts/3) (Mon Apr 18 16:15:41 2016):
hello hell oh
Broadcast message from root (pts/3) (Mon Apr 18 16:16:23 2016):
hell oh!
Broadcast message from root (pts/3) (Mon Apr 18 16:16:23 2016):
hell oh!
Broadcast message from root (Mon Apr 18 16:16:50 2016):
127.0.0.1 localhost localhost.localdomain
::1 localhost6 localhost.localdomain6
172.16.6.220 linux220.example.com linux220
::1 localhost6 localhost.localdomain6
172.16.6.220 linux220.example.com linux220
Broadcast message from root (Mon Apr 18 16:16:50 2016):
127.0.0.1 localhost localhost.localdomain
::1 localhost6 localhost.localdomain6
172.16.6.220 linux220.example.com linux220
::1 localhost6 localhost.localdomain6
172.16.6.220 linux220.example.com linux220
[터미널2] root
[root@linux220 ~]# wall "hello hell oh!"
bash: !": event not found //이건 왜 안되는걸까??
[root@linux220 ~]# wall "hello hell oh"
Broadcast message from root (pts/3) (Mon Apr 18 16:15:41 2016):
hello hell oh
[root@linux220 ~]# wall
hell oh! //< Ctrl + D >
[root@linux220 ~]# wall
hell oh! //< Ctrl + D >
Broadcast message from root (pts/3) (Mon Apr 18 16:16:23 2016):
hell oh!
[root@linux220 ~]# wall < /etc/hosts
[root@linux220 ~]# wall < /etc/hosts
Broadcast message from root (Mon Apr 18 16:16:50 2016):
127.0.0.1 localhost localhost.localdomain
::1 localhost6 localhost.localdomain6
172.16.6.220 linux220.example.com linux220
::1 localhost6 localhost.localdomain6
172.16.6.220 linux220.example.com linux220
[실무 예] 긴급한 작업 공지시
긴급한 작업(EX: fsck CMD, dump CMD)
# wall < /etc/MESS/work.txt
..... 10분 .....
# wall < /etc/MESS/work.txt
..... 20분 ......
#
# wall < /etc/MESS/work.txt
..... 10분 .....
# wall < /etc/MESS/work.txt
..... 20분 ......
#
유용한 명령어
비교(cmp, diff), 정렬(sort), 확인(file)
비교(cmp, diff), 정렬(sort), 확인(file)
cmp CMD
[root@linux220 ~]# cd /test
[root@linux220 /test]# cat > cmpfile1
1111
2222
3333 <Ctrl + D>
[root@linux220 /test]# cat > cmpfile2
1111
2222
3333 <Ctrl + D>
[root@linux220 /test]# cat > cmpfile3
1111
2222
4444 <Ctrl + D>
[root@linux220 /test]# cmp cmpfile1 cmpfile2
[root@linux220 /test]# cmp cmpfile1 cmpfile3
cmpfile1 cmpfile3 differ: byte 11, line 3
[root@linux220 /test]# cat > cmpfile1
1111
2222
3333 <Ctrl + D>
[root@linux220 /test]# cat > cmpfile2
1111
2222
3333 <Ctrl + D>
[root@linux220 /test]# cat > cmpfile3
1111
2222
4444 <Ctrl + D>
[root@linux220 /test]# cmp cmpfile1 cmpfile2
[root@linux220 /test]# cmp cmpfile1 cmpfile3
cmpfile1 cmpfile3 differ: byte 11, line 3
diff CMD
[root@linux220 /test]# diff cmpfile1 cmpfile2
[root@linux220 /test]# diff cmpfile1 cmpfile3
3c3
< 3333
---
> 4444
[root@linux220 /test]# diff -c cmpfile1 cmpfile3
*** cmpfile1 2016-04-18 16:21:53.000000000 +0900
--- cmpfile3 2016-04-18 16:22:10.000000000 +0900
***************
*** 1,3 ****
1111
2222
! 3333
--- 1,3 ----
1111
2222
! 4444
[root@linux220 /test]# diff cmpfile1 cmpfile3
3c3
< 3333
---
> 4444
[root@linux220 /test]# diff -c cmpfile1 cmpfile3
*** cmpfile1 2016-04-18 16:21:53.000000000 +0900
--- cmpfile3 2016-04-18 16:22:10.000000000 +0900
***************
*** 1,3 ****
1111
2222
! 3333
--- 1,3 ----
1111
2222
! 4444
디렉토리 비교
[root@linux220 /test]# mkdir dir1
[root@linux220 /test]# vi dir1/file1
-------------------------------------------------------------------
1111
-------------------------------------------------------------------
[root@linux220 /test]# mkdir dir2
[root@linux220 /test]# vi dir2/file1
-------------------------------------------------------------------
2222
-------------------------------------------------------------------
[root@linux220 /test]# diff --recursive dir1 dir2
diff --recursive dir1/file1 dir2/file1
1c1
< 1111
---
> 2222
[root@linux220 /test]# vi dir2/file1
-------------------------------------------------------------------
1111 //2222 에서 1111 로 수정
-------------------------------------------------------------------
[root@linux220 /test]# touch dir2/file2
[root@linux220 /test]# diff --recursive dir1 dir2
Only in dir2: file2
[root@linux220 /test]# vi dir1/file1
-------------------------------------------------------------------
1111
-------------------------------------------------------------------
[root@linux220 /test]# mkdir dir2
[root@linux220 /test]# vi dir2/file1
-------------------------------------------------------------------
2222
-------------------------------------------------------------------
[root@linux220 /test]# diff --recursive dir1 dir2
diff --recursive dir1/file1 dir2/file1
1c1
< 1111
---
> 2222
[root@linux220 /test]# vi dir2/file1
-------------------------------------------------------------------
1111 //2222 에서 1111 로 수정
-------------------------------------------------------------------
[root@linux220 /test]# touch dir2/file2
[root@linux220 /test]# diff --recursive dir1 dir2
Only in dir2: file2
[실무 예] 파일 비교
(원 본) -------------------> (백업 본)
/source/* (server.xml) /source/* (server.xml)
# diff server.xml servier.xml.old
/source/* (server.xml) /source/* (server.xml)
# diff server.xml servier.xml.old
[root@linux220 /test]# cp /etc/httpd/conf/httpd.conf /test
[root@linux220 /test]# cp httpd.conf httpd.conf.old
[root@linux220 /test]# vi httpd.conf
-------------------------------------------------------------------
/ServerName -> n
[수정전]
#ServerName www.example.com:80
[수정후]
ServerName 172.16.9.2XX:80
-------------------------------------------------------------------
[root@linux220 /test]# diff httpd.conf httpd.conf.old
265c265
< ServerName 172.16.6.220:80
---
> #ServerName www.example.com:80
[실무 예] 디렉토리 마이그레이션 작업
/was1/* ---- Migration ----> /was2/*
# ls -alR /was1 | wc -l
# ls -alR /was2 | wc -l
# diff --recursive /was1 /was2
# ls -alR /was1 | wc -l
# ls -alR /was2 | wc -l
# diff --recursive /was1 /was2
sort CMD 정렬
[명령어 형식]
# sort /etc/passwd
# sort –r /etc/passwd /* -r : reverse */
# sort -k 3 filename /* -k : key */
# sort -t : -k 3 –n /etc/passwd /* -t : seperate, -n : numeric */
# sort /etc/passwd
# sort –r /etc/passwd /* -r : reverse */
# sort -k 3 filename /* -k : key */
# sort -t : -k 3 –n /etc/passwd /* -t : seperate, -n : numeric */
정열 기준(default)
오름차순 정열 <---> (-r) 내림차순 정열
1필드->2필드->3필드-> ... 정열 <---> (-k) 필드 지정 정열
문자열 정열 <---> (-n) 숫자열 정열
오름차순 정열 <---> (-r) 내림차순 정열
1필드->2필드->3필드-> ... 정열 <---> (-k) 필드 지정 정열
문자열 정열 <---> (-n) 숫자열 정열
[root@linux220 /test]# vi sortfile1
[root@linux220 /test]# cat sortfile1
linux100 10 20 31 50
linux200 20 25 31 20
linux300 30 20 30 40
linux400 50 20 30 80
[root@linux220 /test]# sort sortfile1
linux100 10 20 31 50
linux200 20 25 31 20
linux300 30 20 30 40
linux400 50 20 30 80
[root@linux220 /test]# sort -r sortfile1
linux400 50 20 30 80
linux300 30 20 30 40
linux200 20 25 31 20
linux100 10 20 31 50
linux200 20 25 31 20
linux300 30 20 30 40
linux400 50 20 30 80
[root@linux220 /test]# sort -r sortfile1
linux400 50 20 30 80
linux300 30 20 30 40
linux200 20 25 31 20
linux100 10 20 31 50
[root@linux220 /test]# sort -k 3 -n sortfile1 //숫자일때 -n 옵션
linux100 10 20 31 50
linux300 30 20 30 40
linux400 50 20 30 80
linux200 20 25 31 20
linux300 30 20 30 40
linux400 50 20 30 80
linux200 20 25 31 20
[root@linux220 /test]# cat /etc/passwd | head
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
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/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
[root@linux220 /test]# sort -t : -k 1 /etc/passwd | head
adm:x:3:4:adm:/var/adm:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
avahi-autoipd:x:100:102:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
distcache:x:94:94:Distcache:/:/sbin/nologin
dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin
fedora:x:500:500:fedora:/home/fedora:/bin/bash
[root@linux220 /test]# sort -t : -k 3 -n /etc/passwd | head
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
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/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
[EX2] sort 명령어 활용
# CMD | sort
# CMD | sort –r
# CMD | sort –nr
# ps -ef | head | sort
# ps -ef | head | sort –r
# ps -ef | head | sort -k 3
# ps -ef | head | sort -k 3 –r
# df –h | sort -k 4
# df -h | sort -k 4 -r
[root@linux220 /test]# ps -ef | head | sort -k 2
root 1 0 0 15:59 ? 00:00:00 init [5]
root 2 1 0 15:59 ? 00:00:00 [migration/0]
root 3 1 0 15:59 ? 00:00:00 [ksoftirqd/0]
root 4 1 0 15:59 ? 00:00:00 [watchdog/0]
root 5 1 0 15:59 ? 00:00:00 [migration/1]
root 6 1 0 15:59 ? 00:00:00 [ksoftirqd/1]
root 7 1 0 15:59 ? 00:00:00 [watchdog/1]
root 8 1 0 15:59 ? 00:00:00 [migration/2]
root 9 1 0 15:59 ? 00:00:00 [ksoftirqd/2]
UID PID PPID C STIME TTY TIME CMD
You have new mail in /var/spool/mail/root
[root@linux220 /test]# ps -ef | head | sort -k 2 -r
UID PID PPID C STIME TTY TIME CMD
root 9 1 0 15:59 ? 00:00:00 [ksoftirqd/2]
root 8 1 0 15:59 ? 00:00:00 [migration/2]
root 7 1 0 15:59 ? 00:00:00 [watchdog/1]
root 6 1 0 15:59 ? 00:00:00 [ksoftirqd/1]
root 5 1 0 15:59 ? 00:00:00 [migration/1]
root 4 1 0 15:59 ? 00:00:00 [watchdog/0]
root 3 1 0 15:59 ? 00:00:00 [ksoftirqd/0]
root 2 1 0 15:59 ? 00:00:00 [migration/0]
root 1 0 0 15:59 ? 00:00:00 init [5]
[root@linux220 ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 36G 3.2G 31G 10% /
/dev/sda8 487M 11M 451M 3% /data1
/dev/sda7 487M 11M 451M 3% /data2
/dev/sda6 487M 11M 451M 3% /data3
/dev/sda5 487M 11M 451M 3% /data4
/dev/sda3 487M 11M 451M 3% /home
tmpfs 506M 0 506M 0% /dev/shm
/dev/hdc 3.9G 3.9G 0 100% /media/CentOS_5.5_Final
[root@linux220 ~]# du -sk /var //disk usage -s: sum, -k: Kbytes
72720 /var
[root@linux220 ~]# du -sk /etc
132976 /etc
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 36G 3.2G 31G 10% /
/dev/sda8 487M 11M 451M 3% /data1
/dev/sda7 487M 11M 451M 3% /data2
/dev/sda6 487M 11M 451M 3% /data3
/dev/sda5 487M 11M 451M 3% /data4
/dev/sda3 487M 11M 451M 3% /home
tmpfs 506M 0 506M 0% /dev/shm
/dev/hdc 3.9G 3.9G 0 100% /media/CentOS_5.5_Final
[root@linux220 ~]# du -sk /var //disk usage -s: sum, -k: Kbytes
72720 /var
[root@linux220 ~]# du -sk /etc
132976 /etc
[root@linux220 /var]# du -sk *
12 account
14012 cache
8 crash
28 db
32 empty
16 ftp
8 games
20 gdm
46808 lib
8 local
32 lock
2124 log
4 mail
140 named
8 nis
8 opt
8 preserve
8 racoon
388 run
244 spool
12 tmp
8 tux
8752 www
24 yp
[root@linux220 /var]# du -sk * | sort //문자열 형태의 정렬방식
12 account
12 tmp
140 named
14012 cache
16 ftp
20 gdm
2124 log
24 yp
244 spool
28 db
32 empty
32 lock
388 run
4 mail
46808 lib
8 crash
8 games
8 local
8 nis
8 opt
8 preserve
8 racoon
8 tux
8752 www
[root@linux220 /var]# du -sk * | sort -n //숫자열 형태의 정렬방식
4 mail
8 crash
8 games
8 local
8 nis
8 opt
8 preserve
8 racoon
8 tux
12 account
12 tmp
16 ftp
20 gdm
24 yp
28 db
32 empty
32 lock
140 named
244 spool
388 run
2124 log
8752 www
14012 cache
46808 lib
[root@linux220 /var]# du -sk * | sort -nr (# du -sk * | sort -nr | more)
46808 lib
14012 cache
8752 www
2124 log
388 run
244 spool
140 named
32 lock
32 empty
28 db
24 yp
20 gdm
16 ftp
12 tmp
12 account
8 tux
8 racoon
8 preserve
8 opt
8 nis
8 local
8 games
8 crash
4 mail
file CMD
[참고] Windos / Unix 계열의 파일 확장자에 대해서
Windows -> 파일에 확장자(예: file.txt, hwp.exe, ....)
Unix,Linux -> 파일의 확장자가 거의 의미가 없다.
Windows -> 파일에 확장자(예: file.txt, hwp.exe, ....)
Unix,Linux -> 파일의 확장자가 거의 의미가 없다.
이 파일이 어떤 종류의 파일인지 확인하는 명령어가 필요하다!! -> file CMD
[EX1] 파일의 종류 확인
# file /etc/passwd /* ASCII파일 (# cat /etc/passwd) */
# file /etc/passwd /* ASCII파일 (# cat /etc/passwd) */
[root@linux220 ~]# file /etc/passwd
/etc/passwd: ASCII text
/etc/passwd: ASCII text
[root@linux220 ~]# file /bin/ls
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
/bin/ls: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
[root@linux220 ~]# file /var/run/utmp
/var/run/utmp: data
/var/run/utmp: data
[root@linux220 ~]# file /etc/rc.d/init.d/sendmail
/etc/rc.d/init.d/sendmail: Bourne-Again shell script text executable
/etc/rc.d/init.d/sendmail: Bourne-Again shell script text executable
[root@linux220 ~]# file /etc/hosts /etc
/etc/hosts: ASCII text
/etc: directory
/etc/hosts: ASCII text
/etc: directory
[root@linux220 ~]# cd /etc
[root@linux220 /etc]# file *
DIR_COLORS: ASCII English text
DIR_COLORS.xterm: ASCII English text
Muttrc: ASCII English text
Muttrc.local: empty
NetworkManager: directory
X11: directory
a2ps-site.cfg: ASCII English text
a2ps.cfg: ASCII English text
acpi: directory
adjtime: ASCII text
alchemist: directory
aliases: ASCII English text
aliases.db: Berkeley DB (Hash, version 8, native byte-order)
alsa: directory
alternatives: directory
anacrontab: ASCII text
asound.state: ASCII text, with very long lines
at.deny: very short file (no magic)
...
[root@linux220 /etc]# file *
DIR_COLORS: ASCII English text
DIR_COLORS.xterm: ASCII English text
Muttrc: ASCII English text
Muttrc.local: empty
NetworkManager: directory
X11: directory
a2ps-site.cfg: ASCII English text
a2ps.cfg: ASCII English text
acpi: directory
adjtime: ASCII text
alchemist: directory
aliases: ASCII English text
aliases.db: Berkeley DB (Hash, version 8, native byte-order)
alsa: directory
alternatives: directory
anacrontab: ASCII text
asound.state: ASCII text, with very long lines
at.deny: very short file (no magic)
...
검색 관련 명령어
grep CMD: pattern(g/re/p, Globally/Regular Expression/Print)
[명령어 형식]
# grep OPTIONS PATTERN file1
# grep OPTIONS PATTERN file1
(기본 사용법)
# grep root /etc/passwd (# cat /etc/passwd | grep root)
# grep root /etc/passwd (# cat /etc/passwd | grep root)
# CMD | grep root
# cat /etc/passwd | grep root
# rpm -qa | grep talk
# ps -ef | grep xinetd
# chkconfig --list | grep ssh
# cat /etc/passwd | grep root
# rpm -qa | grep talk
# ps -ef | grep xinetd
# chkconfig --list | grep ssh
[root@linux220 /etc]# grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@linux220 /etc]# cat /etc/passwd | grep root //선호하는 형식
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@linux220 /etc]# rpm -qa | grep talk //rpm: 레드햇 패키지 매니저
talk-server-0.17-31.el5
talk-0.17-29.2.2
[root@linux220 /etc]# ps -ef | grep xinetd
root 3918 1 0 16:02 ? 00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 10092 4625 0 17:28 pts/1 00:00:00 grep xinetd
[root@linux220 /etc]# chkconfig --list | grep ssh
sshd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
talk-server-0.17-31.el5
talk-0.17-29.2.2
[root@linux220 /etc]# ps -ef | grep xinetd
root 3918 1 0 16:02 ? 00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 10092 4625 0 17:28 pts/1 00:00:00 grep xinetd
[root@linux220 /etc]# chkconfig --list | grep ssh
sshd 0:해제 1:해제 2:활성 3:활성 4:활성 5:활성 6:해제
(옵션 사용법) "# grep OPTIONS PATTERN file1"
# grep -l root /etc/hosts /etc/passwd /etc/group /* 여러 파일 중 검색 문자열 존재 파일 출력 */
# grep -n root /etc/group /* -n: number line, 파일에서 root 문자열을 검색하고 라인 번호도 같이 출력 */
# grep -v root /etc/passwd /* -v: inverse, 파일에서 검색 문자열을 제외하고 나머지 출력 */
# grep -i root /etc/passwd /* -i: ignore case, 파일에서 검색 문자열의 대소문자를 구분하지 않음 */
# grep -w root file1 /* -w: word , 단어의 일부분이 아닌 단어의 전체가 일치하는 경우 출력 */
# grep --color root /etc/passwd
[root@linux220 /etc]# grep -l root /etc/hosts /etc/passwd /etc/group
/etc/passwd
/etc/group
[root@linux220 /etc]# grep -n root /etc/group
1:root:x:0:root
2:bin:x:1:root,bin,daemon
3:daemon:x:2:root,bin,daemon
4:sys:x:3:root,bin,adm
5:adm:x:4:root,adm,daemon
7:disk:x:6:root
11:wheel:x:10:root
[root@linux220 /etc]# grep -v root /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/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
distcache:x:94:94:Distcache:/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin
squid:x:23:23::/var/spool/squid:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:102:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
fedora:x:500:500:fedora:/home/fedora:/bin/bash
user01:x:501:501::/home/user01:/bin/bash
[root@linux220 /etc]# grep -i root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@linux220 /etc]# grep --color root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
/etc/passwd
/etc/group
[root@linux220 /etc]# grep -n root /etc/group
1:root:x:0:root
2:bin:x:1:root,bin,daemon
3:daemon:x:2:root,bin,daemon
4:sys:x:3:root,bin,adm
5:adm:x:4:root,adm,daemon
7:disk:x:6:root
11:wheel:x:10:root
[root@linux220 /etc]# grep -v root /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/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
distcache:x:94:94:Distcache:/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
mailnull:x:47:47::/var/spool/mqueue:/sbin/nologin
smmsp:x:51:51::/var/spool/mqueue:/sbin/nologin
webalizer:x:67:67:Webalizer:/var/www/usage:/sbin/nologin
dovecot:x:97:97:dovecot:/usr/libexec/dovecot:/sbin/nologin
squid:x:23:23::/var/spool/squid:/sbin/nologin
pcap:x:77:77::/var/arpwatch:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
avahi:x:70:70:Avahi daemon:/:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
named:x:25:25:Named:/var/named:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
avahi-autoipd:x:100:102:avahi-autoipd:/var/lib/avahi-autoipd:/sbin/nologin
xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin
gdm:x:42:42::/var/gdm:/sbin/nologin
sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin
fedora:x:500:500:fedora:/home/fedora:/bin/bash
user01:x:501:501::/home/user01:/bin/bash
[root@linux220 /etc]# grep -i root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@linux220 /etc]# grep --color root /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
[root@linux220 /etc]# grep -nv nologin /etc/passwd //내가 따로해본것
1:root:x:0:0:root:/root:/bin/bash
6:sync:x:5:0:sync:/sbin:/bin/sync
7:shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
8:halt:x:7:0:halt:/sbin:/sbin/halt
10:news:x:9:13:news:/etc/news:
41:fedora:x:500:500:fedora:/home/fedora:/bin/bash
42:user01:x:501:501::/home/user01:/bin/bash
(패턴 사용법) "# grep OPTIONS PATTERN file1"
* # grep 'ro*t' /etc/passwd //없거나 모든단어
. # grep 'no...y' /etc/passwd //반드시 존재해야하는 모든단어
^root # grep '^root' /etc/passwd //라인의 처음에 root로 시작하는
root$ # grep 'root$' /etc/group //라인의 끝에 root로 끝나는
[abc] # grep 'user0[123]' /etc/passwd //user01 or user02 or user03
[root@linux220 /etc]# grep 'ro*t' /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rpc:x:32:32:Portmapper RPC user:/:/sbin/nologin
[root@linux220 /etc]# grep 'no...y' /etc/passwd
nobody:x:99:99:Nobody:/:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
[root@linux220 /etc]# grep '^root' /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@linux220 /etc]# grep 'root$' /etc/group
root:x:0:root
disk:x:6:root
wheel:x:10:root
[root@linux220 /etc]# grep 'user0[123]' /etc/passwd
user01:x:501:501::/home/user01:/bin/bash
[root@linux220 /etc]#
grep 명령어 옵션 실습
[root@linux220 ~]# useradd FEDORA
[root@linux220 ~]# passwd FEDORA
Changing password for user FEDORA.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@linux220 ~]# grep fedora /etc/passwd
fedora:x:500:500:fedora:/home/fedora:/bin/bash
[root@linux220 ~]# grep -i fedora /etc/passwd //-i: ignore case
fedora:x:500:500:fedora:/home/fedora:/bin/bash
FEDORA:x:502:502::/home/FEDORA:/bin/bash
[root@linux220 ~]# useradd FEDORA
[root@linux220 ~]# passwd FEDORA
Changing password for user FEDORA.
New UNIX password:
BAD PASSWORD: it is based on a dictionary word
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
[root@linux220 ~]# grep fedora /etc/passwd
fedora:x:500:500:fedora:/home/fedora:/bin/bash
[root@linux220 ~]# grep -i fedora /etc/passwd //-i: ignore case
fedora:x:500:500:fedora:/home/fedora:/bin/bash
FEDORA:x:502:502::/home/FEDORA:/bin/bash
(실무 예) 환경 파일에 등록
# alias grep='grep -i' => $HOME/.bashrc
# alias grep='grep -i --color' => $HOME/.bashrc < 검색된 단어에 색상을 입혀 가독성을 높여준다 >
# vi ~/.bashrc
alias grep='grep -i --color'
# . ~/.bashrc
# alias grep
alias grep='grep -i --color'
# . ~/.bashrc
# alias grep
그림1
[root@linux220 ~]# grep -l root /etc/group /etc/passwd
/etc/group
/etc/passwd
/etc/group
/etc/passwd
[root@linux220 ~]# vi file.txt
[root@linux220 ~]# grep -w root file.txt
root hello
[root@linux220 ~]# cat file.txt
root hello
roothello
testroottest
helloroot
[root@linux220 ~]# grep -w root file.txt
root hello
[root@linux220 ~]# cat file.txt
root hello
roothello
testroottest
helloroot
[root@linux220 ~]# grep -l "network-function" /etc/rc.d/rc?.d/* //와일드카드문자 ?
/etc/rc.d/rc0.d/K90network
/etc/rc.d/rc1.d/K90network
/etc/rc.d/rc2.d/S10network
/etc/rc.d/rc3.d/S10network
/etc/rc.d/rc4.d/S10network
/etc/rc.d/rc5.d/S10network
/etc/rc.d/rc6.d/K90network
[root@linux220 ~]# cat -n /etc/rc.d/rc5.d/S10network | grep network-function
42 . ./network-functions
/etc/rc.d/rc0.d/K90network
/etc/rc.d/rc1.d/K90network
/etc/rc.d/rc2.d/S10network
/etc/rc.d/rc3.d/S10network
/etc/rc.d/rc4.d/S10network
/etc/rc.d/rc5.d/S10network
/etc/rc.d/rc6.d/K90network
[root@linux220 ~]# cat -n /etc/rc.d/rc5.d/S10network | grep network-function
42 . ./network-functions
[root@linux220 ~]# cat /var/log/messages
Apr 18 17:07:07 linux220 syslogd 1.4.1: restart.
Apr 18 17:07:58 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:09:59 linux220 init: Trying to re-exec init
Apr 18 17:35:33 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:36:34 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:37:14 linux220 last message repeated 9 times
Apr 18 17:43:28 linux220 kernel: atkbd.c: Unknown key pressed (translated set 2, code 0x72 on isa0060/serio0).
Apr 18 17:43:28 linux220 kernel: atkbd.c: Use 'setkeycodes 72 <keycode>' to make it known.
Apr 18 17:43:28 linux220 kernel: atkbd.c: Unknown key released (translated set 2, code 0x72 on isa0060/serio0).
Apr 18 17:43:28 linux220 kernel: atkbd.c: Use 'setkeycodes 72 <keycode>' to make it known.
Apr 18 17:46:04 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:46:44 linux220 last message repeated 9 times
[root@linux220 ~]# cat /var/log/messages | grep 'Apr 18 17:3'
Apr 18 17:35:33 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:36:34 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:37:14 linux220 last message repeated 9 times
Apr 18 17:07:07 linux220 syslogd 1.4.1: restart.
Apr 18 17:07:58 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:09:59 linux220 init: Trying to re-exec init
Apr 18 17:35:33 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:36:34 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:37:14 linux220 last message repeated 9 times
Apr 18 17:43:28 linux220 kernel: atkbd.c: Unknown key pressed (translated set 2, code 0x72 on isa0060/serio0).
Apr 18 17:43:28 linux220 kernel: atkbd.c: Use 'setkeycodes 72 <keycode>' to make it known.
Apr 18 17:43:28 linux220 kernel: atkbd.c: Unknown key released (translated set 2, code 0x72 on isa0060/serio0).
Apr 18 17:43:28 linux220 kernel: atkbd.c: Use 'setkeycodes 72 <keycode>' to make it known.
Apr 18 17:46:04 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:46:44 linux220 last message repeated 9 times
[root@linux220 ~]# cat /var/log/messages | grep 'Apr 18 17:3'
Apr 18 17:35:33 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:36:34 linux220 avahi-daemon[4117]: Invalid query packet.
Apr 18 17:37:14 linux220 last message repeated 9 times
[root@linux220 ~]# ps
PID TTY TIME CMD
4625 pts/1 00:00:00 bash
10193 pts/1 00:00:00 ps
[root@linux220 ~]# ps -ef | grep 4625
root 4625 4620 0 16:10 pts/1 00:00:00 bash
root 10194 4625 0 17:53 pts/1 00:00:00 ps -ef
root 10195 4625 0 17:53 pts/1 00:00:00 grep -i --color 4625
[root@linux220 ~]# ps -ef | grep bash
root 4348 4312 0 16:02 ? 00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients"
root 4625 4620 0 16:10 pts/1 00:00:00 bash
root 10197 4625 0 17:53 pts/1 00:00:00 grep -i --color bash
PID TTY TIME CMD
4625 pts/1 00:00:00 bash
10193 pts/1 00:00:00 ps
[root@linux220 ~]# ps -ef | grep 4625
root 4625 4620 0 16:10 pts/1 00:00:00 bash
root 10194 4625 0 17:53 pts/1 00:00:00 ps -ef
root 10195 4625 0 17:53 pts/1 00:00:00 grep -i --color 4625
[root@linux220 ~]# ps -ef | grep bash
root 4348 4312 0 16:02 ? 00:00:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients"
root 4625 4620 0 16:10 pts/1 00:00:00 bash
root 10197 4625 0 17:53 pts/1 00:00:00 grep -i --color bash
파일내의 특정 패턴 여러개 검색하기
egrep(Extended grep) CMD
# cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'
# cat /var/log/messages | egrep -i '(warn|err|crit|alert|emerg)'
fgrep(Fixed grep) CMD
# fgrep '^root' file1
# fgrep '^root' file1
[root@linux220 ~]# egrep "fedora|user01" /etc/passwd
fedora:x:500:500:fedora:/home/fedora:/bin/bash
user01:x:501:501::/home/user01:/bin/bash
fedora:x:500:500:fedora:/home/fedora:/bin/bash
user01:x:501:501::/home/user01:/bin/bash
(실무 예) 로그 파일에서 에러 메세지 검색
# cat /var/log/messages | egrep –i '(warn|err|crit|alert|emerg)'
# cat /var/log/messages | egrep –i '(warn|err|crit|alert|emerg)'
(실무) 특정한 단어를 제외하고 검색
# ps –ef | grep xinetd | grep –v grep
# ps –ef | grep xinetd | grep –v grep
[root@linux220 ~]# ps -ef | grep xinetd
root 3918 1 0 16:01 ? 00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 10289 4625 0 18:24 pts/1 00:00:00 grep -i --color xinetd
[root@linux220 ~]# ps -ef | grep xinetd | grep -v grep
root 3918 1 0 16:02 ? 00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 3918 1 0 16:01 ? 00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
root 10289 4625 0 18:24 pts/1 00:00:00 grep -i --color xinetd
[root@linux220 ~]# ps -ef | grep xinetd | grep -v grep
root 3918 1 0 16:02 ? 00:00:00 xinetd -stayalive -pidfile /var/run/xinetd.pid
find CMD
------------------------------------------------------------------------------
(형식1) # find / -name core -type [f|d] (# find / -name "*oracle*" -type f)
(형식2) # find / -user user01 -group class1
(형식3) # find / -mtime [-7|7|+7]
(형식4) # find / -perm [-755|755]
(형식5) # find / -size [-300M|300M|+300M]
(형식6) # find / -name core -type f -exec rm {} \;
------------------------------------------------------------------------------
[EX1] 파일 이름 검색(예: # find / -name core –type f)
[root@linux220 ~]# cd /test
[root@linux220 /test]# mkdir dir1 dir2
[root@linux220 /test]# touch dir1/file1 dir2/file3 file1 file2
[root@linux220 /test]# tree
.
|-- dir1
| `-- file1
|-- dir2
| `-- file3
|-- file1
`-- file2
[root@linux220 /test]# mkdir dir1 dir2
[root@linux220 /test]# touch dir1/file1 dir2/file3 file1 file2
[root@linux220 /test]# tree
.
|-- dir1
| `-- file1
|-- dir2
| `-- file3
|-- file1
`-- file2
2 directories, 4 files
[root@linux220 /test]# find . -name file1 //. 현재 폴더 아래에 있는
./dir1/file1
./file1
./dir1/file1
./file1
[root@linux220 /test]# find . -name file1 -type f
./dir1/file1
./file1
./dir1/file1
./file1
[root@linux220 /test]# find /home -user fedora -group fedora
/home/fedora
/home/fedora/dirtest
/home/fedora/dirtest/test2.txt
/home/fedora/.bash_history
/home/fedora/.bash_profile
/home/fedora/.bashrc
/home/fedora/.bash_logout
/home/fedora/.mozilla
/home/fedora/.mozilla/plugins
/home/fedora/.mozilla/extensions
/home/fedora/.viminfo
[root@linux220 /test]# find /home -user fedora -group fedora -ls
102001 2 drwxr-xrwx 4 fedora fedora 1024 4월 15 19:50 /home/fedora
102009 1 drwxr-xrwx 2 fedora fedora 1024 4월 15 17:37 /home/fedora/dirtest
102010 0 -rw-rw-r-- 1 fedora fedora 0 4월 15 17:27 /home/fedora/dirtest/test2.txt
102008 2 -rw------- 1 fedora fedora 1131 4월 15 19:54 /home/fedora/.bash_history
102002 2 -rw-r--r-- 1 fedora fedora 176 1월 22 2009 /home/fedora/.bash_profile
102007 2 -rw-r--r-- 1 fedora fedora 124 1월 22 2009 /home/fedora/.bashrc
102006 2 -rw-r--r-- 1 fedora fedora 33 1월 22 2009 /home/fedora/.bash_logout
102003 2 drwxr-xr-x 4 fedora fedora 1024 4월 12 03:38 /home/fedora/.mozilla
102004 2 drwxr-xr-x 2 fedora fedora 1024 2월 18 2010 /home/fedora/.mozilla/plugins
102005 2 drwxr-xr-x 2 fedora fedora 1024 2월 18 2010 /home/fedora/.mozilla/extensions
102012 1 -rw------- 1 fedora fedora 779 4월 15 19:50 /home/fedora/.viminfo
# find /usr/share -name "*.log" -type f
/usr/share/texmf-var/web2c/jadetex.log
/usr/share/texmf-var/web2c/updmap.log
/usr/share/texmf-var/web2c/pdflatex.log
..... (중략) .....
/usr/share/texmf-var/web2c/updmap.log
/usr/share/texmf-var/web2c/pdflatex.log
..... (중략) .....
[root@linux220 ~]# find /usr/share -name "*.log" -type f
/usr/share/doc/tux-3.2.18/sample.log
/usr/share/doc/tux-3.2.18/sample.log
[root@linux220 /test/dir2]# touch file1 file2 file3 file4 file5 file6
[root@linux220 /test/dir2]# ls
file1 file2 file3 file4 file5 file6
[root@linux220 /test/dir2]# ls -l file*
-rw-r--r-- 1 root root 0 4월 18 18:39 file1
-rw-r--r-- 1 root root 0 4월 18 18:39 file2
-rw-r--r-- 1 root root 0 4월 18 18:39 file3
-rw-r--r-- 1 root root 0 4월 18 18:39 file4
-rw-r--r-- 1 root root 0 4월 18 18:39 file5
-rw-r--r-- 1 root root 0 4월 18 18:39 file6
[root@linux220 /test/dir2]# date
2016. 04. 18. (월) 18:40:14 KST
[root@linux220 /test/dir2]# touch -t 04171839 file2
[root@linux220 /test/dir2]# touch -t 04161839 file3
[root@linux220 /test/dir2]# touch -t 04151839 file4
[root@linux220 /test/dir2]# touch -t 04141839 file5
[root@linux220 /test/dir2]# touch -t 04131839 file6
[root@linux220 /test/dir2]# ls -l file*
-rw-r--r-- 1 root root 0 4월 18 18:39 file1
-rw-r--r-- 1 root root 0 4월 17 18:39 file2
-rw-r--r-- 1 root root 0 4월 16 18:39 file3
-rw-r--r-- 1 root root 0 4월 15 18:39 file4
-rw-r--r-- 1 root root 0 4월 14 18:39 file5
-rw-r--r-- 1 root root 0 4월 13 18:39 file6
[root@linux220 /test/dir2]# find . -mtime 3 -type f //3일전
./file4
[root@linux220 /test/dir2]# find . -mtime +3 -type f //4일전~
./file6
./file5
[root@linux220 /test/dir2]# find . -mtime -3 -type f //~2일전
./file3
./file2
./file1
./file4
[root@linux220 /test/dir2]# find . -mtime +3 -type f //4일전~
./file6
./file5
[root@linux220 /test/dir2]# find . -mtime -3 -type f //~2일전
./file3
./file2
./file1
[root@linux220 /test/dir2]# cd /test
[root@linux220 /test]# mkdir dir3
[root@linux220 /test]# cd dir3
[root@linux220 /test/dir3]# touch file{1,2,3,4,5,6,7,8}
[root@linux220 /test/dir3]# ll
합계 0
-rw-r--r-- 1 root root 0 4월 18 18:43 file1
-rw-r--r-- 1 root root 0 4월 18 18:43 file2
-rw-r--r-- 1 root root 0 4월 18 18:43 file3
-rw-r--r-- 1 root root 0 4월 18 18:43 file4
-rw-r--r-- 1 root root 0 4월 18 18:43 file5
-rw-r--r-- 1 root root 0 4월 18 18:43 file6
-rw-r--r-- 1 root root 0 4월 18 18:43 file7
-rw-r--r-- 1 root root 0 4월 18 18:43 file8
[root@linux220 /test/dir3]# chmod 000 file1
[root@linux220 /test/dir3]# chmod 100 file2
[root@linux220 /test/dir3]# chmod 200 file3
[root@linux220 /test/dir3]# chmod 300 file4
[root@linux220 /test/dir3]# chmod 400 file5
[root@linux220 /test/dir3]# chmod 500 file6
[root@linux220 /test/dir3]# chmod 600 file7
[root@linux220 /test/dir3]# chmod 700 file8
[root@linux220 /test/dir3]# ll
합계 0
---------- 1 root root 0 4월 18 18:43 file1
---x------ 1 root root 0 4월 18 18:43 file2
--w------- 1 root root 0 4월 18 18:43 file3
--wx------ 1 root root 0 4월 18 18:43 file4
-r-------- 1 root root 0 4월 18 18:43 file5
-r-x------ 1 root root 0 4월 18 18:43 file6
-rw------- 1 root root 0 4월 18 18:43 file7
-rwx------ 1 root root 0 4월 18 18:43 file8
[root@linux220 /test/dir3]# find . -perm 600 -type f -ls //최소한 600 퍼미션인 파일들 검색
2387491 0 -rw------- 1 root root 0 4월 18 18:43 ./file7
[root@linux220 /test/dir3]# find . -perm -400 -type f -ls
2387492 0 -rwx------ 1 root root 0 4월 18 18:43 ./file8
2387491 0 -rw------- 1 root root 0 4월 18 18:43 ./file7
2387490 0 -r-x------ 1 root root 0 4월 18 18:43 ./file6
2387489 0 -r-------- 1 root root 0 4월 18 18:43 ./file5
[root@linux220 /test]# mkdir dir3
[root@linux220 /test]# cd dir3
[root@linux220 /test/dir3]# touch file{1,2,3,4,5,6,7,8}
[root@linux220 /test/dir3]# ll
합계 0
-rw-r--r-- 1 root root 0 4월 18 18:43 file1
-rw-r--r-- 1 root root 0 4월 18 18:43 file2
-rw-r--r-- 1 root root 0 4월 18 18:43 file3
-rw-r--r-- 1 root root 0 4월 18 18:43 file4
-rw-r--r-- 1 root root 0 4월 18 18:43 file5
-rw-r--r-- 1 root root 0 4월 18 18:43 file6
-rw-r--r-- 1 root root 0 4월 18 18:43 file7
-rw-r--r-- 1 root root 0 4월 18 18:43 file8
[root@linux220 /test/dir3]# chmod 000 file1
[root@linux220 /test/dir3]# chmod 100 file2
[root@linux220 /test/dir3]# chmod 200 file3
[root@linux220 /test/dir3]# chmod 300 file4
[root@linux220 /test/dir3]# chmod 400 file5
[root@linux220 /test/dir3]# chmod 500 file6
[root@linux220 /test/dir3]# chmod 600 file7
[root@linux220 /test/dir3]# chmod 700 file8
[root@linux220 /test/dir3]# ll
합계 0
---------- 1 root root 0 4월 18 18:43 file1
---x------ 1 root root 0 4월 18 18:43 file2
--w------- 1 root root 0 4월 18 18:43 file3
--wx------ 1 root root 0 4월 18 18:43 file4
-r-------- 1 root root 0 4월 18 18:43 file5
-r-x------ 1 root root 0 4월 18 18:43 file6
-rw------- 1 root root 0 4월 18 18:43 file7
-rwx------ 1 root root 0 4월 18 18:43 file8
[root@linux220 /test/dir3]# find . -perm 600 -type f -ls //최소한 600 퍼미션인 파일들 검색
2387491 0 -rw------- 1 root root 0 4월 18 18:43 ./file7
[root@linux220 /test/dir3]# find . -perm -400 -type f -ls
2387492 0 -rwx------ 1 root root 0 4월 18 18:43 ./file8
2387491 0 -rw------- 1 root root 0 4월 18 18:43 ./file7
2387490 0 -r-x------ 1 root root 0 4월 18 18:43 ./file6
2387489 0 -r-------- 1 root root 0 4월 18 18:43 ./file5
[root@linux220 /test/dir3]# cp /etc/passwd file10
[root@linux220 /test/dir3]# cp /etc/services file11
[root@linux220 /test/dir3]# ll
합계 364K
---------- 1 root root 0 4월 18 18:43 file1
-rw-r--r-- 1 root root 2.0K 4월 18 18:46 file10
-rw-r--r-- 1 root root 354K 4월 18 18:47 file11
---x------ 1 root root 0 4월 18 18:43 file2
--w------- 1 root root 0 4월 18 18:43 file3
--wx------ 1 root root 0 4월 18 18:43 file4
-r-------- 1 root root 0 4월 18 18:43 file5
-r-x------ 1 root root 0 4월 18 18:43 file6
-rw------- 1 root root 0 4월 18 18:43 file7
-rwx------ 1 root root 0 4월 18 18:43 file8
[root@linux220 /test/dir3]# unalias ls
[root@linux220 /test/dir3]# ll (# ls -l)
합계 364
---------- 1 root root 0 4월 18 18:43 file1
-rw-r--r-- 1 root root 1986 4월 18 18:46 file10
-rw-r--r-- 1 root root 362031 4월 18 18:47 file11
---x------ 1 root root 0 4월 18 18:43 file2
--w------- 1 root root 0 4월 18 18:43 file3
--wx------ 1 root root 0 4월 18 18:43 file4
-r-------- 1 root root 0 4월 18 18:43 file5
-r-x------ 1 root root 0 4월 18 18:43 file6
-rw------- 1 root root 0 4월 18 18:43 file7
-rwx------ 1 root root 0 4월 18 18:43 file8
[root@linux220 /test/dir3]# cp /etc/services file11
[root@linux220 /test/dir3]# ll
합계 364K
---------- 1 root root 0 4월 18 18:43 file1
-rw-r--r-- 1 root root 2.0K 4월 18 18:46 file10
-rw-r--r-- 1 root root 354K 4월 18 18:47 file11
---x------ 1 root root 0 4월 18 18:43 file2
--w------- 1 root root 0 4월 18 18:43 file3
--wx------ 1 root root 0 4월 18 18:43 file4
-r-------- 1 root root 0 4월 18 18:43 file5
-r-x------ 1 root root 0 4월 18 18:43 file6
-rw------- 1 root root 0 4월 18 18:43 file7
-rwx------ 1 root root 0 4월 18 18:43 file8
[root@linux220 /test/dir3]# unalias ls
[root@linux220 /test/dir3]# ll (# ls -l)
합계 364
---------- 1 root root 0 4월 18 18:43 file1
-rw-r--r-- 1 root root 1986 4월 18 18:46 file10
-rw-r--r-- 1 root root 362031 4월 18 18:47 file11
---x------ 1 root root 0 4월 18 18:43 file2
--w------- 1 root root 0 4월 18 18:43 file3
--wx------ 1 root root 0 4월 18 18:43 file4
-r-------- 1 root root 0 4월 18 18:43 file5
-r-x------ 1 root root 0 4월 18 18:43 file6
-rw------- 1 root root 0 4월 18 18:43 file7
-rwx------ 1 root root 0 4월 18 18:43 file8
[root@linux220 /test/dir3]# find . -size 1986c -type f //size=1986
./file10
[root@linux220 /test/dir3]# find . -size 362031c -type f //size=362031
./file11
[root@linux220 /test/dir3]# find . -size -1986c -type f //size<1986
./file3
./file8
./file2
./file7
./file4
./file1
./file6
./file5
[root@linux220 /test/dir3]# find . -size +1986c -type f //size>1986
./file11
./file10
[root@linux220 /test/dir3]# find . -size 362031c -type f //size=362031
./file11
[root@linux220 /test/dir3]# find . -size -1986c -type f //size<1986
./file3
./file8
./file2
./file7
./file4
./file1
./file6
./file5
[root@linux220 /test/dir3]# find . -size +1986c -type f //size>1986
./file11
[root@linux220 /test]# cd /test
[root@linux220 /test]# find . -name file1 -type f
./dir3/file1
./dir1/file1
./file1
./dir2/file1
[root@linux220 /test]# find . -name file1 -type f -ls
2387485 0 ---------- 1 root root 0 4월 18 18:43 ./dir3/file1
2387475 0 -rw-r--r-- 1 root root 0 4월 18 18:34 ./dir1/file1
2387477 0 -rw-r--r-- 1 root root 0 4월 18 18:34 ./file1
2387479 0 -rw-r--r-- 1 root root 0 4월 18 18:39 ./dir2/file1
[root@linux220 /test]# find . -name file1 -type f -exec chown user01 {} \;
[root@linux220 /test]# find . -name file1 -type f -ls
2387485 0 ---------- 1 user01 root 0 4월 18 18:43 ./dir3/file1
2387475 0 -rw-r--r-- 1 user01 root 0 4월 18 18:34 ./dir1/file1
2387477 0 -rw-r--r-- 1 user01 root 0 4월 18 18:34 ./file1
2387479 0 -rw-r--r-- 1 user01 root 0 4월 18 18:39 ./dir2/file1
[root@linux220 /test]# find . -name file1 -type f -exec chmod 640 {} \;
[root@linux220 /test]# find . -name file1 -type f -ls
2387485 0 -rw-r----- 1 user01 root 0 4월 18 18:43 ./dir3/file1
2387475 0 -rw-r----- 1 user01 root 0 4월 18 18:34 ./dir1/file1
2387477 0 -rw-r----- 1 user01 root 0 4월 18 18:34 ./file1
2387479 0 -rw-r----- 1 user01 root 0 4월 18 18:39 ./dir2/file1
[root@linux220 /test]# find . -name file1 -type f -exec rm -f {} \;
[root@linux220 /test]# find . -name file1 -type f
[root@linux220 /test]# find . -name file1 -type f
./dir3/file1
./dir1/file1
./file1
./dir2/file1
[root@linux220 /test]# find . -name file1 -type f -ls
2387485 0 ---------- 1 root root 0 4월 18 18:43 ./dir3/file1
2387475 0 -rw-r--r-- 1 root root 0 4월 18 18:34 ./dir1/file1
2387477 0 -rw-r--r-- 1 root root 0 4월 18 18:34 ./file1
2387479 0 -rw-r--r-- 1 root root 0 4월 18 18:39 ./dir2/file1
[root@linux220 /test]# find . -name file1 -type f -exec chown user01 {} \;
[root@linux220 /test]# find . -name file1 -type f -ls
2387485 0 ---------- 1 user01 root 0 4월 18 18:43 ./dir3/file1
2387475 0 -rw-r--r-- 1 user01 root 0 4월 18 18:34 ./dir1/file1
2387477 0 -rw-r--r-- 1 user01 root 0 4월 18 18:34 ./file1
2387479 0 -rw-r--r-- 1 user01 root 0 4월 18 18:39 ./dir2/file1
[root@linux220 /test]# find . -name file1 -type f -exec chmod 640 {} \;
[root@linux220 /test]# find . -name file1 -type f -ls
2387485 0 -rw-r----- 1 user01 root 0 4월 18 18:43 ./dir3/file1
2387475 0 -rw-r----- 1 user01 root 0 4월 18 18:34 ./dir1/file1
2387477 0 -rw-r----- 1 user01 root 0 4월 18 18:34 ./file1
2387479 0 -rw-r----- 1 user01 root 0 4월 18 18:39 ./dir2/file1
[root@linux220 /test]# find . -name file1 -type f -exec rm -f {} \;
[root@linux220 /test]# find . -name file1 -type f
(실무 예) 오래된 로그 기록 삭제
한달(시스템 생성일 ~ 30일)이 지난 로그파일은 그 의미를 상실하게 된다. 따라서 일정 시간이 지난 로그파일의 경
우 find라는 명령어를 이용하여 파일을 주기적으로 삭제해 주도록 한다.
한달(시스템 생성일 ~ 30일)이 지난 로그파일은 그 의미를 상실하게 된다. 따라서 일정 시간이 지난 로그파일의 경
우 find라는 명령어를 이용하여 파일을 주기적으로 삭제해 주도록 한다.
# find /Log_dir1 -name "*.log" -type f -mtime +30 -exec rm –f {} \;
# find /Log_dir2 -name "*.log" -type f -mtime +60 -exec rm –f {} \;
# find /Log_dir2 -name "*.log" -type f -mtime +60 -exec rm –f {} \;
(실무 예) 파일시스템이 갑자기 풀(Full) 나는 경우
# find /var -mtime -2 -size +1G -type f
# find /var -mtime -2 -size +512M -type f
# find /var -mtime -2 -size +256M -type f
# find /var -mtime -2 -size +128M -type f
/var/server/log/file.log
# find /var -mtime -2 -size +512M -type f
# find /var -mtime -2 -size +256M -type f
# find /var -mtime -2 -size +128M -type f
/var/server/log/file.log
[참고] lsof(list open file)
# lsof | grep /var/server/log/file.log
# lsof | grep /var/server/log/file.log
(실무 예) 에러메세지가 들어 있는 startup script 검색
# /was/bin/startup.sh
..... Server Error .....
# find /was –type f –exec grep –l 'Server Error' {} \;
/was/conf/server.xml
# vi /was/conf/server.xml
/Server Error
......
if 조건 ; then
else
echo "Server Error"
fi
..... Server Error .....
# find /was –type f –exec grep –l 'Server Error' {} \;
/was/conf/server.xml
# vi /was/conf/server.xml
/Server Error
......
if 조건 ; then
else
echo "Server Error"
fi
(실무 예) 부팅시에 에러메세지 제어
부팅 중간에 .... Server Error .....
# find /etc/rc?.d/* -type f –exec grep –l 'Server Error' {} \;
/etc/rc5.d/init.d/S90network
# vi /etc/rc5.d/init.d/S90netwok
/Server Error
/etc/rc5.d/init.d/S90network
# vi /etc/rc5.d/init.d/S90netwok
/Server Error
(실무 예) 에러 메세지를 검색하는 방법
http://www.google.co.kr
-> site:.redhat.com "Server Error"
-> 가상화 .pdf
-> 가상화 .ppt
-> "Server Error1" AND "Server Error2" (AND/OR)
-> "Server Error1"
[root@linux220 ~]# find . -type f -exec grep -l 'user01' {} \;
./.bash_history
./mbox
./user.list
./.bash_history
./mbox
./user.list
# find / -mtime -10 -a mtime +2 //3일전부터 9일전까지 -a:and -o:or
[root@linux220 ~]# find /etc -type f -exec grep -l "PASS*" {} \;
/etc/sudoers
/etc/profile.d/gnome-ssh-askpass.sh
/etc/profile.d/gnome-ssh-askpass.csh
/etc/squid/squid.conf.default
/etc/squid/squid.conf
/etc/Muttrc
/etc/services
/etc/sysconfig/hsqldb
/etc/sysconfig/authconfig
/etc/udev/rules.d/60-libsane.rules
/etc/vmware-tools/installer.sh
/etc/dbus-1/system.d/wpa_supplicant.conf
/etc/login.defs
/etc/rc.d/init.d/hsqldb
/etc/rc.d/init.d/functions
/etc/libuser.conf
/etc/termcap
/etc/gdm/XKeepsCrashing
/etc/sudoers
/etc/profile.d/gnome-ssh-askpass.sh
/etc/profile.d/gnome-ssh-askpass.csh
/etc/squid/squid.conf.default
/etc/squid/squid.conf
/etc/Muttrc
/etc/services
/etc/sysconfig/hsqldb
/etc/sysconfig/authconfig
/etc/udev/rules.d/60-libsane.rules
/etc/vmware-tools/installer.sh
/etc/dbus-1/system.d/wpa_supplicant.conf
/etc/login.defs
/etc/rc.d/init.d/hsqldb
/etc/rc.d/init.d/functions
/etc/libuser.conf
/etc/termcap
/etc/gdm/XKeepsCrashing
gzip / gunzip
[명령어의 형식]
(압축) # gzip file1 (file1.gz)
(확인) # gunzip -c file1.gz (# zcat file1.gz)
(해제) # gunzip file1.gz (# gzip -d file1.gz)
(압축) # gzip file1 (file1.gz)
(확인) # gunzip -c file1.gz (# zcat file1.gz)
(해제) # gunzip file1.gz (# gzip -d file1.gz)
[root@linux220 ~]# cd /test
[root@linux220 /test]# rm -rf /test/*
[root@linux220 /test]# cp /etc/services file1
[root@linux220 /test]# cp file1 file2
[root@linux220 /test]# cp file1 file3
[root@linux220 /test]# cp file1 file4
[root@linux220 /test]# ls
file1 file2 file3 file4
[root@linux220 /test]# gzip file1
[root@linux220 /test]# ls -l
합계 1184
-rw-r--r-- 1 root root 98859 4월 18 20:24 file1.gz
-rw-r--r-- 1 root root 362031 4월 18 20:24 file2
-rw-r--r-- 1 root root 362031 4월 18 20:24 file3
-rw-r--r-- 1 root root 362031 4월 18 20:25 file4
[root@linux220 /test]# rm -rf /test/*
[root@linux220 /test]# cp /etc/services file1
[root@linux220 /test]# cp file1 file2
[root@linux220 /test]# cp file1 file3
[root@linux220 /test]# cp file1 file4
[root@linux220 /test]# ls
file1 file2 file3 file4
[root@linux220 /test]# gzip file1
[root@linux220 /test]# ls -l
합계 1184
-rw-r--r-- 1 root root 98859 4월 18 20:24 file1.gz
-rw-r--r-- 1 root root 362031 4월 18 20:24 file2
-rw-r--r-- 1 root root 362031 4월 18 20:24 file3
-rw-r--r-- 1 root root 362031 4월 18 20:25 file4
[root@linux220 /test]# gzip -9v file2
file2: 72.6% -- replaced with file2.gz
[root@linux220 /test]# ll
합계 928
-rw-r--r-- 1 root root 98859 4월 18 20:24 file1.gz
-rw-r--r-- 1 root root 99285 4월 18 20:24 file2.gz
-rw-r--r-- 1 root root 362031 4월 18 20:24 file3
-rw-r--r-- 1 root root 362031 4월 18 20:25 file4
file2: 72.6% -- replaced with file2.gz
[root@linux220 /test]# ll
합계 928
-rw-r--r-- 1 root root 98859 4월 18 20:24 file1.gz
-rw-r--r-- 1 root root 99285 4월 18 20:24 file2.gz
-rw-r--r-- 1 root root 362031 4월 18 20:24 file3
-rw-r--r-- 1 root root 362031 4월 18 20:25 file4
[root@linux220 /test]# gzip -1v file3
file3: 69.4% -- replaced with file3.gz
[root@linux220 /test]# ll
합계 684
-rw-r--r-- 1 root root 98859 4월 18 20:24 file1.gz
-rw-r--r-- 1 root root 99285 4월 18 20:24 file2.gz
-rw-r--r-- 1 root root 110855 4월 18 20:24 file3.gz
-rw-r--r-- 1 root root 362031 4월 18 20:25 file4
file3: 69.4% -- replaced with file3.gz
[root@linux220 /test]# ll
합계 684
-rw-r--r-- 1 root root 98859 4월 18 20:24 file1.gz
-rw-r--r-- 1 root root 99285 4월 18 20:24 file2.gz
-rw-r--r-- 1 root root 110855 4월 18 20:24 file3.gz
-rw-r--r-- 1 root root 362031 4월 18 20:25 file4
[root@linux220 /test]# cp -r /var/lib dir
ls
[root@linux220 /test]# ls
dir file1.gz file2.gz file3.gz file4
[root@linux220 /test]# du -sh dir
44M dir
[root@linux220 /test]# gzip -r dir
gzip: dir/hsqldb/lib/servlet.jar is not a directory or a regular file - ignored
gzip: dir/hsqldb/lib/hsqldb.jar is not a directory or a regular file - ignored
[root@linux220 /test]# du -sh dir
16M dir
ls
[root@linux220 /test]# ls
dir file1.gz file2.gz file3.gz file4
[root@linux220 /test]# du -sh dir
44M dir
[root@linux220 /test]# gzip -r dir
gzip: dir/hsqldb/lib/servlet.jar is not a directory or a regular file - ignored
gzip: dir/hsqldb/lib/hsqldb.jar is not a directory or a regular file - ignored
[root@linux220 /test]# du -sh dir
16M dir
[root@linux220 /test]# gunzip -r dir
gunzip: dir/hsqldb/lib/servlet.jar is not a directory or a regular file - ignored
gunzip: dir/hsqldb/lib/hsqldb.jar is not a directory or a regular file - ignored
[root@linux220 /test]# du -sh dir
48M dir
gunzip: dir/hsqldb/lib/servlet.jar is not a directory or a regular file - ignored
gunzip: dir/hsqldb/lib/hsqldb.jar is not a directory or a regular file - ignored
[root@linux220 /test]# du -sh dir
48M dir
여러개의 파일을 하나로 압축할 수 있을까?
[root@linux220 /test]# cp /etc/services file1
[root@linux220 /test]# cp file1 file2
[root@linux220 /test]# cp file1 file3
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# gzip file*
[root@linux220 /test]# ls
file1.gz file2.gz file3.gz
[root@linux220 /test]# gunzip file*
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# cp file1 file2
[root@linux220 /test]# cp file1 file3
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# gzip file*
[root@linux220 /test]# ls
file1.gz file2.gz file3.gz
[root@linux220 /test]# gunzip file*
[root@linux220 /test]# ls
file1 file2 file3
tar - Tape ARchive
tar(tape archive) 명령어는 여러개의 파일이나 디렉토리를 한 개의 묶음파일로 만들 때 사용한다.
또는 Tape 디바이스에 백업할 때 사용한다. tar 명령어는 c, x, v, f 옵션들을 사용할 수 있다.
한 개의 아카이빙 할 때는 c 옵션을 사용하고 f 옵션으로 만들어질 파일의 이름을 지정하면 된다.
아카이빙 파일의 내용을 볼때는 t 옵션을 사용하고 f 옵션으로 아카이빙 파일을 지정한다.
아카이빙 파일을 해제 할 때는 x 옵션을 사용하고 f 옵션으로 아카이빙파일을 지정하면 된다.
또는 Tape 디바이스에 백업할 때 사용한다. tar 명령어는 c, x, v, f 옵션들을 사용할 수 있다.
한 개의 아카이빙 할 때는 c 옵션을 사용하고 f 옵션으로 만들어질 파일의 이름을 지정하면 된다.
아카이빙 파일의 내용을 볼때는 t 옵션을 사용하고 f 옵션으로 아카이빙 파일을 지정한다.
아카이빙 파일을 해제 할 때는 x 옵션을 사용하고 f 옵션으로 아카이빙파일을 지정하면 된다.
[명령어 형식] tar명령어 사용시 옵션에 -기호 생략가능
# tar cvf <묶음파일명> <파일명1> <파일명2> ... /* c: create, v: verbose, f: file or tape */
# tar tvf <묶음파일명> /* t: content */
# tar xvf <묶음파일명> /* x: extract */
# tar cvf <묶음파일명> <파일명1> <파일명2> ... /* c: create, v: verbose, f: file or tape */
# tar tvf <묶음파일명> /* t: content */
# tar xvf <묶음파일명> /* x: extract */
-c 여러 개의 파일을 하나의 파일로 묶을 때
-v 생성과정을 보여 줌
-x 파일의 압축을 해제하고 풀어 낼 때
-r 파일 및 디렉토리 추가
-u tar 파일과 새로운 디렉토리 내의 파일과 비교하여 최근 파일을 아카이브에 추가
-t tar 파일의 내용을 확인할 때
-z gzip과 관련하여 압축이나 해제를 한꺼번에 할 때
-j, -l bzip2를 이용해서 압축한다.
-v 생성과정을 보여 줌
-x 파일의 압축을 해제하고 풀어 낼 때
-r 파일 및 디렉토리 추가
-u tar 파일과 새로운 디렉토리 내의 파일과 비교하여 최근 파일을 아카이브에 추가
-t tar 파일의 내용을 확인할 때
-z gzip과 관련하여 압축이나 해제를 한꺼번에 할 때
-j, -l bzip2를 이용해서 압축한다.
# tar cvf file.tar file1 file2 file3
# tar tvf file.tar
# tar xvf file.tar
# tar tvf file.tar
# tar xvf file.tar
# tar cvzf file.tar.gz file1 file2 file3 (# tar cvzf file.tgz file1 file2 file3)
# tar tvzf file.tar.gz
# tar xvzf file.tar.gz (# tar xvf file.tar.gz)
# tar tvzf file.tar.gz
# tar xvzf file.tar.gz (# tar xvf file.tar.gz)
# tar cvjf file.tar.bz2 file1 file2 file3 (# tar cvjf file.tbz file1 file2 file3)
# tar tvjf file.tar.bz2
# tar xvjf file.tar.bz2 (# tar xvf file.tar.bz2)
# tar tvjf file.tar.bz2
# tar xvjf file.tar.bz2 (# tar xvf file.tar.bz2)
[root@linux220 /test]# ll
합계 1080
-rw-r--r-- 1 root root 362031 4월 18 20:34 file1
-rw-r--r-- 1 root root 362031 4월 18 20:34 file2
-rw-r--r-- 1 root root 362031 4월 18 20:34 file3
[root@linux220 /test]# tar cvf file.tar file1 file2 file3
file1
file2
file3
[root@linux220 /test]# ls -l file*
-rw-r--r-- 1 root root 1095680 4월 18 20:59 file.tar
-rw-r--r-- 1 root root 362031 4월 18 20:34 file1
-rw-r--r-- 1 root root 362031 4월 18 20:34 file2
-rw-r--r-- 1 root root 362031 4월 18 20:34 file3
[root@linux220 /test]# rm -f file1 file2 file3
[root@linux220 /test]# ls
file.tar
[root@linux220 /test]# tar tvf file.tar
-rw-r--r-- root/root 362031 2016-04-18 20:34:41 file1
-rw-r--r-- root/root 362031 2016-04-18 20:34:43 file2
-rw-r--r-- root/root 362031 2016-04-18 20:34:45 file3
[root@linux220 /test]# tar xvf file.tar
file1
file2
file3
[root@linux220 /test]# ls file*
file.tar file1 file2 file3
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# tar cvf file.tar file1 file2 file3
file1
file2
file3
[root@linux220 /test]# gzip file.tar
[root@linux220 /test]# ls
file.tar.gz file1 file2 file3
[root@linux220 /test]# gunzip file.tar.gz (# gzip -d file.tar.gz)
[root@linux220 /test]# ls
file.tar file1 file2 file3
file1 file2 file3
[root@linux220 /test]# tar cvf file.tar file1 file2 file3
file1
file2
file3
[root@linux220 /test]# gzip file.tar
[root@linux220 /test]# ls
file.tar.gz file1 file2 file3
[root@linux220 /test]# gunzip file.tar.gz (# gzip -d file.tar.gz)
[root@linux220 /test]# ls
file.tar file1 file2 file3
[root@linux220 /test]# rm -f file?
[root@linux220 /test]# ls
file.tar
[root@linux220 /test]# tar xvf file.tar
file1
file2
file3
[root@linux220 /test]# ls
file.tar file1 file2 file3
[root@linux220 /test]# ls
file.tar
[root@linux220 /test]# tar xvf file.tar
file1
file2
file3
[root@linux220 /test]# ls
file.tar file1 file2 file3
[root@linux220 /test]# rm -f file.tar
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# tar cvzf file.tar.gz file1 file2 file3
file1
file2
file3
[root@linux220 /test]# file file.tar.gz
file.tar.gz: gzip compressed data, from Unix, last modified: Mon Apr 18 21:07:36 2016
[root@linux220 /test]# rm -f file?
[root@linux220 /test]# ls
file.tar.gz
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# tar cvzf file.tar.gz file1 file2 file3
file1
file2
file3
[root@linux220 /test]# file file.tar.gz
file.tar.gz: gzip compressed data, from Unix, last modified: Mon Apr 18 21:07:36 2016
[root@linux220 /test]# rm -f file?
[root@linux220 /test]# ls
file.tar.gz
[root@linux220 /test]# tar xvzf file.tar.gz
file1
file2
file3
[root@linux220 /test]# rm -f file.tar.gz
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# tar cvjf filr.tar.bz2 file1 file2 file3
file1
file2
file3
[root@linux220 /test]# ls
file1 file2 file3 filr.tar.bz2
[root@linux220 /test]# file filr.tar.bz2
filr.tar.bz2: bzip2 compressed data, block size = 900k
[root@linux220 /test]# tar tvjf filr.tar.bz2
-rw-r--r-- root/root 362031 2016-04-18 20:34:41 file1
-rw-r--r-- root/root 362031 2016-04-18 20:34:43 file2
-rw-r--r-- root/root 362031 2016-04-18 20:34:45 file3
[root@linux220 /test]# rm -f file?
[root@linux220 /test]# ls
filr.tar.bz2
[root@linux220 /test]# tar xvjf filr.tar.bz2
file1
file2
file3
[root@linux220 /test]# ls
file1 file2 file3 filr.tar.bz2
[root@linux220 /test]# rm -f filr.tar.bz2
file1
file2
file3
[root@linux220 /test]# rm -f file.tar.gz
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# tar cvjf filr.tar.bz2 file1 file2 file3
file1
file2
file3
[root@linux220 /test]# ls
file1 file2 file3 filr.tar.bz2
[root@linux220 /test]# file filr.tar.bz2
filr.tar.bz2: bzip2 compressed data, block size = 900k
[root@linux220 /test]# tar tvjf filr.tar.bz2
-rw-r--r-- root/root 362031 2016-04-18 20:34:41 file1
-rw-r--r-- root/root 362031 2016-04-18 20:34:43 file2
-rw-r--r-- root/root 362031 2016-04-18 20:34:45 file3
[root@linux220 /test]# rm -f file?
[root@linux220 /test]# ls
filr.tar.bz2
[root@linux220 /test]# tar xvjf filr.tar.bz2
file1
file2
file3
[root@linux220 /test]# ls
file1 file2 file3 filr.tar.bz2
[root@linux220 /test]# rm -f filr.tar.bz2
[참고] jar CMD
[jar 명령어 형식] JDK/SDK 설치시 존재
# jar cvf file.jar file1 file2 file3
# jar tvf file.jar
# jar xcf file.jar
[jar 명령어 형식] JDK/SDK 설치시 존재
# jar cvf file.jar file1 file2 file3
# jar tvf file.jar
# jar xcf file.jar
tar는 아카이빙, jar는 아카이빙+컴프레스 동시에
[zip 명령어 형식] 윈도우와 호환 가능 (같은 알고리즘을 사용하기 때문)
# zip file.zip file1 file2 file3
# unzip -l file.zip
# unzip file.zip
[참고] 알집, 빵집, Winzip, ...
[root@linux220 /test]# ls
file1 file2 file3
[root@linux220 /test]# zip file.zip file1 file2 file3
adding: file1 (deflated 73%)
adding: file2 (deflated 73%)
adding: file3 (deflated 73%)
[root@linux220 /test]# ls -l
합계 1376
-rw-r--r-- 1 root root 296887 4월 18 21:16 file.zip
-rw-r--r-- 1 root root 362031 4월 18 20:34 file1
-rw-r--r-- 1 root root 362031 4월 18 20:34 file2
-rw-r--r-- 1 root root 362031 4월 18 20:34 file3
[root@linux220 /test]# unzip -l file.zip
Archive: file.zip
Length Date Time Name
-------- ---- ---- ----
362031 04-18-16 20:34 file1
362031 04-18-16 20:34 file2
362031 04-18-16 20:34 file3
-------- -------
1086093 3 files
[root@linux220 /test]# rm -rf file?
[root@linux220 /test]# unzip file.zip
Archive: file.zip
inflating: file1
inflating: file2
inflating: file3
[root@linux220 /test]# ls
file.zip file1 file2 file3
file1 file2 file3
[root@linux220 /test]# zip file.zip file1 file2 file3
adding: file1 (deflated 73%)
adding: file2 (deflated 73%)
adding: file3 (deflated 73%)
[root@linux220 /test]# ls -l
합계 1376
-rw-r--r-- 1 root root 296887 4월 18 21:16 file.zip
-rw-r--r-- 1 root root 362031 4월 18 20:34 file1
-rw-r--r-- 1 root root 362031 4월 18 20:34 file2
-rw-r--r-- 1 root root 362031 4월 18 20:34 file3
[root@linux220 /test]# unzip -l file.zip
Archive: file.zip
Length Date Time Name
-------- ---- ---- ----
362031 04-18-16 20:34 file1
362031 04-18-16 20:34 file2
362031 04-18-16 20:34 file3
-------- -------
1086093 3 files
[root@linux220 /test]# rm -rf file?
[root@linux220 /test]# unzip file.zip
Archive: file.zip
inflating: file1
inflating: file2
inflating: file3
[root@linux220 /test]# ls
file.zip file1 file2 file3
(실무 예) 인터넷상에 받은 파일 압축 해제 방법
file.gz ---- gzip -----> # gunzip file.gz (# gzip -d file.gz)
file.bz2 ---- bzip2 ----> # bunzip2 file.bz2 (# bzip2 -d file.bz2)
file.tar.gz ---- tar/gzip -> # tar xvzf file.tar.gz (# tar xvf file.tar.gz)
file.tgz
file.tar.bz2 ---- tar/bzip2-> # tar xvjf file.tar.bz2 (# tar xvf file.tar.bz2)
file.tbz
file.zip ---- zip ------> # unzip file.zip
file.jar ---- jar ------> # jar xvf file.jar
file.bz2 ---- bzip2 ----> # bunzip2 file.bz2 (# bzip2 -d file.bz2)
file.tar.gz ---- tar/gzip -> # tar xvzf file.tar.gz (# tar xvf file.tar.gz)
file.tgz
file.tar.bz2 ---- tar/bzip2-> # tar xvjf file.tar.bz2 (# tar xvf file.tar.bz2)
file.tbz
file.zip ---- zip ------> # unzip file.zip
file.jar ---- jar ------> # jar xvf file.jar
(실무 예) file.tar.gz
# tar xvzf file.tar.gz
# gzip –d file.tar.gz
# gzip –d file.tar.gz
13장 쉘의 특성
쉘은 명령어해석기다 내가 타이핑한 명령어를 해석해서 커널로 보내준다
리다이렉션(Redirection)
파이프(Pipe)
쉘 기능(Shell Function)
변수(Variable)
히스토리(History)
환경파일(Environment Files) 가장 중요!! .bashrc
파이프(Pipe)
쉘 기능(Shell Function)
변수(Variable)
히스토리(History)
환경파일(Environment Files) 가장 중요!! .bashrc
리다이렉션(방향 재지정)
fd (파일 기술자, File Descriptor)
파일 기술자(File Description)란?
프로세스가 파일을 열때 할당되는 번호
프로세스의 열린 파일을 구분할 때 사용하는 식별 번호
프로세스가 파일을 열때 할당되는 번호
프로세스의 열린 파일을 구분할 때 사용하는 식별 번호
[참고] C 언어
# vi test.c
------------------------
int fd;
fd=open(.....);
------------------------
# vi test.c
------------------------
int fd;
fd=open(.....);
------------------------
파일을 열면 버퍼공간에 임시파일을 만들어서 작업하게 된다
동시에 파일을 열어서 어떤유저는 내용을 추가, 수정, 삭제를 한다
운영체제가 여러명이 연 파일을 구분할 수 있어야 한다 그때 부여되는게 fd다
동시에 파일을 열어서 어떤유저는 내용을 추가, 수정, 삭제를 한다
운영체제가 여러명이 연 파일을 구분할 수 있어야 한다 그때 부여되는게 fd다
예약되어진 파일 기술자(File Descriptor)
0 stdin 스탠다드인풋 표준입력 기본값이면 키보드로 입력받는다
1 stdout 스탠다드아웃풋 표준출력 기본값이면 모니터로 출력된다
2 stderr 스탠다드에러 표준에러 기본값이면 모니터로 출력된다
0 stdin 스탠다드인풋 표준입력 기본값이면 키보드로 입력받는다
1 stdout 스탠다드아웃풋 표준출력 기본값이면 모니터로 출력된다
2 stderr 스탠다드에러 표준에러 기본값이면 모니터로 출력된다
[형식]
CMD < filename (표준입력)
CMD 0< filename (표준입력 - 파일 기술자 0번)
출력 재지정
CMD > filename //표준출력, 덮어쓰기 기능
CMD 1> filename //표준출력, 덮어쓰기 기능
CMD >> filename //표준출력, 이어쓰기 기능
CMD 1>> filename //표준출력, 이어쓰기 기능
CMD > filename //표준출력, 덮어쓰기 기능
CMD 1> filename //표준출력, 덮어쓰기 기능
CMD >> filename //표준출력, 이어쓰기 기능
CMD 1>> filename //표준출력, 이어쓰기 기능
[root@linux220 /test]# echo 1111
1111
[root@linux220 /test]# echo 1111 > filename1
[root@linux220 /test]# cat filename1
1111
[root@linux220 /test]# echo 2222 > filename1 //덮어쓰기
[root@linux220 /test]# cat filename1
2222
[root@linux220 /test]# echo 1111 >> filename1 //이어쓰기
[root@linux220 /test]# cat filename1
2222
1111
1111
[root@linux220 /test]# echo 1111 > filename1
[root@linux220 /test]# cat filename1
1111
[root@linux220 /test]# echo 2222 > filename1 //덮어쓰기
[root@linux220 /test]# cat filename1
2222
[root@linux220 /test]# echo 1111 >> filename1 //이어쓰기
[root@linux220 /test]# cat filename1
2222
1111
에러 재지정
CMD 2> filename //표준에러출력, 덮어쓰기, 2 생략불가!!
CMD 2>> filename //표준에러출력, 이어쓰기, 2 생략불가!!
CMD 2> filename //표준에러출력, 덮어쓰기, 2 생략불가!!
CMD 2>> filename //표준에러출력, 이어쓰기, 2 생략불가!!
[root@linux220 /test]# touch file1 file2 file3
[root@linux220 /test]# ls -l /test /nodir
ls: /nodir: 그런 파일이나 디렉토리가 없음 //에러출력
/test: //정상출력
합계 0
-rw-r--r-- 1 root root 0 4월 18 22:04 file1
-rw-r--r-- 1 root root 0 4월 18 22:04 file2
-rw-r--r-- 1 root root 0 4월 18 22:04 file3
[root@linux220 /test]# ls -l /test /nodir > dirfilename1 //1이 생략, 정상적인 출력결과만 dirfilename1에 입력
ls: /nodir: 그런 파일이나 디렉토리가 없음 //에러출력만 나옴
[root@linux220 /test]# cat dirfilename1
/test:
합계 0
-rw-r--r-- 1 root root 0 4월 18 22:05 dirfilename1
-rw-r--r-- 1 root root 0 4월 18 22:04 file1
-rw-r--r-- 1 root root 0 4월 18 22:04 file2
-rw-r--r-- 1 root root 0 4월 18 22:04 file3
[root@linux220 /test]# ls -l /test /nodir 2> dirfilename2 //2, 에러출력결과만 dirfilename2에 입력
/test:
합계 8
-rw-r--r-- 1 root root 207 4월 18 22:05 dirfilename1
-rw-r--r-- 1 root root 55 4월 18 22:07 dirfilename2
-rw-r--r-- 1 root root 0 4월 18 22:04 file1
-rw-r--r-- 1 root root 0 4월 18 22:04 file2
-rw-r--r-- 1 root root 0 4월 18 22:04 file3
[root@linux220 /test]# cat dirfilename2
ls: /nodir: 그런 파일이나 디렉토리가 없음
[root@linux220 /test]# ls /test /nodir > dirfilename1 2> dirfilename2
[root@linux220 /test]# cat dirfilename1
/test:
dirfilename1
dirfilename2
file1
file2
file3
[root@linux220 /test]# cat dirfilename2
ls: /nodir: 그런 파일이나 디렉토리가 없음
[root@linux220 /test]# cat dirfilename1
/test:
dirfilename1
dirfilename2
file1
file2
file3
[root@linux220 /test]# cat dirfilename2
ls: /nodir: 그런 파일이나 디렉토리가 없음
[root@linux220 /test]# ls /test /nodir > dirfilename 2>&1 //에러메시지를 1> 의 입력으로 다시 보낸다
[root@linux220 /test]# cat dirfilename
ls: /nodir: 그런 파일이나 디렉토리가 없음
/test:
dirfilename
dirfilename1
dirfilename2
file1
file2
file3
쉘 스크립트는 명령어의 집합형태
clear.sh
cd /test
rm -rf /test/*
cp -p /etc/passwd file1
cp file1 file2
cp file2 file3
rm -rf /test/*
cp -p /etc/passwd file1
cp file1 file2
cp file2 file3
(실무 예) script.sh(스크립트) 로그 파일 생성
(X) # ./script.sh > file.log
(0) # ./script.sh > file.log 2>&1
(X) # ./script.sh > file.log
(0) # ./script.sh > file.log 2>&1
(실무 예) ./configure —prefix=/usr/local/apache2
# ./configure --perfix=/usr/local/apache2 2> file.log
# ./configure --perfix=/usr/local/apache2 > file.log 2>&1
# ./configure --perfix=/usr/local/apache2 2> file.log
# ./configure --perfix=/usr/local/apache2 > file.log 2>&1
(실무 예) 일반 사용자(EX: oracle, wasuser)가 검색하는 경우
$ find / -name core –type f
$ find / -name core –type f 2>/dev/null //에러메시지를 /dev/null 로 보내라 에러메시지 보기싫으니까
$ find / -name core –type f
$ find / -name core –type f 2>/dev/null //에러메시지를 /dev/null 로 보내라 에러메시지 보기싫으니까
'모의해킹 침해대응 전문가 과정' 카테고리의 다른 글
20160420 리눅스 기초 (0) | 2016.04.21 |
---|---|
20160419 리눅스 기초 (0) | 2016.04.20 |
20160415 리눅스 기초 (0) | 2016.04.15 |
20160414 리눅스 기초 (0) | 2016.04.15 |
20160412 리눅스 기초 (0) | 2016.04.13 |