cf) 리눅스 기본 명령어 모음1
[Linux] Linux 기본 명령어 모음
pwd printing working directory의 약자로 현재 작업 중인 디렉토리 경로를 출력합니다. $ pwd /home/hajoung56 cd change directory의 약자로 절대 경로 혹은 상대 경로로 경로 이동할 때 사용합니다. $ cd /home/hajoung56
hajoung56.tistory.com
기본 명령어
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 |
댓글