[Linux] Linux 많이 사용하는 명령어 모음

신광진·2021년 5월 1일
1

Linux 명령어 모음

목록 보기
7/7
post-thumbnail

OVERVIEW

실무에 들어와서 리눅스 환경에 친숙해지기 위해 명령어를 하나씩 정리하고 있었는데 유튜브에서 좋은 영상을 발견해서 그 영상에 대한 정리를 하려고 한다.

https://www.youtube.com/watch?v=9_KIdQ8abH4&t=682s (시골사는개발자 님)

명령어 모음

  • pwd (print working directory)
    • 현재 사용자가 위치하고 있는 경로를 출력해줌.
  • ls (list)
    • 현재 위치한 디렉토리에 있는 파일과 디렉토리 리스트를 보여줌
    • options
      • ls -l : 파일과 디렉토리에 대한 내용을 구체적으로 출력함
        (권한 소유계정 그룹계정 파일크기[Byte] 생성날짜 파일이름)
      • ls -a : 현재 디렉토리에서 숨김파일을 포함하여 출력함
      • ls -li: ls-l상태에서 inode번호를 함께 출력함
      • ll: ls-l과 동일함
  • chmod (change Mode)
    • 권한 변경
    • chomd 664 fileName (ex. chomd 664 note.txt)
    • chmod u+x fileName (ex. chomd u+x note.txt)
    • u(user), g(group), o(other)를 의미하며 +는 권한부여, -는 권한박탈
      (ex. u+x => 유저에게 execute권한을 부여)
  • mkdir (make Directory)
    • 디렉토리를 생성함
    • mkdir dirName
  • touch
    • 빈 파일 생성
    • touch fileName
  • rm (remove)
    • 파일삭제 명령
    • rm fileName
    • rm -r dirName (-f 옵션이 없으면 directory는 지워지지 않음)
  • cd (change Directory)
    • 디렉토리를 이동함
    • cd path
  • mv (move)
    • 파일, 디렉토리를 이동시키거나 이름을 변경시키는 명령어
    • mv file1 file2 (이름변경)
    • mv file1 dir1 (file을 dir로 이동시킴)
    • mv dir1 dir2 (dir1을 dir2 하위로 이동)
  • cp (copy)
    • 파일, 디렉토리를 복사함
    • cp file1 copy_file
    • cp -r dir1 copy_dir (-r 옵션이 없으면 directory복사 안됨)
  • ln (link)
    • 링크파일을 생성함
    • ln -s source target (softlink, target은 source를 참조)
    • ln source target (hardlink, 같은 inode번호를 가진다.)
  • cat
    • 파일의 내용을 출력함
    • cat FileName (fileName의 내용을 출력)
    • cat FileName | more (내용이 많을경우 좀 더 편하게 볼 수 있음)
    • cat source > target
      (출력의 방향을 파일로 변경함, source를 target으로 복사했다고 볼 수 있다. 조심해야 하는점은 만약 target으로 지정한 파일의 이름이 이미 존재하는 경우 그 파일에 source의 내용이 덮어씌워진다.)
    • cat source >> target (source의 내용이 target파일에 append됨)
  • head
    • 파일의 맨 앞에서 몇 라인만을 출력함
    • head fileName
    • option으로 Line수를 지정할 수 있다.
  • tail
    • 파일의 맨 아래부분 몇 라인만을 출력함
    • tail fileName
    • tail -f fileName (파일의 마지막에 데이터가 추가되는 즉시 파일의 내용을 출력해줌, 개발 시 로그파일을 볼 때 많이 사용한다.
  • grep
    • 검색하고자 하는 문자를 옵션으로 주면 해당 문자열과 일치하는 파일을 찾아준다.
    • grep 문자열 파일이름 (ex. grep test *.log)
    • grep -H 문자열 파일이름 (어떤 파일인지를 함께 출력해줌)
    • grep -w 문자열 파일이름 (입력한 문자열과 정확히 일치하는 파일만을 출력)
  • less
    • 파일을 열고 내용을 볼 수 있는 TextViewer기능을 가진다.
    • 목적도 용도가 vi와는 다르기 때문에 별도로 알아야 할 필요가 있다.
      • 1GB정도 되는 로그파일을 vi로 열게되면 1GB가 모두 메모리에 올라가고, 네트워트 트래픽 또한 1GB만큼 발생하게 된다. 하지만 less명령어를 이용하여 열면 화면에 보이는만큼만 메모리에 올라간다. 즉, 용량이 큰 로그파일을 열때는 less명령어를 사용하는 것이 좋다.

System 명령어

  • tar

    • 압축관련 명령어
    • tar cvfz target.tar.gz source1 source2
      (source1, source2를 target으로 압축한다. 현재 디렉토리를 모두 압축하고 싶은경우에는 *를 사용한다.)
    • cvfz중 c가 create를 의미한다는 정도만 알아두어도 된다.
    • tar.gz는 tar(파일과 디렉토리를 한 묶음으로 만듬)라는 명령어를 이용하여 gzip으로 압축한다는 의미이다.
    • tar xvfz source.tar.gz
    • xvfz중 x는 extract를 의미하며 압축을 해제할 때 사용한다.
    • 압축과 압축해제는 옵션까지 한 묶음으로 숙지하는것이 좋다.
  • sudo

    • 관리자 권한을 사용할 수 있는 명령어
    • root계정으로 접속하여 etc/sudoers(CentOS 7기준)파일에서 계정에 권한을 주어야 함.
      (Allow root to run any commands anywhere 아래에 등록하면됨)
  • chown (change Owner)

    • 파일 또는 디렉토리의 소유자, 그룹명을 변경하는 명령어
    • 소유권을 뺏을수도 있는것이기 때문에 관리자 권한이 필요하다. (sudo)
    • chown user: group(or user) target
  • find

    • 파일이나 디렉토리를 찾을 때 사용하는 명령어
    • 검색조건이 매우 다양하다.
    • find 경로 조건 target (ex. find ./ -name system.log)
  • which

    • 명령어의 위치를 조회하는 명령어
    • which 찾을명령어 (ex. which ls) => /bin/ls)
  • top

    • 운영중인 서버의 CPU, Memory등의 상태를 확인하는 명령어
    • 상단에는 CPU사용률과 메모리 사용률을 표시한다.
    • 하단에는 프로세스 별 CPU사용률과 메모리 사용률을 표시한다.
    • 갱신하는 주기는 default 3초이다.
      • 매 초마다 갱신하고 싶다면 화면에서 d를 누르고 1을 입력하거나 top명령어를 실행할 때 top -d 1처럼 옵션을 입력하여 실행해도 된다.
    • 실행화면에서 h를 누르면 사용할 수 있는 명령어가 나온다.
  • w

    • 현재 리눅스 장비에 접속한 사용자가 누구인지 조회하는 명령어
    • 사용자 아이디, 접속한 시간, IP, CPU사용률, 어떤 작업을 수행중인지 출력한다.
    • 간단하게 보고싶으면 who명령어를 사용하면 된다.
  • ping

    • 네트워크 설정이 잘 되어 있는지 알아보는 경우에 많이 사용함
    • ping domain(or IP) (ex. ping google.com)
  • nslookup

    • domain을 이용하여 IP를 알아낼 때 사용하는 명령어
    • nslookup domain (아이피주소 반환)
  • ps (process status)

    • 현재 구동중인 모든 프로세스 정보를 조회할 때 사용하는 명령어
    • 너무많은 정보를 보여주기 때문에 주로 옵션과 함께 사용한다.
    • ps -ef |grep apache (프로세스 중 apache가 들어간 것을 조회)
    • PID는 각 프로세스마다 할당되는 유니크한 번호이다.
    • PID오른쪽에는 해당 프로세스의 부모 프로세스 PID를 나타낸다.
  • kill

    • 프로세스를 종료하는 경우 사용하는 명령어
    • PID를 이용하여 종료시킨다.
    • kill은 관리자 권한이 필요하다.
    • kill -9 PID (-9옵션을 주면 강제종료 한다.)
  • man

    • 명령어에 대한 메뉴얼을 제공
    • man 3 sleep처럼 3을 옵션으로 주면 프로그래밍에 대한 메뉴얼도 제공받을 수 있다.
  • adduser

    • 새로운 사용자를 추가하는 경우에 사용하는 명령어
    • 관리자 권한이 필요한 명령어
    • adduser 사용자ID
  • su

    • 사용자를 변경할 때 사용하는 명령어
    • su - (root계정 접속)
    • su -l userID (해당 userID로 접속)
  • deluser

    • 사용자를 삭제하는 경우에 사용하는 명령어
    • 관리자 권한이 필요한 명령어
    • deluser 사용자ID

권한

ls -l을 이용하여 디렉토리 정보를 출력하면 맨 앞쪽에 drwxrwxrwx처럼 권한에 대한 내용이 출력된다.
이 권한에 대해 이해하고 있을 필요가 있다.
가장 먼저 나오는 알파벳은 파일의 유형을 의미하며 d, l, -로 나뉘고 각각 directory, link, file을 의미한다.
권한정보인 rwx는 각각 read write execute를 의미한다.
예를들어 --x권한을 가지고 있다면 읽거나 쓰지는 못하고 실행만 할 수 있다.
권한정보는 rwx(User 권한) rwx(Group 권한) rwx(Other 권한)처럼 3자리씩 끊어서 하나의 세트로 볼 수 있다.
또한 rwx를 숫자로 표현하면 421로 표현할 수 있다 (이진수 표기법)

리눅스에서 Link는 Hard LinkSoft(Symbolic) Link)가 있다.

사람은 좌측에 있는 테이블 형태가 보기 편하지만 컴퓨터 입장에서는 좌측에 있는 테이블이 연산하기에 더 효율적이다.
이러한 이유로 두 테이블을 연결할 수 있는 key인 inode를 이용한다.
inode는 파일이 생성할 때 유니크하게 생성되며 Ref는 실제 파일시스템을 참조하는 링크 파일의 개수를 의미한다.
즉, 하나의 파일이 생성되면 inode가 유니크 하게 부여되며 파일시스템의 Ref는 1이 된다.
예를들어 이력서1.doc을 열어본다면 inode값을 보고 파일시스템에 매핑되는 데이터를 조회하여 보여주는 것이다.
만약 삭제를 한다면 파일시스템에서 inode 1번에 해당하는 파일을 조회하여 현재 Ref값에 -1을 한다.
만약 Ref = 0이 되면 파일은 디스크에서 삭제되는 것이다.

하드링크

원본파일과 복사본을 생성하면서 파일 시스템에서 같은 inode번호를 참조하게 하는방법.
즉, 원본과 복사본 중 어느 한 곳에서 입력과 수정은 동시에 적용되지만 삭제는 별개로 동작한다(하나를 삭제해도 Ref = 1이 되기 때문이다)
하드링크는 파일에만 설정가능하고 디렉토리에는 설정할 수 없다.

소프트링크

Windows의 바로가기 만들기와 같은 기능이다.
소프트링크는 링크파일이 링크파일을 참조하는 방식이기 때문에 파일과 디렉토리에 모두 설정 가능하다.
소프트링크는 소프트웨어 개발에서 유용한 기능을 제공한다.
특히 오픈소스 라이브러리에서 많이 볼 수 있다.

라이브러리를 개발할 때 버전정보를 표기하며 버전별로 Release하는데 어려움이 있다.
이럴때 library.so라는 library를 대표하는 소프트링크를 만들어 놓고 버전이 변경될 때 마다 소프트링크의 참조를 변경하는 방식으로 사용하는 것이다.

위처럼 library.solibrary.0.1.so를 참조하도록 한다.

새로운 버전인 library.0.2.so가 배포되면 기존에 참조하던 파일을 삭제하고 library.0.2.so를 참조하도록 링크를 생성하는 것이다.
만약 소프트링크 파일이 참조하고 있던 파일이 삭제되면 링크가 깨진상태가 되고, 해당 소프트링크 파일은 아무런 역할을 하지 않는 파일이 된다.

경로

  • / : 절대위치 기준 경로 (root가 시작점)
  • ./ : 현재위치 기준 경로 (현재 디렉토리가 시작점, 생략가능)
  • ../: 현재 위치의 상위 기준 (root/home 이라면 ../는 root임)
  • ~/: Home 위치 기준
profile
이거 왜안되냐

0개의 댓글