Process 관리
프로세스
리눅스 시스템은 한마디로 Multi User Multi Tasking System 임
즉 여러 사람이 동시에 시스템에 접속하여 동시에 여러 가지 일들을 처리할 수 있는 시스템이며,
여기서 여러 가지 일, 작업, Task 등이 바로 Process(task) dla
PID : process id --> 프로세스 식별을 위한 운영체제 차원에서 부여한 고유번호
ps 명령어 사용법
R : run 실행중
S : sleep 잠시 잠들어 있는 상태(20초 이내)
I : idle 유휴상태(20초 이상)
Z : 좀비 process
D : Disk 입출력 대기 상태
명령어 | 설명 |
#ps | 현재 실행중인 프로세스 정보 간단히 보여줌 |
#ps -ef | 현재 실행 중인 프로세스를 보여주는 명령어 중 하나로, 전체 프로세스 정보를 출력 |
#ps aux | 현재 실행 중인 모든 프로세스의 상세한 정보를 출력 |
#ps -ef | grep http | 현재 실행 중인 모든 프로세스 중에서 http 라는 이름이 포함된 프로세스 정보만 출력 |
#kill -l | signal 정보 보기 |
#kill -9 100 | PID가 '100'인 프로세스를 강제로 종료 (-9 : 강제종료 옵션) |
#kill -1 200 | PID가 '100'인 프로세스를 |
#top | |
#pstree | process tree |
#pstree -pn | 프로세스 정렬 |
#jobs | 백그라운드 job 보기 |
kill
[root@ysy /down/sqlite-autoconf-3410200]# kill -l --> signal 정보 보기
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
ㄴ SI 로 시작함 -> SI : signal 을 뜻함
ps
--> process status 프로세스 상태
[root@ysy ~]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 09:34 ? 00:00:01 /usr/lib/systemd/systemd --system --des
root 2 0 0 09:34 ? 00:00:00 [kthreadd]
root 3 2 0 09:34 ? 00:00:00 [rcu_gp]
root 4 2 0 09:34 ? 00:00:00 [rcu_par_gp]
root 5 2 0 09:34 ? 00:00:00 [netns]
root 7 2 0 09:34 ? 00:00:00 [kworker/0:0H-events_highpri]
root 9 2 0 09:34 ? 00:00:00
생략 ...
kill -9
[root@ysy ~]# ll -i
total 4
25695825 -rw-------. 1 root root 1353 Apr 26 17:01 anaconda-ks.cfg
1416367 drwxr-xr-x. 2 root root 33 Apr 26 18:23 d3
[root@ysy ~]# ps -ef | grep bash
root 882 776 0 09:40 tty1 00:00:00 -bash
root 1015 1014 0 09:55 pts/1 00:00:00 -bash
root 23428 1015 0 12:23 pts/1 00:00:00 -bash
i-node
[root@ysy ~]# kill -9 882 --> 882 번 process kill
i-node : 운영체제가 파일을 관리하기 위해 부여하는 번호
kill -9 882 --> 882 번 process kill
top
--> 윈도우 작업관리자 느낌
[root@ysy ~]# top
top - 12:26:16 up 2:51, 2 users, load average: 0.01, 0.07, 0.08
Tasks: 132 total, 1 running, 131 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.3 id, 0.0 wa, 0.2 hi, 0.2 si, 0.0 st
MiB Mem : 1962.9 total, 700.8 free, 445.1 used, 1006.2 buff/cache
MiB Swap: 2048.0 total, 2048.0 free, 0.0 used. 1517.8 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
21195 root 20 0 0 0 0 I 0.3 0.0 0:02.88 kworker/0:1-events
23429 root 20 0 8040 3912 3192 R 0.3 0.2 0:00.01 top
1 root 20 0 172972 17336 10680 S 0.0 0.9 0:01.61 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_gp
4 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 rcu_par_gp
5 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 netns
7 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 kworker/0:0H-event+
9 root 0 -20 0 0 0 I 0.0 0.0 0:00.27 kworker/0:1H-event+
10 root 0 -20 0 0 0 I 0.0 0.0 0:00.00 mm_percpu_wq
12 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_kthre
13 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_rude_
14 root 20 0 0 0 0 I 0.0 0.0 0:00.00 rcu_tasks_trace
15 root 20 0 0 0 0 S 0.0 0.0 0:00.06 ksoftirqd/0
16 root 20 0 0 0 0 I 0.0 0.0 0:00.48 rcu_preempt
17 root rt 0 0 0 0 S 0.0 0.0 0:00.00 migration/0
19 root 20 0 0 0 0 S 0.0 0.0 0:00.00 cpuhp/0
--> q로 나가면 됨
http 서버가 문제라면
[root@ysy ~]# ps -ef | grep httpd --> 실행 중인 httpd 이름을 가진 프로세스 출력
root 14872 1 0 10:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 14873 14872 0 10:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 14874 14872 0 10:30 ? 00:00:01 /usr/sbin/httpd -DFOREGROUND
apache 14875 14872 0 10:30 ? 00:00:01 /usr/sbin/httpd -DFOREGROUND
apache 14876 14872 0 10:30 ? 00:00:01 /usr/sbin/httpd -DFOREGROUND
apache 15098 14872 0 10:33 ? 00:00:01 /usr/sbin/httpd -DFOREGROUND
root 23433 1015 0 12:30 pts/1 00:00:00 grep --color=auto httpd
ps -ef | grep httpd --> 실행 중인 httpd 이름을 가진 프로세스 출력
systemctl start httpd --> 시작
systemctl stop httpd --> 종료
systemctl status httpd --> 상태
systemctl restart httpdps --> 재시작
pstree
--> 실행 중인 프로세스들을 트리 구조로 보여줌
[root@ysy ~]# pstree
systemd─┬─NetworkManager───2*[{NetworkManager}]
├─auditd───{auditd}
├─chronyd
├─crond
├─dbus-broker-lau───dbus-broker
├─httpd─┬─httpd
│ ├─2*[httpd───64*[{httpd}]]
│ └─httpd───80*[{httpd}]
├─irqbalance───{irqbalance}
├─login───bash
├─polkitd───5*[{polkitd}]
├─rsyslogd───2*[{rsyslogd}]
├─sshd───sshd───sshd───bash───pstree
├─systemd───(sd-pam)
├─systemd-journal
├─systemd-logind
└─systemd-udevd
pstree -p
--> 프로세스 ID(PID)를 함께 출력해줌
[root@ysy ~]# pstree -p
systemd(1)─┬─NetworkManager(762)─┬─{NetworkManager}(765)
│ └─{NetworkManager}(766)
├─auditd(721)───{auditd}(722)
├─chronyd(754)
├─crond(774)
├─dbus-broker-lau(758)───dbus-broker(760)
├─httpd(23446)─┬─httpd(23447)
│ ├─httpd(23448)─┬─{httpd}(23451)
│ │ ├─{httpd}(23453)
│ │ ├─{httpd}(23455)
│ │ ├─{httpd}(23457)
│ │ ├─{httpd}(23459)
│ │ ├─{httpd}(23461)
│ │ ├─{httpd}(23462)
│ │ ├─{httpd}(23464)
│ │ ├─{httpd}(23466)
│ │ ├─{httpd}(23468)
생략....
서비스 시작과 종료
#service start mysql
#service stop mysql
#service status mysql
#service restart mysql
#systemctl mysql start
#systemctl mysql stop
#systemctl mysql status
#systemctl mysql restart
웹 서버 동작시켜 보기
# dnf upgrade -y --> 무조건 yes 하여 upgrade
# di httpd --> di : alias 설정 -> dnf -y install
# ps -ef | grep httpd --> httpd 가 실행 중인지 검색 (시스템에서 실행중인 모든 파일 중 httpd 이름을 포함하는 프로세스만 검색)
root 14869 952 0 10:29 pts/0 00:00:00 grep --color=auto httpd
# systemctl start httpd --> 웹서버 동작 시키기
# ps -ef | grep httpd
root 14872 1 0 10:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 14873 14872 0 10:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 14874 14872 0 10:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 14875 14872 0 10:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
apache 14876 14872 0 10:30 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND
root 15089 952 0 10:30 pts/0 00:00:00 grep --color=auto httpd
방화벽 꺼줘야됨(크롬에서 127.0.0.1 페이지 뜨는거 확인)
# systemctl stop firewalld --> firewalld : 방화벽 / disable : 항상 끔 / stop : 현재 세션에서만 끔
[root@ysy ~]# cd /var/www/html/ --> index 파일 위치
[root@ysy /var/www/html]# echo "hello hello" >> index.html --> 크롬에 ip : 127.0.0.1 검색하여 확인
** tip
안 될 경우 --> 서버의 네트워크 포트포워드 설정 확인 필요(8080)
크롬에서 127.0.0.1 검색하여 확인 시 아래와 같이 출력됨
mysql 실행 시켜보기
[root@ysy /var/www/html]# dq mysql --> dq : alias(dnf list --installed | grep) 설치 목록 중 mysql 이름을 포함하는 패키지 출력
mysql.x86_64 8.0.30-3.el9_0 @appstream
mysql-common.x86_64 8.0.30-3.el9_0 @appstream
mysql-errmsg.x86_64 8.0.30-3.el9_0 @appstream
mysql-selinux.noarch 1.0.5-1.el9_0 @appstream
mysql-server.x86_64 8.0.30-3.el9_0 @appstream
[root@ysy /var/www/html]# ps -ef | grep mysql --> 시스템에서 실행 중인 프로그램 중 mysql 이름을 포함한 프로세스 정보 출력
root 15177 1015 0 10:54 pts/1 00:00:00 grep --color=auto mysql
[root@ysy /var/www/html]# mysql --> mysql 실행
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/lib /mysql/mysql.sock' (2)
--> mysql start 되어있지 않아서 에러
[root@ysy /var/www/html]# ls
index.html
[root@ysy /var/www/html]# systemctl start mysqld --> mysql start 시켜줌 (d : 데몬)
[root@ysy /var/www/html]# ps -ef | grep mysql --> 시스템에서 실행 중인 프로그램 중 mysql 이름을 포함한 프로세스 정보 출력
mysql 15240 1 7 10:57 ? 00:00:00 /usr/libexec/mysqld --basedi r=/usr
root 15287 1015 0 10:57 pts/1 00:00:00 grep --color=auto mysql
[root@ysy /var/www/html]# mysql
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 8
Server version: 8.0.30 Source distribution
Copyright (c) 2000, 2022, Oracle and/or its affiliates.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
ㄴ systemctl start 이용하여 mysql 실행 시킨 후
ㄴ ps -ef | grep mysql 로 실행 중인 프로그램 중 mysql 이름을 포함한 프로세스 정보 출력
[root@ysy /var/www/html]# systemctl start mysql --> mysqld 실행 시키기
[root@ysy /var/www/html]# systemctl status mysqld --> mysqld 상태 보기
ㄴ 실행 중임을 확인
[root@ysy /var/www/html]# systemctl stop mysqld --> mysqld 종료 시킴
[root@ysy /var/www/html]# systemctl status mysqld --> mysqld 상태 보기
ㄴ 종료 상태임을 확인
작업 전환 foreground job, background job
#jobs --> 백그라운드(background)에서 실행 중인 작업의 목록을 출력해주는
#fg %3 --> 세 번째(background) 작업을 포그라운드(foreground)로 이동
#bg
**** shell 종료시에도 background JOB 유지
#sleep 100 &
--> 백그라운드에서 100초 동안 "sleep" 명령을 실행합니다. 명령 끝에 있는 "&"는 시스템이 백그라운드에서 명령을
실행하도록 지시하므로 프로세스가 실행되는 동안 터미널이나 명령 프롬프트를 계속 사용할 수 있음
#jobs
disown %1
--> 셸의 작업 제어에서 백그라운드에 배치된 첫 번째 작업이 제거됨
즉, 터미널을 닫거나 세션에서 로그아웃하더라도 해당 작업과 관련된 프로세스는 백그라운드에서 계속 실행됨
[root@ysy ~]# jobs
[root@ysy ~]# sleep 7
[root@ysy ~]# sleep 30
^Z --> Ctrl + Z 로 잠자기 강제로 종료시킬 수 있음
[1]+ Stopped sleep 30
[root@ysy ~]# jobs
[1]+ Stopped sleep 30
[root@ysy ~]# kill %1 --> 첫 번째 백그라운드 작업을 종료시킴
[root@ysy ~]# jobs --> 백그라운드(background)에서 실행 중인 작업의 목록을 출력
[1]+ Terminated sleep 30
[root@ysy ~]#
'네이버클라우드 > Linux' 카테고리의 다른 글
Linux 6일차 (2023-05-01) Linux System 관리 - 예약작업(atd), 반복작업(crond) (0) | 2023.05.01 |
---|---|
Linux 5일차 (2023-04-28) Ubuntu Linux 설치 후 작업 및 실습 (6) | 2023.04.28 |
Linux 4일차 (2023-04-27) Linux System 관리 - 패키지 관리 (2) | 2023.04.28 |
Linux 4일차 (2023-04-27) Linux System 관리 - 리눅스 설치(Ubuntu Linux) (2) | 2023.04.27 |
Linux 3일차 (2023-04-26) Linux System 관리 - 리눅스 설치(Rocky Linux) (2) | 2023.04.26 |