공부 기록/Linux

Linux 서버 및 네트워크, 기타 명령어

뵤옹 2023. 4. 28. 16:47

alias / unalias

alias

사용자가 명령어를 다른 이름으로 바꿔서 사용할 수 있는 쉘 내부 명령어

일일이 입력하기 번거로운, 길이가 긴 명령어를 간단한 이름으로 바꿔서(별칭 부여) 등록하여 업무 효율을 높힐 수 있다.

# 현재 등록되어 있는 별칭 보기
$ alias

# alias 지정 후 a를 입력하면, 해당 명령어가 실행된다.
$ alias a='cd /a/b/c/d/e/f/g'

unalias

별칭 삭제

# a로 지정된 alias 삭제
$ unalias a

alias 별칭 영구 등록

alias들은 시스템을 재부팅하고 나면 다시 초기화 되어 매번 재설정해줘야 한다는 단점이 있다.

이러한 문제는 alias를 ./bashrc 이나 .bash_aliases 파이에 등록해서 사용함으로써 영구 등록할 수 있다.

 

./bashrc 파일은 자신이 로그인 한 계정에 들어가면 있으며, 없을 경우 생성하면 된다.

이 파일은 숨김 파일이기 때문에 ls 명령어에 옵션을 붙여야 찾을 수 있다.

$ ls -al

파일이 없을 경우 vi 편집기를 사용하거나 cat 명령어를 사용하여 ./bashrc 파일을 생성, 수정한다.

$ vi ~/.bashrc

bashrc 파일에 alias 명령어는 아래와 같이 추가해 준다.

# .bashrc
$ alias cc ='clear'

# Source global definitions
$ if [-f /etc/bashrc ]; then
. /etc/bashrc
fi

bashrc 파일을 수정한다고 지정한 alias가 바로 적용되는 것이 아니며 source 명령어를 사용하여 동기화를 시켜야 적용이 된다.

source ~/.bashrc

 

ps

process status의 약자

지금 실행 중인 프로세스의 목록을 출력해주는 명령어이다.

윈도우의 작업 관리자와 유사하다.

옵션

  • -a : 현재 실행 중인 모든 프로세스를 보여준다. (다른 사용자들의 프로세스 포함)
  • -e : 프로세스의 실행 환경 출력(PID, time, tty)
  • -u : 프로세스의 사용자 이름, 시간 출력
  • -x : 다른 사용자가 실행한 완료되지 않은 프로세스를 같이 출력
  • -f : full format
  • -l : -f보다 더 상세한 정보 출력(long format)

ps 명령어 출력 내용의 의미

  • PID(process ID) : 프로세스마다 주어지는 번호, 프로세스 ID
  • TTY(Tele Typewriter)
    • 명령어가 실행되는 터미널 번호
    • 할당된 것이 없는 경우 물음표(?)로 출력됨
  • STAT : 실행되고 있는 프로세스 상태
    • R : 실행 중 실행될 수 있는 상태
    • S : 대기 상태 (약 20초 이상)
    • I : 대기 상태(약 20초 이하)
    • T : 작업 제어에 의해 정지된 상태
    • D : 디스크 관련 대기 상태
    • P : 페이지 관련 대기 상태
    • X : 메모리 확보를 위한 대기 상태
    • > : 인위적으로 우선 순위가 높아진 상태
    • Z : 좀비 프로세스
  • START : 프로세스가 시작된 시간
  • TIME : CPU가 사용한 시간
  • USER : 사용자 이름
  • COMMAND : 사용자가 실행한 명령어
  • UID(User ID) : 사용자의 ID
  • PGID(Parent Group ID) : 사용자 부모 프로세스의 그룹 ID
  • SID(Session ID) : 세션 ID
  • PRI(PRIority) : 실행하는 우선순위에 따른 프로세스
  • NI(NIce) : nice에 의한 우선순위에 따른 프로세스
  • RSS(Resident Set Size) : 프로세스가 사용하는 메모리의 크기
  • SZ(SiZe) : 프로세스가 사용하는 자료와 스택의 크기
  • SHRD(SHareD) : 프로세스가 사용하는 공유 메모리
  • %CPU : 프로세스가 사용하는 CPU 점유율
  • %MEM : 프로세스가 사용하고 있는 메모리 점유율
  • WCHAN : 프로세스가 실행하고 있는 커널 루틴
  • VSZ : KiB 단위(1024 바이트 단위)의 프로세스의 버추얼 메모리 크기(vsize와 동일한 의미)
  • ADDR : 프로세스 메모리 주소
  • F : 프로세스 플래그
    • 4 : used super-user privileges
    • 1 : forked but didn't exec
    • 5 : 4 & 1 플래그에 모두 해당하는 경우
    • 0 : 어떤 플래그에도 해당하지 않는 경우
# 실행 중인 모든 프로세스 확인
$ ps aux

# 실행 중인 프로세스를 트리구조로 확인
$ ps auxf

# 실행 중인 프로세스를 트리구조 + 모든 실행 중인 옵션 확인
$ ps auxfww

# 특정 프로세스 조회
$ ps aux | grep mysqld

 

kill

주로 프로세스를 종료하는 데 사용되는 명령어로, 프로세스에 신호(signal)을 보내 제어한다.

기본 형태

$ kill [옵션] [PID]

옵션

  • -9 : 프로세스 아이디(PID)를 직접 지정하여 종료시 사용
  • -l : 신호(signal)로 사용할 수 있는 모든 신호 이름들을 보여준다.

신호는 번호, 신호 이름으로 보낼 수 있다.

 

kill 명령어를 사용할 때 kill -9보다는 kill -INT 또는 kill -TERM을 사용하는 것이 좋다고도 한다.

그 이유는 kill -9로 신호를 보내면 개발자가 구현한 종료 함수가 호출되지 않고 즉시 프로세스가 종료되므로, 데이터가 유실되거나 리소스가 제대로 닫히지 않는 문제가 발생할 수 있기 때문이다.

대신 kill -INT 또는 kill -TERM을 사용하면 종료를 의미하는 신호를 여러 번 전송해주는 것이므로 프로그램이 보통 cleanup 코드를 수행하고 종료하게 된다.

 

netstat

  • network statistics의 약자
  • 리눅스 시스템의 TCP/IP 프로토콜 진단시 사용된다.
  • 네트워크 연결 상태, 라우팅 테이블, 인터페이스 상태, 소켓 사용 정보 등을 볼 수 있다.

기본 형태

$ netstat [옵션]

옵션

  • -a : 모든 소켓 정보 출력
  • -r : 라우팅 정보 출력
  • -p : 프로세스 id(PID)와 프로세스 이름 표시
  • -t : tcp 소캣만 보여줌
  • -n : 로컬 주소와 나가는 주소를 도메인에서 ip 형태로 보여줌
  • -i : 모든 네트워크 인터페이스 정보 출력
  • -s : 프로토콜 별 네트워크 통계 정보 출력
  • -u : UDP 프로톸콜 정보 출력
# 모든 네트워크 연결 확인
$ netstat -a

# TCP 프로토콜만 확인
$ netstat -at

# UDP 프로토콜만 확인
$ netstat -au

# LISTEN 상태인 포트만 출력
$ netstat -nap | grep LISTEN

포트의 상태 중 접속 중인 상태는 ESTABLISHED, 대기 중인 상태는 LISTEN으료 표시 된다.

 


참고

https://hinweis.tistory.com/62

https://coding-factory.tistory.com/800

https://newstars.cloud/468

https://server-talk.tistory.com/430

https://tigris-data-science.tistory.com/entry/Linux-ps-%EB%AA%85%EB%A0%B9%EC%96%B4

https://server-talk.tistory.com/432

https://www.lesstif.com/system-admin/unix-linux-kill-12943674.html

https://pearlluck.tistory.com/130

https://websecurity.tistory.com/103