프로 세 스 관리 Linux 명령

시작 프로 세 스
프로 세 스 를 시작 하 는 가장 쉬 운 방법 은 명령 행 에 이름 을 입력 하고 Enter 키 를 누 르 는 것 이다.Nginx 웹 서버 를 시작 하려 면 nginx 를 입력 하 십시오.그냥 버 전 보고 싶 으 셨 나 봐 요.
alan@workstation:~$ nginx -v
nginx version: nginx/1.14.0

2. 실행 가능 한 경 로 를 봅 니 다.
이상 시작 프로 세 스 의 프 리 젠 테 이 션 은 실행 가능 한 파일 이 실행 가능 한 경로 에 있다 고 가정 하 는 것 입 니 다.이 경 로 를 이해 하 는 것 이 프로 세 스 를 신뢰성 있 게 시작 하고 관리 하 는 관건 이다.관리 자 는 보통 그들 이 원 하 는 목적 을 위해 이 경 로 를 맞 출 것 이다.실행 가능 한 경 로 를 echo $PATH 로 볼 수 있 습 니 다.
alan@workstation:~$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

3. WHICH
실행 가능 한 파일 의 전체 경 로 를 which 명령 으로 봅 니 다.
alan@workstation:~$ which nginx
/opt/nginx/bin/nginx

4. 프로 세 스 실행 유지
NOHUP
터미널 을 로그아웃 하거나 닫 을 때 프로 세 스 가 계속 실행 되 지 않 을 수도 있 습 니 다.이 특수 한 상황 은 실행 할 명령 앞 에 nohup 명령 을 사용 하여 프로 세 스 를 계속 실행 시 킬 수 있 습 니 다.또한, 하나의 & 기 호 를 추가 하면 프로 세 스 를 배경 으로 보 내 고 터미널 을 계속 사용 할 수 있 습 니 다.예 를 들 어 my program. sh 를 실행 하고 싶다 고 가정 합 니 다.
nohup myprogram.sh &
nohup          PID。

5. 실행 중인 프로 세 스 관리
프로 세 스 마다 유일한 프로 세 스 표지 번호 (PID) 가 있 습 니 다.이 숫자 는 우리 가 모든 프로 세 스 를 관리 하 는 데 쓰 인 다.프로 세 스 이름 도 사용 할 수 있 습 니 다. 아래 에서 보 여 드 리 겠 습 니 다.실행 중인 프로 세 스 의 상 태 를 검사 할 수 있 는 명령 이 몇 개 있 습 니 다.이 명령 들 을 빨리 봅 시다.
1. PS 에서 가장 흔히 볼 수 있 는 것 은 ps 명령 입 니 다.ps 의 기본 출력 은 현재 터미널 에서 실행 중인 프로 세 스 의 간단 한 목록 입 니 다.아래 와 같이 첫 번 째 열 에는 PID 가 포함 되 어 있 습 니 다.
alan@workstation:~$ ps
PID TTY          TIME  CMD
23989 pts/0    00:00:00 bash
24148 pts/0    00:00:00 ps

나 는 내 가 이전에 시작 한 Nginx 프로 세 스 를 보고 싶다.이 를 위해, 나 는 ps 에 게 실행 중인 모든 프로 세 스 (- e) 와 완전한 목록 (- f) 을 보 여 주 었 다.
alan@workstation:~$ ps -ef
UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0Aug18?        00:00:10/sbin/init splash
root         2     0  0Aug18?        00:00:00[kthreadd]
root         4     2  0Aug18?        00:00:00[kworker/0:0H]
root         6     2  0Aug18?        00:00:00[mm_percpu_wq]
root         7     2  0Aug18?        00:00:00[ksoftirqd/0]
root         8     2  0Aug18?        00:00:20[rcu_sched]
root         9     2  0Aug18?        00:00:00[rcu_bh]
root        10     2  0Aug18?        00:00:00[migration/0]
root        11     2  0Aug18?        00:00:00[watchdog/0]
root        12     2  0Aug18?        00:00:00[cpuhp/0]
root        13     2  0Aug18?        00:00:00[cpuhp/1]
root        14     2  0Aug18?        00:00:00[watchdog/1]
root        15     2  0Aug18?        00:00:00[migration/1]
root        16     2  0Aug18?        00:00:00[ksoftirqd/1]
alan     2050620496  010:39 pts/0    00:00:00bash
alan     20520  1454  010:39?        00:00:00 nginx: master process nginx
alan     2052120520  010:39?        00:00:00 nginx: worker process
alan     2052620506  010:39 pts/0    00:00:00manps
alan     2053620526  010:39 pts/0    00:00:00 pager
alan     2056420496  010:40 pts/1    00:00:00bash

위의 ps 명령 의 출력 에서 Nginx 프로 세 스 를 볼 수 있 습 니 다.이 명령 은 거의 300 줄 을 보 여 주 었 으 나, 나 는 이 예 에서 그것 을 단축 시 켰 다.300 줄 과정 정 보 를 처리 하려 는 시도 가 혼 란 스 러 웠 다 고 상상 할 수 있다.이 출력 을 grep 로 보 낼 수 있 습 니 다. nginx 만 표시 하 는 것 을 걸 러 낼 수 있 습 니 다.
alan@workstation:~$ ps-ef |grep nginx
alan     20520  1454  010:39?        00:00:00 nginx: master process nginx
alan     2052120520  010:39?        00:00:00 nginx: worker process

확실히 더 좋아 졌 다.우 리 는 Nginx 에 20520 과 20521 의 PID 가 있다 는 것 을 곧 볼 수 있다.
2. PGREP pgrep 명령 은 단독으로 grep 를 호출 하 는 데 발생 하 는 문 제 를 더욱 간소화 합 니 다.
alan@workstation:~$ pgrep nginx
20520
20521

하나의 위탁 관리 환경 에서 여러 사용자 가 서로 다른 Nginx 인 스 턴 스 를 실행 하고 있다 고 가정 합 니 다.- u 옵션 을 사용 하여 다른 사람 을 출력 에서 제외 할 수 있 습 니 다.
alan@workstation:~$ pgrep -u alan nginx
20520
20521

3、PIDOF
또 하 나 는 pidof 입 니 다.이 명령 은 다른 이름 의 프로 세 스 가 실행 되 고 있 더 라 도 특정 바 이 너 리 파일 의 PID 를 검사 합 니 다.예 를 들 기 위해 서 저 는 Nginx 를 두 번 째 디 렉 터 리 로 복사 하고 해당 경로 접두사 로 시작 합 니 다.현실 생활 에서 이 인 스 턴 스 는 서로 다른 위치 에 있 을 수 있 습 니 다. 예 를 들 어 서로 다른 사용자 가 가지 고 있 는 디 렉 터 리 등 입 니 다.Nginx 인 스 턴 스 를 두 개 실행 하면 pidof 출력 은 모든 프로 세 스 를 표시 합 니 다.
alan@workstation:~$ ps-ef |grep nginx
alan     20881  1454  011:18?        00:00:00 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec
alan     2088220881  011:18?        00:00:00 nginx: worker process
alan     20895  1454  011:19?        00:00:00 nginx: master process nginx
alan     2089620895  011:19?        00:00:00 nginx: worker process

grep 나 pgrep 를 사용 하면 PID 숫자 를 표시 하지만 어떤 인 스 턴 스 가 어떤 인 스 턴 스 인지 알 수 없습니다.
alan@workstation:~$ pgrep nginx
20881
20882
20895
20896

pidof 명령 은 모든 특정한 Nginx 인 스 턴 스 의 PID 를 확인 하 는 데 사용 할 수 있 습 니 다.
alan@workstation:~$ pidof/home/alan/web/prod/nginxsec/sbin/nginx
2088220881
alan@workstation:~$ pidof/home/alan/web/prod/nginx/sbin/nginx
2089620895

4、TOP
top 명령 은 이미 오래된 역 사 를 가지 고 있 으 며, 실행 프로 세 스 의 세부 사항 을 보고 메모리 소 모 를 빠르게 식별 하 는 데 매우 유용 합 니 다.기본 보 기 는 다음 과 같 습 니 다.
top-11:56:28 up 1 day,13:37,  1 user,  load average:0.09,0.04,0.03
Tasks:292 total,   3 running,225 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.1 us,  0.2 sy,  0.0 ni,99.7id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiBMem:16387132 total,10854648 free,  1859036 used,  3673448 buff/cache
KiBSwap:        0 total,        0 free,        0 used.14176540 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
17270 alan      20   03930764247288  98992 R   0.7  1.5   5:58.22 gnome-shell
20496 alan      20   0  816144  45416  29844 S   0.5  0.3   0:22.16 gnome-terminal-
21110 alan      20   0   41940   3988   3188 R   0.1  0.0   0:00.17top
    1 root      20   0  225564   9416   6768 S   0.0  0.1   0:10.72systemd
    2 root      20   0       0      0      0 S   0.0  0.0   0:00.01 kthreadd
    4 root       0-20       0      0      0 I   0.0  0.0   0:00.00 kworker/0:0H
    6 root       0-20       0      0      0 I   0.0  0.0   0:00.00 mm_percpu_wq
    7 root      20   0       0      0      0 S   0.0  0.0   0:00.08 ksoftirqd/0

알파벳 s 와 원 하 는 업데이트 초 수 를 입력 하여 업데이트 간격 을 변경 할 수 있 습 니 다.예제 Nginx 프로 세 스 를 쉽게 감시 하기 위해 서 는 - p 옵션 을 사용 하고 PID 를 전달 하여 top 을 호출 할 수 있 습 니 다.이 출력 은 훨씬 깨끗 해 야 한다.
alan@workstation:~$ top -p20881 -p20882 -p20895 -p20896
Tasks:   4 total,   0 running,   4 sleeping,   0 stopped,   0 zombie
%Cpu(s):  2.8 us,  1.3 sy,  0.0 ni,95.9id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiBMem:16387132 total,10856008 free,  1857648 used,  3673476 buff/cache
KiBSwap:        0 total,        0 free,        0 used.14177928 avail Mem
  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
20881 alan      20   0   12016    348      0 S   0.0  0.0   0:00.00 nginx
20882 alan      20   0   12460   1644    932 S   0.0  0.0   0:00.00 nginx
20895 alan      20   0   12016    352      0 S   0.0  0.0   0:00.00 nginx
20896 alan      20   0   12460   1628    912 S   0.0  0.0   0:00.00 nginx

프로 세 스, 특히 프로 세 스 를 종료 할 때 PID 를 정확하게 확인 하 는 것 이 중요 합 니 다.또한, 이러한 방식 으로 top 을 사용 하면 프로 세 스 중 하나 가 멈 추거 나 새로운 프로 세 스 가 시 작 될 때마다 top 은 새로운 프로 세 스 가 있 음 을 알려 야 합 니 다.
6. 프로 세 스 종료
1、KILL
재 미 있 는 것 은 stop 명령 이 없다 는 것 이다.Linux 에 kill 명령 이 있 습 니 다.kill 은 프로 세 스에 신 호 를 보 내 는 데 사 용 됩 니 다.가장 많이 사용 되 는 신 호 는 '종료' (SIGTERM) 나 '죽 이기' (SIGKILL) 다.하지만 더 많다.다음은 몇 가지 예 이다.전체 목록 은 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

9 번 신 호 는 SIGKILL 입 니 다. 보통 kill - 9 20896 과 같은 명령 을 내 립 니 다.기본 신 호 는 15 입 니 다. SIGTERM 입 니 다.많은 응용 프로그램 들 이 자신의 정지 방법 을 가지 고 있다 는 것 을 기억 하 세 요.Nginx 는 stop 이나 reload 와 같은 - s 옵션 을 사용 하여 신 호 를 전달 합 니 다.일반적으로 나 는 응용 프로그램의 특정한 방법 으로 조작 을 멈 추 는 것 을 더 좋아한다.그러나, 나 는 kill 명령 으로 Nginx 프로 세 스 20896 을 멈 추고 pgrep 로 그것 이 멈 췄 는 지 확인 하 는 것 을 보 여 줄 것 이다.PID 20896 은 다시 나타 나 지 않 습 니 다.
alan@workstation:~$ kill -9 20896

alan@workstation:~$ pgrep nginx
20881
20882
20895
22123

2、PKILL
이름 으로 검색 할 수 있 기 때문에 pkill 명령 은 pgrep 와 유사 합 니 다.이것 은 pkill 을 사용 할 때 매우 조심해 야 한 다 는 것 을 의미한다.내 Nginx 예제 에서 만약 내 가 Nginx 인 스 턴 스 만 죽 이려 고 한다 면 나 는 그것 을 사용 하지 않 을 것 이다.나 는 Nginx 옵션 - s stop 을 특정한 인 스 턴 스 에 전달 하여 제거 할 수 있 거나, 나 는 grep 를 사용 하여 전체 ps 출력 을 걸 러 야 한다.
/home/alan/web/prod/nginx/sbin/nginx -s stop
/home/alan/web/prod/nginxsec/sbin/nginx -s stop

만약 내 가 pkill 을 사용 하고 싶다 면, 나 는 - f 옵션 을 포함 하여 pkill 이 전체 명령 행 인 자 를 걸 러 낼 수 있 습 니 다.이것 은 당연히 pgrep 에 도 적용 된다.그래서 pkill - f 를 실행 하기 전에 먼저 pgrep - a 로 확인 할 수 있 습 니 다.
alan@workstation:~$ pgrep -a nginx
20881 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec
20882 nginx: worker process
20895 nginx: master process nginx
20896 nginx: worker process

나 도 pgrep - f 로 내 결 과 를 줄 일 수 있다.pkill 은 같은 인 자 를 사용 하면 프로 세 스 를 중단 합 니 다.
alan@workstation:~$ pgrep-f nginxsec
20881
                                           
alan@workstation:~$ pkill-f nginxsec

pgrep (특히 pkill) 이 기억 해 야 할 관건 은 검색 결과 의 정확성 을 항상 확보 해 야 합 니 다. 그러면 본의 아니 게 잘못된 프로 세 스 에 영향 을 주지 않 습 니 다.

좋은 웹페이지 즐겨찾기