brunch

리눅스 기본 명령어들2

ip addr ss nc which tail find ps grep...

by 승규


11. ip addr

접속한 리눅스의 ip주소를 알고 싶은경우 사용한다.


$ ip addr

#### 아래는 결과
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 50000
link/ether fa:16:3e:5d:0b:d7 brd ff:ff:ff:ff:ff:ff
inet 10.201.1.10/16 brd 10.202.255.255 scope global eth0
valid_lft forever preferred_lft forever



12. ss

socket statistics의 약자이다. 네트워크 상태를 확인하기 위해 사용한다. 원래는 netstat를 사용했는데, 최근에는 ss를 주로 사용한다. 옵션으로 a,t,u,l,p,n 등이 있다.


ss -a : 모든 포트 확인

ss -t : TCP 포트 확인

ss -u : UDP 포트 확인

ss -l : LISTEN 상태 포트 확인

ss -p : 프로세스 표시

ss -n : 호스트, 포트, 사용자명을 숫자로 표시


TCP포트중 LISTEN상태인 포트의 번호를 알고 싶은 경우 다음과 같이한다.

$ ss -tln

## 결과 예시

LISTEN 0 511 *:443 *:*
LISTEN 0 1 127.0.0.1:8006 *:*
LISTEN 0 511 *:80 *:*


13. nc

netcat의 약자이다. 예전에는 포트가 열렸는지 확인하기위해 telnet명령어를 사용했지만, nc를 사용해서 포트 개방 유무를 알 수 있다.


nc 아이피 포트 : 포트가 오픈됐는지 확인

nc -v 아이피 포트 : 좀 더 자세한 정보가 남음

nc -l 포트 : 현재 서버의 포트를 오픈 (방화벽에 해당 포트번호가 설정이 되어있어야함)


14. which, whereis, locate

which는 특정 명령어의 위치를 찾아준다.


$ which git
/usr/local/bin/git

which -a : 검색 가능한 모든 경로에서 명령어를 찾음

$ which -a git
/usr/local/bin/git
/usr/bin/git

where : which -a 와 같다.

where git
/usr/local/bin/git
/usr/bin/git

whereis는 실행파일, 소스, man페이지의 파일을 찾아준다.

whereis ssh
ssh: /usr/bin/ssh /usr/share/man/man1/ssh.1

locate는 파일명을 패턴으로 빠르게 찾아준다.

아래 예제는 자바파일을 찾아주는 명령이다.

locate *.java


15. tail

tail은 꼬리라는 의미처럼 파일의 마지막 부분을 보여준다. tail이 있으면 당연히 head도 있는데 사용법은 같다. 필자는 tail -f {파일} 을 가장 많이 쓰는 편이다. 서버의 로그를 실시간으로 보고 싶은 경우 많이 사용한다.


tail -n {숫자} {파일경로} : 파일의 마지막라인부터 숫자만큼의 파일의 라인수를 보여준다.

tail -n +{숫자} {파일경로} : 숫자로 지정한 라인부터 보여준다.

tail -c {숫자} {파일경로} : 파일의 마지막라인부터 숫자로 지정한 바이트 수 만큼 보여준다.

tail -f {파일경로} : Ctrl + C로 중단하기 전까지 지정한 파일의 마지막에 라인이 추가되면 계속 보여준다.

tail -n {숫자} -s {초} -f {파일경로} : 파일의 마지막 라인부터 지정한 숫자만큼을 {초}로 지정한 시간이 지날때 마다 리프레시 해서 보여준다.


16. find

find는 명령어의 뜻 그대로 파일이나 디렉터리를 찾는데 사용하는 명령어이다. 굉장히 많은 옵션이 있으나 그중에 자주 사용 되는 녀석들만 소개한다.


find {디렉터리} -name '*.bak' : 확장자 명으로 찾기

find {디렉터리} -path '**/검색시사용하는 디렉터리명/**.*.js' : 디렉터리를 지정하여 찾기

find {디렉터리} -name '*패턴*' : 파일명을 패턴으로 찾기

find {디렉터리} -name '*.py' -not -path '*/site-packates/*' : 파일명을 패턴으로 찾되 특정 경로는 제외하기

find {디렉터리} -name '*.ext' -exec wc -l {} \; : 파일을 찾은 다음 명령어 실행하기

find {디렉터리} -daystart -mtime -7 -delete : 최근 7일간 수정된 파일을 찾고 삭제하기

find {디렉터리} -type f -empty -delete : 0바이트인 파일을 찾고 삭제하기


17. ps

실행중인 모든 프로세스를 보여주기

ps aux

실행중인 모든 프로세스를 전체 커맨드를 포함하여 보여주기

ps auxww

특정 문자열과 매칭되는 프로세스 찾기 ( grep은 바로 다음에 나옵니다)

ps aus | grep {패턴}

메모리 사용량에 따라 정렬하기

ps --sort size


18. grep

grep은 입력에서 패턴에 매칭되는 내용을 찾아내는 명령어이다. grep이라는 이름은 ed의 명령어인 g/re/p (내용전체를 정규식으로 찾은다음 프린트하라: globally search for a regular expression and print matching lines) 에서 왔다. 보통 find, ps 등과 조합하여 사용한다.


파일에서 특정 패턴을 만족하는 부분 찾기

grep "패턴" 파일경로

파일명과 라인을 함께 표시하기

grep --with-filename --line-number "패턴" 파일경로


매칭하지 않는 부분 표시하기

grep --invert-match "패턴"


cat과 함께 사용하기

cat 파일경로 | grep "패턴"


19. kill

개발자들이 뭔가 죽인다는 말을 할 것이다. 그중에 대부분이 바로 프로세스를 죽이는 것인데, 이 명령어가 바로 프로세스를 죽이는 명령어 kill이다. 프로세스를 죽인다고는 하지만 원리는 프로세스에 중지하라는 시그널을 보내는 것이다. SIGKILL, SIGSTOP은 강제종료이며 나머지는 정상적으로 종료를 시키게 된다. 프로세스 아이디는 ps 명령어로 알아낼 수 있다 .


kill에서 사용할 수 있는 시그널들 표시하기 (SIG가 생략되어있다.)

kill -l


프로세스 죽이기 SIGTERM(terminate)

kill 프로세스아이디


백그라운드 잡 종료시키기

kill %잡아이디


프로세스 강제종료

kill -9|KILL 프로세스아이디


20. alias

필자는 ls -al 명령을 자주 사용하는데, 모두 타이핑하려면 귀찮은 경우가 많다. 이런 경우 alias를 사용하면 줄여서 사용할 수 있다.


모든 alias 표시하기

alias

alias 만들기

alias 단어="명령"
ex)
alias ll="ls -al"


alias삭제하기

unalias 단어


이런것도 가능하다

alias ...=../..
alias ....=../../..
alias .....=../../../..
alias ......=../../../../..

alias에 ... 이 있으므로 cd ... 이 사용가능하다.


지금까지 20개의 자주쓰는 리눅스 명령어들을 알아 보았다. 리눅스 명령어 하나만으로도 하나의 글을 쓸 수 있을 분량이 나오지만, 자주 쓰는 내용들만 정리해두었으니 일할때 기억이 안나면 참고하면 될 것 같다.

keyword
매거진의 이전글리눅스 기본 명령어들1