엘리스 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 |
댓글