2022. 11. 20. 17:51ㆍ리눅스(Linux)
$ jobs
- 백그라운드로 실행중인 프로세스나 현재 중지된 프로세스 목록을 출력해줌
# jobs -l
- 사용예제(-l 옵션은 PID 와 같이 출력)
$ fg
- fg는 Background Process 를 foreground Process로 전환하는 명령어
- Background Process 가 여러 개 존재할 경우 별도의 작업번호를 부여하지 않으면
현재 수행중인(+기호가 붙은) 작업을 전환
# fg %작업번호
- 사용예제
$ bg
- Foreground Process를 Background Process로 전환하는 명령
- 보통 실행시키고 있는 Foreground Process 에서 CTRL + Z 키를 눌러 작업을 잠시
중지시킨 후에 bg 명령어를 사용하여 작업을 백그라운드로 전환 함
# find / -name „*.txt‟ 2> /dev/null >list.txt
CRTL + Z
# bg
# find / -name „*.txt‟ 2> /dev/null >list.txt &
[1] 35432
#
- 사용예제
$ ps
- 현재 동작하고 있는 프로세스들의 상황(스냅샷)을 보여줌
- 실시간으로 프로세스의 동작 상황을 확인하고 싶을 때는 top 명령어를 사용
- Process 정보의 기본적인 내용은 proc 파일 시스템에 있는 stat 의 내용에서 가져온다
# ps -au
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 10842 0.0 0.2 1668 464 tty2 Ss+ 06:53 0:00 /sbin/mingetty tty2
root 10843 0.0 0.1 1668 440 tty3 Ss+ 06:53 0:00 /sbin/mingetty tty3
root 10867 0.0 0.1 1668 440 tty4 Ss+ 06:53 0:00 /sbin/mingetty tty4
root 10868 0.0 0.1 1668 436 tty5 Ss+ 06:53 0:00 /sbin/mingetty tty5
root 10870 0.0 0.1 1668 440 tty6 Ss+ 06:53 0:00 /sbin/mingetty tty6
root 25362 0.0 0.6 5908 1536 tty1 Ss+ 13:44 0:00 -bash
root 26551 1.4 0.6 5668 1456 pts/1 Ss 14:20 0:00 -bash
root 26584 0.0 0.3 5288 888 pts/1 R+ 4:20 0:00 ps au
- 현재 실행 중인 전체 사용자 정보와 프로세스 시작 시간 등 출력
# ps -eo pid,state,nice,args | more
PID S NI COMMAND
1 S 0 init [5]
2 S - [migration/0]
3 S 19 [ksoftirqd/0]
4 S - [watchdog/0]
5 S - [migration/1]
6 S 19 [ksoftirqd/1]
7 S - [watchdog/1]
8 S -5 [events/0]
9 S -5 [events/1]
10 S -5 [khelper]
11 S -5 [kthread]
- 사용자가 정의한 형식(o)으로 모든 프로세스(e)를 보여줌
$ pstree
- 현재 프로세스의 상황을 트리 형식으로 보여줌
# pstree -np
init(1)-+-migration/0(2)
|-ksoftirqd/0(3)
|-watchdog/0(4)
|-events/1(9)
|-khelper(10)
|-kthread(11)-+-xenwatch(13)
| |-xenbus(14)
| |-kblockd/0(17)
|-udevd(585)
|-auditd(9072)-+-{auditd}(9073)
| `-audispd(9074)---{audispd}(9075)
|-syslogd(9097)
|-irqbalance(9112)
|-portmap(9134)
|-rpc.statd(9163)
|-rpc.idmapd(9200)
|-vmware-guestd(9591)
- PID 순으로 정렬하며, 프로세스명과 PID 출력
$ kill
- 프로세스나 프로세스 그룹에게 지정된 시그널을 보내줌
# kill PID
- PID 1234 프로세스에게 SIGTERM(기본값) 신호를 보냄
# kill -9 PID1 PID2 PID3 PID4
- 다수의 프로세스 강제종료(SIGKILL 옵션을 주어도 동일)
# kill -HUP 1234
- 프로세스를 정보를 다시 읽어들임
# kill %작업번호
- 작업번호 단위로 종료
$ killall
- kill 명령은 다수의 경우 각각의 PID 값을 알아내고 모두 입력해야 하나 데몬에
의해 동작되는 모든 프로세스에게 한번에 같은 시그널을 보낼 경우에 사용됨
- 프로세스명 또는 데몬명으로 프로세스 종료시킴
# killall %작업번호
- 작업번호와 관련된 모든 프로세스 에게 SIGTERM 보냄
# killall -s SIGHUP sshd
- ssh 데몬에 대한 환경설정 리로드
$ skill
- 주로 시스템에 접속해 있는 사용자 혹은 특정 터미널을 종료 시키는데 사용됨
- 불필요한 접속자 혹은 공격자 등을 차단할 경우
# skill -KILL testuser1
- testuser1 이라는 사용자를 시스템에서 추방
# skill -KILL pts/0
- 특정 터미널인 pts/0 에 접속해 있는 사용자만 추방
# skill -STOP testuser1
- 특정 사용자를 정지 시킴
$ top
- 현재 시스템의 프로세스 상태를 연속적으로 화면에 출력
- 시스템의 상태를 전반적으로 가장 빠르게 파악 가능
- 옵션 없이 입력 시 interval간격(기본 3초)으로 화면을 갱신하며 정보를 보여줌
- syntax : top [option]
옵션 | 내용 |
-d | 화면 갱신 시간을 설정 |
-q | 화면을 게속 갱신 |
-l | idle상태화 zombie 프로세스를 무시 |
- top 목록
PID | 프로세스 ID |
USER | 소유자 |
PR | 우선순위 |
NI | Nice Value ( -20~19 사이의 값으로 작을수록 우선순위 ↑) |
VIRT | 프로세스가 사용하고 있는 virtual memory의 전체용량 |
RES | 현재 프로세스가 사용하고 있는 물리적 메모리의 양 |
SHR | 다른 프로세스와 공유하고 있는 shared memory의 양 |
S | 현재 프로세스의 상태 |
%CPU | CPU 사용 시간 퍼센트 |
%MEM | 메모리 사용 퍼센트 |
TIME | 프로세스가 시작해 사용한 총 CPU 시간 |
COMMAND | 프로세스를 실행한 명령어 라인 |
$ top 실행 중의 명령어 옵션
- SPACE : 화면을 갱신
- ? : 도움말 출력
- W : 바꾼 설정을 저장
- P : CPU 사용률 내림차순 정렬
- M : 메모리 사용률 내림차순 정렬
- N : 프로세스 ID 기준으로 정렬
- T : 프로세스가 돌아가고 있는 시간 순 정렬
- R : 오름차순과 내림차순을 토글 변경
- H : 스레드 기준으로 정렬
- k : kill. k 입력 후 PID 번호 작성. signal은 9
- f : sort field 선택 화면 -> q 누르면 RES순으로 정렬
- a : 메모리 사용량에 따라 정렬
- b : Batch 모드로 작동
- 1 : CPU Core별로 사용량 보여줌
- 프로세스의 우선순위를 변경하는 명령어. NI값 설정 가능
- NI값은 –20 ~ 19까지, 값이 작을수록 우선순위 높음
- 일반사용자는 증가만 가능, 기본값은 0
- syntax : nice -[값] [프로세스명]
$ renice
- 실행중인 프로세스의 우선순위를 변경할 때 사용하는 명령어
- 소유자와 root만 명령 가능
- syntax : renice [option] 값 PID
옵션 | 내용 |
-g | 그룹 ID 지정 |
-u | 사용자 ID 지정 |
-p | 프로세스 ID 지정 ( 초기값 ) |
$ nohup
- 사용자가 로그아웃하거나 터미널 창을 닫아도 해당 프로세스를 백그라운드로 작업될 수 있도록 해주는 명령
- 백그라운드와 다르게 프로그램을 데몬의 형태로 실행시키기 때문에 로그아웃으로 세션이 종료되어도 프로그램은 종료되지 않음
- syntax : nohup [명령]
- nohup [명령어] & : 해당 프로그램이 백그라운드로 실행
$ lsof
- List Open Files의 약자로 시스템에서 열린 파일 목록을 알려주고 사용하는 프로세스, 디바 이스 정보, 파일의 종류 등 상세한 정보를 출력한다
- 리눅스와 유닉스는 추상화된 파일 시스템(VFS - Virtual File System)을 사용하므로 일반 파일, 디렉터리, 네트워크 소켓, 라이브러리, 심볼릭 링크 등도 모두 파일로 처리되며 lsof 에 서 상세한 정보를 확인할 수 있다
- 시스템에서 동작하고 있는 모든 프로세스에 의해 열려진 파일들에 대한 정보를 보여주는 시스템 관리 명령어이다. (일반유저의 접근을 허용하지 않도록 permission을 700이나 100 으로 변경하는 것이 보안상 좋다)
- lsof는 리눅스,AIX,Solaris,FreeBSD,MAC OS X 등 종류에 상관없이 일관된 옵션과 출력 형식을 갖는 장점이 있다.
- syntax : lsof [option] [file]
*열린 파일(Open Files) : 디스크, 네트워크 소켓, 파이프, 장치 및 프로세스
옵션 | 내용 |
-a | 파일을 선택하는데 AND 연산으로 대상을 출력 |
-c | 지정한 command 필드만 출력 |
-F | 지정한 구분자로 필드를 구분하여 출력 |
-g | 지정한 그룹 아이디를 사용하는 관련 프로세스 출력 |
-i | 현재 사용되는 소켓 정보를 출력 |
-l | 로그인 사용자명 대신에 UID를 출력 |
-n | 호스트명 대신 IP주소를 출력 |
-p | 포트 서비스명 대신 포트 번호 출력 |
-r | 지정한 초의 주기로 반복해서 출력 ( 디폴트 값은 15초 ) |
-s | 파일의 크기를 출력 |
-V | 보다 상세한 정보를 출력 |
COMMAND : 실행한 명령어
- ‘systemd’ 명령어를 실행하여 파일을 열었음을 알 수 있음
PID : process id
- 실행된 Process에게 부여된 ID를 알 수 있음
- *’systemd’의 경우 항상 1번 Process ID를 부여받음
USER : 실행한 사용자
- root’에서 실행했음을 알 수 있음
FD : File Descriptor, (파일 서술자 / 파일 기술자), 프로세스가 특정 파일에 접근할 때 사용하는 추상적인 값
- cwd : current working directory
- rtd : root directory
- mem : memory-mapped file
- txt : program text (code and data)
TYPE : 파일 종류
- DIR : 디렉터리
- CHR : character special file
- REG : regular file
- unix : 유닉스 도메인 소켓
* MySQL 등이 사용하는 소켓으로 로컬 프로세스에서만 사용 가능하며 TCP/UDP 보다 속도가 매우 빠름
DEVICE : 장치 번호
SIZE/OFF: 파일의 크기나 오프셋
NODE : 노드 번호
NAME : 파일명
옵션 | 내용 |
-a | 모든 소켓 표시 |
-t | TCP socket만 표시 |
-u | UDP socket만 표시 |
-n | 호스트, 포트 번호 등의 이름 확인을 하지 않고 숫자로 표시 |
-p | 소켓을 사용하고 있는 프로세스의 ID 표시 |
-r | 라우팅 테이블 표시 |
-l | 연결 대기 상태인 소켓만 표시 |
$ IOTOP
- 리눅스 디스크 I/O 사용 세부 정보를 모니터링하고 시스템의 프로세스 또는 스레드별로 기존 I/O 사용률 테이블을 출력하는 쉬운 방법을 제공하는 top명령과 유사한 명령어
옵션 | 내용 |
-h | 도움말 |
-o | I/o가 발생중인 프로세스만 출력 |
-b | 배치모드 |
-n num | 반복횟수 지정 |
-p pid | 특정 프로세스에 대한 정보 출력 |
-d sec | 업데이트 주기 설정 ( 기본 : 1초 ) |
-u user | 특정 유저 모니터링 |
-a | 실행한 시점부터 누적되는 read와 write량 측정 |
-p | 스레드는 제외하고 프로세스만 출력 |
TID : 스레드 ID
prio : I/O 우선 순위 클래스/레벨
user : TID
disk read : 초당 디스크 읽기
disk write : 초당 디스크 쓰기
swapin : 스와핑하는 동안 스레드가 소비한 시간의 백분율
IO> : 스레드가 I/O를 기다리는 데 소비한 시간의 백분율
command : 스레드가 실행 중인 명령
$ lostat
- 시스템 입력 및 출력 저장 장치 통계를 수집하고 표시하는 간단한 도구
- 장치, 로컬디스크, NFS와 같은 원격 디스크를 포함한 저장 장치 성능 문제를 추적
- syntax : iostat [옵션] [출력시간] [횟수]
옵션 | 내용 |
-c | cpu 사용량 정보 |
-d | disk 사용량 정보 |
-k | 블락 단위에서 킬로바이트로 |
-m | 블락 단위에서 메가바이트로 |
-p | 파티션 당 통계 포함 |
-t | 타임 스탭프 출력 |
-x | 확장 정보 |
-z | 활동 0인 것 제외 |
%user : CPU가 사용자 모드에서 사용된 시간의 비율의 출력값 입니다.
%nice : 작업 우선순위 정책에 의하여 우선순위가 바뀐 프로세서가 사용한 시간의 비율을 출력하값 입니다.
%system: CPU가 시스템 모드에서 사용된 시간의 비율을 출력한 값 입니다.
%iowait : 디스크의 입출력을 대기하는데 사용된 시간의 비율을 출력한 값입니다.
* %idle과 다르며 iowait가 높은경우 메모리 부족이나 비효율적인 I/O부시스템이 구성되어 있음을 의미
%steal : Steal CPU의 사용시간을 비율로 출력한 값 입니다.
%idle : 디스크의 입출력을 대기하지 않은 유휴상태의 시간을 출력한 값입니다.
%idle과는 다르며 ioswait가 높은경우 메모리 부족이나 비효율적인 I/O부 시스템이 구성되어 있음을 의미
tps : 디스크 장치에서 초단 처리한 입출력의 잡업 개수 입니다.
kB-read/s : 디스크 장치에서 초당 읽어들인 데이터 블록 단위입니다.
kB_wrtn/s : 디스크 장치에서 초당 쓴 데이터 블록 단위 입니다.
kB_wrtn : 디스크 장치에서 쓴 데이터 블록 단위
'리눅스(Linux)' 카테고리의 다른 글
Disk management - File System, Partition (파일 시스템, 파티션) (0) | 2022.11.21 |
---|---|
[Centos 7] process management tools (프로세스 관리 도구) - htop, monit, Nmon (0) | 2022.11.21 |
[Centos 7] Investigating and Managing Processes (프로세스 조사) (0) | 2022.11.20 |
[Centos 7] Ownership / Permissions (소유자/권한) (0) | 2022.11.20 |
[Centos 7] User Account Management(사용자 계정 관리) (0) | 2022.11.20 |