[Linux] Linux 기초 및 설치 방법

Linux

1. 운영체제의 발전과 리눅스의 개요

운영체제 (OS, Operation System)

  • 컴퓨터 하드웨어를 제어하는 가장 기본적인 소프트웨어
  • 초창기 컴퓨터 ENIAC은 운영체제 없이 사용자와 응용 프로그램이 직접 하드웨어를 관리했다.

대규모 연산 처리 자동화

  • ENIAC (1940년대)
    • 운영체제가 없었으며, 오퍼레이터(Operator)가 컴파일, 링크, 로딩 등의 작업을 수동으로 처리했다.
    • 진공관을 사용하여 true/false를 구분했다.
    • 전선으로 논리 회로를 구성하여 연산을 처리하고, 새로운 연산을 위해선 회로를 재구성해야 했다.
    • 오퍼레이터가 수행하던 작업방식 : 컴파일 → 링크 → 로딩

처리 자동화 - 일괄 처리

  • Batch Processing System (1950년대)
    • 기존 오퍼레이터가 수동으로 했던 작업(컴파일, 링크, 로딩 등)을 자동화한 최초의 운영체제가 등장했다.
    • Resident Monitor : 프로그램의 일부로 메모리에 항상 상주하며, 천공 카드를 통해 데이터를 처리한다.
    • 천공 카드
  • Batch Processing (일괄 처리)의 장단점
    • 중간 수정이 불가능하다.
    • 한 번에 하나의 작업만 수행 가능하지만 순서대로 여러 연산을 처리할 수 있었다.

현대 운영체제

  • 대화형 시스템 (Interactive System)
    • 실행 도중에도 중간 결과를 확인할 수 있게 하여 운영 중 수정이 가능하다.
  • 다중 프로그래밍 (Multi-Programming System)
    • 여러 애플리케이션이 동시에 실행되며, CPU 스케줄링을 통해 자원을 효율적으로 사용한다.
  • 시분할 시스템 (Time-sharing system)
    • 여러 사용자가 하나의 프로세서를 공유하고, CPU가 매우 짧은 시간 동안 각 사용자에게 할당되어 사용자는 독립적인 사용을 경험한다.

리눅스 개요

  • Multics와 Unics
    • 복잡한 시스템인 Multics에서 유래되어 단순화된 Unics가 개발되었다.
    • 이후 Unix로 발전했다.
  • Linux
    • 리누스 토발즈가 UNIX 기반의 운영체제 커널을 개발하였다.
    • 커널은 운영체제의 핵심 역할을 담당한다.
  • Kernel
    • 커널은 운영체제의 핵심 역할을 담당한다.
    • 기본적으로 기계어와 같은 0,1 데이터만 처리할 수 있고, 사용자와의 상호작용이 불가능하다.
  • Shell
    • 인터페이스로 볼 수 있다.
    • 사용자가 명령어를 입력하면, 셸이 이를 해석해 커널에게 전달한다.

2. 리눅스 설치

가상머신 설치

  • 가상 머신
    • 메인 운영체제(Host OS)에 가상의 머신을 생성하여 다른 운영체제(Guest OS)를 설치하고 동작할 수 있도록 하는 소프트웨어.
    • 대표적인 벤더: VMWare, Oracle VirtualBox.
  • VirtualBox 설치 프로그램 다운로드
    • Windows: VirtualBox 6.1.46 버전 다운로드하기 (파일명: VirtualBox-6.1.46-158378-Win).
    • Extension Pack도 다운로드하기

    image


  • VirtualBox 설치
    • 다운로드된 프로그램을 통해 VirtualBox 설치

    image


    • 확장팩 설치하기
      • 파일 → 환경설정 → 확장 → + 버튼 클릭

    image


  • 가상 머신 만들기
    • 새로만들기 클릭 image


    • 실습용이라 간단하게 4GB로 메모리크기를 설정한다. image


    • 하드 디스크 : 지금 새 가상 하드 디스크 만들기(C) 선택
    • 하드 디스크 파일 종류 : 기본값 VDI(VirtualBox 디스크 이미지) 선택
    • 물리적 하드 드라이브에 저장 : 동적 할당(D) 선택
    • 파일 위치 및 크기 : 하드디스크 사이즈는 30GB로 지정
    • 만들기 선택

    image


리눅스 배포판 이미지 설치

  • Ubuntu 다운로드하기

    • https://releases.ubuntu.com/20.04.6/?_ga=2.76095253.169957229.1708349633-134843663.1705138362

    image


  • 명령어로만 칠 수 있는 GUI 버전도 다운로드

    image



Ubuntu 운영체제 설치

  • PC에 다운로드 받은 Ubuntu 이미지를 사용하여 Linux 운영체제를 설치해야한다.
  • 생성한 서버에 OS 설치용 이미지(CD) 삽입하기
    • 새로만들기 → 가상/광학 디스크 이미지 선택 → ubuntu-20.04.6-desktop-amd64.iso 선택 → 시스템 다시 시작하기

    image


    • 다시 실행하면 update 및 기본 환경 다운로드가 시작된다.

    image



GUI 환경 설정하기 (이미지로 서버 컴퓨터에 운영체제 설치)

  • VirtualBox 메인 페이지에서 시작 버튼 클릭 → 서버 부팅 시 CD로 인식된 iso 이미지를 통해 우분투 설치를 위한 내부 과정이 진행된다.
  • 한국어 메뉴 클릭 후, Install Ubuntu 버튼을 클릭한다.
  • Keyboard layout - 키보드 레이아웃으로 사용할 언어를 선택한 후 continue

    image


    • Updates and other software
      • 설치할 항목을 설정한다.
      • Minimal installation (최소 옵션만 설치하는 옵션) 선택 후 Continue

    image


    • Installation type
      • 운영체제 iso 이미지 선택
      • Install Now 버튼 선택

    image


    • Ubuntu 운영체제에서 사용 할 사용자 계정 설정
      • 설정 후 continue

    image


    • 설치 진행
      • 시스템을 재시작하면 정상적으로 실행된다. (온라인 계정은 skip)

    image


    • terminal 실행해보기
      • xeyes 명령어 입력해서 확인해보자 (마우스 포인터의 위치를 추적하는 데모 프로그램)

    image


  • 화면 꽉 채우기로 변경
    • 설정 → 디스플레이 → 그래픽 컨트롤러를 VBoxVGA로 변경 후 재실행
    • 폰트 키우기 - Ctrl Shift + 폰트 줄이기 - Ctrl -

    image



CLI 환경 설정하기

  • 가상 머신 만들기

    image


  • 시작하기 → 장치 → 광학 드라이브 → 디스크 이미지 선택/만들기 → ubuntu-20.04.6-live-server.amd64.iso 선택하기 → 시스템 전원끄기 후 다시 재시작하기

    image


    • Linux OS에서 사용할 언어 선택 : English
    • 인스톨러 업데이트 여부 : Continue without updating 선택
    • Keyboard Configuration : English 선택 후 Done
    • Network connections : Done
    • Configure Proxy : Done
    • Ubuntu Archive Mirror : Done
    • Storage Configuration : Done
    • Confirm destructive action : Continue
    • Profile Setup
    • SSH Setup : Install OpenSSH server 선택 후 Done

      image


    • Featured Server Snaps : Done
  • Kernel 부터 설치가 진행된다

    image


  • 설치가 완료 되면, Reboot Now 버튼을 선택하여 재부팅을 진행한다.

    image


  • 우측 상단 X 클릭→ 시스템 전원 끄기 선택

    image


  • 스냅샷 찍기
    • 설치한 리눅스 서버가 제대로 동작하지 않을 때 초기 설치 상태로 돌아가기 위한 세이브 포인트를 지정해준다.
    • linux-cli의 메뉴바 → 스냅샷 탭 → 찍기 → 스냅샷 이름에 설치 직후로 작성
    • 이후 복원 버튼 선택 시 리눅스를 처음 설치했을 때의 시점으로 복원된다.

    image


  • 서버 재실행 후 생성한 username, password로 로그인한다.

  • 로그인 성공

    image



3. 리눅스 기초

리눅스 운영체제의 기본 인터페이스

  • GUI (Graphic User Interface)
    • 리눅스는 그래픽 기반의 UI를 제공하여 사용자가 마우스를 통해 직관적으로 조작할 수 있다.
    • 업데이트에 따라 UI 버튼이나 위치가 변경될 수 있습니다.
  • CLI (Command Line Interface)
    • CLI는 명령어 기반의 인터페이스로, 버튼 위치 변화 없이 일관되게 명령어를 사용할 수 있다.
    • GUI에 비해 명령어 입력이 빠른 경우도 있다.

Linux 기본 인터페이스 설명

  • 프롬프트 (Prompt)
    • 사용자가 명령어를 입력할 수 있는 명령줄 인터페이스
    • 입력한 명령어는 쉘(Shell)을 통해 커널로 전달되어 실행된다.
    • 예시
      • yeahjinee@server1:~# : 사용자 yeahjinee가 server1 서버에 접속한 상태
      • root@DESKTOP-R81BAS:~# : root 계정으로 DESKTOP-R81BAS 서버에 접속한 상태
  • @기준 왼쪽: 사용자 이름
    • yeahjinee또는 root는 현재 로그인한 사용자 계정을 의미한다.
  • @기준 오른쪽: 호스트 이름
    • server1 또는 DESKTOP-R81BAS는 서버 또는 컴퓨터의 호스트 이름이다.
  • 호스트 이름 기준 오른쪽: 디렉토리 경로
    • ~는 현재 사용자가 작업 중인 디렉토리
    • ~는 사용자의 홈 디렉토리를 나타냅니다.
  • 프롬프트 끝의 기호 ($, #)
    • $: 일반 사용자 권한
    • #: 루트 사용자(관리자) 권한

기본 명령어

항목설명
date현재 시간과 날짜를 출력한다.
df디스크 사용량 및 용량을 확인한다.
free메모리 사용 현황을 확인한다.
exit터미널을 종료한다.

커맨드 라인 조작 단축키

항목설명
Ctrl + A커서를 명령 줄의 맨 앞으로 이동한다.
Ctrl + E커서를 명령 줄의 맨 뒤로 이동한다.
Alt + B커서를 이전 단어의 시작으로 이동한다.
Alt + F커서를 다음 단어의 끝으로 이동한다.
Ctrl + U현재 명령 줄 전체를 지운다.

명령어 편의 기능

항목설명
Tab파일이나 디렉토리 이름을 자동 완성해준다.
history현재까지 입력한 명령어 기록을 조회할 수 있다.
위(↑)와 아래(↓) 방향키로 이전, 이후 명령어를 불러올 수 있다.

리눅스 운영체제 로그인

  • 로그인
    • 서버 실행 후 로그인 프롬프트가 출력되며, 여기서 사용자 계정 정보를 입력해 로그인할 수 있다.
    • 프롬프트 (Prompt): 사용자가 명령어를 입력할 수 있는 명령줄 인터페이스
      • [사용자명, 컴퓨터명 등]$ {명령어 입력 부분}
  • 로그아웃
    • logout 명령어로 로그아웃을 수행한다.

명령어 입력 방식

  • 명령어 작성 시그니처
    • $ 명령어 [옵션(인수)] [옵션(인수)] ...
    • [ ]: 선택 옵션 (작성하지 않아도 기본값으로 동작한다)
    • ...: 여러 개의 옵션 또는 인수가 올 수 있음을 의미한다.
  • 명령어 예시

    항목설명
    man crontabcrontab 명령어의 사용법을 조회한다.
    man passwdpasswd 명령어의 사용법을 조회한다.
    man -k passpass가 포함된 모든 매뉴얼을 조회한다.
  • 옵션과 인수
    • 옵션 (Option): 명령어가 제공하는 부가 기능을 수행하며, 보통 하이픈(-) 뒤에 알파벳을 작성한다.
    • 인수 (Argument): 명령어 또는 옵션에 넘기는 값
  • 명령어별 도움말 참조 방법
    • man {명령어}: 해당 명령어의 매뉴얼(Manual)을 조회할 수 있다.
      • ex. man ls : ls 명령어의 기능과 사용 방법을 확인한다.
      • ex. man date
        • 현재 날짜와 시간을 알 수 있다.

        image


    • -help 옵션
      • 명령어 뒤에 -help를 붙이면 간단한 도움말을 조회할 수 있다.
      • ex. ls --help : ls 명령어의 간단한 도움말을 조회한다.
    • -와 –의 차이
      • - :문자 하나로 구성된 옵션을 나타낸다.
      • -- : 단어로 구성된 옵션을 나타낸다.

4. 파일 관리

Linux 파일 시스템

파일 시스템의 구조

  • 리눅스 파일 시스템은 트리(Tree) 구조로, 최상위에 루트 디렉토리(/)가 있고 그 아래 여러 디렉토리가 계층적으로 존재한다.
  • 주요 디렉토리

    항목설명
    /최상위 루트 경로
    /dev장치 파일들이 위치한 디렉토리
    /etc시스템 설정 파일들이 위치한 디렉토리
    /usr실행 파일, 라이브러리, 소스 코드 등이 있는 디렉토리
    /usr/bin기본 사용자 명령어들이 위치
    /usr/sbin관리자 명령어들이 위치
    /home사용자별 개인 디렉토리
    /home/bob사용자 Bob의 디렉토리
    /var로그 파일이나 캐시 등이 저장되는 디렉토리
  • 파일과 관련된 기본 명령어

    항목설명
    pwd현재 디렉토리 경로 확인
    cd [경로]지정된 경로로 디렉토리를 변경
    /var 경로로 이동/var 경로로 이동
    [예시] - cd /var : /var 경로로 이동
    - cd / : 루트 경로로 이동
    - cd~ 또는 cd : 홈 디렉토리로 이동
    - cd /var/log : 특정 하위 디렉토리로 이동
    루트 경로로 이동루트 디렉토리(/)로 이동
    홈 디렉토리로 이동현재 사용자 홈 디렉토리로 이동
    하위 디렉토리로 이동지정된 하위 디렉토리로 이동
    ls현재 디렉토리 내 파일 및 디렉토리 목록을 표시
    ls -al숨김 파일을 포함하여 파일의 상세 속성까지 출력
    ls -a숨김 파일(.으로 시작하는 파일)을 포함하여 디렉토리 목록을 출력
    ls -l각 파일과 디렉토리의 권한, 소유자, 크기, 수정 날짜 등 상세 정보를 출력
  • 파일 타입 확인

    항목설명
    file [파일명]파일의 타입(확장자)을 확인[예시]file home → 결과: home: directory
  • file 실행 결과

    image


cd, 경로 이동

항목설명
cd [경로]디렉토리를 변경
cd /var/var 경로로 이동
cd /루트 디렉토리(/)로 이동
cd ~ 또는 cd현재 사용자의 홈 디렉토리로 이동
cd /var/log특정 하위 디렉토리로 이동
- 각 사용자 계정 별 홈 경로가 사용자 이름으로 만들어져있다.

image


  • cd 실행결과

    image


ls, 디렉토리 내부 조회

항목설명
ls현재 디렉토리의 파일 및 폴더 목록을 알파벳 내림차순으로 표시
ls /var/var 경로의 파일 및 폴더 목록을 표시
옵션 명령어 
ls -F파일과 폴더를 구분하여 표시.
/: 폴더
@: 심볼릭 링크
*: 실행 가능한 파일
ls -a숨김 파일(.으로 시작하는 파일)까지 포함하여 목록을 표시
ls -aF숨김 파일을 포함하여 파일과 폴더를 구분해 표시
ls -l각 파일, 폴더의 상세 정보(권한, 소유자, 크기, 수정 날짜 등)를 표시
파일 상세 정보 
d디렉토리
l심볼릭 링크
-일반 파일
단축 명령어 
llls -l의 단축 명령어로 상세 정보 표시
lals -a의 단축 명령어로 숨김 파일 포함한 목록 표시
ls / -R루트(/) 경로부터 모든 서브 디렉토리를 재귀적으로 조회
  • ls /var, ls -F /var, ls -a 실행 결과

    image


pwd, 현재 폴더 경로(디렉토리) 표시

항목설명
pwd현재 작업 중인 디렉토리 경로를 출력 (절대경로로 표시함)
[실행결과] /home/ubuntu

cat, 파일 내용 표시

항목설명
cat [파일명]파일의 내용을 출력
cat [파일1] [파일2]두 개의 파일을 한 번에 출력
cat [파일1] [파일2] > [결과파일]두 파일의 내용을 하나의 파일로 연결해서 저장

mkdir, 폴더 생성

명령어설명
mkdir test현재 경로에 test라는 폴더 생성
옵션 명령어 
mkdir yeah jinee여러 폴더(yeah, jinee)를 한 번에 생성
mkdir -p yeah/jinee존재하지 않는 상위 폴더까지 한 번에 생성 (cucu 폴더 내에 ttemy 폴더 생성)

cp, 파일 복사

명령어설명
cp lorem remlorem 파일을 rem이라는 새로운 이름으로 복사
cp lorem yeahlorem 파일을 yeah 폴더에 복사
옵션 명령어 
cp lorem ipsum jineeloremipsum 파일을 jinee폴더에 복사
cp -i lorem ipsum jinee덮어쓸 때 확인을 요청하여 파일 복사 (-i 옵션)
cp: overwrite ‘ttemy/lorem’?
cp -r yeah yeah2-r 명령어를 통해 디렉토리를 복사
yeah 폴더를 yeah2에 복사한 것
  • vi lorem

    image


    image


  • cp lorem rem

    image


mv, 파일 이동

명령어설명
mv ipsum mumuipsum 파일을 mumu 폴더로 이동
mv mumu yuyumumu 폴더의 이름을 yuyu로 변경

rm, 파일 삭제

명령어설명
rm loremipsumloremipsum 파일을 삭제
rm lorem ipsum두 개의 파일(lorem, ipsum)을 한 번에 삭제
폴더 삭제 
rmdir jinee비어있는 jinee폴더를 삭제 (비어 있지 않으면 삭제 불가)
rm -r jinsam폴더와 그 안의 모든 파일을 재귀적으로 삭제 (-r 옵션)

which, whereis, 특정 프로그램의 위치 (경로) 표시

  • 리눅스에서 수행되는 대부분의 명령어는 파일이자 프로그램이라고 볼 수 있다.
명령어설명
which특정 명령어(파일)의 위치를 찾을 때 사용
which rm → /usr/bin/rm : rm 명령어가 어디서 실행되는 지 확인
whereis실행 파일 외에 해당 실행 파일과 관련된 파일까지 조회
whereis rm → rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz
: rm 명령어의 실제 실행 파일은 /usr/bin/ 경로 아래에 있고,
해당 명령어의 도움말(man~)은 .gz(gzip) 파일의 형태로 압축되어 있음



리눅스 환경에서 스프링으로 빌드된 프로젝트를 실행하는 실습

실습 개요

Windows PC(Host OS)로 개발하던 환경 - 자유롭게 개발/테스트해보는 환경 -> 개발 환경
Ubuntu Linux(Guest OS) - 개발된 프로그램을 빌드해서 실행, 운영하는 -> 운영 환경

리눅스 환경에서 스프링으로 빌드된 프로젝트를 실행

1. 개발환경에서 개발했던 스프링 프로젝트를 가져와야 함
- git으로 땡기기(git clone)

2. 리눅스 환경에서 스프링 기반의 애플리케이션을 실행해야하기 때문에
스프링 애플리케이션을 실행할 수 있는 환경이 구성이 되어야 함

- jdk 설치
- 프로젝트를 빌드(패키징) -> 결과물이 .jar
1. gradle명령어를 사용할 수 있는 Gradle 자체를 설치해서 빌드하거나
2. ./gradlew파일이 있을 경우, gradlew build -> build/폴더가 생성됨

- .jar 실행 -> java -jar ooo.jar

3. Firefox 브라우저에서 테스트    



우분투 Git 설치

  • git 설치 명령어를 입력한다.

      $ sudo apt install git
    
  • 설치한 git의 버전을 확인한다.

      $ git --version
        
      //git version 2.25.1
    
  • github에서 사용하는 이름과 이메일을 입력한다.

      $ git config --global user.name [이름]
      $ git config --global user.mail [이메일]
    
  • 프로젝트 주소로 소스를 가져온다.

      $ git clone https://github.com/...
    


우분투에 Java 17 설치

  • apt를 업데이트 한다.

      $ sudo apt update
    
  • openjdk-17-jdk를 설치한다.

      $ sudo apt install openjdk-17-jdk
    
  • 자바가 설치 되었는지 확인한다.

      $ java -version
        
      //openjdk version "17.0.12" 2024-07-16
      //OpenJDK Runtime Environment (build 17.0.12+7-Ubuntu-1ubuntu220.04)
      //OpenJDK 64-Bit Server VM (build 17.0.12+7-Ubuntu-1ubuntu220.04, mixed mode, sharing)
    


우분투에 Gradle 설치

  • 기본 apt 패키지 매니저로 Gradle을 설치한다.

      $ sudo apt install gradle
    
  • 설치가 완료되면 버전을 확인한다.

      $ gradle -v
    

    image



Gradle로 Java 프로젝트 빌드

  • 클론 받은 프로젝트의 디렉터리로 이동한다.

      $ cd ubuntu_test
    
  • gradlew 파일이 있는 지 확인한다.

      $ ls
    

    image


  • build.gradle이 있는 경로에서 빌드를 실행한다.

      $ ./gradlew build
    
  • ./gradlew: Permission denied의 권한 에러가 발생하면 다음 명령어로 권한을 부여한다.

      $ chmod 755 gradlew
    
  • jar 파일이 있는 곳으로 이동한다.

      $ cd build/libs
    
  • 현재 디렉터리 내에 있는 파일을 확인한다.

      $ ls
      //demo-0.0.1-SNAPSHOT.jar demo-0.0.1-SNAPSHOT-plain.jar
    
  • demo-0.0.1-SNAPSHOT.jar 파일을 Java로 실행한다.

      $ java -jar demo-0.0.1-SNAPSHOT.jar
    

    image


5. 프로그램, 프로세스 관리

포그라운드와 백그라운드 프로세스 실행

  • 포그라운드(foreground)
    • 프로세스를 실행하면 키보드 입력을 받을 수 없으며, 프로세스가 완료되기 전까지 다른 작업을 할 수 없다.
  • 백그라운드(background)
    • 프로세스가 백그라운드에서 실행되어 사용자는 다른 작업을 추가적으로 수행할 수 있다.
    • 명령어 뒤에 &를 붙인다.

fg : 포그라운드 프로세스 제어

  • 일시 중지
    • Ctrl + Z
    • 포그라운드에서 실행 중인 프로세스를 일시 중지한다.
  • 재실행
    • fg
    • 일시 중지된 프로세스를 다시 포그라운드에서 실행한다.
  • 종료
    • 프로세스를 종료하려면 Ctrl + C를 사용한다.
    • 이 외에도 kill, jobs, ps 등의 명령어로 프로세스를 관리할 수 있다.

& : 백그라운드 프로세스 실행 및 관리

image


  • 백그라운드 실행
    • &를 명령어 뒤에 붙이면 프로세스가 백그라운드에서 실행된다.
    • 예: xeyes &
  • 실행중인 프로세스 확인
    • jobs 명령어로 현재 실행 중인 백그라운드 프로세스를 확인할 수 있다.
    • 실행 결과는 [작업 번호] 상태 프로세스 이름으로 나타난다.

        [1]- Running    xeyes &
        [2]+ Running    xeyes &
      
      • [1] : 작업 번호
        • : 현재 작업 (가장 최근 작업)
      • Stopped : 작업 상태
      • xeyes : 가장 최근에 정지된, 실행된 작업 이름
    • 옵션: 특정 이름으로 검색할 수 있으며, jobs %xey와 같은 방식으로 검색 가능하다.
  • 프로세스와 작업의 차이
    • 프로세스(process) : OS가 관리하는 실행단위로, 프로세스 ID(PID)를 통해 식별된다.
    • 작업(job) : 쉘(Shell)에서 관리하는 프로그램 실행 단위로, 작업 번호(job number)로 관리된다.
      • 작업 번호는 해당 쉘 내에서만 유효하다.

정지된 프로그램을 백그라운드로 전환

  • 일시 중지된 프로세스를 백그라운드에서 실행하려면 bg 명령어를 사용한다.

    image


  • 특정 프로세스를 재실행하려면 bg %작업번호로 지정할 수 있다.

    • fg %1 : 1번 작업만 선택하기
    • ^Z : 1번 작업 일시 중지하기
    • bg %1 : 1번 작업을 백그라운드에서 재실행하기

    image


실행중인 프로세스 종료

  • 현재 작업 종료
    • kill %% : 백그라운드에서 실행된 가장 최근 작업을 종료한다.
      • %% : 현재 작업을 의미하는 식별자
  • 프로세스 ID를 통해 종료
    • ps -ef : 모든 실행 중인 프로세스를 조회한다.

    image


    • 내가 실행한 프로세스 기준 xeyes 프로세스만 조회

    image


    • 특정 프로세스의 ID를 확인하고 kill [PID] 명령어로 종료할 수 있다.
  • 특정 프로그램 모두 종료
    • killall [프로그램 이름] : 동일한 이름의 모든 프로세스를 한 번에 종료한다.

    image


프로세스 상태 조회

  • 현재 실행 중인 프로세스 조회:
    • ps (process)
    • 현재 쉘에서 실행 중인 프로세스를 확인할 수 있다.
    • 기본 출력은 프로세스 ID(PID), 터미널(TTY), 실행 시간(TIME), 명령(CMD) 등을 포함한다.

    image


  • 모든 사용자의 프로세스 조회
    • ps -auxw
    • 현재 서버에서 실행 중인 모든 사용자들의 프로세스를 조회한다.

    image


  • 부모-자식 프로세스 조회
    • ps 명령어 실행 시, bash 쉘의 자식 프로세스로 실행된다.
    • ps -l : 프로세스 간의 부모-자식 관계를 확인한다.
      • PPID : 부모 프로세스 ID
      • PID : 자식 프로세스 ID
      • ps -lf 명령이 3397번 프로세스에서 실행되었고, 해당 프로세스의 부모 프로세스(PPID)는 3268이다. 3268번은 현재 사용자가 프롬프트로 사용중인 bash shell이 실행된 프로세스(PID)이다.

    image


우리 FISA 수업을 참고하였습니다.

© 2021. All rights reserved.

yaejinkong의 블로그