Linx 명령어
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