리눅스 프로세스 - 이론, 실습

최준호·2024년 4월 25일
0

프로세스 이론

  • HDD, SSD 에서 RAM으로 Load되어 있는 상태를 프로세스라고 합니다. 특징으로는, RAM과 CPU가 서로 상호작용할 수 있습니다.

  • context-switching : CPU는 1개인데, 여러가지 일을 처리를 해야하는 상황이 있습니다.
    예시로 tomcat8과 카카오톡을 실행중일 겨우, cpu에서 시간을 잘게 쪼개서 tomcat 로직을 처리하다가 카카오톡 로직을 처리하는 방식입니다.

CPU는 A, B 두가지 일을 실행할 수 있지만, 100% 사용을 했을 경우, 강제 종료를 할 수 없고 다른 업무를 줄 수 있는 상황이 되지 않기 때문에, 중간에 어느정도 시간을 쉬는 시간을 만들어둔다.


프로세스 실습

apt 명령어로 설치를 하면 리눅스 service에 등록이 자동으로 됩니다.
실행파일을 직접 찾아서 실행할 필요가 없다.

service --status-all : 현재 서비스 목록 확인. (+ 실행중) (-실행 x)

sudo systemctl list-unit-files
// 현재 실행중인 시스템 목록 확인

sudo systemctl start tomcat8
// tomcat8 시작 명령어

sudo systemctl status tomcat8
// tomcat8 현재 상황 확인
  • 데몬 프로세스 : 계속 실행되는 프로세스를 의미. (tomcat)

프로세스 강제 종료

ps -ef : 현재 모든 프로세스 확인

kill pid : 강제종료
  • kill로 프로세스 tomcat8 종료 후에 systemctl status로 tomcat8 상태를 확인
ps -ef | grep tomcat8
sudo kill 1388

  • 프로세스에서 tomcat8를 죽여놓은 상태이지만, 현재 상태는 동작중이라고 나오지만, 실질적으로 8080포트에 접속했을 경우 접속이 되지 않는다.

sudo systemctl restart tomcat8 
// 명령어로 다시 시작하여 프로세스를 시작할 수 있습니다. 다른 명령어로는 실행이 되지 않습니다. 

프로세스 스크립트

  • ps -ef 명령어를 입력한 화면입니다.
  • 확인해보면 tomcat의 pid 1746이고, 제가 입력했던 명령어도 ps -ef도 프로세스에 추가된 걸 확인할 수 있습니다.
  • 여기서 명령어로 tomcat의 pid를 받아와 kill하는 명령어를 입력할 예정입니다.

ps -ef | grep tomcat8 | grep -v grep
  • 위 명령어는 프로세스 목록 리스트 중에, tomcat8인 것을 찾고, 제가 입한 grep를 제외시켜 보여주는 방식입니다.
    따라서 온전한 tomcat8의 정보를 가져올 수 있습니다.

  • awk 명령어 : 띄워져있는 값을 배열과 비슷한 형식으로 값을 1번째 값, 2번째 값을 넣는다라는 방식입니다.

ps -ef | grep tomcat8 | grep -v grep | awk '{print $2}'
  • 프로세스 내에 tomcat 정보의 두번째 배열의 값을 출력시키는 명령어입니다.

sudo kill $(ps -ef | grep tomcat8 | grep -v grep | awk '{print $2}')
  • 위 방식으로 tomcat의 pid를 출력시킨 값으로 프로세스를 종료시키면 됩니다.

현재 폴더내에 있는 파일 실행

profile
변화를 두려워하는 사람이 가장 불행한 사람이다.

0개의 댓글