ip addr ss nc which tail find ps grep...
접속한 리눅스의 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
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 *:*
netcat의 약자이다. 예전에는 포트가 열렸는지 확인하기위해 telnet명령어를 사용했지만, nc를 사용해서 포트 개방 유무를 알 수 있다.
nc 아이피 포트 : 포트가 오픈됐는지 확인
nc -v 아이피 포트 : 좀 더 자세한 정보가 남음
nc -l 포트 : 현재 서버의 포트를 오픈 (방화벽에 해당 포트번호가 설정이 되어있어야함)
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
tail은 꼬리라는 의미처럼 파일의 마지막 부분을 보여준다. tail이 있으면 당연히 head도 있는데 사용법은 같다. 필자는 tail -f {파일} 을 가장 많이 쓰는 편이다. 서버의 로그를 실시간으로 보고 싶은 경우 많이 사용한다.
tail -n {숫자} {파일경로} : 파일의 마지막라인부터 숫자만큼의 파일의 라인수를 보여준다.
tail -n +{숫자} {파일경로} : 숫자로 지정한 라인부터 보여준다.
tail -c {숫자} {파일경로} : 파일의 마지막라인부터 숫자로 지정한 바이트 수 만큼 보여준다.
tail -f {파일경로} : Ctrl + C로 중단하기 전까지 지정한 파일의 마지막에 라인이 추가되면 계속 보여준다.
tail -n {숫자} -s {초} -f {파일경로} : 파일의 마지막 라인부터 지정한 숫자만큼을 {초}로 지정한 시간이 지날때 마다 리프레시 해서 보여준다.
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바이트인 파일을 찾고 삭제하기
실행중인 모든 프로세스를 보여주기
ps aux
실행중인 모든 프로세스를 전체 커맨드를 포함하여 보여주기
ps auxww
특정 문자열과 매칭되는 프로세스 찾기 ( grep은 바로 다음에 나옵니다)
ps aus | grep {패턴}
메모리 사용량에 따라 정렬하기
ps --sort size
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 "패턴"
개발자들이 뭔가 죽인다는 말을 할 것이다. 그중에 대부분이 바로 프로세스를 죽이는 것인데, 이 명령어가 바로 프로세스를 죽이는 명령어 kill이다. 프로세스를 죽인다고는 하지만 원리는 프로세스에 중지하라는 시그널을 보내는 것이다. SIGKILL, SIGSTOP은 강제종료이며 나머지는 정상적으로 종료를 시키게 된다. 프로세스 아이디는 ps 명령어로 알아낼 수 있다 .
kill에서 사용할 수 있는 시그널들 표시하기 (SIG가 생략되어있다.)
kill -l
프로세스 죽이기 SIGTERM(terminate)
kill 프로세스아이디
백그라운드 잡 종료시키기
kill %잡아이디
프로세스 강제종료
kill -9|KILL 프로세스아이디
필자는 ls -al 명령을 자주 사용하는데, 모두 타이핑하려면 귀찮은 경우가 많다. 이런 경우 alias를 사용하면 줄여서 사용할 수 있다.
모든 alias 표시하기
alias
alias 만들기
alias 단어="명령"
ex)
alias ll="ls -al"
alias삭제하기
unalias 단어
이런것도 가능하다
alias ...=../..
alias ....=../../..
alias .....=../../../..
alias ......=../../../../..
alias에 ... 이 있으므로 cd ... 이 사용가능하다.
지금까지 20개의 자주쓰는 리눅스 명령어들을 알아 보았다. 리눅스 명령어 하나만으로도 하나의 글을 쓸 수 있을 분량이 나오지만, 자주 쓰는 내용들만 정리해두었으니 일할때 기억이 안나면 참고하면 될 것 같다.