티스토리 뷰
container로 실습하기
jobs, fg, bg
jobs는 실행중인 job목록을 보는 명령입니다.
'fg %<job번호>'로 특정 job을 foreground로 실행할 수 있고, 'bg %<job번호>'로 특정 job을 background로 실행할 수 있습니다.
forground job으로 실행한 후 CTRL-z를 누르면 pause이고, CTRL-c를 누르면 terminate입니다.
실습을 위해 아래 내용으로 shell을 작성하십시오.
sh-4.2# cd ~/tmp
sh-4.2# vi control
#! /bin/bash
while true;
do echo -n "$@ " >> ./control_outfile
sleep 1
done
sh-4.2# chmod +x control
그리고, 아래와 같은 순서로 테스트를 하면서 이해해 보십시오.
명령 실행 후 조금 이따가 ctrl-z를 눌러 job을 중지합니다.
sh-4.2# ./control job1
^Z
[1]+ Stopped(SIGTSTP) ./control job1
sh-4.2# ./control job2
^Z
[2]+ Stopped(SIGTSTP) ./control job2
결과 파일을 보면 2개 job의 결과가 기록된걸 볼 수 있습니다.
sh-4.2# cat control_outfile
job1 job1 job1 job1 job2 job2 job2 sh-4.2#
jobs명령어로 job목록을 봅니다.
sh-4.2# jobs
[1]- Stopped(SIGTSTP) ./control job1
[2]+ Stopped(SIGTSTP) ./control job2
sh-4.2#
job1은 background로 실행합니다.
sh-4.2# bg %1
[1] ./control job1 &
job2는 foreground로 실행합니다. 조금 후 ctrl-z로 다시 중지합니다.
sh-4.2# fg %2
./control job2
^Z
[2]+ Stopped(SIGTSTP) ./control job2
결과파일을 보면 내용이 추가된걸 볼 수 있습니다.
sh-4.2# cat control_outfile
job1 job1 job1 job1 job2 job2 job2 job1 job1 job1 job1 job1 job1 job2 job1 job2 job1 job2 job1 job1 job1 job1 job1 job1 job1 job1 sh-4.2#
ps명령어로 실행중인 control process를 찾습니다.
sh-4.2# ps -ef | grep control
root 433 19 0 01:27 pts/1 00:00:00 /bin/bash ./control job1
root 438 19 0 01:27 pts/1 00:00:00 /bin/bash ./control job2
root 474 19 0 01:28 pts/1 00:00:00 grep control
kill명령어로 process를 없앱니다.
sh-4.2# kill -9 433 438
jobs명령으로 보면 killed로 나왔다가 조금 이따 다시 쳐 보면 아예 job리스트가 안 나옵니다.
sh-4.2# jobs
[1]- Killed ./control job1
[2]+ Killed ./control job2
sh-4.2# jobs
kill
kill명령어가 보낼 수 있는 signal 리스트입니다.
[root@bastion system]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
아래와 같이 실행중인 프로세스를 중지하고 재시작할 수 있습니다.
sh-4.2# ./control job1&
[1] 891
sh-4.2# ps -ef | grep control
root 891 19 0 01:49 pts/1 00:00:00 /bin/bash ./control job1
root 902 19 0 01:49 pts/1 00:00:00 grep control
sh-4.2# jobs
[1]+ Running ./control job1 &
sh-4.2# kill -19 891 또는 kill -STOP 891
sh-4.2# jobs
[1]+ Stopped(SIGSTOP) ./control job1
sh-4.2# kill -18 891 또는 kill -CONT 891
sh-4.2# jobs
[1]+ Running ./control job1 &
sh-4.2# kill -9 891
sh-4.2# jobs
[1]+ Killed ./control job1
TIP: kill -9로 종료하지 말고 kill -2 또는 -INT 와 kill -15 또는 -TERM으로 안전하게 종료하세요.
-9(SIGKILL)에 대해서는 어플리케이션에서 종료handler를 수행시킬 수 없습니다.(linux/unix의 OS적 특성)
-2와 -15로 프로세스를 종료시키면 어플리케이션의 종료handler가 동작하기 때문에 보다 안전하게 프로세스를 종료시킬 수 있습니다.
[root@bastion tmp]# kill -INT 29662 29665 29671
[root@bastion tmp]# jobs
[1] Running ./control job1 &
[2]- Running ./control job2 &
[3]+ Running ./control job3 &
[root@bastion tmp]# kill -TERM 29662 29665 29671
[root@bastion tmp]# jobs
[1] Terminated ./control job1
[2]- Terminated ./control job2
[3]+ Terminated ./control job3
[root@bastion tmp]# jobs
[root@bastion tmp]#
pkill
pkill은 명령어 이름이나 부모PID로 한꺼번에 프로세스를 죽이는 명령입니다.
sh-4.2# ps -ef | grep control
root 863 19 0 01:45 pts/1 00:00:00 /bin/bash ./control job1
root 867 19 0 01:45 pts/1 00:00:00 /bin/bash ./control job2
root 869 19 0 01:45 pts/1 00:00:00 /bin/bash ./control job3
root 889 19 0 01:46 pts/1 00:00:00 grep control
sh-4.2# pkill -9 control
[1] Killed ./control job1
[2]- Killed ./control job2
[3]+ Killed ./control job3
uptime
uptime은 cpu의 평균 사용량을 제공합니다.
아래 load average의 3개 값은 앞에서부터 1분, 5분, 15분간의 CPU사용평균입니다. 비율로는 16%, 33%, 20%가 됩니다.
[root@bastion ~]# uptime
23:27:18 up 23:27, 2 users, load average: 0.16, 0.33, 0.20
그런데 CPU가 1개가 아닌 여러개일것이므로 CPU사용율을 계산하려면 CPU갯수를 알아야 합니다.
lscpu라는 명령을 이용하면 cpu에 대한 제반 정보가 나옵니다.
[root@bastion ~]# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2683 v4 @ 2.10GHz
Stepping: 1
CPU MHz: 2099.892
BogoMIPS: 4200.09
Hypervisor vendor: Xen
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 40960K
NUMA node0 CPU(s): 0-3
cpu갯수가 4개이므로 CPU사용률은 아래와 같이 계산됩니다.
1분평균: 16% / 4 = 4%
5분평균: 33% / 4 = 8% (about)
15분평균: 20% / 4 = 5%
다른 Terminal에 메시지 보내기
w명령으로 이 머신에 접속한 terminal 리스트를 볼 수 있습니다.
특정 terminal에 'echo "메시지" > /dev/<TTY>' 와 같이 메시지를 보낼수 있습니다.
[root@bastion tmp]# w
01:20:40 up 1 day, 1:20, 4 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 211.250.162.208 23:17 0.00s 0.27s 0.00s w
root pts/1 211.250.162.208 23:20 3:44 0.10s 0.10s -bash
root pts/2 211.250.162.208 01:12 6:56 0.09s 0.08s vim /etc/dnsmasq.conf
root pts/3 211.250.162.208 00:34 2:32 0.04s 0.04s -bash
[root@bastion tmp]# echo "hello, please close All terminal immediatly." > /dev/pts/1
'Infrastructure > OS' 카테고리의 다른 글
Red Hat System Administration I: ssh 사용하기 (0) | 2020.06.04 |
---|---|
Red Hat System Administration I: Service와 Daemon 관리 (0) | 2020.06.04 |
Red Hat System Administration I: 파일 권한 제어 (0) | 2020.06.03 |
Red Hat System Administration I: 사용자/그룹 관리 (1) | 2020.06.03 |
Red Hat System Administration I: 환경변수 이용하기 (0) | 2020.06.02 |
- Total
- Today
- Yesterday
- 분초사회
- spotify
- agile
- 요즘남편 없던아빠
- 육각형인간
- 호모프롬프트
- 돌봄경제
- 리퀴드폴리탄
- 마이크로서비스 패턴
- 디토소비
- CQRS
- AXON
- SAGA
- 애자일
- 도파밍
- Event Sourcing
- 스핀프로젝트
- micro service
- API Composition
- 마이크로서비스
- 스포티파이
- 버라이어티가격
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |