Linux Admin-프로세스 관리

다음은 프로세스 관리 (bg, fg, nohup, ps, pstree, top, kill, killall, free, uptime, nice)와 함께 사용되는 공통 명령입니다.

프로세스 작업

Quick Note: Process PID in Linux

Linux에서 실행중인 모든 프로세스에는 PID 또는 프로세스 ID 번호가 부여됩니다. 이 PID 는 CentOS가 특정 프로세스를 식별하는 방법입니다. 앞서 논의했듯이 systemd 는 CentOS에서 PID가 1 인 첫 번째 프로세스입니다.

Pgrep 주어진 프로세스 이름에 대한 Linux PID를 가져 오는 데 사용됩니다.

[root@CentOS]# pgrep systemd 
1 
[root@CentOS]#

보시다시피 pgrep 명령은 systemd의 현재 PID를 반환합니다.

CentOS의 기본 CentOS 프로세스 및 작업 관리

Linux에서 프로세스로 작업 할 때 명령 줄에서 기본 포 그라운드 및 백그라운드 프로세스가 수행되는 방식을 아는 것이 중요합니다.

  • fg − 프로세스를 전면으로 가져옴

  • bg − 프로세스를 백그라운드로 이동

  • jobs − 셸에 연결된 현재 프로세스 목록

  • ctrl+z − 현재 프로세스를 잠자기위한 Ctrl + z 키 조합

  • & − 백그라운드에서 프로세스 시작

쉘 명령 sleep 사용을 시작하겠습니다 .sleep이름대로 정의 된 시간 동안 sleep : sleep .

[root@CentOS ~]$ jobs

[root@CentOS ~]$ sleep 10 & 
[1] 12454 

[root@CentOS ~]$ sleep 20 & 
[2] 12479

[root@CentOS ~]$ jobs 
[1]-  Running                 sleep 10 & 
[2]+  Running                 sleep 20 &

[cnetos@CentOS ~]$

이제 첫 번째 작업을 전면으로 가져 오겠습니다.

[root@CentOS ~]$ fg 1 
sleep 10

따라 가면 포 그라운드 작업이 셸에서 멈춘 것을 알 수 있습니다. 이제 프로세스를 절전 모드로 전환 한 다음 백그라운드에서 다시 활성화하겠습니다.

  • Ctrl + z 누르기
  • 입력 : bg 1, 첫 번째 작업을 백그라운드로 보내고 시작합니다.
[root@CentOS ~]$ fg 1 
sleep 20 
^Z 
[1]+  Stopped                 sleep 20

[root@CentOS ~]$ bg 1 
[1]+ sleep 20 &

[root@CentOS ~]$

안돼

셸 또는 터미널에서 작업 할 때 기본적으로 셸이 닫히거나 사용자가 로그 아웃하면 셸에 연결된 모든 프로세스와 작업이 종료된다는 점에 유의할 필요가 있습니다. nohup을 사용할 때 사용자가 로그 아웃하거나 프로세스가 연결된 셸을 닫으면 프로세스가 계속 실행됩니다.

[root@CentOS]# nohup ping www.google.com & 
[1] 27299 
nohup: ignoring input and appending output to ‘nohup.out’

[root@CentOS]# pgrep ping 
27299

[root@CentOS]# kill -KILL `pgrep ping` 
[1]+  Killed                  nohup ping www.google.com

[root@CentOS rdc]# cat nohup.out  
PING www.google.com (216.58.193.68) 56(84) bytes of data. 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 1 ttl = 128
time = 51.6 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 2 ttl = 128
time = 54.2 ms 
64 bytes from sea15s07-in-f4.1e100.net (216.58.193.68): icmp_seq = 3 ttl = 128
time = 52.7 ms

ps 명령

그만큼 ps명령은 일반적으로 관리자가 특정 프로세스의 스냅 샷을 조사하는 데 사용됩니다. ps 는 일반적으로 분석 할 특정 프로세스를 필터링하기 위해 grep 과 함께 사용됩니다 .

[root@CentOS ~]$ ps axw | grep python 
762   ?        Ssl    0:01 /usr/bin/python -Es /usr/sbin/firewalld --nofork -nopid 
1296  ?        Ssl    0:00 /usr/bin/python -Es /usr/sbin/tuned -l -P 
15550 pts/0    S+     0:00 grep --color=auto python

위의 명령에서 파이썬 인터프리터를 사용하는 모든 프로세스를 볼 수 있습니다. 또한 결과에는 python 문자열을 찾는 grep 명령이 포함되었습니다 .

다음은 ps 와 함께 사용되는 가장 일반적인 명령 줄 스위치 입니다.

스위치 동작
현재 사용자에 대한보고 프로세스의 제약 조건 만 제외
엑스 tty 또는 셸에 연결되지 않은 프로세스를 표시합니다.
w 출력의 넓은 출력 표시 형식
이자형 명령 후 환경을 표시합니다.
-이자형 모든 프로세스를 선택합니다.
-영형 사용자 정의 형식 출력
-유 특정 사용자의 모든 프로세스를 표시합니다.
-씨 이름 또는 프로세스 ID로 모든 프로세스를 표시합니다.
--종류 정의에 따라 프로세스를 정렬합니다.

nobody 사용자 가 사용중인 모든 프로세스를 보려면 -

[root@CentOS ~]$ ps -u nobody 
PID TTY          TIME CMD 
1853 ?        00:00:00 dnsmasq 

[root@CentOS ~]$

firewalld 프로세스 에 대한 모든 정보를 보려면 -

[root@CentOS ~]$ ps -wl -C firewalld 
F   S   UID   PID   PPID   C   PRI   NI   ADDR   SZ   WCHAN   TTY   TIME      CMD
0   S     0   762      1   0    80   0     -   81786  poll_s   ?   00:00:01 firewalld 

[root@CentOS ~]$

어떤 프로세스가 가장 많은 메모리를 소비하는지 봅시다.

[root@CentOS ~]$ ps aux  --sort=-pmem | head -10 
USER       PID   %CPU   %MEM   VSZ     RSS   TTY   STAT   START   TIME   COMMAND 
cnetos     6130   0.7   5.7   1344512 108364  ?      Sl   02:16   0:29  /usr/bin/gnome-shell 
cnetos     6449   0.0   3.4   1375872 64440   ?      Sl   02:16   0:00  /usr/libexec/evolution-calendar-factory 
root       5404   0.6   2.1   190256  39920 tty1     Ssl+ 02:15   0:27  /usr/bin/Xorg :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iDefCt/database -seat seat0 -nolisten tcp vt1 
cnetos     6296   0.0   1.7   1081944 32136   ?      Sl   02:16   0:00  /usr/libexec/evolution/3.12/evolution-alarm-notify 
cnetos     6350   0.0   1.5   560728  29844   ?      Sl   02:16   0:01  /usr/bin/prlsga 
cnetos     6158   0.0   1.4   1026956 28004   ?      Sl   02:16   0:00  /usr/libexec/gnome-shell-calendar-server 
cnetos     6169   0.0   1.4   1120028 27576   ?      Sl   02:16   0:00  /usr/libexec/evolution-source-registry 
root       762    0.0   1.4   327144  26724   ?      Ssl  02:09   0:01  /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid 
cnetos     6026   0.0  1.4 1090832 26376      ?      Sl   02:16   0:00  /usr/libexec/gnome-settings-daemon

[root@CentOS ~]$

사용자 centos 및 형식별로 모든 프로세스를 확인하고 사용자 지정 출력을 표시합니다.

[cnetos@CentOS ~]$ ps -u cnetos -o pid,uname,comm 
   PID    USER     COMMAND 
   5802  centos   gnome-keyring-d 
   5812  cnetos   gnome-session 
   5819  cnetos   dbus-launch 
   5820  cnetos   dbus-daemon 
   5888  cnetos   gvfsd 
   5893  cnetos   gvfsd-fuse 
   5980  cnetos   ssh-agent   
   5996  cnetos   at-spi-bus-laun

pstree 명령

pstreeps 와 유사 하지만 자주 사용되지는 않습니다. 프로세스를 깔끔한 트리 방식으로 표시합니다.

[centos@CentOS ~]$ pstree 
  systemd─┬─ModemManager───2*[{ModemManager}] 
          ├─NetworkManager─┬─dhclient 
          │                └─2*[{NetworkManager}] 
          ├─2*[abrt-watch-log] 
          ├─abrtd 
          ├─accounts-daemon───2*[{accounts-daemon}] 
          ├─alsactl 
          ├─at-spi-bus-laun─┬─dbus-daemon───{dbus-daemon} 
          │                 └─3*[{at-spi-bus-laun}] 
          ├─at-spi2-registr───2*[{at-spi2-registr}] 
          ├─atd 
          ├─auditd─┬─audispd─┬─sedispatch 
          │        │         └─{audispd} 
          │        └─{auditd} 
          ├─avahi-daemon───avahi-daemon 
          ├─caribou───2*[{caribou}] 
          ├─cgrulesengd 
          ├─chronyd 
          ├─colord───2*[{colord}] 
          ├─crond 
          ├─cupsd

pstree 의 총 출력은 100 줄을 초과 할 수 있습니다. 일반적으로 ps 는 더 유용한 정보를 제공합니다.

top 명령

topLinux에서 성능 문제를 해결할 때 가장 자주 사용되는 명령 중 하나입니다. Linux에서 실시간 통계 및 프로세스 모니터링에 유용합니다. 다음은 명령 줄에서 가져올 때 top 의 기본 출력입니다 .

Tasks: 170 total,   1 running, 169 sleeping,   0 stopped,   0 zombie 
%Cpu(s):  2.3 us,  2.0 sy,  0.0 ni, 95.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st 
KiB Mem :  1879668 total,   177020 free,   607544 used,  1095104 buff/cache 
KiB Swap:  3145724 total,  3145428 free,      296 used.  1034648 avail Mem 
 
PID    USER     PR   NI    VIRT     RES   SHR    S  %CPU  %MEM   TIME+   COMMAND
5404   root     20   0    197832   48024  6744   S   1.3   2.6  1:13.22   Xorg
8013   centos   20   0    555316   23104  13140  S   1.0   1.2  0:14.89   gnome-terminal-
6339   centos   20   0    332336   6016   3248   S   0.3   0.3  0:23.71   prlcc
6351   centos   20   0    21044    1532   1292   S   0.3   0.1  0:02.66   prlshprof

top을 실행하는 동안 사용되는 일반적인 핫키 ( 셸에서 top이 실행 중일 때 키를 눌러 핫키 에 액세스)

명령 동작
상단 메뉴에서 굵은 강조 표시를 활성화 / 비활성화합니다.
색 구성표를 순환합니다.
부하 평균 제목을 순환합니다.
미디엄 메모리 평균 제목을 순환합니다.
작업 정보 제목
h 도움말 메뉴
Shift + F 정렬 및 표시 필드를 사용자 정의합니다.

다음은 top에 대한 일반적인 명령 줄 스위치입니다 .

명령 동작
-영형 열을 기준으로 정렬 (오름차순 또는 내림차순으로 정렬하려면 앞에-또는 +를 추가 할 수 있음)
-유 지정된 사용자의 프로세스 만 표시
-디 상단 의 지연 시간을 업데이트합니다.
-영형 정렬을 적용 할 수 있는 상단 의 열 목록을 반환합니다.

상단의 정렬 옵션 화면, Shift + F를 사용하여 표시됩니다 . 이 화면에서는 상단 표시 및 정렬 옵션을 사용자 지정할 수 있습니다.

Fields Management for window 1:Def, whose current sort field is %MEM 
Navigate with Up/Dn, Right selects for move then <Enter> or Left commits, 
 'd' or <Space> toggles display, 's' sets sort.  Use 'q' or <Esc> to end!
 
* PID     = Process Id             TGID    = Thread Group Id      
* USER    = Effective User Name    ENVIRON = Environment vars     
* PR      = Priority               vMj     = Major Faults delta   
* NI      = Nice Value             vMn     = Minor Faults delta   
* VIRT    = Virtual Image (KiB)    USED    = Res+Swap Size (KiB)  
* RES     = Resident Size (KiB)    nsIPC   = IPC namespace Inode  
* SHR     = Shared Memory (KiB)    nsMNT   = MNT namespace Inode
* S       = Process Status         nsNET   = NET namespace Inode  
* %CPU    = CPU Usage              nsPID   = PID namespace Inode  
* %MEM    = Memory Usage (RES)     nsUSER  = USER namespace Inode 
* TIME+   = CPU Time, hundredths   nsUTS   = UTS namespace Inode  
* COMMAND = Command Name/Line 
PPID    = Parent Process pid
UID     = Effective User Id

정상은 , 사용자의 프로세스를 보여주는 RDC를 메모리 사용으로 분류 -

PID   USER  %MEM  PR  NI    VIRT    RES    SHR    S %CPU     TIME+    COMMAND
 6130  rdc    6.2  20   0  1349592  117160  33232  S  0.0   1:09.34    gnome-shell
 6449  rdc    3.4  20   0  1375872   64428  21400  S  0.0   0:00.43    evolution-calen
 6296  rdc    1.7  20   0  1081944   32140  22596  S  0.0   0:00.40    evolution-alarm
 6350  rdc    1.6  20   0   560728   29844   4256  S  0.0   0:10.16    prlsga
 6281  rdc    1.5  20   0  1027176   28808  17680  S  0.0   0:00.78    nautilus
 6158  rdc    1.5  20   0  1026956   28004  19072  S  0.0   0:00.20    gnome-shell-cal

유효한 상위 필드 표시 (압축) −

[centos@CentOS ~]$ top -O 
PID 
PPID 
UID 
USER 
RUID 
RUSER 
SUID 
SUSER 
GID 
GROUP 
PGRP 
TTY 
TPGID

kill 명령

그만큼 kill명령은 PID를 통해 명령 쉘에서 프로세스를 종료하는 데 사용됩니다. 때 죽이는 과정을, 우리는 보낼 신호를 지정해야합니다. 신호는 커널이 프로세스를 종료하는 방법을 알려줍니다. 가장 일반적으로 사용되는 신호는 다음과 같습니다.

  • SIGTERM이는 커널이 프로세스가 안전하다고 판단되는 즉시 중지해야한다는 것을 프로세스에 알려주기 때문에 암시됩니다. SIGTERM 은 프로세스가 정상적으로 종료하고 안전한 종료 작업을 수행 할 수있는 기회를 제공합니다.

  • SIGHUP대부분의 데몬은 SIGHUP 전송시 다시 시작됩니다 . 구성 파일이 변경된 경우 프로세스에서 자주 사용됩니다.

  • SIGKILL이후 SIGTERM 종료 프로세스를 요청에 해당합니다. 커널에는 요청을 따르지 않는 프로세스를 종료하는 옵션이 필요합니다. 프로세스가 정지되면 SIGKILL 옵션을 사용하여 프로세스를 명시 적으로 종료합니다.

kill 과 함께 보낼 수있는 모든 신호 목록 위해 -l 옵션을 사용할 수 있습니다.

[root@CentOS]# 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

[root@CentOS rdc]#

SIGHUP 를 사용하여 시스템을 다시 시작합니다.

[root@CentOS]# pgrep systemd 
1 
464 
500 
643 
15071

[root@CentOS]# kill -HUP 1

[root@CentOS]# pgrep systemd
1 
464 
500 
643 
15196 
15197 
15198

[root@CentOS]#

pkill관리자가 보낼 수 프로세스 이름으로 신호를.

[root@CentOS]# pgrep ping 
19450 
[root@CentOS]# pkill -9 ping 
[root@CentOS]# pgrep ping 
[root@CentOS]#

killall모든 프로세스를 종료합니다. killall 을 루트로 사용하면 모든 사용자의 모든 프로세스가 종료 되므로 주의하십시오 .

[root@CentOS]# killall chrome

무료 명령

free시스템의 메모리를 빠르게 확인하는 데 자주 사용되는 매우 간단한 명령입니다. 사용 된 물리적 및 스왑 메모리의 총량을 표시합니다.

[root@CentOS]# free 
             total       used      free      shared      buff/cache      available 
Mem:        1879668     526284    699796     10304        653588          1141412 
Swap:       3145724          0    3145724

[root@CentOS]#

좋은 명령

nice관리자는 CPU 사용량 측면에서 프로세스의 예약 우선 순위를 설정할 수 있습니다. 장점은 기본적으로 커널이 프로세스 또는 작업에 대한 CPU 시간 조각을 예약하는 방법입니다. 기본적으로 프로세스에 CPU 리소스에 대한 동일한 액세스 권한이 부여 된 것으로 가정합니다.

먼저 top을 사용하여 현재 실행중인 프로세스의 상태를 확인합니다.

PID   USER   PR   NI    VIRT    RES    SHR   S  %CPU  %MEM     TIME+    COMMAND
28    root   39   19       0      0      0   S  0.0   0.0    0:00.17    khugepaged
690   root   39   19   16808   1396   1164   S  0.0   0.1    0:00.01    alsactl]
9598  rdc    39   19  980596  21904  10284   S  0.0   1.2    0:00.27    tracker-extract
9599  rdc    39   19  469876   9608   6980   S  0.0   0.5    0:00.04    tracker-miner-a
9609  rdc    39   19  636528  13172   8044   S  0.0   0.7    0:00.12    tracker-miner-f
9611  rdc    39   19  469620   8984   6496   S  0.0   0.5    0:00.02    tracker-miner-u
27    root   25    5       0      0      0   S  0.0   0.0    0:00.00    ksmd
637   rtkit  21    1  164648   1276   1068   S  0.0   0.1    0:00.11    rtkit-daemon
1     root   20    0  128096   6712   3964   S  0.3   0.4    0:03.57    systemd
2     root   20    0       0      0      0   S  0.0   0.0    0:00.01    kthreadd
3     root   20    0       0      0      0   S  0.0   0.0    0:00.50    ksoftirqd/0
7     root   20    0       0      0      0   S  0.0   0.0    0:00.00    migration/0
8     root   20    0       0      0      0   S  0.0   0.0    0:00.00    rcu_bh
9     root   20    0       0      0      0   S  0.0   0.0    0:02.07    rcu_sched

우리는 NI가 묘사 한 NICE 칼럼 에 초점을 맞추고 싶습니다 . niceness 범위는 -20에서 양수 19 사이입니다. -20은 주어진 가장 높은 우선 순위를 나타냅니다.

nohup nice --20 ping www.google.com &

Renice

renice를 사용하면 이미 실행중인 프로세스의 현재 우선 순위를 변경할 수 있습니다.

renice 17 -p 30727

위의 명령은 ping 프로세스 명령 의 우선 순위를 낮 춥니 다 .