프로세스와 실행 (모니터링, 백그라운드, 항상 실행, 정기적 실행)

woom·2023년 7월 4일
0

Linux

목록 보기
6/14
post-thumbnail

출처 : 생활코딩 - Linux


🌼 컴퓨터의 구조

  • Storage(SSD, HDD) : 비용↓, 저장용량↑, 속도↓
  • Memory(RAM) : 비용↑, 저장용량↓, 속도↑
  • Processor(cpu) : storage속도로 못 따라와(memory필요)

=> storage에 저장된 프로그램 읽어서 memory에 적재(실행된 프로그램만)
=> momory에 있는 프로그램을 cpu가 읽어서 처리


📕 프로세스 모니터링(ps, top, htop)

  • ps : 실행중인 프로세스 리스트를 보여줌
    • ps aux: 백그라운드에서 돌아가는 수많은 프로그램 모두 확인
    • ps aux | grep apache
    • ps aux의 출력결과를 grep에 넣어서 아파치를 포함하고 있는 모든 프로세스 출력
  • top : 프로세스 리스트 출력
  • htop(sudo apt-get install htop: htop설치) : 조금더 시각적인 효과
    • 항목 클릭하면 자동 정렬 가능
    • Command: process가 어떤 명령으로 실행되었는지 보여줌
    • TIME: process가 실행된 시간
    • MEM%: 물리적인 메모리의 크기에 대한 퍼센트(사용량)
    • RES: 실제적인 메모리의 사용량
    • Load average: 1, 5, 15분간의 cpu점유율의 평균(if 숫자가 5라고 한다면 하나의 cpu가 처리하는 동안 4개의 process가 대기를 타고 있다는 것)

🐣 참고

  • pid: process id
    • sudo kill 7530 : pid가 7530을 강제 종료시켜라

📙 백그라운드 실행

  • Ctrl + C : 프로그램 종료
  • Ctrl + Z : 프로그램 정지(이미 실행되고 있는 프로그램)
    • fg: 작업중이었던 프로그램으로 이동 (+표시가 있는 파일로 이동, 1번 실행하고 싶으면 fg %원하는프로그램숫자)
    • jobs: 현재 백그라운드에 존재하는 프로그램들 출력
  • 프로그램을 실행할 때 부터 백그라운드로 보내는 방법
    • ls -R: 지정한 디렉토리를 찾아서 보여줌

🐣 참고

  • ls -R / > result.txt 2> error.log : 실행된 결과를 result.txt에 저장, error가 있다면 error.log파일에 저장
    • ls -alR / > result.txt 2> error.log & : al을 붙이면 더 오랜시간 소요, &가 명령어 뒤에 붙으면 명령어가 실행될 때 백그라운드로 실행

📒 항상 실행

🐣 데몬(daemon)의 개념

  • 항상 실행되고 있음 : ex. server (언제 사용할지 모르기 때문에 항상 켜놔야해)

  • 데몬에 해당하는 프로그램들은 service라고 하는 프로그램을 통해서 실행하고 종료해야해


🐣 service와 자동실행

  • 웹서버 설치 sudo apt-get install apache2

    • 설치된 위치 : cd /etc/init.d/
    • 데몬 프로그램들이 위치하는 디렉토리(데몬의 목적을 가지고 있는 프로그램) : /etc/init.d/
  • 데몬을 실행하는 명령어 : sudo service apache2 start

    • ps aux | grep apache2로 실행중인 것 확인 가능
  • 실행 종료하는 명령어 sudo service apache2 stop


📌 etc안의 rc3.d 디렉토리

  • rc3.d 디렉토리 : CLI방식으로 리눅스 구동
    • 들어가서 ls -l해보면 부모디렉토리(etc)안에 init.d 디렉토리(데몬프로그램)안에 apache2 확인 가능
    • 앞에 l: link라는 의미 => 경로는 저기에 있지만 So1apach2라는 이름으로 링크를 건 것(윈도우로 치면 바로가기)
    • rc3.d 안에서 S로 시작된다는 것은 CLI로 로그인된 컴퓨터일 경우에 컴퓨터가 시작(부팅)될 때 이 프로그램이 자동으로 실행됨
    • 만약 K로 시작된다면 실행되지 않는다는 의미
    • S 뒤에 숫자 01, 02는 우선순위

👌 apache를 실행할 때 저 폴더로 들어가지 않아도 링크가 걸어져 있기 때문에 ./S01apache2 로 apache2 실행 가능

  • rc5.d 디렉토리 : GUI방식으로 리눅스 구동

📗 정기적 실행(cron)

  • crontab -e 를 처음 실행하면 editor중에 편한거 선택하면 됨

  • 들어가서 정기적으로 실행시키고 싶은 작업들 적으면 됨

    • m: 실행되는 분의 주기(분당 몆 번) ex. */10 : 10분에 한번
    • h: 시간 당 (* : 시간당 상관없이 실행됨) ex. 10 1 : 1시 10분에 실행됨
    • dom(day of month로 30일 주기)
    • mon 몇월
    • dow 요일
    • cron 표현식 참고

📌 참고

date >> date.log 2>&1 : date 결과를 date.log파일에 출력해라(꺽쇠가 두번이라는 것은 뒤에 추가해라)

  • 2 : 표준에러 / 1 : 표준출력
  • 2>1 : 표준에러를 표준출력으로 redirection(date.log파일에 함께 저장됨)

🐣 사례

  • 정기적으로 시스템이 해야 할 일들을 처리
  • ex. 내가 이메일을 1000만명에게 이메일을 보내는데 몇시간이 걸려
    다 보낸후에 나한테 완료 메시지가 뜨는데 다 보낼때까지 기다리는 것이 아니라 saved에 명령을 저장한 후 완료 메시지를 보내.
    보낸 후 cron이 saved라고 저장된 명령들을 백그라운드로 처리해

📘 쉘을 시작할 때 실행

  • alias l='ls -al' 별칭 정하는 방법

  • echo $SHELL : /bin/bash

    • bash는 사용자가 처음 실행했을 때 특정한 이름의 파일을 실행하도록 약속되어 있음
    • nano .bashrc : 쉘이 실행될 때 쉘이라는 프로그램이 bashrc라고 하는 파일 안에 있는 코드를 실행하도록 되어 있음
    • 아래에 echo 'Hi, bash' 하고 저장하면
    • bash를 실행할 때 출력됨

profile
Study Log 📂

0개의 댓글