- 특정포트 사용확인(PID조회)

$ netstat -lntp | grep [port]

$ netstat- nap | grep [port]


- PID 는 모르는데 특정포트를 사용중인 프로세스 죽이기(root 로 해야함)

$ fuser -k -n tcp [port]




'공부 > UNIX & LINUX' 카테고리의 다른 글

LINUX_[ Too may open files ]  (0) 2014.11.10
LINUX_[ 수동 시간설정(DATE) ]  (0) 2014.11.03
LINUX_[ Vi(m) 단축키 ]  (0) 2013.03.15
UNIX_[find 명령어 사용법]  (0) 2012.09.19

해당 제목(Too many open file)과 같은 에러가 나오고, 프로그램이 실행되지 않는다.

1. ulimit -a (시스템의 제한 설정값을 확인)


2. vi /etc/security/limits.conf (해당 파일은 열어서 수정)


3. 제일 하단에 추가


* hard nofile 10240

* sofr nofile 10240

파일 오픈 갯수 증가(아마 기본이 1024일 것이다.)


프로젝트 들어왔는데..

경찰청인지라, 외부와 네트워크가 안됨. 시간설정 동기화를 할수 없어서... 수동으로 한다.


1. 시간설정

date -s "2014-10-03 14:51:12"

2. 하드웨어 시간 동기화설정

hwclock --localtime --systohc

(이걸해줘야 리눅스 재부팅 후에도 시간이 그대로 인듯 싶다'- ', 첨에 자꾸 재부팅하면 초기화 되서 짜증)

'공부 > UNIX & LINUX' 카테고리의 다른 글

LINUX_[ 사용중인 PORT 프로세스 확인 및 죽이기 ]  (0) 2014.12.26
LINUX_[ Too may open files ]  (0) 2014.11.10
LINUX_[ Vi(m) 단축키 ]  (0) 2013.03.15
UNIX_[find 명령어 사용법]  (0) 2012.09.19

- vi(m) 복사와 붙여넣기

복사/붙여넣기

설 명

yw

 커서 위치부터 단어의 끝까지 복사

y2w

 커서 위치부터 두 단어 복사

y0

 커서 위치부터 줄의 처음까지 복사

y$

 커서 위치부터 줄의 끝까지 복사

yy

 커서가 있는 줄을 복사

2yy

 커서가 있는 줄 아래로 두 줄을 복사

yj

 커서가 있는 줄과 그 다음 줄을 복사

yk

 커서가 있는 줄과 그 앞줄을 복사

yG

 현재 위치에서 파일의 끝까지 복사

p

 커서의 다음 위치에 붙여넣기

P

 커서가 있는 위치에 붙여넣기

부연설명 : "vim" mode 에서 "v"를 누르고 블럭지정한 다음 "y" 를 누르면 블럭지정된 단어가 복사가 되고

               복사한 내용을 붙여넣기할 커서로 이동 후 "p"를 누르면 자동 붙여넣기


- vi(m) 기본 단축키

단축키 

설 명

a

 커서 위치의 다음 칸부터 문자 삽입(append)

A

 커서가 있는 줄의 끝에서부터 문자 삽입하기

 i

 커서 위치부터 문자 삽입하기

 I

 커서가 있는 줄의 맨 앞에서부터 문자 삽입하기

o

 커서 바로 아래에 줄을 만들고 문자 삽입하기(open Line)

O

 커서바로 위에 줄을 만들고 문자 삽입하기

x, dl

 커서 위치의 글자 삭제하기

x, dh

 커서 바로 앞의 글자 삭제하기

dw

 한 단어 삭제하기

d0

 커서 위치부터 행의 처음까지 삭제하기

D, d$

 커서 위치부터 행의 끝까지 삭제하기

dd

 커서가 있는 행 전체를 삭제하기

dj

 커서가 있는 행과 그 다음 행을 삭제하기

dk

 커서가 있는 행과 그 앞 행을 삭제하기


- vi(m) 블럭 지정시 사용하는 단축키

단축키

설 명

 ~

 대소문자 전환

 y

 복사

 >

 행 앞에 탭 삽입

 :

 선택 영역에 대해 Command mode

 U

 대소문자 변환

 d

 삭제

 c

 치환

 <

 행 앞에 탭 제거

 J

 행을 합침

 u

 소문자로 변환


- vi(m) 저장과 종료 명령

단축키

설 명

:w

저장한다

 :w test.txt

 test.txt 파일로 저장한다

 :w >> test.txt

 test.txt 파일에 덧붙여서 저장한다

 :q

 vi 편집기를 종료한다

 ZZ

 저장 후 종료한다

 :wq!

 저장 후 강제로 종료한다

 :e test.txt

 text.txt 파일을 불러온다

 :e

 현재 파일을 불러온다


- 이정도면 알아도 대박(!) 일듯...

find 명령어
find는 글자 그대로 사용자 원하는 파일을 찾아주는 역활을 한다.
단순히파일 이름만을 가지고 찾는 것은 물론, 파일 모드, 파일 타입, 크기, 마지막으로 접근한 시간등 여러가지 다양한 조건으로 파일을 찾아준다.
형식 : find <경로> <연산자>
경로 : find가 파일을 찾을 처음 위치를 지정한다. 예을 들어 '/'는 /(root)부터 찾고, '.'은 현재 디렉토리 부터 찾는다.

-name : 확장자가 txt 인 화일을 찾는다.
find / -name '*.txt'

-perm : 퍼미션이 666(-rw-rw-rw-)인 화일을 찾는다.
find . -perm 666

-type : 파일의 타입을 지정하여, 찾고자하는 파일을 찾는다.
타입의 종류는 다음과 같다.
b : 블록 특수 파일(block device)
c : 캐릭터 특수 파일 (character deice)
d : 디렉토리(directory)
f : 일반파일(file)
l : 심볼릭 링크(link)
p : 파이프 (pipe)
s : 소켓 (socket)

현재 디렉토리 아래에 있는 서브디렉토리를 모두 찾는다.
find . -type d

-atime ?n/n : 최근 n일 이전에 액세스된 파일을 찾아준다.(accessed time)
+n은 n일 또는 그보다 더 오래 전의 파일
-n은 오늘 부터 n일 전까지의 파일
n은 정확히 n일 전에 액세스되었음을 의미한다.

시스템 전체에서 한 달 또는 그 이상의 기간동안 한번도 액세스하지 않은 디렉토리
find / -atime +30 -type d

ctime ?n/n : ctime은 파일의 퍼미션을 마지막으로 변경시킨 날짜를 의미한다. (changed time)
+n은 n일 또는 그보다 더 오래 전의 파일
-n은 오늘 부터 n일 전까지의 파일
n은 정확히 n일 전에 수정되었음을 의미한다.

현재 디렉토리 아래에서 최근 일주일 동안 고친 파일
find . -ctime -7

-mtime ?n/n : mtime은 파일내의 data를 마지막으로 변경한 날짜를 의미한다.(modified time)
+n은 n일 또는 그보다 더 오래 전의 파일
-n은 오늘 부터 n일 전까지의 파일
n은 정확히 n일 전에 수정되었음을 의미한다.
-cnewer 파일명 : '파일명' 부분에 적어준 파일보다 더 최근에 수정된 파일들을 찾아준다.

test.txt 화일이 생성된 이후의 화일을 찾는다.
find . -cnewer test.txt -print

-user 유저네임 : '유저네임' 부분에 지정한 유저 소유의 파일을 찾아준다.

nalabi 라는 계정의 화일을 찾아준다.
find / -user nalabi

그외 자주 쓰이지 않지만 추가 옵션으로는 아래와 같다.

-maxdepth n
0이 아닌 정수값으로 경로 깊이를 지정하여 검색을 할 경우에 사용한다. 예를들어, '-maxdepth 1'은 시작위치로 지정한 디렉토리만 검색하고 하위 디렉토리는 찾지 않는다. -mindepth 옵션은 반대로 동작한다. 즉, 지정한 숫자만큼의 깊이부터 그 하위 디렉토리를 검색한다. (GNU find 버전)

-follow
심볼릭 링크된 디렉토리도 검색을 할 경우에 사용한다.

-mount
현재의 파일 시스템과 동일한 타입의 파일 시스템에서만 검색을 할 경우에 사용한다.
test에는 다음과 같은 방법들이 있으며, test에 사용하는 인수에는 보다 큰 수를 의미하는 `'나, 보다 작은 수를 의미하는 `'를 함께 사용할 수 있다. 인수에 아무 연산자가 없을 경우에는 정확히 그 인수 값을 의미한다.

-group
특정 그룹 소유의 파일들을 찾을 경우에 사용한다.

-nouser
소유자가 없는 파일을 찾을 경우에 사용한다. 즉, /etc/passwd 파일에 없는 소유자의 파일을 찾을 경우에 사용한다.

-nogroup
올바른 그룹의 소유가 아닌 파일을 찾을 경우에 사용한다. 즉, /etc/groups 파일에 없는 그룹의 소유인 파일을 찾을 경우에 사용한다.

newer file1 file2
`file1' 보다는 이후에 `file2' 보다는 이전에 생성되거나 변형된 파일들을 찾을 경우에 사용한다.

-size n[bckw]
크기가 n 유닛(unit)인 파일을 찾을 경우에 사용한다. 유닛은 기본 설정(`b''와 함께 사용한 경우와 동일)인 512 바이트의 블럭, `c'를 사용할 경우에는 1 바이트, `k'를 사용할 경우에는 킬로바이트, `w'를 사용할 경우에는 2 바이트의 워드 크기를 나타낸다.

-empty
비어있는 파일이나 디렉토리를 찾을 경우에 사용한다. (GNU find 버전)

-regex
정규표현식(regular expression)을 이용하여 파일들을 찾을 경우에 사용한다. `-iregex'는 대소문자를 구별하지 않을 경우에 사용한다. (GNU find 버전)
action은 test에서의 조건과 일치하는 파일들에 대해 수행할 작업을 명시하는 것으로 다음과 같은 방법들이 있다.

-print
찾은 파일들을 표준출력(stdout)으로 출력한다. 기본으로 설정되어 있다.

-fprint file
찾은 파일들을 `file'로 출력한다. `file'이 존재 하지 않을 경우에는 새로 생성되고, 존재할 경우에는 기존의 파일은 없어진다. (GNU find 버전)

-exec
파일을 찾았을 경우, 찾은 파일들에 대해 특정 명령을 수행 할 때 사용한다. 일반적으로 `-exec command {} ;'의 형식을 취한다.

-ok
-exec와 동일한 작업을 한다. 다른 점은, 명령을 실행할 때마다 실행 의사를 물어본다.

-ls
`ls -dils' 형식으로 찾은 파일들의 정보를 출력할때 사용한다.

-fls file
`ls'와 동일하게 동작하며 결과를 `file'로 출력한다.
operator는 test에서 사용한 옵션들을 조합하여 조건식을 만들고자 할때 사용는 것으로 다음과 같은 방법들이 있다. (설명 순서는 우선순위(precedence)에 따른다.)

[예제]
자신의 홈 디렉토리에서 확장자가 '.txt'인 파일을 찾을 경우
$ find -name "*.txt'' -print

현재 디렉토리 밑에서 첫글자가 영어 대문자인 모든 파일을 찾을 경우
$ find . -name "[A-Z]*'' -print

'/usr/local'에서 첫 두글자는 영어 소문자이고 세번째 한자리는 숫자로 시작하는 이름을 가진 파일을 찾을 경우
$ find /usr/local -name "[a-z][a-z][0-9]*'' -print

확장자가 .txt 인 파일을 찾으면서 현재 디렉토리와 한 단계 밑의 디렉토리에서만 파일을 찾을 경우
$ find -maxdepth 2 -name "*.txt'' -print

현재 디렉토리 밑에서 `zzang'이라는 이름을 가진 사용자 소유의 파일을 찾을 경우
$ find . -user zzang -print

시스템에서 소유자나 그룹이 없는 파일을 찾을 경우 (크래커가 만들어 놓은 파일일 경우도 있음)
$ find / -nouser -o -nogroup -print

자신의 홈 디렉토리에서 최근 3일 동안 변경된 파일들을 찾을 경우
$ find . -mtime -3 -print

'/tmp'에서 최근 5일 동안 변경되지 않은 파일들을 찾아서 삭제할 경우 (파일을 삭제할 때마다 삭제할 것인가를 물어보도록)
$ find . -mtime +5 -print -ok rm {} ;

현재 디렉토리 밑에 있는 모든 포스트 스크립트 파일(.ps)을 찾아서 gzip으로 압축을 하고 그 목록을 result.txt라는 파일에 저정할 경우
$ find . -name "*.ps" -fprint result.txt -exec gzip {} ;

크랙커의 침입이 의심스러워 자신의 시스템에서 suid와 guid가 설정된 일반 파일들을 찾아서 권한을 확인할 경우
$ find / -type f -perm +6000 -print -ls

시스템 관리의 실수로 일반 사용자가 쓰기 권한을 갖도록 설정되어 있는 파일을 찾아서 실행 권한을 없애는 경우 (단, 링크 파일은 제외함)
$ find / -perm +2 ! -type l -print -exec chmod o-w {} ;

이밖에 예들..

옵션들을 차례로 기술하여 파일을 찾을 경우 AND 연산이 적용된다.
하지만 -o 옵션을 이용하여 OR 을 적용할수도 있고 ( ) 를 이용하여 그룹을 지어 적용할수도 있다. 이밖에 NOT 연산도 가능한데 옵션 앞에 !부호를 달아 주면 된다. 밑의 몇가지 예를 살펴 보자.

# find ./ -atime 60 -mtime 120
( AND 논리연산으로 접근한지 60일 지난 파일중 수정한지 120 일 지난 파일 )

# find ./ \( -user design -o -group design \)
(OR 논리연산으로 소유자나 그룹이 design 인경우 )

# find ./ \( ! -user design -o ! -group design \)
(NOT 논리연산으로 소유자나 그룹이 design 이 아닌 경우 )

-perm 옵션은 숫자형태의 특정 접근 모드를 이용하여 파일을 검색하는 옵션이다.
옵션별 사용예를 들어 보자.
-perm 75 : permission = 755
-perm -002 : 모든 사람들이 기록할수 있는 파일
-perm -4000 : SUID 액세스 설정
-perm -2000 : SGID 액세스 설정

-print 옵션은 근래는 기본으로 들어간다. 굳이 붙일 필요는 없고, -exec, -ok옵션 사용시에는 반드시 마지막에 \; 으로 구문을 마감해야 한다.

예를 들어서 find 로 검색한 파일을 지우기 위해서는 다음과 같이 한다.
# find ./ -name *.* -exec rm -f {} \;

파일 크기가10M 이상이며 한달 이상동안 수정되지 않은 파일을 찾는다.
# find / -type f -size 20480 -mtime 30 -ls
# find / -type f -size 20480 -mtime 30 -exec rm -f {} \;
(대응되는 파일삭제)

보안에 관련된 팁이다. 모든 setuid, setgid 를 검색한다.
# find / -type f \( -perm -4000 -o -perm -2000 \)
# find / -type f \( -perm -4000 -o -perm -2000 \) | diff - setuidlist
(찾아된 setuid,setgid를 기존에 작성한 목록과 비교하여 새로 추가 된것이 있는지를 확인한다.)

침입을 당한 시스템에 있는 setuid 와 setgid 파일을 모두 찾아 본다(특히, setuid root 파일). 일반적으로 나중에 재침입을 위해 침입자들은 이러한 setuid 설정이 된 /bin/sh 이나 /bin/time 등과 같은 복사본을 만들어 놓는 경우가 많다.
이러한 파일은 찾아서 삭제해야만 한다. 유닉스의 find(1) 프로그램을 시용하여 이러한 setuid 나 setgid 파일을 찾아낼 수가 있다.
예를 들면, 아래 명령을 이용하여 setuid root 파일과 setgid kmem 파일을 전체 파일 시스팀에서 찾을 수 있다.
# find / -user root -perm -4000 -print find / -group kmem -perm -2000 -print

주의할 점은 위 명령은 NFS/AFS로 마운트된 파일 시스템까지 몽땅 찾으므로 이러한 파일 시스템을 찾는 대상에서 제외하고자 하는 경우, “-xdev” 옵션을 사용한다(단, 이 옵션은 지원하지 않는 find 도 있음).
# find / -user root -perm -4000 -print -xdev

필요한 명령어 두개 섞어서 써도 가능함!!

내가 필요했던 명령문

# find ./ -name "*.txt" -mtime +7 -exec gzip {};

(일주일 지난 .txt 로 끝나는 파일을 찾아서 gzip로 압축한다)

+ Recent posts