본문 바로가기
Programming/6. Elice AI Track

002_리눅스(6/21)

by @sangseophwang 2021. 6. 23.

@behance

 

엘리스 1주차 1일

첫 날부터 배우는 양이 꽤 된다. 곱씹으면서 공부하려고 영상을 보면서 필기를 엄청 했더니 A4 용지를 양 쪽으로 3장을 채웠다..! 어마어마한 양이지만 필요한 부분만 쏙쏙 정리해보고자 한다! 자 드가자 😎


용어 정리

  • kernel : 하드웨어를 제어하는 코드를 통해 소프트웨어와 커뮤니케이션을 하며 시스템의 모든 자원을 통제 및 관리하는 역할을 함.
  • Ubuntu : Linux의 한 종류. 개인용 pc 환경에 최적화돼있으며 간결하고 쉽다. 많이 쓴다. 6개월마다 업데이트한다고 한다.
  • Shell : 명령어 해석기. 사용자가 명령어를 막 쓰면 Shell이 그것을 해석해 커널에게 전달한다.
  • GUI : Graphic User Interface.  MacOS와 Windows가 대표적이다.
  • CLI : Command Line Interface.  명령어 조작을 하는 인터페이스로 터미널이 그 예시다.
  • apt: Advanced Packaging Tool. 소프트웨어 설치(install), 제거(remove), 업데이트(update) 등. 권한 없이 실행 x
  • root : 리눅스 최고 관리자. 'sudo' 방식으로 권한 획득  (sudo apt install package)
  • bash : Bourne-Again Shell. GNU 프로젝트의 일환으로 개발됨.
  • LTS : Long Term Support. Node JS나 Ubuntu 프로그램을 설치하게 될 때 보는 용어로, 안정적인 버전이라는 뜻이다.

기초 명령어

whoami 로그인한 사용자 아이디 ls -l 디테일한 현재 디렉토리 목록 --help 명령어 사용법 출력
passwd 사용자 비밀번호 ls -a 숨겨진 파일 포함  mkdir 디렉토리 생성
pwd 현재 디렉토리 위치 ls -al a + l (모든 파일,폴더 디테일
          하게!)
touch 빈 파일 생성
ls 현재 디렉토리 목록 cd 해당 디렉토리 이동 rmdir 디렉토리 삭제
* rm 파일 및 디렉토리 삭제 * cp 파일 및 디렉토리 복사 mv 파일 및 디렉토리 이동
* cat 파일 내용 출력 find 파일 검색 grep 파일 내 지정한 패턴이나 문자열을 찾은 후 그 패턴을 포함하고 있는 모든 행 출력

> rm  사용법 및 옵션

rm [option] [삭제할 파일 또는 디렉토리]

  • -r :  디렉토리 및 그 하부 파일 삭제
  • -f : 삭제 여부를 물어보지 않고 그냥 삭제
  • -i : 삭제 여부를 물어본다
  • -rf : 삭제 여부를 물어보지 않고 디렉토리 및 그 하부 파일 삭제 (주의해서 사용할 것!)

> cp 사용법 및 옵션

cp [option] [대상 위치 및 이름] [복사하고 싶은 위치]

  • -r : 하위 디렉토리 전부 복사
  • -p : 소유주, 그룹, 권한, 시간 경로 등 그대로 복사

> cat 사용법 및 옵션

cat [option] [파일 이름]

  • -n : 왼쪽의 줄 번호와 함께 내용 출력
  • > : 파일의 내용을 덮어쓴다
  • >> : 내용이 있다면 뒤에 내용을 추가한다.
# Elice.txt 내부에 'hello Elice!' 라는 내용이 있다고 가정해보자.

cat elice.txt
>> hello elice!

cat Elice.txt >> elice.txt
>> hello elice!
   hello Elice! [내용이 복사됨]
   
cat elice.txt
>> hello elice!
   hello Elice!

> find 사용법

find [파일 경로] [-name] [파일 이름] [-type d/f]

ex) home -name elice -type d  -> home 디렉토리에 이름이 elice인 폴더 찾기

 

> grep 사용법 및 옵션

grep [option] [pattern] [파일명]

ex ) grep -c elice hello.txt     -> elice 문자열이 있는 행의 수 출력

        grep [0-9] hello.txt          -> 숫자가 존재하는 행 출력

        grep -v ^# somecode      -> somecode 파일에서 #으로 시작하지 않는 행 출력

  • -i : 대소문자 구분 없이 검색
  • -v : 패턴과 일치하지 않는 행을 출력
  • -c : 패턴과 일치하는 행의 개수 출력
  • -w : 단어 단위로 매칭되어야 출력

File Redirection

리눅스 쉘은 항상 아래와 같이 표준 입출력을 파일 형태로 열고 있다.

  • 표준입력(stdin: 키보드)
  • 표준출력(stdout: 모니터)
  • 표준에러(stderr: 모니터)

기본적으로 프로그램은 연산 결과를 출력 장치(파일, 모니터, 프린터 등)로 내보내는데요. 이 출력되는 데이터를 임의로 다른 장치로 보내는 것을 재지향(redirection)이라고 한다.

 

다시 말하면 파일이나 프로그램, 명령어 등의 출력을 낚아채어 다른 파일이나 프로그램, 명령어의 표준 입력으로 보내는 것을 말한다.

 

> file

표준 출력을 파일로 재지향. 파일이 없으면 만들고, 있으면 덧붙인다.

 

>> file

표준 출력을 파일로 재지향. 파일이 없으면 만들고, 파일이 있으면 파일의 끝에 덧붙인다.

 

2>&1

표준 에러를 표준 출력으로 재지향. 

 

< file

파일로부터 표준 입력을 받도록 재지향.

 

cat < hello.txt > elice.txt

1. hello.txt 내용을 cat 명령어의 입력 스트림으로 전송

2. cat 명령어는 hello.txt 파일 내용을 출력하는 것으로 바뀜

3. cat 명령어의 출력 스트림을 elice.txt로 변경

4. cat 명령어의 출력 스트림이 화면이 아닌 elice.txt에 저장

 

결론 : hello.txt 내용이 elice.txt에 복사됨.


파일 시스템

저장 장치 내에서 데이터를 읽고 쓰기 위해 미리 정한 약속

파일 저장 및 검색을 할 수 있도록 관리하는 법

파일을 어떻게 관리할 것인가에 대한 정책

FAT NTFS EXT
파일 할당 테이블
디지털 카메라 메모리카드의 포맷 형식
단순한 자료구조
공간 활용 ↓
윈도우 포맷
시스템 복구 능력이 있음
안정적이다.
보안 부분도 FAT보다 좋다
리눅스에서 쓰는 파일 시스템
EXT2부터 EXT4까지 발전
tree 구조 (계층적)

파일 속성

- rw-r-r- 1 elice elicer 1990 9월 16 09:26 elice.txt
파일 유형
- : 파일
d : 폴더
파일 권한
r : 읽기 / 4
w : 쓰기 / 2
x : 실행 /1
소유자 - 그룹 - 그 외
링크 수 소유자 소유 그룹 용량 날짜 파일명
  • 파일 권한 변경 : chmod

chmod 777 elice.txt    =   모든 사용자가 모든 권한을 가짐 ( rwxrwxrwx / (4+2+1)(4+2+1)(4+2+1) / 777 )

 

  • 소유권 변경 : chown

chown elice [소유할 유저]:elicer [소유할 그룹] elice.txt [소유권 변경하고 싶은 파일 및 디렉토리]

 


Linux Pipe

pipe : 둘 이상의 명령어를 묶어 출력의 결과를 다른 명령으로 전환할 수 있는 기능. | 기호를 사용해 명령어끼리 연결한다.

 

ex ) head a.txt | grep [0-9] > result.txt

 

1. a.txt의 첫 10줄 출력

2. 출력된 결과물을 grep을 통해 숫자가 있는 행만 걸러 출력

3. 이 결과물을 result.txt에 저장

 

ex ) ls | grep user 01 > output.txt

 

1. ls 를 실행해 나온 디렉토리 및 파일 결과 중 user와 01이라는 이름을 가진 파일을 출력

2. 그걸 output.txt에 저장


Mount

물리적 저장 장치(usb같은)를 디렉토리에 연결시켜주는 것.

원래 다른 운영체제는 PnP(Plug and Play) 라고 해서 꽂으면 바로 연결이 된다.

리눅스는 PnP 기능이 안돼서 직접 연결시켜줘야 한다.

 

mount [option] [device] [directory]

 

1. -a : /etc/fstab에 명시된 파일 시스템을 마운트할 때

2. -t : 파일 시스템의 유형 지정. 생략시 /etc/fstab 참조

3. -o : 추가 설정 적용시 사용. 다수 조건은 콤마로!

 

remount [device] [directory]

 

디바이스 추출

 


프로세스

→ 메모리에 적재되어 실행되고 있는 모든 프로그램.

 

특징

1. 모든 프로그램은 하나 이상의 프로세스를 가진다.

2. 병행적 실행이 가능하다.

3. 부모-자식 프로세스가 있다. (fork)

4. 커널에 의해 관리된다.

5. 모든 프로세스는 소유자가 있다.

6. 프로세스마다 식별을 위한 id (PID) 가 있다.

→ PID 1번 : init 프로세스  // PID 2번 : kthreadd 프로세스

 

> 프로세스 명령어 및 옵션

ps [option] : 프로세스 목록 보기

  1. -e : 현재 실행 중인 모든 정보 출력

  2. -f : 모든 정보 확인

  3. -a : 실행중인 전체 사용자의 모든 프로세스 출력

  4. -u : 프로세스를 실행한 사용자와 시작 시간 등 출력

  5. -x : 터미널 제어 없이 프로세스 현황 보기

 

ps -ef : 모든 프로세스 속성 리스트 확인

ps -avx : 시스템에서 실행 중인 모든 프로세스 출력

 

> 프로세스 종료

kill [option] [PID]

  1. -ㅣ : 사용 가능한 시그널 목록

  2. -1 : 재실행

  3. -9 : 강제 종료

  4. -15 : 정상 종료


 job 

백그라운드에서 실행되는 작업을 보여주는 명령어.

프로세스와 달리 터미널 명령을 통한 작업만을 의미한다 *

job을 통해 프로세스 실행이 가능하지만, 터미널이 꺼지면 같이 종료된다.

각각의 터미널마다 job은 따로 존재한다.

 

sleep 500&    # 500밀리초만큼 기다리는 일을 백그라운드에서 실행
sleep 700&
jobs
kill %1       # sleep 500& 종료

 at

지정된 시간에 1회 실행되는 작업 예약 명령어.

시간이 되면 수행되고, 작업 리스트에서 사라짐.

 

at [option] [시간] [날짜] [+증가시간]

  1. -m : 출력 결과가 없어도 작업이 완료되면 메일로 결과 보내줌.

  2. -f : 스크립트 파일을 실행할 때 사용

  3. -l : 예약된 작업 목록 출력. atq 명령어와 동일.

  4. -v : 작업이 수행된 시간 출력

  5. -d : 예약한 작업 삭제. atrm 명령어와 동일

 

 crontab

지정된 시간에 주기적으로 실행    (1회성인 at과 다른 부분!)

 

crontab [option]

  1. -l : 현재 계정에 설정된 crontab 정보를 보여줌

  2. -e : 현재 계정에 설정된 crontab 정보를 수정

  3. -r : 현재 계정에 설정된 crontab 정보 삭제

  4. -v : 특정 사용자의 crontab 정보를 다루게 해줌.

반응형

'Programming > 6. Elice AI Track' 카테고리의 다른 글

006_git_the final (6/25)  (0) 2021.06.27
005_git & Clean Code(6/24)  (0) 2021.06.25
004_gitlab & Clean Code(6/23)  (0) 2021.06.23
003_git(6/22)  (2) 2021.06.23
001_사전 학습 내용 정리(~6/20)  (0) 2021.06.22

댓글