- Linux 는 무료 오픈소스 운영체제라서 IoT 시대의 OS에 가장 적합
- Tab 누르면 파일 이름 자동완성
- 상대경로 : 현재 디렉토리에 따라 결과가 달라짐
Ex) cd . . >> 여기서 ..은 현재 디렉토리의 부모 디렉토리를 의미
- 절대경로 : 어디에 있건간에 그 주소가 맞음
Ex) cd /home/ubuntu
- Man 명령어 입력 후에 무언가를 찾고 싶을 때는 '/'를 치면 검색 기능 가능
검색하고 검색어 순서대로 보고 싶으면 'n'을 눌러주면 된다.
나갈때는 'q'
- 명령어 option에서 '-'는 축약형을 의미, '--'는 풀네임을 의미
- 리눅스/유닉스에서 숨김파일은 앞에 . 이 붙는다.
- Sort : 파일 정렬을 의미
- Super user = root user
- Package = application, app, program을 의미
Ex) ls, mkdir
- Package manager는 아이폰에서 app store와 같은 역할을 한다.
Ex) homebrew, apt
- Git : 버전 관리 시스템, 오픈소스가 아주 많음.
- Pipeline : 한 개 명령의 실행결과를 다른 명령의 입력으로 주고,
하나의 프로그램의 결과를 다른 프로그램의 입력으로 주고,
하나의 프로세스의 출력을 다른 프로세스의 입력으로 주는 것
- | : 파이프라고 함
- IO Redirection : 원래 출력 결과는 화면이어야하는데, 파일 내용 안에 저장해서 출력하는 것
(명령어 : '>' == '1>') > 방향을 바꿀 수 있다는 의미
- 프로그램 : 컴퓨터에 저장되어있는 것
- 프로세스 : 실행되어있는 상태의 프로그램
- Stream : input과 output이 흘러들어서 나가는 것
- Kernel VS Shell
- Kernel : hardware를 직접적으로 제어
- Shell : 사람이 입력하여 이 명령어를 kernel이 이해할 수 있는 방식으로 변경해서 kernel 에 전달
(shell 쉘의 경우에는 다양한 종류가 있어서 선택 가능)
- Zsh(지셸) VS bash
- Zsh : bash가 가지고 있지 않은 기능을 가짐
- Bash : 기본적으로 탑재
- Built-in command : cd / ls 이런 정해진 명령어
- 쉘 script : 배우들이 어떤 순서대로 움직여야 하는지 적혀있는 것처럼 순차적으로 실행되어야 하는 세트를 적어놓은 것
* : 와일드카드로서 모든 것을 의미
/bin 에는 기본 명령어들이 존재
Ex) echo, bash 등
#! /bin/bash : bin 밑에 있는 bash라는 프로그램에 의해 해석이 되어야 함을 의미
X : executable 실행가능한
/bin : User binaries=컴퓨터에서 실행가능한 프로그램(실행프로그램)을 의미
즉, 사용자들이 사용하는 명령어들이 존재
/sbin : system binaries
Ex) reboot
/etc : configuration files
Ex) wget
/var : variable files 내용이 바뀔 수 있는 특성 존재
Ex) log들
/tmp : 임시파일들이 저장 (껐다키면 사라짐)
/home : 사용자들의 디렉토리(/home/leeyounhyung)
/usr : 내가 설치하는 프로그램들은 대체로 여기로 저장됨
- Storage / Memory(RAM) / Processor(CPU)
Storage에 실행되지 않은 프로그램이 있고, 프로그램을 실행시키면 Memory에 올라오게 됨. Memory에 적재가 된 프로그램을 CPU가 읽어서 처리하게 됨
- Program : Mkdir, rm같은 command들은 /bin이나 /sbin (storage) 에 저장되어있는 파일
- Process : Memory에 저장되어 실행되고 있는 프로그램
- Processor : 그 Process를 처리하는 것
- 환경변수 $PATH에는 여러가지 주소들이 저장되어있음. 이 주소들을 순서대로 가면서 원하는 파일을 찾아줌
- Daemon : 항상 실행되고 있음
Ex) Server
- server - client(컴퓨터)
- 부팅시 자동으로 프로그램 실행하고 싶다면 아래의 디렉토리에 링크를 걸면 됨
- CLI 방식 > /etc/rc3.d
- GUI방식 > /etc/rc5.d
- cron : 정기적으로 명령을 실행시켜주는 도구
Ex) 정기적으로 백업, 정기적으로 이메일보냄
- 일반user/super user 차이
- Sudo : super user가 하는 일
- 리눅스에서 permission은 file과 디렉토리에 대한 할 수 있게하거나 할 수 없게 하는 권한을 의미
>> 권한 : Read/ Write / Execute
- 리눅스 권한 위치 : - / 사용자(user) / 그룹(group) / 다른사용자(other)
(파일-,디렉토리d 구분)
- 숫자를 사용하면 권한 한꺼번에 변경 가능
Ex) chmod 111 perm.txt
IP address는 inet 뒤에 나옴
- Localhost = 127.0.0.1 은 동일한 것이고, localhost는 자기 자신을 가리키는 주소
- Web browser가 요청한 인터넷 주소는 web server에 가게 되고, web server는 /etc/apache2(만약 apache를 사용한다면)의 설정파일들로부터 정보를 가져오게 됨. 그 설정 파일에는 웹 서버에 대한 html 문법이 들어있어서 그걸 띄움. 그걸 response로 줘서 web browser에서 그 내용을 띄움
- Document Root : Web page를 찾는 최상위 디렉토리를 의미 (변경 가능)
- 서버쪽에서 문제 해결의 핵심을 log가 어디있는지 찾고, log를 확인하는 것
- SSH : 원격제어를 가능하게 함
- Ssh 서버는 설치해야하는데 요즘에는 대부분 설치되어 나옴.
설치방법) openssh-server을 설치해야함.
명령어) sudo apt-get install openssh-server sudo serveice ssh start
- Ssh 원격을 사용해서 접속할 때도 server-client 개념이 들어감.
- Port : web - 22 / port - 80
- Well-known port : 0~1024번 포트까지
- 1024~65000번 포트 > 아무거나 써도 가능
- ISP : Internet Service Provider ex) KT
- 공유기가 라우터다.
- 포트포워딩 : 공유기(라우터)에 있는 포트를 사용하여 서버 외부에 있는 사용자가 공유기에 접 속한 특정 기기에 접속할 수있도록 연결해주는 것
- Defualt gateway : router의 IP 주소
명령어) ip route 치면 default via 뒤에 나오는 것
- DNS : Domain Name Server
- Host : 인터넷에 참여하고 있는 각각의 컴퓨터 한 대 한 대를 의미
- Host들이 모여있는 것 > network > network들이 모여있는 것 > internet
- Rsync(remote sync) : 원격으로 서로 독립되어 있는 애들끼리 동기화하는 것 (copy, backup에 유리)
- Sync : 동기화하다
- Rsync : 증분적으로 백업해서 굉장히 효율적임
- 공개키, 비공개키를 이용해서 자동으로 로그인을 하면 원격으로 cron이나 rsync와 같은 업데 이트를 할 수 있음
- 명령어 연결어
- ; 앞의 명령어가 실패해도 다음 명령어 실행
- && 앞의 명령어가 성공했을때 다음 명령어 실행
- & 앞의 명령어를 백그라운드로 돌리고 동시에 뒤의 명령어를 실행
- 리눅스에서는 0은 명령어 실행 성공 / 0이 아닌 값은 명령어 실행 실패를 의미