리눅스 명령어 기본개념과 정리

wooni·2023년 5월 1일
0

Linux

목록 보기
2/6

1. 패키지 관리

소프트웨어 패키지를 설치, 업데이트, 삭제하는 작업을 관리하는 시스템

  • 명령어

    1. 패키지 업데이트 및 업그레이드

      • apt update: 패키지 목록을 업데이트합니다.
      • apt upgrade: 설치된 패키지를 최신 버전으로 업그레이드합니다.
      • apt dist-upgrade: 패키지 간 의존성 문제를 고려하여 시스템 전체를 업그레이드합니다.
    2. 패키지 설치 및 삭제

      • apt install [패키지 이름]: 패키지를 설치합니다.
      • apt remove [패키지 이름]: 패키지를 삭제합니다.
      • apt purge [패키지 이름]: 패키지와 관련된 설정 파일까지 모두 삭제합니다.
    3. 패키지 검색

      • apt search [검색어]: 패키지를 검색합니다.
    4. 패키지 정보 확인

      • apt show [패키지 이름]: 패키지의 정보를 확인합니다.
    5. 의존성 문제 해결

      • apt-get -f install: 의존성 문제를 해결합니다.
    6. 기타

      • apt autoremove: 더 이상 필요하지 않은 패키지를 자동으로 삭제합니다.
      • apt list: 설치된 패키지 목록을 출력합니다.

2. 프로세스 관리

리눅스는 멀티테스킹 운영체제로, 동시에 여러 개의 프로세스를 실행할 수 있습니다
각 프로세스는 운영체제로부터 자원을 할당받아 실행됩니다.
리눅스에서는 프로세스를 생성하고, 중단하고, 관리하는 등의 작업을 프로세스 관리 기능으로 수행합니다.
또한 리눅스는 각 프로세스에 대해 PID(Process ID)를 부여하여 구분합니다. 이를 통해 운영체제는 각 프로세스의 상태를 추적하고, 필요한 경우 프로세스를 강제 종료시킬 수 있습니다.

  • 실행 중(Running): 현재 CPU를 점유하고 있는 상태
  • 대기 중(Waiting): CPU가 사용 가능해질 때까지 기다리는 상태
  • 정지(Stopped): 프로세스가 일시 정지된 상태
  • 종료(Terminated): 프로세스가 실행을 마치고 종료된 상태
  1. 프로세스란?
    • 운영체제에서 실행 중인 프로그램을 의미
  • 리눅스 프로세스 콜 (process call) 종류
  • fork() 함수를 이용하여 새로운 프로세스를 생성
  • exec() 함수를 이용하여 새로운 프로그램을 실행
  • wait() 함수를 이용하여 자식 프로세스가 종료될 때까지 부모 프로세스를 대기
  • 명령어 ps
    • ps -ef - 전체 프로세스 정보
    • ps -ef | grep [ ] - 프로세스 검색
    • kill -l - signal 정보보기
    • top - 프로세스 상태창 보기
      • shift+c: cpu 기준 정렬, m:메모리 기준 정렬
    • pstree -pn - 프로세스 트리 정렬

3. mount

물리적으로 존재하는 장치를 논리적인 디렉토리에 연결하는것을 의미
특정장치를 사용하기 위해 메모리를 할당

  • 명령어 mount -t <fs-type> <장치명> <directory>

    • mount -l - 마운트 정보 확인

    • df -h fdisk -l - 파티션 정보

      • ex) mount -t iso9001 /dev/cdrom /media/cdrom
        iso9001 파일을 dev/cdrom 에서 media/cdrom 으로 마운트
    • umount - 마운트 해제


4.사용자 관리

  • 사용자 관리의 이유

    리눅스는 다중 사용자 운영체제이기 때문에 사용자 계정 관리 기능을 제공
    이를 통해 시스템 관리자는 각 사용자에 대한 권한을 지정하고,
    시스템 보안을 유지를 위해 사용한다.

  • 관리방안

    사용자 계정을 생성하고, 수정하고, 삭제하는 등의 작업을 사용자 관리 기능으로 수행
    사용자 관리는 대부분 root 권한이 필요

  • 사용자 계정의 구분

    사용자 계정은 각각 고유한 사용자 ID(UID)와 그룹 ID(GID)를 가지며, 이를 통해 시스템은 각 사용자의 권한을 구분합니다. 사용자는 소속 그룹을 가질 수 있으며, 그룹 권한을 이용하여 사용자들 간의 공유 리소스에 대한 접근 권한을 설정할 수 있습니다.

  • 명령어 정리

    • useradd: 새로운 사용자 계정 생성
    • usermod: 사용자 계정 수정
    • userdel: 사용자 계정 삭제
    • passwd: 사용자 암호 변경
    • chown: 파일 소유자 변경
    • chgrp: 파일 그룹 변경
    • groups: 사용자가 소속된 그룹 확인
    • groupadd: 새로운 그룹 생성
    • groupmod: 그룹 수정
    • groupdel: 그룹 삭제
  • 예제

    • useradd yes : yes 사용자 계정생성
    • passwd yes : yes 사용자 passwd생성
    • useradd -m -d /home/yes yes : yes계정 생성시 홈디렉터리를 /home/yes로 지정
    • useradd -s /bin/csh yes : yes계정 생성시 login shell지정
    • usermod -L no : no user에게 LOCK을 건다
    • usermod -U no : Lock 해제
  • useradd 명령시 기본값 변경

    • useradd -D : default값 보기
    • useradd -D -s /bin/bash : 기본 shell 변경
    • nl /etc/shells : 사용가능한 shell종류 보기
    • vi /etc/login.defs / CREATE_HOME yes : vi에디터로 login.defs 파일을 열고 빈줄에 CREATE_HOME yes를 추가 후 저장하면 useradd시 자동으로 home_dir생성

    4-1 사용자 Group설정

    • Group의 사용이유
      • 그룹 권한을 이용하여 사용자들 간의 공유 리소스에 대한 접근 권한을 설정하기위해
    • 기본그룹
      • 계정을 추가하면 계정명과 같은 이름의 기본그룹이 생성
    • 포함그룹
      • 별도로 그룹을 생성한 후 그 그룹에 계정을 추가, 중복설정 가능
    • 사용예제
      • groupadd ABC : ABC 그룹 생성
      • nl /etc/group : 생성확인
      • usermod -G ABC yes : yes계정의 그룹 ABC로 변경

    4-2 사용자 용량제한

    버전마다 방법이 다름 현재 버전은 ubunto 20.04 기준

    1. vi에디터 편집
    • vi /etc/fstab 에서 /dev/disk/by-uuid/aa30 /home ext4 defaults끝에,usrquota 0 1입력
    • mount -o remount /home
    • quotaoff -avug
    • quotacheck -avugm
    • repquota -a
    • quotaon -avug

    1. 유예기간 설정
    • edquota -t

    1. quota설정
    • edquota -u <user> -- 기본단위 : Block (1 blcok = 1024 byte)
    • ex ) soft 5000 , hard 6000 변경 후 저장은 ctrl + o 엔터 후 ctrl + x
    • edquota -p <source-user> <target-user> quota복사

5.소유권과 허가권

  • 소유권

    • 파일이나 디렉토리를 소유한 사용자와 그룹을 나타낸다
    • 각 파일이나 디렉토리는 오직 하나의 사용자와 그룹만이 소유할 수 있다.
    • 소유자는 파일이나 디렉토리에 대한 모든 권한을 가지며, 그룹에 속한 다른 사용자들은 그룹 권한에 따라 파일이나 디렉토리에 대한 권한을 가질 수 있다.
  • 허가권

    • 일이나 디렉토리에 대한 접근 권한을 나타낸다.
    • 파일이나 디렉토리는 읽기, 쓰기, 실행 권한 중 하나 이상의 권한을 가질 수 있으며, 각 권한은 파일 소유자, 그룹, 그리고 모든 사용자에 대해 설정
    • 파일이나 디렉토리의 권한은 숫자로 나타내어지는데, 3자리 숫자로 표현되며, 각 자리수는 소유자, 그룹, 모든 사용자에 대한 권한을 나타낸다.
  • 권한읽기

기호숫자권한의 의미
r4read-only 권한 (읽기 권한)
w2write 권한 (쓰기 권한)
x1execute 권한 (실행 권한) 또는 directory access 권한 (디렉토리 진입 권한)
0-권한없음
  • 예시

    • 파일 권한이 "-rwxr-xr--" 일 경우,
      • 소유자는 읽기, 쓰기, 실행 권한을 가지고 있으므로 "4+2+1 = 7"
      • 그룹은 읽기와 실행 권한을 가지고 있으므로 "4+1 = 5"
      • 다른 사용자는 읽기 권한만 가지고 있으므로 "4"
      • 따라서, 권한 숫자는 "755"가 됩니다.
  • 명령어

    • chmod +x <파일명> : 전체에 실행권한 추가
    • chmod -w <파일명> : 전체에 쓰기권한 추가

    5-1 umask

    • umask란?
      • 사용자가 파일 생성시 자동으로 권한을 조정해주는 값
      • 현재 umask값 보기 : umask -S

    • umask default값
      • root : 0022
      • user : 0002
    • root에서 directoy를 만들때
      전체권한 : 7  7  7
       umask : 0  2  2
       -
               7  5  5
    • root에서 file 만들때
      디렉토리 : 7  5  5
       umask : 1  1  1
      -
               6  4  4

    Sticky bit

    • 스티키 비트(sticky bit)란?
      • 특별한 파일 권한 중 하나로, 디렉터리에 적용
      • 스티키 비트는 디렉터리 내부의 파일과 디렉터리를 삭제하는 것을 제한하는 기능
      • 스티키 비트가 설정된 디렉터리의 경우, 해당 디렉터리 내의 파일과 디렉터리는 소유자 또는 슈퍼유저(root)만이 삭제할 수 있습니다. 그 외의 사용자는 해당 파일이나 디렉터리가 있는 디렉터리에 쓰기 권한이 있더라도 삭제할 수 없습니다.
      • 파일 권한 비트 중 마지막 비트로, 숫자 표기법으로는 "1"로 나타냅니다. 예를 들어, "drwxrwxrwt"와 같은 디렉터리 권한에서 "t"가 스티키 비트를 나타냅니다.

    • 예시
      • rwxrwxrwt : chmod 1777 <파일이름>
      • 3자리 권한 앞에 1을 붙인다. 이 권한은 폴더(디렉토리)에만 내릴수 있다.

6. 예약작업(atd), 반복작업(crond)

6-1 예약작업(atd)

  • 일회성으로 실행되는 작업을 지정된 시간에 실행하는 방법입니다.
  • 주로 시스템 유지보수 작업이나 데이터 백업과 같은 일회성 작업을 예약할 때 사용
  • 명령어 : at

  • 간단예제

    • 현재 시간으로부터 10분 후에 /home/user/backup.sh 스크립트를 실행하도록 예약
    at now + 10 minutes
    at> /home/user/backup.sh
    at> CTRL+D

6-2 반복작업(crond)

  • 주기적으로 반복되는 작업을 스케줄링하는 방법

  • 명령어 : crontab -e

  • 간단예제

    • 매 시간마다 /home/user/check_log.sh 스크립트를 실행하고 싶다
    • vi /etc/crontab
    • 파일 맨아래에 0 * * * * user /home/user/check_log.sh 작성
    • 0 * * * *는 매 시간 0분에 실행을 의미
profile
Backend

0개의 댓글