헷갈리는 리눅스 명령어 정리

sua_ahn·2023년 10월 25일
1

프로그래밍 입문

목록 보기
6/7
  • [Tab버튼] : 자동완성

  • clear : 터미널 화면 지우기 Ctrl+L

  • su - : Root 사용자로 변경

  • su 유저명 : 유저 변경

  • ps -ef : 모든 프로세스를 풀 포맷으로 표시

  • pstree : 부모와 자식 프로세스 관계를 트리 형태로 보여줌

  • kill -9 [pid] : 프로세스를 강제로 종료

 

1. 파일 관련 명령어

조회

  • ls : List segments 현재 위치의 파일 목록 조회
    -l 상세정보 (ls -l == ll)
    -a 숨김파일 표시
    -t 최근 생성 파일부터 정렬
    -rt 오래된 파일부터 정렬

    ls -rlt
    최근 파일 상세정보를 아래에 출력되도록 하여 로그파일 조회 시 유용

  • lsof : list open files 열린 파일들 리스트 출력
  • find : 파일 및 디렉토리 찾기
# 해당 경로의 파일 및 디렉토리 리스트 표시 (.은 현재위치)
find [path]

# 해당 경로에서 key확장자를 가진 파일 검색
find [path] -name "*.key"
  • diff : 두 파일의 차이점
    -c 차이점 출력

  • cmp : 두 파일이 동일한지
    -s 0같음 1다름 2접근불가

  • comm : diff와 cmp의 기능을 결합

  • head : 파일 첫 10줄 출력

  • tail : 파일 마지막 10줄 출력
    -f 실시간 출력 (cf. -100f 실시간으로 100줄 출력)
    -n 라인수 (ex. -100)

  • wc : word count 사용자가 지정한 파일의 행, 단어, 문자수 세기
    -l 행
    -w 단어
    -c 문자

grep '로그에서 찾고싶은 내용' batch.log | wc -l

ls -l | grep ^- | wc -l
  • pwd : present working directory 현재 위치 확인

  • cd : change directory 위치 이동
    ~   home 디렉토리
    .. 한 단계 상위 디렉토리
    -   이전 위치

 

조작

  • cp : copy 복사
    -r 하위 디렉토리 및 파일까지 모두 복사
    -p 소유자, 그룹, 권한 등의 정보까지 복사

  • mv : move 이동 및 이름 변경

  • rm : remove 제거
    -r 비어있지 않은 디렉토리 삭제
    -f 강제 삭제

  • chmod : 파일의 권한 변경
    -R 하위 디렉토리 및 파일까지 적용

    • 대상

      소유자 (user)소유그룹 (group)그 외 사용자 (others)
      ugo
    • 권한

      -읽기 (read)쓰기 (write)실행 (execute)
      문자rwx
      8진수421

      위 대상에 대한 3가지 권한을 변경할 수 있다.
      권한은 문자를 붙여 쓰거나 (ex. rwx)
      숫자를 더해서 (ex. 7) 표현한다.

    • 행위

      지정추가제거
      =+-
    # 사용자에게 모든 권한, 그룹과 그 외 사용자에게 쓰기와 실행 권한 부여
    # drwxr-xr-x
    chmod -R 755 디렉토리명
    
    # 소유자, 그룹에 읽기쓰기 권한 추가
    chmod ug+rw 파일명

    디렉토리 권한
    r : 내부 파일 리스트 읽기
    w : 파일 추가, 이름 변경, 삭제
    x : 디렉토리에 접근 (cd 명령으로 working directory 이동)

  • chown : 파일의 소유 변경
    -R 하위 디렉토리 및 파일까지 적용

# 소유 변경
chown -R username:usergroup 파일명

 

필터

  • awk : 데이터 조작 ('패턴' 검색 or 데이터를 활용한 '{액션}')
    $필드번호 : 데이터의 열 선택

  • if [ 조건 ];then 명령 fi :
    -n 문자열 내용이 있는지 (str.length != 0)

  • grep : global regular expression print 특정 문자열 찾기
    -r 하위 디렉토리까지 (reculsive)
    -i 대소문자 구분x (intensive)
    -v 제외 (--invert-match)
    -c 라인수

    pid=`ps -ef | grep test.jar | grep -v 'grep' | awk '{print $2}'`
  • pgrep : ps -ef + grep + | grep -v 'grep' + awk '{print $2}'

    pid=`pgrep test.jar`

 

기호

  • | : 앞 명령의 결과를 뒤 명령의 입력으로 전달
  • '' : 문자로 인식
  • "" : 문자로 인식 ($ ` \ 제외)
  • `` : 명령으로 해석
  • > : redirection 표준 입출력의 방향을 바꿔줌

    2>&1
    : 표준 에러를 표준 출력으로 리다이렉팅하여 내보낸다. ( 표준에러 로그를 표준출력 로그를 적는 곳에 같이 적는다.)

    1>dev/null
    : /dev/null은 Unix와 Linux 시스템에서 'null device'를 나타낸다. 이 장치로 보내진 데이터는 모두 무시된다. 따라서, /dev/null로 리다이렉션하는 것은 해당 출력을 버리는 것과 같다.

 

vim

  • j : 한줄 아래로
  • k : 한줄 위로
  • gg : 맨 위로
  • G : 맨 밑으로
  • ctrl + u : 반페이지 위로
  • ctrl + b : 반페이지 아래로
  • :se nu : 라인수 같이 출력
  • :q : 나가기
  • :w : 저장
  • :wq! : 강제저장 후 나가기
  • /검색할 문구 : 앞으로 검색
  • ?검색할 문구 : 뒤로 검색
  • n : 다음으로 찾은 문구
  • N : 이전에 찾은 문구
  • %s/검색할 문구//n : 갯수

 


2. 네트워크 관련 명령어

  • ifconfig : IP주소 확인

    -bash: ifconfig: command not found
    CentOS7부터는 기본 탑재 명령어가 아님
    ifconfig 명령어가 포함된 net-tools package 설치!

    >> su -
    Password: 
    >> yum install net-tools
  • netstat : network statistics 네트워크 접속, 라우팅 테이블, 네트워크 인터페이스의 통계 정보
    -a : 모든 네트워크 상태

  • ss : socket statistics 네트워크 연결 및 소켓 상태 조회 (netstat과 비슷)
    -t : tcp포트
    -u : udp포트

  • ping : Packet Internet Groper 목적지 IP 주소의 통신 가능 여부 확인

  • traceroute : 지정 호스트에 도달할 때까지 통과하는 경로와 각 경로에서의 지연 시간 추적 (윈도우 tracert)

  • nslookup : name server lookup 특정 도메인이 DNS 서버에 잘 적용되었는지 확인

  • curl : client url 프로토콜을 이용해 데이터 송수신

# 핑테스트 (IP나 도메인 입력)
ping 123.456.7.89

# GET 요청
curl https://google.com/search?q=question

 


3. 시스템 설정 명령어

  • firewall-cmd : 방화벽 설정
방화벽 구동 확인
>> firewall-cmd --state

열린 포트 확인
>> firewall-cmd --zone=public --list-all

포트 개방
>> firewall-cmd --permanent --zone=public --add-port=22/tcp

적용
>> firewall-cmd --reload
  • nmtui : 네트워크 설정

  • system-config-[ ] : 시스템 설정 (date, language, users, keyboard, printer, users 등)

  • timedatectl : 타임존 설정

타임존 확인
>> timedatectl

타임존 서울로 변경 
>> timedatectl set-timezone Asia/Seoul

PID 파일
: PID(Process Identifier)가 적혀 있는 파일

  • 생성 이유 : 실행 및 중단을 제어하기 위한 스크립트 등록 시 사용
    (애플리케이션을 백그라운드 프로세스로 실행했다면, 프로세스를 종료할 때 PID를 알아야 함.
    직접 ps -ef | grep java로 확인하여 kill 할 수 있지만 자동화를 위함)
  • 생성법 : application.yml에 spring.pid.file 경로 지정
    -> @SpringBootApplication 적용한 main()에 객체 생성 후 .listeners(new ApplicationPidFileWriter()) 설정
  • 삭제 : DisposableBean.destroy()에서 파일 유무 확인 후 삭제

 


4. 기타

  • top : 프로세스별 CPU, Memory 사용량 확인
  • free -m -h : 메모리 사용량 조회
  • sync && echo 1 /proc/sys/vm/drop_cache : 하드디스크로 데이터를 옮기고, 메모리 Page cache 삭제

 

크론

  • crontab (또는 crontabd)
    -l 조회
    -e 등록 및 수정
*    *    *    *    *    *    *
초   분   시    일   월   요일  연도(생략가능)
  • ? : 특정값 없음(일, 요일에만 사용)
  • * : 모든값
  • / : 초기값/증가치
  • , : 특정값 구분
  • - : 범위

45 45 1 * * ? 매일 1시 45분 45초마다
30 0/30 0/1 * * ? 매일 0시 30초에 시작하여 30분마다

  • service crond
service crond status
service crond start
service crond stop
service crond restart
profile
해보자구

0개의 댓글