cf) 리눅스 기본 명령어 모음1
기본 명령어
1. rmdir
Remove Directory의 약자로 디렉터리를 삭제한다.
rmdir은 디렉토리가 비어있을 때만 작동한다. 내부에 파일이나 다른 디렉토리가 있으면 오류가 발생한다.
디렉토리 안의 파일과 함께 삭제하려면 rm -r 명령어를 사용해야함
rmdir abc | /abc 디렉터리를 삭제 |
2. mv
Move의 약자로 파일이나 디렉터리의 이름을 변경하거나 다른 디렉터리로 옮길 때 사용
mv 명령어는 파일을 이동시킬 때 복사 후 삭제하는 것이 아니라 파일의 위치정보만 변경하기 때문에 처리 속도가 빠르다.
이동하려는 대상 경로에 같은 이름의 파일이 이미 존재할 경우, 기존 파일은 덮어쓰여진다.
mv abc.txt /etc/sysconfig/ | abc.txt을 /etc/sysconfig/ 디렉터리로 이동 |
mv aaa bbb ccc ddd | aaa, bbb, ccc 파일을 /ddd 디렉터리로 이동 |
mv abc.txt bbb.txt | abc.txt의 이름을 bbb.txt로 변경해서 이동 |
3. chmod
Change Mode의 약자로 chmod는 파일이나 디렉터리의 권한을 변경한다.
권한 변경은 보안에 영향을 줄 수 있으므로 신중히 사용해야 한다.
명령어 사용법은 다음과 같다.
chmod [변경모드] [파일]
chmod 755 aaa.sh | 'aaa.sh'파일에 대해 소유자에게는 읽기, 쓰기, 실행 권한을 부여하고, 그룹과 기타 사용자에게는 읽기와 실행 권한만 부여 |
chmod u+x aaa.sh | 'aaa.sh' 파일에 대해 현재 사용자에게 실행 권한을 추가 |
4. grep
Global Regular Expression Print의 약자로 파일 내용 중에서 지정된 패턴이나 문자열을 검색하여 그 결과를 출력한다.
정규 표현식을 사용하여 복잡한 검색 패턴을 지정할 수 있으며, 로그 파일 분석이나 특정 데이터 추출에 유용하다.
grep "text" aaa.txt | 'aaa.txt'에서 "text"라는 문자열이 포함된 모든 줄을 표시 |
grep -r "text" | 현재 디렉토리와 하위 디렉토리에서 "text" 문자열을 재귀적으로 검색 |
5. echo
echo명령어는 주어진 문자열을 터미널에 출력한다. 환경 변수의 값을 표시하거나, 파일에 텍스트를 쓰는 데에도 사용된다.
echo 'aaaBBBccc' | aaaBBBccc 출력 |
echo $PATH | 패스로 지정된 문자열을 출력 |
echo -e 문자열 | 이스케이프 문자열을 해석 |
echo -e "가가가\n나나나\n다다다" | 개행을 표시할 수 있음 |
echo * | ls와 유사하게 현재 디렉터리의 파일과 폴더를 출력 |
echo hello redirection > hello.txt | 리다이렉션 '>'을 사용해 hello.txt 파일 생성. 파일 내용에는 echo로 표시되는 내용이 들어감 |
echo hello2 >> hello.txt | 추가 연산자 >>를 사용해 기존 파일에 문자열 추가 |
6. man
Manual의 약자로 리눅스 명령어의 사용법, 옵션, 기능 등을 설명하는 매뉴얼 페이지를 제공한다.
man ls | 'ls' 명령어에 대한 매뉴얼 페이지를 보여줌 |
7. sudo
SuperUser DO의 약자로 일반 사용자가 관리자(superuser) 권한을 가지고 명령어를 실행할 수 있게 한다.
시스템 설정 변경, 중요한 파일 수정, 관리자 권한을 필요로 하는 소프트웨어 설치 시 사용된다.
sudo apt-get update | 패키지 리스트를 업데이트 |
8. find
파일이나 디렉터리를 검색한다.
find . -name "aaa.txt" | 현재 디렉토리에서 'aaa.txt' 파일을 찾음 |
find / -type d -name "config" | 루트 디렉토리에서 'config'라는 이름의 디렉토리를 찾 |
9. more
텍스트 형식으로 작성된 파일을 페이지 단위로 화면에 출력한다.
키보드의 [Space]를 누르면 다음 페이지로 이동하며, [B]를 누르면 앞 페이지로 이동한다.
[Q]를 누르면 명령을 종료한다.
more anaconda-ks.cfg | anaconda-ks.cfg 파일 출력 |
more +30 anaconda-ks.cfg | 30행부터 출력 |
10. less
more 명령과 용도가 비슷하지만, 기능이 더 확장되어 있다.
more에서 사용하는 키와 더불어 화살표 키나 [PageUp], [PageDown]도 사용할 수 있다.
less anaconda-ks.cfg | anaconda-ks.cfg 파일 출력 |
less +30 anaconda-ks.cfg | 30행부터 출력 |
11. grep
grep은 입력에서 패턴에 매칭되는 내용을 찾는 명령어다.
find, ps 등과 조합해 사용한다.
grep "패턴" 파일경로 | 파일에서 특정 패턴을 만족하는 부분 찾기 |
grep --with-filename --line-number "패턴" 파일경로 | 파일명과 라인을 함께 표시하기 |
grep --invert-match "패턴" | 매칭하지 않는 부분 표시하기 |
cat 파일경로 | grep "패턴" | cat과 함께 사용하기 |
12. kill
프로세스를 죽이는 명령어이다.
프로세스를 죽인다고는 하지만 원리는 프로세스에 중지하라는 시그널을 보내는 명령어이다.
SIGKILL, SIGSTOP은 강제 종료이며 나머지는 정상적으로 종료시킨다.
프로세스 아이디는 ps 명령어로 알 수 있다.
kill -l | kill에서 사용할 수 있는 시그널 표시하기 |
kill {프로세스ID} | 프로세스 죽이기 SIGTERM(terminate) |
kill {잡ID} | 백그라운드 잡 종료시키기 |
kill -9 | KILL {프로세스ID} | 프로세스 강제 종료 |
13. clear
clear 명령어는 현재 사용 중인 터미널 화면을 깨끗하게 지운다.
clear | 현재 사용 중인 터미널 화면을 깨끗하게 지움 |
14. vi / vim
vi 혹은 vim은 리눅스에 기본적으로 설치되어 있는 텍스트 에디터이다.
$ vi aaa.txt
위 명령어와 같이 vi 파일명 혹은 디렉터리명을 사용해 해당 파일 혹은 디렉터리의 에디터 모드로 전환할 수 있다.
키보드의 i 또는 a를 눌러 편집모드로 전환할 수 있다.
파일의 내용을 수정 한 뒤 키보드의 esc를 누르면 편집모드가 종료된다.
그 후, 키보드의 :wq 혹은 :x 를 입력하고 enter를 눌러 저장한 뒤 에디터 모드를 종료한다.
15. alias
alias 명령어를 사용하여 자주 사용하는 명령어의 별칭을 설정한다.
# 모든 alias(별칭) 표시하기
$ alias
# alias 만들기
# 예) alias ll="ls -al"
$ alias 단어="명령"
# cd ../..을 cd …으로 줄여 쓰기
# cd ../../../은 cd ….으로 가능
$ alias ...=../..
$ alias ....=../../..
$ alias .....=../../../..
$ alias ......=../../../../..
# alias 삭제하기
$ unalias 단어
16. which, whereis, locate
which 명령어를 사용해 특정 명령어의 위치를 찾을 수 있다.
whereis는 실행 파일, 소스, man 페이지의 파일을 찾아준다.
locate는 파일명을 패턴으로 빠르게 찾아준다.
$ 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는 파일명을 패턴으로 빠르게 찾아줌
# 아래 예제는 .java 파일을 찾아주는 명령
$ locate *.java
서버 관련 명령어
1. head, tail
텍스트 형식으로 작성된 파일의 앞 10행 또는 마지막 10행만 화면에 출력한다.
서버의 로그를 실시간으로 보고 싶을 때 사용한다.
head anaconda-ks.cfg | 해당 파일의 앞 10행을 화면에 출력 |
head -3 anaconda-ks.cfg | 앞 3행만 화면에 출력 |
tail -5 anaconda-ks.cfg | 마지막 5행만 화면에 출력 |
tail -n {숫자} {파일경로} | 파일의 마지막 라인부터 숫자만큼의 파일의 라인 수를 보여주기 |
tail -n +{숫자} {파일경로} | 숫자로 지정한 라인부터 보여주기 |
tail -c {숫자} {파일경로} | 파일의 마지막 라인부터 숫자로 지정한 바이트 수 만큼 보여주기 |
tail -f {파일경로} : | Ctrl + C로 중단하기 전까지 지정한 파일의 마지막에 라인이 추가되면 계속 출력하기 |
tail -n {숫자} -s {초} -f {파일경로} | 파일의 마지막 라인부터 지정한 숫자만큼을 {초}로 지정한 시간이 지날 때마다 리프레시해서 보여주기 |
2. ip addr / ifconfig
접속한 리눅스의 IP 정보를 알아낼 때 사용한다.
[ip addr]
$ 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
[ifconfig]
ip addr이 설치되어 있지 않은 경우에는 ifconfig를 사용한다.
$ ifconfig
eth0 Link encap:Ethernet HWaddr 06:4d:de:ae:a8:50
inet addr:172.31.27.212 Bcast:172.31.31.255 Mask:255.255.240.0
inet6 addr: fe80::44d:deff:feae:a850/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1
RX packets:68903966 errors:0 dropped:0 overruns:0 frame:0
TX packets:75295223 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:15691124260 (15.6 GB) TX bytes:42265387295 (42.2 GB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:6623596 errors:0 dropped:0 overruns:0 frame:0
TX packets:6623596 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1
RX bytes:349206971 (349.2 MB) TX bytes:349206971 (349.2 MB)
3. 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 *:*
4. nc
nc는 netcat의 약자로 예전에는 포트가 열렸는지 확인하는 데 telnet 명령어를 사용했지만 요즘은 주로 nc를 사용한다.
nc IP주소 포트 | 포트가 오픈됐는지 확인 |
nc -v IP주소 포트 | 더 자세한 정보가 남음 |
nc -l 포트 | 현재 서버의 포트를 오픈(방화벽에 해당 포트 번호가 설정 함) |
5. ps
현재 실행 중인 프로세스 목록과 상태를 보여준다.
ps aux | 실행 중인 모든 프로세스를 보여주기 |
ps auxww | 실행 중인 모든 프로세스를 전체 커맨드를 포함해 보여주기 |
ps aus | grep {패턴} | 특정 문자열과 매칭되는 프로세스 찾기 |
ps --sort size | 메모리 사용량에 따라 정렬하기 |
'DEV > SERVER' 카테고리의 다른 글
[WEB] 301, 302 리다이렉트 (2) | 2024.11.19 |
---|---|
아카마이란?(cf. CDN) (2) | 2024.03.26 |
[CDN] CDN이란?(feat.콘텐츠 전송 네트워크) (0) | 2023.07.07 |
[WEB] 웹 브라우저에서 쿠키(Cookie) 확인하기 (0) | 2023.03.17 |
[Linux] Linux 파일, 폴더의 소유자 변경(CHOWN) (0) | 2022.06.09 |
댓글