Post

LINUX

01. 리눅스

  • 모든 인터렉션은 파일을 읽고, 쓰는 것처럼 이루어져있음
  • 파일 네임스페이스는 전역 네임스페이스를 사용

  • 리눅스 설치 방법
    1. 가상 머신 소프트웨어 - PC 환경에 따라서 복잡한 편.
    2. 클라우드 컴퓨팅 서비스 활용 - 동일한 환경에서 사용 가능, 주로 AWS

02. 리눅스 명령어

리눅스 명령어, 즉 쉘이 제공하는 명령어

명령어설명예시주요 옵션
whoami현재 로그인한 사용자 ID를 출력합니다.whoami 
sudoroot 권한으로 명령어를 실행합니다.sudo apt-get update-i: 로그인 셸로 실행
   -u [user]: 지정한 사용자로 실행
   -k: 자격 증명 캐시 무효화
pwd현재 작업 중인 디렉토리의 절대 경로를 출력합니다.pwd 
ls현재 디렉토리의 파일과 디렉토리 목록을 출력합니다.ls-l: 자세한 정보, -a: 숨김 파일 포함, -h: 사람이 읽기 쉬운 형식
cd작업 디렉토리를 변경합니다.cd /home/user1 
mkdir새로운 디렉토리를 생성합니다.mkdir new_directory 
rm파일을 삭제합니다.rm file.txt-r: 디렉토리 재귀 삭제, -f: 강제 삭제
cp파일이나 디렉토리를 복사합니다.cp source.txt destination.txt-r: 디렉토리 재귀 복사
mv파일이나 디렉토리를 이동하거나 이름을 변경합니다.mv oldname.txt newname.txt 
touch파일의 타임스탬프를 갱신하거나 새로운 빈 파일을 생성합니다.touch newfile.txt 
chmod파일이나 디렉토리의 권한을 변경합니다.chmod 755 script.sh 
chown파일이나 디렉토리의 소유자와 그룹을 변경합니다.chown user1:group1 file.txt 
ps현재 실행 중인 프로세스 목록을 출력합니다.ps-e: 모든 프로세스, -f: 풀 포맷 출력
top실시간으로 시스템의 프로세스와 자원 사용 현황을 표시합니다.top 
df파일 시스템의 디스크 사용량을 표시합니다.df-h: 사람이 읽기 쉬운 형식으로 출력

03. 파일 권한

리눅스 계열 시스템에서 파일 권한은 사용자가 파일 및 디렉토리에 접근하고 조작할 수 있는 방법을 결정합니다. 파일 권한은 다음과 같이 구성됩니다:

사용자 유형

  1. 소유자 (Owner)
    • 파일이나 디렉토리를 만든 사용자로, 해당 파일이나 디렉토리의 소유자입니다.
    • 소유자는 자신의 파일에 대한 읽기, 쓰기, 실행 권한을 설정할 수 있습니다.
  2. 그룹 (Group)
    • 파일이나 디렉토리에 할당된 사용자 그룹입니다.
    • 그룹 내의 모든 사용자는 해당 그룹에 지정된 권한을 가집니다.
  3. 공개 (Others)
    • 소유자와 그룹에 속하지 않는 모든 다른 사용자입니다.
    • 공개 사용자에 대한 권한은 일반적으로 가장 제한적입니다.

퍼미션 종류

리눅스에서는 세 가지 기본 퍼미션 종류가 있습니다:

  1. 읽기 (Read, r)
    • 파일의 내용을 읽을 수 있는 권한입니다.
    • 디렉토리의 경우, 디렉토리 내 파일 목록을 볼 수 있는 권한입니다.
  2. 쓰기 (Write, w)
    • 파일의 내용을 수정하거나 삭제할 수 있는 권한입니다.
    • 디렉토리의 경우, 디렉토리 내 파일을 생성, 삭제, 이름 변경할 수 있는 권한입니다.
  3. 실행 (Execute, x)
    • 파일을 실행할 수 있는 권한입니다.
    • 디렉토리의 경우, 디렉토리 내 파일이나 디렉토리에 접근할 수 있는 권한입니다.

퍼미션 표현 방식

리눅스 파일 시스템에서 퍼미션은 주로 두 가지 방식으로 표현됩니다:

  1. 기호적 표현 (Symbolic Representation)
    • 파일 권한을 세 부분으로 나누어 r, w, x 문자로 표현합니다.
    • 예를 들어, -rwxr-xr--는 다음을 의미합니다:
      • 소유자: 읽기(r), 쓰기(w), 실행(x)
      • 그룹: 읽기(r), 실행(x)
      • 공개: 읽기(r)
  2. 8진수 표현 (Octal Representation)
    • 각 권한을 8진수 숫자로 표현합니다.
    • 읽기 = 4, 쓰기 = 2, 실행 = 1로 합산합니다.
    • 예를 들어, -rwxr-xr--755로 표현됩니다:
      • 소유자: 7 (읽기+쓰기+실행 = 4+2+1)
      • 그룹: 5 (읽기+실행 = 4+1)
      • 공개: 4 (읽기)

04. 입출력과 리다이렉션

리눅스에서 명령어로 실행되는 프로세스는 기본적으로 세 가지 스트림을 가지고 있습니다:

  1. 표준 입력 스트림 (stdin)
    • 기본적으로 키보드 입력을 받는 스트림입니다.
    • 파일 디스크립터 번호: 0
  2. 표준 출력 스트림 (stdout)
    • 기본적으로 화면(터미널)에 출력하는 스트림입니다.
    • 파일 디스크립터 번호: 1
  3. 오류 출력 스트림 (stderr)
    • 오류 메시지를 화면(터미널)에 출력하는 스트림입니다.
    • 파일 디스크립터 번호: 2

리다이렉션 (Redirection)

리다이렉션은 표준 스트림의 흐름을 변경하는 기능을 말합니다. 이를 통해 입력과 출력을 파일이나 다른 명령어로 변경할 수 있습니다.

아래는 리다이렉션 명령어를 표로 정리한 것입니다:

리다이렉션 명령어설명예시
>표준 출력을 파일로 리다이렉션 (덮어쓰기)ls > filelist.txt
>>표준 출력을 파일에 추가 리다이렉션echo "New line" >> filelist.txt
<파일을 표준 입력으로 리다이렉션sort < unsorted.txt
2>오류 출력을 파일로 리다이렉션ls non_existing_file 2> error.log
&>표준 출력과 오류 출력을 동시에 파일로 리다이렉션command &> output.log
\| (파이프)한 명령의 출력을 다른 명령의 입력으로 사용ls \| grep "txt" (ls 명령으로 해당 파일 중에 txt 파일이 있는지 출력)
> output 2>&1표준 출력과 오류 출력을 같은 파일로 리다이렉션command > output.log 2>&1
2>&1 > output표준 출력과 오류 출력을 각각 다른 파일로 리다이렉션command > output.log 2> error.log

05. 프로세스

리눅스에서 프로세스는 실행 중인 프로그램을 의미하며, 프로세스는 여러 상태로 실행될 수 있습니다. 두 가지 주요 프로세스 유형은 다음과 같습니다:

Foreground Process

  • 설명:
    • 포그라운드 프로세스는 사용자가 터미널에서 명령을 입력하고 바로 실행되는 프로세스입니다.
    • 사용자가 다른 입력을 할 수 없으며, 프로세스가 종료될 때까지 터미널을 점유합니다.
  • 예시:
    1
    
    $ tar -czf archive.tar.gz /path/to/directory
    

    이 명령어가 실행되는 동안 사용자는 다른 작업을 수행할 수 없습니다.

Background Process

  • 설명:
    • 백그라운드 프로세스는 사용자가 터미널에서 명령을 입력하고, ‘&’ 기호를 붙여 실행시키면 백그라운드에서 실행됩니다.
    • 터미널을 점유하지 않으며, 사용자는 다른 명령을 입력하고 작업을 계속할 수 있습니다.
  • 예시:
    1
    2
    
    $ tar -czf archive.tar.gz /path/to/directory &
    [1] 1234
    

    이 명령어는 백그라운드에서 실행되며, 사용자는 터미널을 계속 사용할 수 있습니다. [1] 1234는 작업 번호와 프로세스 ID를 나타냅니다.

프로세스 관리 명령어

명령어설명예시
jobs현재 쉘 세션에서 백그라운드로 실행 중인 작업 목록을 보여줍니다.jobs
fg백그라운드 프로세스를 포그라운드로 가져옵니다.fg %1
bg일시 중지된 백그라운드 프로세스를 재개합니다.bg %1
kill프로세스를 종료합니다. 일반적으로 kill 명령어 뒤에 프로세스 ID(PID)를 사용합니다.kill 1234
ps현재 실행 중인 프로세스 목록을 보여줍니다.ps
top실시간으로 시스템의 프로세스와 자원 사용 현황을 보여줍니다.top

06. 링크

기타

This post is licensed under CC BY 4.0 by the author.