[1주차-4] 리눅스 명령어, 실습, 간단한 홈페이지 만들기

ka02·2023년 9월 17일

cloudcamp

목록 보기
4/15

네트워크 필수 개념 및 중요 네트워크 관련 명령어

rm -rf ./etc-*.tar.gz
root 권한으로 만들었는데 어제 왜 삭제 됐을까?
root면 삭제할 수 없는데, 상위 권한 (.) 폴더가 나의 권한이니까 내가 삭제할 수 있음

netstat -anp | more
more로 페이지를 넘길 수 있도록

netstat -rn : netstat는 network statistics, netstat를 입력하면 pc에 연결된 현재 상태를 볼 수 있음. -rn 과 같이 쓰면 라우팅 테이블을 빠르게 출력하기 위한 옵션값

vi /etc/netplan/01-network-manager-all.yaml : 네트워크 매니저 yaml 파일
nmtui : ifconfig up, down, 호스트 이름 변경 가능, ip, gateway 변경 가능

grep “192\.178” -r ./ : 특정 문자열을 하위디렉토리에서 찾을 때 사용하는 명령어
grep traceroute -n 23.50.0.180 : 23.50~에 대한 경로 추적

grep "192\.178." -r ./
\를 . 앞에 해두기 왜냐면 \를 ‘.’으로 인식하게 하기 위해서
grep ":0:" /etc/passwd
netstat -anp | grep ":22"

cf) whois.kr : 들어가면 검색해서 아이피 정보를 확인할 수 있음

cf) 고정 IP로 변경할 때, 내 컴퓨터가 가진 ip대역에서 마지막 .xxx 이후에 사용하기
본인이 사용하는 ip로 할당하는 것이 좋을듯, 아님 ping으로 해당 ip 들어오는지 확인해보기, 종료 후 재부팅해서 다시 확인해보기

systemctl 명령어 : systemctl 뒤에 start, stop, restart, enable(활성화), disable(비활성화), reload(갱신) + [서비스명] 으로 사용 가능

systemctl list-unit-files : 시스템 서버 파일들 확인하기

systemctl start ssh : ssh서비스 시작

systemctl stop ssh : ssh 서버 중단


!미션: 22번 포트를 2222번 포트로 변경해라

1) cd /etc : etc로 이동해서 찾아보기
2) ls -al ssh : ssh 파일들 찾아보기
3) vi /etc/sshd.config : port를 찾아서 port 22를 port 2222로 변경하기

cf) vi편집기에서 /검색어 하면 검색되고 N는 백, n은 다음 동일어 찾을 수 있음
:번호 -> 그 행으로 이동된다.


⭐⭐⭐리눅스의 파이프, 연결 기능, 필터, 리디렉션

  1. 파이프 |
    명령어 연결 기능, 앞의 수행 결과를 뒤의 입력으로 받는다.
    cat /etc/passwd | more
    netstat -anp | grep “:22” | grep “sshd”
  2. 세미콜론 ;
    앞의 명령어가 종료되면 뒤의 명령어를 수행한다
    ls -al; sleep 1; ls -al 
  3. &&
    앞의 명령이 성공한 조건에서 뒤의 명령이 수행
    ls -al && sleep 1 && ls -al 
  4. >, >>(리디렉션)
    표준 입출력의 방향을 바꿔 줌
    ls -l > list.txt  
  5. 필터: grep, tail, wc, sort
    주로 파이프와 같이 사용

프로세스, 데몬(ppt 4장 57페이지~, 교재 253페이지)

  • 하드디스크에 저장된 실행코드(프로그램)가 메모리에 로딩되어 활성화 된 것
    포그라운드 프로세스(대부분 응용프로그램), 백그라운드 프로세스(백신, 서버 데몬 등)
  • 부모 프로세스와 자식 프로세스
    모든 프로세스는 부모 프로세스를 가지고 있고, 부모 프로세스를 kill 하면 자식 프로세스도 자동으로 kill
  • ps : 현재 프로세스의 상태를 확인하는 명령어
    ex) ps -ef | grep 프로세스이름
    kill : 프로세스를 강제로 종료하는 명령어
    ex) kill -9 프로세스번호
    pstree : 부모 프로세스와 자식 프로세스의 관계를 트리형태로 보여줌

  • 명령어
    top : 윈도우의 작업관리자와 동일한, 현재 프로세스정보를 확인한
    vmstat : memory, swap 등 확인 가능
    df -h : 리눅스 시스템 전체의 디스크 사용량을 확인할 수 있음. 파일시스템, 디스크크기, 사용량, 여유공간, 사용률, 마운트지점 순
    nslookup : DNS 서버의 작동을 테스트하는 명령어
    bash : bash 만들기, bash 입력하면 bash 생성
    man : 사용법 확인하기

웹에서 ssh를 사용해보자!(web용 putty)

sudo apt-get update
&&
sudo apt-get install -y build-essential cmake git libjson-c-dev libwebsockets-dev
&&
git clone https://github.com/tsl0922/ttyd.git
&&
cd ttyd && mkdir build && cd build
cmake ..
make && sudo make install
  • 실행하기
    ttyd -p 9999 -W /bin/bash
    ttyd -p 9999 -W /bin/bash &
    &표시를 하면 백그라운드로 돌려주세요 라는 명령 → 백그라운드 데몬으로 돌아감
  • 웹에서 ip에 포트번호 확인 후 하기
    192.178.120.41:포트번호(9999)

  • & 으로 백그라운드 실행하고, 백그라운드 실행 후 종료는 fg 포그라운드로 다시 돌리고 종료하기 ctrl + C

웹서버를 만들어보자!

  1. 서버설치
    sudo apt-get install nginx
  2. 설치 확인(서버 확인)_80 상태인지 확인하기
    netstat -anp | grep "80"
    내 홈페이지 만들기_간단한 html 작성
    <html>
    <head>
    <meta charset="utf-8">
    <title>안녕</title>
    </head>
    <body>
    <b><시즌 #1> </b></br>
    <a href="./linux.html" target="_blank"> - 리눅스 과정 </a>
    </body>
    </html>
  3. index 페이지 편집하기, 간단한 html 추가 작성
    cd /var/www/html
    ls
    vi index.html
    <html>
    <head>
    <meta charset="utf-8">
    <title>안녕</title>
    </head>
    <body>
    <b><font color="red"> 연결 완료! </b></br>
    <a href="./index.html"> - 홈으로 돌아가기 </a>
    <img src="">
    </body>
    </html>

리눅스 실무 명령 과제하기

  1. /etc/ 디렉토리의 파일들을 시간순으로 출력한다.
    ls -altr /etc

  2. /var/log/message는 대부분의 시스템 로그를 기록한다. 터미널에 실시간 출력되도록 해
    본다.
    tail -f /var/log/message

  3. 이전 명령어들을 확인해본다.
    history

  4. 파일 복사, 삭제, 옮기기
    cp, rm, mv

  5. /etc 디렉토리의 파일들을 tar로 묶고, 풀어본다.
    tar cvfz abc.tar.gz /etc
    tar xvzf output.tar.gz

  6. 파일을 압축하고 풀어본다.
    gzip out.tar
    gzip -d abc.tar.gz

  7. tar와 압축을 동시에 수행해본다.
    5,6 중복

  8. 랜카드에 설정된 인터페이스와 IP를 확인해본다.
    ifconfig ens33 up/down
    dchclient
    nmtui

  9. 윈도우의 작업관리자와 동일한, 현재 프로세스정보를 확인한다.
    ps -ef
    top

  10. 시스템 부팅 시 메시지들을 확인해본다.
    dmesg
    vi /var/log/dmesg

  11. 다른 서버로 ssh 접속을 수행한다.
    ssh test@server2.com -p 2222
    (p옵션으로 바뀐 포트로 연결하기)

  12. 다른 서버로부터 파일을 복사해온다, 복사해간다.
    ssh test@server2.com:/etc/passwd ./sv2.pass -p 2222

  13. 명령을 연속으로 수행한다.
    &&

  14. 1기가 파일을 생성한다.
    fallocate -| 10M(1G, 10k...) ./testfile.dmp

  15. www.naver.com 서버가 살아있는지 확인한다.
    ping www.naver.com

  16. 내 컴퓨터에서 www.naver.com 까지 지나가는 네트워크 경로를 확인한다.
    traceroute -n www.naver.com

  17. tcpdump라는 유틸을 설치한다.
    sudo apt-get install tcpdump

  18. tcpdump를 이용하여 웹포트를 스니핑한다.
    sudo tcpdump -i ens33 port 80

  19. tcpdump로 덤프한 파일을 윈도우상에서 분석한다.
    wireshark라는 프로그램을 통해서덤프 받은 파일을 윈도우상에서 분석

  20. 현재 내가 관리하는 서버에 열려있는 포트와 열고있는 프로세스를 확인한다.
    netstat -anp | grep “LISTEN”

  21. httpd 서비스를 시작/중지 한다.
    systemctl stop/start/restart nginx

  22. named.conf 파일이 어디에 있는지 찾아본다.
    find / -name "named.conf" -print

  23. 현재 시간을 확인한다.
    date

  24. 설치된 서버의 시간이 맞지않는다. 시간 동기화를 시킨다.
    rdate -s time.bora.net
    ntpdate

  25. 현재 모든 프로세스를 출력해본다.
    ps -ef

  26. 특정 프로세스를 죽인다.
    kill -9 pid

  27. 화면을 지운다.
    clear

  28. vi로 두 개의 파일을 비교한다.
    x(puTTy에서 안하기로..)

  29. 프로세스를 트레이스해 본다.
    strace

  30. cron 사용법
    /etc/crontab


1주차 후기:
사실 내용 정리하느라 2주차 끝나고 1주차 후기를 작성한다. 1주차에는 첫날은 OT라서 수업을 4일간 진행했는데, 리눅스를 처음 접해봐서 솔직히 정말 어려웠고 분명 똑같이 따라한 것 같고, 다들 되는데 나만 안되는 것 같은 그런 순간들이 조금 힘들었다.
하지만 생각해보니 지금 실수해야 조금 더 내가 실수한 부분을 알 수 있고 더불어 질문할 수 있으니까 좀 더 성장할 수 있는거 아닐까 라는 생각..긍정회로 막 돌려..(ㅋㅋㅋㅋㅋㅋㅋㅋ)
마지막 리눅스 30개 실무 명령어 퀴즈는 구글링이나..책 찾아보지 않고 30개중 23개 맞춰서 뿌듯.. 성장할 일만 남아서 오히려 좋은 것 같다 1주차 이렇게 끝!

0개의 댓글