프로세스, vim, 권한, 리눅스 명령어

wisdom·2022년 9월 3일
0

백엔드 개발자라면?

목록 보기
24/42

프로세스

CPU

  • 연산 장치
  • 1개? 일하는 일꾼 1명이라는 의미
  • 그 한 명이 프로세스1개를 관리하면 다른 프로세스를 실행시킬 수 없음
  • 다중 프로세스를 위해 쓰레드를 활용함
  • 컨텍스트 스위칭(context switching 문맥 교환)
    - 흐름 파악
    - 타임 슬라이싱, sleep
    - tomcat을 실행했다가 컨텍스트를 기억하고, 카카오톡을 실행했다가 기억하고 ..

RAM

  • 저장 장치
  • 1GByte면 문자를 10억개 저장할 수 있음
  • 휘발성

SSD, HDD

  • AWS 프리티어의 경우 최대 30GByte
  • SSD에서 실행에 필요한 것(ex. Tomcat8)을 RAM에 load 시킨다. 그럼 그게 바로 프로세스다.
    - 실행 중이라는 의미
    - CPU 연산장치와 RAM이 커뮤니케이션한다.
apt 명령어 설치 - 서비스 등록
실행 파일을 직접 찾아서 실행할 필요가 없다.

서비스 목록 확인(+실행 중 / - 실행 중 아님)
service --status -all

service 명령어는 systemctl의 wrapper script다.(->systemctl 이 들고 있는 명령어를 좀 더 쉽게 사용하기 위해서 생긴 service 명령어인데 service 로는 모든 system service를 제어할 수 없기 때문에 service 보단 systemctl을 사용하자.)

sudo systemctl list-unit-files | grep tomcat8
sudo systemctl start tomcat8
sudo systemctl stop tomcat8
sudo systemctl status tomcat8

데몬 프로세스(while)

ps -ef

종료 안될 경우가 생길 수 있음 -> 직접 강제 종료 필요
서비스로 등록이 안되어 있는 프로세스 -> 내가 직접 압출파일 다운-압축풀고-실행파일 실행
kill -l 
kill -9 PID(강제 종료)

kill 로 강제종료 후 다시 시작하기 위해서는 sudo systemctl restart tomcat8
(-> 왜냐하면 systemctl 입장에서는 exit 된 것이고 안전한 종료 후 restart로만 실행됨, 서비스 입장에서는 종료가 아니라 중지 상태가 된 것)

ps -ef | grep tomcat8 | grep -v grep
ps -ef | grep tomcat8 | grep -v grep | awk '{print $1}'

grep -v
지정된 패턴과 일치하는 항목을 제외
awk 레코드(행)을 공백 문자로 분리하여 $1 첫 번째 필드, $2 두 번째 필드 이런 식으로 분리하여 처리할 수 있게 해준다. 
`백틱은 치환명령어`로 감싼 부분을 실행 결과로 치환

cd /etc/init.d 
sodo ./tomcat8 stop
sudo ./tomcat8 start

vim

vi a.text (vi 에디터로 들어가기)

i 입력 모드
exc 일반 모드
exc -> :wq (:명령행 모드, 저장 후 종료)

cat a.text 

일반모드
shift+v 블럭지정
x 현재 커서의 문자 삭제
dd 현재 행 삭제
yy 현재 행 복사
p 붙여 넣기

권한

ubuntu root 계정 

su root -> root 계정으로 변경, 처음에는 패스워드가 필요함
sudo passwd root -> 패스워드 만듦

su ubuntu 

-rw-r--r-- 1 root root

    • 파일 (-> d라면 폴더)
  • rw- 루트 권한 (r:4, w:2, -:0 -> 6)
  • r-- 루트 그룹 권한 (r:4, -:0, -:0 -> 4)
  • r-- 누구나(r:4, -:0, -:0 -> 4)
  • root 소유자
  • root 그룹
    - root 그룹에 들어가면 root 가 만들 파일, 폴더를 읽고(r) 쓰고(w) 실행(x) 할 수 있다.
  • test.text 파일은 644 권한을 가지고 있음
    - ubuntu 유저는 test.text 파일에 대해서 읽기(r) 밖에 할 수 없음
    - ubuntu 가 test.text 파일에 대해서 쓰고 싶으면 anyone 쪽에 w 권한을 줘야 한다. (rw- -> 646 권한으로 변경해야함)
누구나 쓸 수 있게 하려면? 
sudo chmod 646 test.text
-rw-r--rw- 로 변경됨

모든 권한을 주려면?
sudo chmod 777 test.text
-rwxrwxrwx 로 변경됨

소유자에게 x권한 / 그룹에게 w,x 권한 / other 에게 x 권한

sudo chmod u+x,g+wx,o+x index.html (,뒤 띄어쓰기 금지)

  • sudo chmod o=rw index.html 의 방식도 가능

chown

chown -> 그룹의 소유자 변경
root:ubuntu -> 소유자는 root, 그룹은 ubuntu로 변경
sudo chown root:ubuntu test2.text


파일 찾기

sudo find / -name tomacat*

톰캣 포트 변경

cd /etc/tomcat8 
sudo vi server.xml (파일 내에서 port8080에서 8000으로 변경)
sudo service tomcat8 restart
netstat -nltp (톰캣 8000번 포트로 변경된 거 확인)
  • 그런데 브라우저에서 ip주소:8000 진입이 안됨
  • 원인은 aws 방화벽 때문!
  • AWS -> EC2 -> Security Group 에서 Inboud rules 편집
    - 8000포트 추가

표준 입출력

  • 서버를 운영하다보면 로그를 볼 일이 있고 로그를 파악할 수 있어야한다.
sudo find / -name catalina.out
cd /var/log/tomcat8
sudo tail -f catalina.out (실시간으로 모니터링 할 수 있음)
  • 표준 입력 스트림
    - stdin (standard input stream)
  • 표준 출력 스트림
    - stdout (standard output stream)
  • 오류 출력 스트림
    - stderr (standard error stream)

> 표준 입출력 변경

  • 표준 입력 0
  • 표준 출력 1
  • 표준 에러 2
sudo touch mylog.out
sudo chmod 777 mylog.out
sudo tail -f catalina.out > mylog.out (표준 출력의 방향을 모니터에서 mylog.out 파일로 바꿈)
profile
문제를 정의하고, 문제를 해결하는

0개의 댓글