Linux

Linx 명령어

seungkyua@gmail.com 2014. 4. 5. 17:38
반응형

1. wait

   - 쉘에서 wait 커맨드를 실행한 곳에서 슬립상태로 대기하며 백그라운드에서 실행 중인 자식 프로세스가 완전히 종료되어 CHLD 시그널이 통지되기를 기다린다. 모든 자식 프로세스가 종료되면 wait 의 다음 처리를 진행한다.


2. redirect

# command >test.log 2>test.err &


> : 표준출력은 test.log, 에러는 test.err 에 저장한다.

& : 백그라운드 프로세스로 실행한다.


# command >test.log 2>&1 &


2>&1 : 에러출력을 표준출력에 출력한다.


# command >/dev/null 2>&1 &


/dev/null : 버린다.


# nohup command >/test.log 2>&1 &


nohup : bash 프로세스는 종료되면 자식 프로세스에 HUP 시그널을 전송한다. HUP 시그널은 프로세스 종료

            시그널이므로 bash 가 끝나면 백그라운드로 돌리는 자식 프로세스도 종료된다.

            nohup 은 bash 프로세스가 종료되더라도 HUP 시그널을 보내지 말라는 의미


3. Ctrl + Z

   - 일시 정지라는 의미로 vi 실행 중에 잘못하여 Ctrl + Z 를 하면 에디터 화면이 없어서지고 명령 프롬프트로 떨어짐

      이 때 fg 커맨드를 실행하면 다시 vi 에디터 화면으로 이동

   - 포그란운드 실행 커맨드에서 Ctrl + Z 로 일시 정지 후에 bg 를 실행하면 백그라운드 실행으로 바꿀 수 있음


4. 파이프라인 (|)

    - 프로세스 A | 프로세스 B  : 프로세스 A 의 표준출력을 받아서 프로세스 B 의 표준입력으로 처리한다.


5. tr, cut, grep

# ps -ef | head -5


출력 예)

UID        PID  PPID  C STIME TTY          TIME CMD

root         1        0   0  16:22   ?              00:00:02 /sbin/init

root         2        0   0  16:22   ?              00:00:00 [kthreadd]

root         3        2   0  16:22   ?              00:00:00 [ksoftirqd/0]

root         5        2   0  16:22   ?              00:00:00 [kworker/u:0]


head -5 : 처음 5줄만 출력


# ps -ef | head -5 | tr -s " " | cut -d " " -f 2 | grep -v "PID"


출력 예)

1

2

3

5


tr -s " " : 여러 공백이 있으면 하나의 공백으로 변환

cut -d " " -f 2 : -d 로 지정한 문자를 기준으로 구분(여기서는 공백) -f 로 지정한 위치필드(여기서는 2) 출력

grep -v "PID" : -v 뒤에 지정한 조건은 제외하고 출력


# ps -ef | grep -E -v "^(root|UID)"


grep -E : 확장 정규표현 식을 사용

^(root|UID) : 처음에 오는 문자가 root 이거나 UID

-v : 일치하는 조건은 제외


6. awk

# ps -ef | head -5 | awk '{print $2}' | grep -v "PID"


awk '{print $2}' : 연결 공백을 구분 문자로 2번째 위치필드를 출력


# cat /etc/passwd | awk -F ":" '{print $1}'


awk -F ":" '{print $1}' : -F 로 지정한 문자를 기준으로 구분(여기서는 :) 첫번째 필드를 출력


7. ps

# ps -e --no-headers -o pid | head -5


출력 예) : 프로세스 id 가 우측 정렬로 되어 있어 앞에 공백이 있음

    1

    2

    3

    5

    6


--no-headers : 헤더는 출력에서 제외

-o pid : pid 만 출력


8. sed

# ps -e --no-headers -o pid | head -5 | sed "s/^ *//"


출력 예)

1

2

3

5

6


s : 변환

/ : 시작

^ : 첫행

(스페이스)* : 정규표현으로 공백이 여러개(*)

/ : 끝

(Null)/ : null 로 치환


# ps -ef | grep -E -v "^(root|UID)" | sed "s/^/kill -9 /"


s/^/kill -9 : 처음문자 앞에 kill -9 를 삽입


9. $()

   - $() 안의 커맨드 출력 결과를 넣어라

# ps -ef | wc -l


출력 예)

196


# ps -ef | head -$(ps -ef |wc -l)


ps -ef | wc -l 의 결과 즉, 196 을 넣어서 ps -ef | head -196 과 같은 뜻이 됨


10. yes

# yes "kill" | head -5


출력 예)

kill

kill

kill

kill

kill


yes "kill" : kill 이라는 문자를 계속 출력


11. pgrep

# pgrep -v -u root


유저가 root 가 아닌 pid 를 출력


12. pkill

# pkill -9 -v -u root


유저가 root 가 아닌 모든 프로세스를 kill -9 로 죽인다.


13. tcp dump

# tcpdump -i any -vv 'tcp port 80' -w hostname.out

혹은

# tcpdump -i br100 -n -v udp port 53


14. tcp time_wait 세션 개수 보기

# netstat -an | grep -i wait | wc -l



반응형