리눅스 명령어

rami·2025년 12월 11일

Today I Learned

목록 보기
42/42

우선, 리눅스 환경 만들어둔 도커 컨테이너 실행
docker start 컨테이너명
docker exec -it 컨테이너명 bash(실행시킬 프로그램)
exec -it : 실행 중인 컨테이너 안에서 명령 실행
bash : bash 셸로 접속


조회와 관련된 명령어

pwd (print working directory) : 현재 위치
모든 경로는 / 아래 존재한다.
/는 파일 시스템의 최상의(root) 디렉토리를 의미한다.
ls : 폴더 조회
ls -l : 폴더 내부 파일 조회 (첫 글자로 d파일/-폴더/l링크 구분)

예시의미
drwxr-xr-x폴더
-rw-r--r--파일
lrwxrwxrwx링크

ex.

  1. 각 디렉토리, 파일을 읽고 쓰고 실행하는 권한
  2. 링크 수
  3. 소유자 계정
  4. 그룹 계정(각 계정이 속해있는 소속)
  5. 사이즈를 bite 크기로 표현
  6. 생성 또는 최종 수정 시간
  7. 디렉토리 / 파일 이름

chmod : 파일/폴더의 읽기(read), 쓰기(write), 실행(excute) 권한을 변경하는 명령어
권한은 owner, group, others 3개 그룹에 적용된다.
각각 별도의 권한 부여 가능 (-로 표시된건 권한없음을 의미 ex. r-x : 쓰기권한 없음)
1bits씩 3bits 공간을 차지한다.

usergroupother
rwxrwxrwx

ex.
chmod 764 main : user에 모든 권한을 주고 싶다면 7(4+2+1)bits를 할당하면 된다.
chmod g-w main : group에 w권한을 빼고 싶다면 -로 명령하면 된다. (반대로 추가하고 싶을 때는 +를 사용한다)


이동과 관련된 명령어

mkdir + 디렉토리명 : 새 디렉토리 생성
-p 옵션을 사용해서 한번에 여러개 디렉터리를 만들 수 있다.
rm -r + 디렉토리명 : 디렉토리 삭제
touch + 파일명 : 새 파일 생성
rm -f + 파일명 : 파일 삭제

cd + 다렉토리명 : (change directory) 경로 이동

  • 절대경로
    / : 절대 위치 기준
    루트 / 부터 시작하므로 현재 어디에 있든 상관없이 항상 동일한 위치로 이동함.
    ~/ : Home 위치 기준
  • 상대경로
    ./ : 현재 위치
    ../ : 현재 위치 상위

mv : 파일, 디렉토리 이동 + 이름 변경

  • mv 현재파일명 변경할파일명
  • mv 이동시킬파일명 이동할경로

cp : 파일, 디렉토리(-r) 복사

  • cp 복사할파일명 새로운파일명
  • cp 복사할파일명 이동시킬경로
  • cp -r 복사할디렉토리명 새로운디렉토리명
  • cp -r 복사할디렉토리명 디렉토리경로

입출력과 관련된 명령어

man+명령어이름 : 리눅스 명령어 메뉴얼 조회
(현재 도커로 리눅스 환경 이용중이라, 컨테이너가 미니멀이라 man설치해야 사용 가능 -> 명령어이름 --help으로 대체해서 사용)
cat + 파일이름 : 파일이라는 표준입력을 모니터라는 표준 출력으로 전환
cat 파일이름 | more : 긴 내용을 한 화면씩 보여준다 (왼쪽 명령의 결과를 오른쪽 명령의 입력으로 넘긴다)
cat source > target : 표준 출력의 방향 전환(파일로 복사). 파일 이름이 존재할 경우 기존 파일에 덮어쓰게 된다.
cat source >> target : 기존 파일 마지막 데이터 뒤에 붙여넣기

head + 파일명 : 처음 10줄을 보여준다

  • head -n 숫자 파일명 : 원하는 줄 수 지정

tail + 파일명 : 마지막 10줄을 보여준다

  • tail -f + 파일명 : 파일의 마지막 데이터 추가되는 즉시 화면에 출력된다. (실시간 로그데이터 조회로 활용)

grep 옵션 "검색어" 파일명 : 검색하고자 하는 문자열과 일치하는 파일이름 조회
옵션들은 순서 상관없이 합쳐 쓸 수 있다.

  • grep -H 검색어 파일명 : -H 붙이면 파일명 표시
  • grep -w 검색어 파일명 : -w 붙이면 검색어 전체 일치 검색(기본 grep은 부분 일치 조회)
  • grep -v 검색어 파일명 : -v 붙이면 매칭되지 않는 라인 출력
  • grep -i 검색어 파일명 : -i 붙이면 대소문자 무시

less 파일명 : 파일을 열고 내용을 볼 수 있는 텍스트 뷰어.
용량이 큰 파일 로그파일 오픈할 때 유용. (vi의 입력/수정/삭제 기능 제외하고 유사하게 사용 가능)


시스템 명령어

tar cvfz 압축파일명 압축하고자하는파일디렉토리

  • tar cvfz target.tar.gz *
    .tar → 여러 파일을 한 덩어리로 묶은 것
    .gz → 그걸 다시 gzip 으로 압축한 것 (더 용량 작음)
    .gz * : 현재 디렉토리 안에 있는 모든 파일/폴더 압축

tar xvfz 파일명 : 압축해제

root : 리눅스 시스템의 최상위 계정.
루트 권한으로 (ip 설정, 네트워크 작업, 웹서버, 인증서 설치, 리부팅 등) 작업 진행해야 한다
sudo : 루트 권한으로 레벨업 시켜주는 명령어
맨 처음은 root계정으로 로그인 필요, 그 이후에 sudo사용 가능
도커는 이미 root계정이다

sudo chown 새로운소유자명:새로운그룹명 변경할파일이름 : 파일 또는 디렉토리의 소유자명과 그룹명 변경

find 경로 조건 target
ex. find . -name system.log : 현재 디렉토리(.) 아래에서 system.log 로 끝나는 파일 검색

. : 시작 경로(현재)
-name "*.bat" : 이름 패턴(대소문자 구분)
-iname "*.bat" : 이름 패턴(대소문자 무시)
-type f : 파일만
-type d : 디렉터리만
-maxdepth 1 : 현재 폴더만(하위 탐색 X)
-mtime +7 : 7일 넘은 것만
-size +10M : 10MB 초과만
-print : 출력(기본 동작)
-delete : 삭제
-exec ... \; : 찾은 것마다 명령 실행

which 찾을 프로그램 : 실행하려는 프로그램이 실제로 어느 경로에 있는지 PATH 순서대로 알려주는 명령어

top : 운영 중인 서버의 cpu와 메모리, 프로세스 상태를 확인할 수 있는 명령어(실시간 시스템 상태 화면이 나오고, 3초마다 자동 갱신)
d 누르고 change delay from 3.0 to 숫자입력 : 갱신 시간 변경 가능. =top -d 숫자

w, who : 현재 리눅스 장비에 접속한 사용자가 누구인지 확인

ping 도메인주소 또는 ip주소 : ICMP 프로토콜의 Echo 요청/응답 기능을 이용한 네트워크 테스트

  • ping 으로 알 수 있는 것
    1) 네트워크 연결 여부 (Request timed out이면 연결 문제)
    2) 네트워크 지연(latency) 확인
    3) 패킷 손실 여부 확인

ex.

64 bytes from 142.250.206.238 (142.250.206.238): icmp_seq=160 ttl=63 time=32.2 ms
항목의미
bytes패킷 크기
icmp_seq요청 번호(순번)
ttltime to live (패킷이 지나갈 수 있는 라우터 수)
time왕복 시간(RTT), 레이턴시
  • 레이턴시(Latency) : 핑을 실행한 장비로부터 해당 목적지 장비까지 왕복되는 시간 값 (값이 작을수록 인터넷이 빠르다)
    핀 명령으로 네트워크 장애 감지
  • ctrl + c : 종료
  • nslookup : 찾고자 하는 도메인 주소 입력하면 ip주소 출력해준다. DNS 서버에 문제가 있는지 확인할 때 사용한다.

ex.

항목의미
8.8.8.8구글의 공개 DNS 서버의 IP 주소로 직접 연결
DNS 해석 과정이 없기 때문에 순수한 네트워크 속도와 응답성을 빠르게 측정 가능.
google.com → IP실제 구글 웹사이트 서버 (가장 가까운 서버로 자동 연결되는 멀티 서버 구조) -> google.com 의 IP가 사람마다 다르고, nslookup 실행마다 IP가 바뀐다.
google.com을 8.8.8.8과 같은 실제 IP 주소로 변환하는 DNS 해석 과정을 거친 후 핑 테스트 실행.

ps -ef : 현재 리눅스 서버에 구동 중인 프로세스 정보 출력(실행중인 파일이 무엇인지 확인)

  • ps -ef | grep 찾고자 하는 프로세스명 : 특정 프로세스만 조회
  • processor : cpu
  • process : 실행파일이 메모리에 업로드 된 상태
  • process id : 각 프로세스마다 할당된 유니크한 값(부모 프로세스 존재)

kill -9 중지시킬process.id : 프로세스 강제 종료

adduser 새로운사용자명 : 사용자 추가

  • su -l 변경할사용자명 : 현재 로그인한 상태에서 다른 사용자 계정으로 변경 (빠져나올 땐 exit)
  • deluser 사용자명 : 계정 삭제

uname -a : 시스템 정보 확인
hostname : 호스트 이름 확인
reboot : 시스템 재부팅
halt -p : 시스템 정지, 전원 차단


링크 명령어

- Link File : 하드디스크에 파일 저장, 파일다운받았을 때 알아보기 쉽게 저장해놓은 링크 파일
- Filesystem :  실제 물리적인 하드디스크 위치에 저장된 파일 시스템
- inode 인덱스 키 사용해서 일대일 매핑
- Ref : 실제 파일 시스템을 참조하는 링크파일 개수
        즉 파일 한개 생성되면 파일시스템 레퍼런스 값은 1개가 된다
  • 소프트링크 : 링크파일이 링크파일을 참조하는 방식.
    바로가기 기능과 유사. 오픈소스 라이브러리에서 활용됨.
    ln -s 링크하고자하는원본소스 생성하고자하는타겟이름 : 소프트링크 생성

    ex.
    ln -s library.0.1.so library.so
    : library.so -> library.0.1.so
    touch library.0.2.so : 동적 라이브러리가 새로 릴리즈되면
    rm -f library.so
    ln -s library.0.2.so library.so : 기존 링크파일을 새로운 라이브러리에 소프트링크 시켜주면 된다.
    : library.so -> library.0.2.so
    만약 library.so가 참조하는 library.0.2.so 원본파일이 삭제되면 소프트링크가 참조할 대상이 사라진거라 링크가 깨졌다고 표현한다.

  • 하드링크 : 파일 시스템에 저장된 inode 값을 똑같이 참조하는 링크파일을 하나 더 만드는걸 의미.
    입력이나 수정은 모든 파일에 동시에 반영되지만, 삭제는 개별파일로 취급해서 다른거에 영향을 안 준다. (ref 값이 0이어야 삭제되는데, 2니까 -1 해도 1남음).

    ln source target
    ex. ln testhf mytesthf
    ls -li : inode번호가 출력된다.

    soucre를 하드링크로 만든 target이 inode번호가 같음을 알 수 있다. 두 파일은 하드링크이고 하나의 파일을 수정하면 둘 다 반영된다.
    그러나 rm -f testhf 해도 mytesthf엔 영향이 가지 않는다.

profile
앞으로 나아가는 사람

0개의 댓글