터미널(Terminal)

우리가 컴퓨터를 사용하는 방식은 보통 Window 기준으로 사용자가 마우스를 이용해서 window 운영체제를 거쳐 명령을 내리고 하드웨어를 거쳐 처리한후 다시 사용자가 결과를 받는다.

이때 마우스를 쉘(shell)이라 할 수 있다. 그럼 터미널(terminal)은 인풋과 아웃풋의 역할만 하는 것이다. OS랑 직접 통신을 할 수 있게 해준다.

터미널(terminal)에는 다양한 명령어들이 존재한다. 아래의 명령어들은 리눅스(linux)를 기준으로 한다.

 

명령어

  • ls : 현재 디렉토리의 파일 목록을 출력한다.
    • a : 숨긴 파일을 포함해서 보여준다.
    • l : 자세한 파일 정보를 함께 보여준다.
  • cd : 디렉토리를 이동한다.
  • pwd : 현재 경로를 보여준다.
  • rm : 파일이나 디렉토리를 삭제한다.
  • cp : 파일이나 디렉토리를 복사한다.
  • touch : 새로운 파일을 생성하거나, 이미 파일이 존재한다면 최종 수정 시간을 현재 시간으로 변경한다.
  • mv : 이름을 변경하거나 다른 디렉토리로 이동시킨다.
  • mkdir : 새로운 디렉토리를 생성한다.
  • rmdir : 디렉토리를 삭제한다.
  • cat : 파일 내용을 보여준다. 여러 파일의 내용을 연결해서 볼 수도 있다.
  • grep : 입력으로 전달된 파일의 내용에서 특정 문자열을 찾고자할 때 사용하는 명령어다.
  • history 1 : 터미널에서 사용한 명령어 기록을 보여준다. 사용하고 싶은 명령어를 !해당번호 를 입력한다.
  • head, tail : 파일의 앞 10행 또는 끝 10행을 보여준다.
  • more, less : 텍스트 형식의 파일을 페이지 단위로 보여준다.
  • file : 파일의 종류를 보여준다.
  • clear : 터미널 화면을 정리한다.
  • mount : 특정 장치를 마운트한다.
  • umount : 마운트를 해제한다.
  • tar : 파일을 압축하거나 압축을 해제할 때 사용한다.
    • c : 파일을 tar로 묶는다.
    • f : 압축할 파일을 지정한다.
    • x : 압축을 해제한다.
    • z : gzip으로 압축한다.
    • t : tar로 압축된 내용을 확인한다.
    • p : 파일 권한을 저장한다.
    • v : 처리 과정을 자세히 보여준다.
    • C : 경로를 지정한다.
  • halt -p, poweroff, shutdown -P now : 시스템을 종료한다.
  • reboot, shutdown -r now : 시스템을 재부팅한다.
  • chmod {모드} {파일/디렉토리 명} : user/group/other 세 가지에 대해 각각 권한을 설정할 수 있다.

구글에 'Linux commands cheat sheet'로 검색해보면 명령어들이 잘 정리된 자료가 잔뜩 나온다.

아니면 터미널 내부에서 man <명령어> 를 입력하면 명령어에 대한 도움말을, <명령어> --help를 사용하면 해당 명령어의 옵션을 확인할 수 있다.

 

vi 에디터

윈도우엔 '메모장'이라는 앱이 기본적으로 설치되어 있다. 간단한 텍스트 파일을 여기서 편집할 수 있다.

vi 에디터는 리눅스에서 사용할 수 있는 텍스트 기반의 편집기로, 터미널에서 각종 텍스트 문서를 편집할 수 있다.

vi <파일명> 명령어로 실행을, **:wq**로 저장/종료가 가능하다.(w - 저장, q - 종료)

 

서버접속(실습)

  1. 서버는 AWS(아마존 EC2 서비스)를 이용한다.
  2. 인스턴스(서버)를 생성한다.
  3. 가상서버 OS를 선택한다. (아마존 리눅스)
  4. t2.micro를 선택한다.
  5. 방화벽을 선택한다.
  6. 키 페어를 선택한다. (RSA 방식)
  7. 원격으로 키젠을 생성한다.
    1. 여기서 우리가 가지고 있는 키는 서버 접속에 필요한 Privite 키다.
    2. Privite 키를 가지고 서버와 통신을 할 수 있다.
  8. 퍼블릭 IP주소와 프라이빗 IP 주소 생성된다. 이때 퍼블릭 IP주소는 고정IP가 아니다.
  9. 다운로드 받은 Privite 키를 특정위치에 잘 보관한다. (ssh-keygen 설정법)
ssh -i ~/Privite 키 위치/Privite 키 이름/ 원격서버유저이름@IP주소 를 입력하여 서버에 접속한다.
===============================================================================
ex) ssh -i ~/develop/TEST.pem ec2-user@127.0.0.0
  1. 웹 서버에 필요한 node 를 설치한다.
  2. 새로운 디렉토리를 생성한다. mkdir 디렉토리명 → 생성한 디렉토리로 이동한다.
  3. npm init 명령어를 이용하여 package.json을 설치한다.
  4. 서버에 필요한 node 중 express를 설치한다. npm install express
  5. 디렉토리에 파일하나를 생성한 후 vi 에디터를 이용하여 코드를 작성해준다.
const express = require('express')  --> express를 사용하겠다.
const app = express()  --> 새로운 인스턴스를 생성하겠다.
const port = 3000  --> 3000번 포트를 사용하겠다.

app.get('/', (req, res) => {
  res.send('Hello World!')
})
--> 받을 해시 주소(?), 실행될 함수(?)

app.listen(port, () => {
  console.log(`Example app listening at <http://localhost>:${port}`)
})
--> 포트를 연 다음 리스닝하고 있는다.
  1. 그런 다음 ip주소 + 포트 를 작성하여 브라우저로 접속한다. ex) http://127.0.0.0:3000
  2. 만일 터미널을 닫아 서버가 닫히는 경우를 방지하기 위해 다양한 demon화 방법이 있다.
  3. 첫번째 방법으론 백그라운드화 시키는 방법이 있지만 오류가 생겨 닫히면 수동으로 다시 서버를 열어야 한다.
  4. 두번째 방법으로 pm2 를 사용하는 방법이 있다. npm install pm2 를 설치한다. 그 후 실행한다. (.bin 폴더) (sudo ?)
  5. 세번째 방법으로는 forever 방법도 있지만, pm2 방법을 주로 사용한다.

 

notion : https://noyclah.notion.site/5fa41aa9940f47849561513c04ae9b2c

'공부 > 네트워크 관련' 카테고리의 다른 글

Git 다양한 상황에 따른 해결방법  (0) 2022.06.02
암호화 / 복호화  (0) 2022.06.01
Git(깃)  (0) 2022.06.01
Process 와 Thread  (0) 2022.06.01
OSI 7계층과 TCP/IP  (0) 2022.06.01