Linux #3 / TIL

리눅스 알아보기 3rd Chapter !!

Featured image

1. 프로세스 관리
2. 서비스 관리
3. 자동화


프로세스 관리


리눅스의 프로세스의 동작 방식

# 포그라운드 방식 
$ command
$ ping google.com

# 백그라운드 방식 -- &추가 
$ command & 
$ ping google.com &

# nohup 커맨드(no hang up)
$ nohup command &
$ nohup ping google.com &

컴퓨터에서 실행되고 있는 프로세스의 목록을 확인하고 관리하기 위한 명령 사용법 / 기본 용어

ps

ps 와 함께 사용할 수 있는 옵션

출력 정보 의미 ▼

- UID : 프로세스를 실행한 사용자 ID
- PPID : 부모 프로세스 번호
- C, %CPU : CPU 사용량 (%)
- STIME : 프로세스의 시작 날짜나 시간
- TTY : 프로세스가 실행된 터미널의 종류와 번호
- STAT : 프로세스 상태
- USER : 사용자 계정 이름
- %MEM : 물리적 메모리 사용량 (%)
- RSS : 사용하고 있는 물리적 메모리 크기(kb)
- VSZ : 사용하고 있는 가상 메모리의 크기(kb)
- START : 프로세스 시작 시간


pstree


kill

시그널 사용법 / 종류

kill -시그널번호(시그널명) %작업번호
kill -시그널번호(시그널명) PID

jobs

프로세스의 상태


서비스 관리 (데몬)

# index.html 이라는 HTML 파일 생성
$ echo "<html><body><h1>나의 첫 HTML 페이지</h1></body></html>" > index.html

# 웹 서버 실행, 8888 포트를 통해 접속이 가능
$ busybox httpd -h . -p 8888

# 웹 서버에 접속
$ curl http://localhost:8888
<html><body><h1>나의 첫 HTML 페이지</h1></body></html>

# 프로세스 확인 명령 / 데몬이 실행중인지 확인
$ ps aux | grep httpd
ubuntu     10847  0.0  0.0   2456    76 ?        Ss   12:14   0:00 busybox httpd -h . -p 8888
ubuntu     10855  0.0  0.2   7004  2240 pts/1    R+   12:15   0:00 grep httpd

# PID를 이용해 프로세스 강제 종료
$ kill -9 10847

# 웹 서버에 다시 접속 시, 접속 실패
$ curl http://localhost:8888
curl: (7) Failed to connect to localhost port 8888 after 0 ms: Connection refused

$ crontab -e
no crontab for ubuntu - using an empty one

Select an editor.  To change later, run 'select-editor'.
  1. /bin/nano        <---- easiest
  2. /usr/bin/vim.basic
  3. /usr/bin/vim.tiny
  4. /bin/ed

Choose 1-4 [1]: 1

≫ 다음과 같은 명령을 실행하면 nano 에디터가 열린다.

# data 명령의 출력과 uptime 명령의 출력을 합쳐서 
# 홈 디렉토리의 uptime.log에기록하는 명령을 매 분마다 실행한다.
# '* * * * *' 는 매 분을 뜻한다. 

* * * * * echo $(/bin/date) - $(/usr/bin/uptime) >> ~/uptime.log

≫ 파일을 저장하고 닫으면, 성공적으로 스케줄에 의한 명령(job)이 등록되었음을 확인할 수 있다.

crontab: installing new crontab

시간이 지난 후 uptime.log 파일을 살펴보면 다음과 같이 백그라운드에서 주기적으로 명령을 실행하는 것을 볼 수 있다.

uptime

이 실행이 끝나면, 매 분마다 한 줄씩 늘어나는 uptime.log 파일이 한없이 커지지 않도록, 방금 만든 crontab을 삭제해야 한다.

$ crontab -r 
$ crontab -l
no crontab for ubuntu

# 서비스 목록만 확인
$ systemctl --type=service

systemctl

* cron.service : 시스템 초기화가 끝나고 init에 의해 자동으로 실행되며, 별 다른 데몬 실행 과정 없이 cron 데몬을 발견할 수 있다.

systemctl의 하위 명령

</tr> </tbody> </table> - 시스템 관리자는 주로 서비스의 상태를 파악하고, 제대로 작동중인지, 멈춰있다면 왜 멈춰있는지를 파악하고 재 시작하는 일을 할 수 있어야 한다. ```bash $ systemctl status -l cron # 이 명령을 통해 crom 데몬의 상태를 확인할 수 있고, # 서비스 상태 확인을 통해 가장 최근의 출력 로그를 볼 수 있다. ``` --- **자동화** - **쉘(Shell)** : 운영체제의 기능, 서비스 구현 할 수 있는 명령어를 사용자에게 받아서 실행할 수 있는 인터페이스 제공 - **bash 쉘**
명령 기능
systemctl list-unit-files 설치된 유닛(데몬)을 보여준다.
systemctl enable <unit> 부팅 시 유닛을 활성화한다.
systemctl disable <unit> 유닛이 부팅 시 비활성화된다.
systemctl start <unit> 유닛을 즉시 활성화시킨다.
systemctl stop <unit> 유닛을 즉시 비활성화한다.
systemctl restart <unit>/td> 유닛을 즉시 재시작한다.
systemctl status <unit> 유닛의 상태와 최근 로그들을 조회한다.