Linux 서버 및 네트워크, 기타 명령어
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://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