리눅스 기본 명령어

Easycelsius·2021년 7월 4일
0

Linux

목록 보기
1/1
post-thumbnail

리눅스 명령어

제일 처음 로그인시 자신의 로그인 아이디와 동일한 디렉토리 위치에서 프롬프트 시작

pwd, ls 명령어

ls -l : 구체적인 정보

  • 각 디렉토일 파일 실행(수정) 권한 / 소유자(계정) / 그룹(계정) / 파일크기(바이트) / 생성 또는 최종 수정 시간 / 파일명
  • 각 디렉토일 파일 실행(수정) 권한
    • 예시 : "- rwx rwx rwx", "d rwx r-x r-x", "l rwx r-- ---"
    • 사용자와 other로 구분
    • 파일 : "-" / 디렉토리 : "d" / 링크 : "l"
    • 첫번째 rwx는 user의 권한 / 두번째 rwx는 group 권한 / 세번째 rwx는 other의 권한 => 각 3bits 표현
      • 2^0 = 1 (실행 권한), 2^1 = 2 (쓰기 권한), 2^2 = 4 (읽기 권한)
      • 4+2+1 = 7인 경우, 모든 권한을 부여
      • 4+0+1 = 5인 경우, 읽기와 실행 권한 부여
      • 4+2+0 = 6인 경우, 읽기와 쓰기 권한 부여
    • 읽기(read) : "r" / 쓰기(write) : "w" / 실행(execute) : "x" / 권한없음 : "-"

ls -al : 숨겨진 차일 전부 출력

ls -li : 링크된 파일 포함해서 출력

chmod 명령어

  • change mod

    chmod 권한 파일명

  • 예시

    chmod 775 a.out : rwx rwx r-x로 변경

    chmod 664 a.out : rw- rw- r--로 변경

    chmod 764 a.out : rwx rw- r--로 변경

    chmod 400 TripLive.pem : r-- --- ---로 변경

  • 다른 명령어 (u g o, + -, r w x)

    chmod g-x a.out : 그룹의 실행 권한을 빼버림

    chmod o+x a.out : other의 실행 권한을 추가함

    chmod u-w a.out : 유저의 쓰기 권한을 빼버림

mkdir/touch/rm 명령어

디렉토리와 파일을 만들기 위해서는 아래와 같이 명령어를 사용

mkdir 디렉토리명 : 디렉토리 생성

rm -r 디렉토리명 : 디렉토리 삭제

touch 파일명 : 파일 생성

rm -f 파일명 : 파일 삭제

cd 명령어

/
/root 
/home
/home/guest1
/home/guest1/dir1
/home/guest1/dir2
  • 리눅스의 디렉토리 모양
  • 절대경로를 기준으로 하위의 디렉토리가 만들어지는 구조
  • 리눅스의 계정 생성시 홈 디렉토리 밑에 계정이 생성 --> 로그인시 해당 디렉토리서부터 시작 : home/guest1
/ 절대 위치 기준
./ 현재 위치
../ 현재보다 상위 위치
~/ Home 위치 기준
  • cd (change directory) : 디렉토리 변경 명령어
절대 경로 기준 cd /home/guest1/dir1
현재 경로 기준 cd ./dir1
홈 경로 기준 cd ~/dir1

cd /home/guest1/dir1

mv 명령어

  • 파일과 디렉토리를 이동하거나 이름을 바꿀 수 있는 mv 명령어

  • 이동시키면서 이름도 변경할 수 있음

  • mv source destination

    mv myfile yourfile : "myfile"을 "yourfile"로 변경

    mv yourfile ./dir/. : "yourfile"을 dir안으로 이동

cp 명령어

  • copy

  • cp source destination

    cp file2 file3 : "file2"를 "file3"로 복사

    cp file2 ./dir2/myfile2 : "file2"를 dir2 내 "myfile2" 이름으로 복사

    cp -r srcdir desridr : 경로 디렉토리 복사

ln 명령어

  • 링크 개념 잡기
  • 파일 링크의 개념
    • Link File Table(링크주소)과 Filesystem(물리주소)간 inode로 매핑하는 경우
    • inode는 unique값
    • Filesystem 내 Ref 값은 참조하는 값으로 1이면 그 주소를 하나만 참조하는 경우이고, 2이면 2개 파일이 참조하는 경우임
    • 파일명을 클릭할시 Link File Table에서 inode 값을 찾고, 해당 inode 값으로 실제 물리적으로 저장된 파일을 여는 방식
    • 만약 삭제를 하게 되면 같은 방식으로 해당하는 inode값을 찾아서 물리주소에서 지우는 형태
      • Ref가 1이었기 때문에 삭제 요청으로 0이 될 때 해당 물리주소값이 삭제됨
      • 만약 Ref가 2였고, 하드링크로 연결된 다른 한 파일을 삭제한다고 해도 Ref값이 1로 변할 뿐, 삭제되지는 않음
  • 하드링크는 동일한 물리주소를 가지는 파일을 같은 주소로 참조하게 만드는 경우를 의미

  • 원본과 복사본이 동일한 주소를 참조하는 경우임

  • 두 파일 중 하나만 수정되더라도 동시에 수정되는 효과를 가짐

  • 둘 중 하나를 삭제해도, 다른 한쪽의 파일에는 영향을 주지 않음 (Ref 값이 2였는데, 단순히 1로 변하는 것)

  • 파일에만 사용할 수 있음, 디렉토리 사용 불가

  • ln -s source target

    ln file1 myfile : file1과 myfile은 같은 주소를 참조 중(ls -li로 확인 가능)

  • 윈도우의 바로가기 버튼과 같음

  • 디렉토리 파일의 바로가기 기능

  • 소프트링크는 링크파일이 링크파일을 참조하는 기능

  • ln -s source target

    ln -s dir1 dir

  • 라이브러리 개발시 이러한 형태를 가짐

    ln -s library.0.1.so library.so : library.so -> library.0.1.so

    touch library.0.2.so : library.0.2.so 파일 생성

    rm -f library.so : library.so 파일 삭제

    ln -s library.0.2.so library.so : library.so -> library.0.2.so

cat 명령어

  • 파일 입출력 관련 명령어

  • cat 파일명

    cat test.c : 모니터에 출력

    cat test.c | more : 파이프라인을 통해 보기 편하게 출력

  • cat source > target : 출력의 방향을 변화 : 복사와 동일

    cat a.c > b.c

    cat b.c

    cat a.c >> b.c : a.c 내용을 b.c 에 두번 복사해서 붙여넣기

head, tail 명령어

  • 파일의 일부 명령어 만 출력

    head test.c

    tail test.c

  • tail -f 파일명 : 파일 마지막에 데이터가 추가되는 즉시 화면에 출력

    tail -f system.log

grep 명령어

  • 검색하고자 하는 문자열을 옵션으로 주면 해당 문자와 일치하는 파일이 있는지 찾아줌

  • grep 문자열 파일이름

    grep -H test *.log

    grep -H test1 *.log

  • grep -w 문자열 파일이름 : 정확하게 일치하는 문자찾기

    grep -Hw test1 *.log

less 명령어

  • 텍스트 뷰어 기능만 가지고 있음
  • vim과는 다르게 해당 파일을 메모리에 올리지 않고 화면에 있는 내용만 메모리로 읽음
  • 만약 vim으로 1GB 정도되는 로그파일을 열어버릴시, 메모리가 1GB가 올라가버리고, 원격일 때는 1GB의 traffic이 발생해버림

리눅스 시스템 명령어

tar 명령어

  • 압축하거나 압축된 파일을 풀어보는 명령어

  • 압축하는 경우 : tar cvfz 압축파일명 압축하고자하는파일디렉토리

    • tar cvfz target.tar.gz ... ...
    • c = creat / z = gzip
    • tar.gz 는 tar라는 명령어로 파일을 묶어서 gz라는 명령어로 압축했다는 의미

    tar cvfz backup.tar.gz ./dir3 ./file3 ./system.log

    tar cvfz backup.tar.gz *

  • 압축 해제하는 경우 : tar xvfz source.tar.gz ... ...

  • x = extract

sudo 명령어

  • root = 리눅스 시스템의 최고 권력 = 슈퍼 관리자

  • ip 설정, 네트워크 작업, 웹 서버, 인증서 설치, rebooting, halt, ...

  • root = sudo

  • root가 처음 한번은 sudo 권한 부여를 위해 설정을 해야 함

    • 계정이름 ALL=(ALL:ALL) NOPASSWD:ALL
    1. 루트로 접속하기

      vi /etc/sudoers

      root 계정 아래 사용할 user를 추가할 것

      예시:

      guest1 ALL=(ALL:ALL) NOPASSWD:ALL

  • sudo 명령어 옵션

    • 일반 사용자가 root 권한을 얻게 됨으로 조심히 사용할 것

chown 명령어

  • 파일 또는 디렉토리의 소유자와 그룹명을 변경하는 명령어

  • change own

  • change user : group target

    sudo chown guest2:guest2 test.c

find 명령어

  • 검색 조건이 상당히 많음, 거의 모든 기준으로 파일을 검색할 수 있음

    • 최근 변경된 파일, 생성 시간 기준, 파일 크기, 링크 파일 여부, inode 번호, user/group 권한별, 파일유형, 파일이름 등 등...
  • 찾고자하는 파일이나 디렉토리 위치 검색에서 주로 사용

  • find 경로 조건 target

    • 권한이 없는 경로를 찾아야 하는 경우 앞에 sudo를 붙이면 됨

    find . -name system.log : 현재 디렉토리에서 이름으로 system.log를 찾아라

which 명령어

  • 명령어가 어느 위치에 있는지 찾는 것

    which ls : ls 명령어의 위치

    which python3 : python3 명령어의 위치

top 명령어

  • 운영중인 서버의 CPU와 메모리 상태를 확인할 수 있는 명령어

  • 상단에 있는 정보 : CPU와 메모리 사용률

  • 하단에 있는 정보 : 프로세스별 CPU/메모리 사용률

  • 기본적으로 갱신되는 시간은 3초

    • 변경하고 싶으면 top 화면에서 "d" 누르고 "1" 입력 후 엔터

    • 아니면 top 명령어 실행시

      top -d 1

w, who 명령어

  • 리눅스에 접속한 사용자를 확인할 수 있는 명령어

    w

  • 접속한 계정정보, IP, 로그인 시간, CPU 사용률, 현재 어떤 작업을 진행중인지 출력

  • 간단하게 who를 사용해서 간단하게 확인할 수도 있음

    who

ping 명령어

  • 네트워크 설정이 잘되어있는지 인터넷이 잘 동작하는지 알아보기 위해 알아보는 명령어

  • ping 도메인주소

    ping google.com

    ping 216.58.200.78

  • ip 정보와 레이턴시가 얼마인지도 출력

    • icmp 프로토콜의 기능
    • 레이턴시 = 핑을 실행한 장비로부터 해당 목적지의 장비까지 왕복되는 시간
    • 즉 레이턴시 값이 작을 수록 인터넷이 빠름
    • 가끔씩 ping이 unreachable이 되는 경우 네트워크 장애를 확인할 수도 있음

nslookup

  • 도메인 주소를 ip주소로 변환시켜주는 명령어

  • nslookup domain

    nslookup google.com

ps 명령어

  • 현재 리눅스 서버의 구동 중인 프로세스의 정보를 출력해주는 ps 명령어가 있음

  • Processor = CPU

  • Process = 실행 파일이 메모리에 업로드된 상태

  • 즉, 실행중인 파일이 무엇인지 알아보는 명령어

  • ps -ef | grep 문자열 : 특정 프로세스의 상태를 확인하는 명령어

    ps -ef : 현재 리눅스 서버에서 구동중인 모든 프로세스 상태 출력

    ps -ef | grep apache

  • 프로세스 id : 각 프로세스마다 할당된 유니크한 번호 (inode와 유사한 개념)

  • 부모 프로세스의 번호 (프로세스 id 뒤의 id)

kill 명령어

  • 프로세스를 죽이는 명령어
  • 본인 소유의 프로세스거나 루트 권한으로 실행된 것만 프로세스가 죽음
  • kill -9 process.id

adduser, deluser 명령어

  • 사용자 계정 추가/삭제 명령어

  • adduser 사용자ID

    sudo adduser guest2

    비밀번호 입력 및 비밀번호 확인

  • su -l 사용자ID : 다른 사용자로 변경

    su -l guest2 : guest2 계정으로 접속하기

    exit : 계정 빠져나오기

  • deluser 사용자ID

    • 기본적으로 home 디렉토리 내에 삭제는 안됨
    • 옵션을 추가해서 디렉토리도 같이 삭제

    sudo deluser --remove-home guest2

uname, hostname, reboot, halt 명령어

uname -a : 시스템 정보확인

hostname : 이 서버의 별명 = 리눅스 설치할 때 정한 이름

sudo reboot : 시스템 재시작

halt : 시스템 완전 셧다운

halt -p : 시스템 완전 셧다운(전원까지)

man 명령어

  • 리눅스 명령어 메뉴얼을 보는 명령어

  • 개발자를 위한 프로그래밍 메뉴얼 기능 제공

  • 예시

    man cat

    man 3 라이브러리(함수명)

참고 : 리눅스 명령어 모음 | 초중급 개발자를 위한 기본 명령어 강좌

profile
항상 성장하고 싶은 개발자

0개의 댓글