리눅스 ppa, 프로세스

LeeKyoungChang·2022년 4월 22일
0
post-thumbnail

메타코딩 유튜브를 참고하여 정리한 내용입니다.

 

ln : 링크파일을 만드는 명령어, 바로가기 파일 만들기

  • -s : 심볼릭 링크파일을 생성

bin 폴더 : 실행파일이 모여 있는 곳

 

📣 우분투 환경에서 프로그램 설치
(1) 우분투 레포지토리 접근 (경로 등록) : /etc/apt/sources.list 접근 (현재 연결된 상태)
(2) apt-update : 목록 갱신, apt 목록에는(메뉴판) 비어있는 상태이므로 갱신을 해줘야 한다. (음식을 개발했을 때, 메뉴판에 등록해야 한다.)
(3) apt install A 음식 : 음식 주문

  • 다운로드를 받는다.
  • 자동 설치를 해준다.
    • 자동 설치시, 환경 변수 등록 등 여러가지 세팅을 다 해준다.

(4) apt install로 설치 안된 파일 추가 설치 - ppa 저장소 등록

  • /etc/apt/sources.list.d/에 등록 : 주소 등록하면 된다.
  • 주소 등록 했을 경우, apt-update하면 자동으로 갱신된다.

 

✔️ 인바운드 규칙

  • port 통신 규칙 저장
  • 80번 port만 접속하게, 8080번 port만 접속하게 등

 

📚 1. ppa 저장소 사용

sudo apt-cache search tomcat : 저장소에서 tomcat 검색

스크린샷 2022-04-21 오전 10 23 30 스크린샷 2022-04-21 오전 11 19 46

 

현재는 tomcat9이 들고 있는 상태이다.
✔️ tomcat9 → tomcat8으로 변경해보자!
sudo apt remove tomcat9 : tomcat9 삭제, 설정파일을 지우지 않는다.
sudo apt --purge remove tomcat9 : tomcat9 삭제, 설정 파일까지 모두 지운다.

 

현재 메뉴판에는 tomcat8이 존재하지 않아, 설치할 수 없는 상태이다.

스크린샷 2022-04-21 오전 10 26 28
  • 이때, ppa를 사용한다.
  • ppa : 저장소를 추가하는 방법이다.

 

📖 A. ppa 사용, 설치 및 우분투에서 실행

launchpad ubuntu ppa 로 이동

스크린샷 2022-04-21 오전 10 32 06
  • apt 저장소에 없는 것들을 여기에서 추가하면 된다.

 

✔️ ppa에서

tomcat8 검색

스크린샷 2022-04-21 오전 10 32 19

 

이제 명령어 입력할 시 apt에 추가된다.
스크린샷 2022-04-21 오전 10 33 49

sudo add-apt-repository ppa:rivergod/tomcat8.5
sudo apt-get update

 

✔️ terminal에서

스크린샷 2022-04-21 오전 10 37 46
  • 이제 apt 저장소에 tomcat8 저장소가 추가되었다.

 

스크린샷 2022-04-21 오전 10 39 47

main 저장소 목록들이 주석으로 걸려 있다.

 

스크린샷 2022-04-21 오전 10 42 18
  • aws ec2에서 sources.list.d는 (main 저장소에) 주소 목록들만 저장되어 있다.
  • 추가한 목록이 나온다.

 

스크린샷 2022-04-21 오전 10 44 47
  • ppa에 등록된 것들은 sources.list.d/에 추가된다.

 

💡 참고
GUI 방식도 존재하지만, CLI 방식을 사용하는 것이 좋다.

 

✔️ 마지막 업데이트
현재 상황
스크린샷 2022-04-21 오전 10 49 14

스크린샷 2022-04-21 오전 10 49 59

지금은 위 내용이 안된다.
이유 : ubuntu 메뉴판에서 갱신이(등록) 되지 않았기 때문에, 우분투 환경 입장에서는 없다고 판단한다.

 

스크린샷 2022-04-21 오전 10 55 35

그러므로, 설치한 것들을 등록해야 한다!

 

✔️ 그런데 거부를 당했다.

E: The repository 'http://ppa.launchpad.net/rivergod/tomcat8.5/ubuntu focal Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

현재 aws ec2에서 ubuntu version 20.04 LTS를 설치한 상태이다.
스크린샷 2022-04-21 오전 10 59 05

  • 20.04는 Focal Fossa를 지원한다.

 

tomcat8.5는 Xenial만 지원하는 상태이다. (16.04 LTS)
스크린샷 2022-04-21 오전 11 00 08

스크린샷 2022-04-21 오전 11 00 37

➡️ 그래서, 현재 tomcat8.5에서는 aws ec2 ubuntu 20.04 LTS 입장에서는 사용할 수 없어, 다른 tomcat 버전을 설치해야 한다. (Focal Fossa를 지원하는 것으로 설치해야 한다!)

 

✔️ 다시, Apache Tomcat 8.5.x를 설치하자!

스크린샷 2022-04-21 오전 11 05 00 스크린샷 2022-04-21 오전 11 05 49

 

먼저, 이전에 잘못된 버전의 ppa 저장소를 삭제해야한다!

sudo add-apt-repository --remove ppa:rivergod/tomcat8.5

스크린샷 2022-04-21 오전 11 09 52

삭제 후, update도 잘되는 상황이다.

 

새로운 저장소 추가

sudo add-apt-repository ppa:ttyrnpuu/tomcat
sudo apt-get update
스크린샷 2022-04-21 오전 11 13 28
  • ls 입력했을 때, ~.list 뒤에 .save 라는 것이 추가되었다면 삭제된 것이다!

 

마지막 업데이트!
sudo apt update : 메뉴판 갱신한다.
스크린샷 2022-04-21 오전 11 15 29

 

sudo apt-cache search tomcat

스크린샷 2022-04-21 오전 11 16 28 스크린샷 2022-04-21 오전 11 16 15
  • tomcat8이 추가되었다!

 

sudo apt install tomcat8

스크린샷 2022-04-21 오전 11 22 54

설치 완료!

 

💡 참고
ubuntu version 확인하는 방법
lsb_release -a
스크린샷 2022-04-21 오전 11 39 16

 

📚 2. 리눅스 명령어 프로세스 이해

스크린샷 2022-04-21 오전 11 45 06

✔️ Context 문맥 : 흐름

스크린샷 2022-04-21 오후 12 08 31

ex) 책은 총 100page이다.

  • 오늘은 20page를 읽게 되었다.
  • 다음날에는 21page부터 읽어야 한다.

➡️ context : 전, 후 사정 (이야기를 하고 있을 때 중간에 끼어들 수 있다.)

  • tomcat을 어느정도 실행했다가 잠시 다른 것을 하러 갔다가, 다시 돌아올 때 어디서부터 실행해야 하는지 기억을 하고 있어야 한다.

 

✔️ Context-Switching 주의점
하나에 집중할 때, 다른 것에 신경을 쓰지 않는다.
그러므로, 하나의 집중할 때 다른 것에도 집중할 수 있게 해야한다.

 

A 프로세스B 프로세스
O(0.1초 자고 실행)
O
O(0.1초 자고 실행)
O

CPU가 서로 다른 프로세스에 동시에 실행하기 위해서는 thread가 필요하다.

  • 타임 슬라이싱을 통해 프로세스간에 이동을 한다.
  • 이 때, CPU가 프로세스간에 이동하는 것을 Context-switching이라고 한다.
  • sleep : thread 잠깐 멈추게 하는 것
    • sleep이 없으면 강제 종료를 할 수 없다.
    • 왜나하면, 100% 집중하고 있을 때는 쉴틈이 없어 종료할 수가 없다.
스크린샷 2022-04-21 오후 12 07 19

 

📚 3. 리눅스 명령어 프로세스 실습

apt 명령어 설치시, 서비스에 등록이 된다.

서비스 등록이 될시, 실행파일을 직접 찾아서 실행할 필요가 없다.

✔️서비스란 무엇인가?

스크린샷 2022-04-22 오전 10 15 14

+ : 실행중인 서비스
- : 종료된 서비스

 

sudo service tomcat8 stop : tomcat8 서비스 종료
netstat -nlpt : 현재 실행중인 tcp 확인

스크린샷 2022-04-22 오전 10 15 59

 

sudo service tomcat8 start : tomcat8 서비스 시작
netstat -nlpt : 현재 실행중인 tcp 확인

스크린샷 2022-04-22 오전 10 17 02
  • 8080 서비스 등록되었다.

다만, 최근들어 서비스 명령어를 거의 사용하지 않는다!
서비스 명령어를 사용하지 말자!

 

📖 A. systemctl 서비스 제어 명령

service 명령어는 systemctl의 wrapper script이다.

sudo systemctl list-unit-files : 실행중인 시스템들이 화면에 출력된다.

스크린샷 2022-04-22 오전 10 21 35
  • ctrl + c : 종료

ex) 실행중인 tomcat8 시스템을 화면에 출력

스크린샷 2022-04-22 오전 10 24 21
  • 현재 enable, 사용가능한 상태

 

sudo systemctl status tomcat8 : tomcat8의 현재 상태보기

스크린샷 2022-04-22 오전 10 26 20

 

sudo systemctl stop tomcat8 : tomcat8 종료하기

스크린샷 2022-04-22 오전 10 27 44
  • 웹 서버 접속시, 접속이 안된다.

 

sudo systemctl start tomcat8

스크린샷 2022-04-22 오전 10 58 32
  • 서버로부터 동작중인 것을 프로세스
  • 데몬 프로세스 : while문을 돌고 있는 프로세스

 

📖 B. 강제종료

ps -ef : 실행 중인 프로세스 화면에 출력

스크린샷 2022-04-22 오전 10 58 48
tomcat8     2607       1  2 01:56 ?        00:00:03 /usr/lib/jvm/default-java/bi

 

✔️ 강제종료 - kill

kill

스크린샷 2022-04-22 오전 11 02 00
  • 종료 안될 경우가 간혹 생길 수 있다. 이럴 경우 직접 강제 종료해야 한다.
  • 서비스로 등록이 안되어 있는 프로세스인 경우, 직접 강제 종료해야 한다.

 

스크린샷 2022-04-22 오전 11 03 36
  • 현재 ubuntu 프로세스에 있으므로 sudo를 이용하여 tomcat을 제어해야한다.
스크린샷 2022-04-22 오전 11 04 43
  • 15번으로 종료할 시 안전하게 종료할 수 있다. : kill의 default 값 15번
  • 8080이 없어졌다.

 

종료 : sigint (ctrl + c) : kill -2 pid

 

스크린샷 2022-04-22 오전 11 07 41
  • kill 명령어로 인해, systemctl 입장에서는 중지되었다. (일시 정지)
  • exited : 활동이 종료되었다.

그래서 다시 systemctl start를 해보지만,

스크린샷 2022-04-22 오전 11 11 59

여전히 exited (종료)된 상태로 유지된다.

 

📝 실행되지 않는 이유
kill 명령어를 통해 프로세스를 종료 한 상태이므로, 서비스로 제어해도 동작하지 않는다. (kill → systemctl start x)

 

그러므로 아예 서비스를 재시작해야 한다. (새로 시작)

스크린샷 2022-04-22 오전 11 16 04

Process: 29706 ExecStart=/etc/init.d/tomcat8 start : /etc/init.d/tomcat8을 start 하였다.

만약 서비스가 등록되어 있지 않다면, /etc/init.d/tomcat8 을 실행시켜야 한다.

 

📌 정리
kill -15 pid

  • sigterm은 안전한 종료
  • systemctl 입장에서는 exit 된 것이다. 안전한 종료 후 restart로만 실행된다.
  • 왜냐하면 systemctl 입장에서는 종료가 아닌 중지 상태가 이기 때문이다.

또는, sudo kill 29735 입력
sudo systemctl stop tomcat8
sudo systemctl start tomcat8 해도 서비스를 재시작할 수 있다. (stop + start == restart)

스크린샷 2022-04-22 오전 11 27 07

 

📖 C. 이외

ps -ef | grep tomcat8
ps -ef | grep tomcat8 | grep -v grep

스크린샷 2022-04-22 오전 11 33 16

awk : tomcat8 42021 1 1 02:26 ? 00:00:04 와 같이 있을 때 빈칸을 기준으로 한 줄로 나눈다.

스크린샷 2022-04-22 오전 11 36 18

tomcat8 : 1번지
42021 : 2번지
1 : 3번지
1 : 4번지

 

스크린샷 2022-04-22 오전 11 39 18 스크린샷 2022-04-22 오전 11 39 08

sudo kill ``ps -ef | grep tomcat8 | grep -v grep | awk '{print $2}'

  • 지정한 tomcat8 프로세스 강제종료

 

✔️ 실행할 파일 중에 tomcat8을 중지하고 실행할 수 있다.

./ : 현재 폴더 안에
경로 : /etc/init.d

sudo ./tomcat8 stop : tomcat 종료
sudo ./tomcat8 start : tomcat 실행

스크린샷 2022-04-22 오전 11 45 46 스크린샷 2022-04-22 오전 11 46 22

 

profile
"야, (오류 만났어?) 너두 (해결) 할 수 있어"

0개의 댓글