IO Redirection
- I(Input)O(Output)
1. Output
1) ls -l > result.txt : result.txt로 파일 목록 저장
2) cat result.txt : result.txt에 저장된 것 보여줌
- Refirection : 출력되는 방향을 돌려서 다른 곳에서 출력
- Review:UNIX Programs : slideplayer.com/slide/5126304
- 프로세스
ex) ls -al (입력) => 출력
- [파일로 출력(실행결과)할 프로세스] > [파일]
- 프로세스 : 유닉스 계열에서 어떤 프로그램이 실행된 것
- 프로세스 출력 결과
1) Standard Output(>(redirection)) : 1>
2) Standard Error : 2>, 에러에 대한 redirection
ex) rm rename2.txt 1> result.txt 2> error.log
: 에러가 없다면(1>) result.txt로 저장하고 에러가 있다면(2>) error.log에 에러를 저장
2. Input
- 프로그램 : 컴퓨터나 하드디스크 또는 SDD에 저장되어있는 그 코드
- 프로세스 : 프로그램이 실행되고 있는 상태
- 유닉스 프로세스는 하나의 입력과 두개의 출력이 존재
- Standard Input (<)
- cat : 사용자가 키보드를 통해서 입력한 정보를 Standard Input으로 받음, ctrl+D로 나가기 가능
1) cat [파일명] : Command line argument를 통해 전달한 입력 값
2) cat < [파일명] : 파일에 있는 정보를 입력으로 받음, Standard Input를 통해 전달한 입력값
- head -n1 [파일명], head -n1 < [파일명]
- head -n1 < [파일명] > [전달하여 출력할 파일명]
3. 추가적인 내용
- ls -al >> result.txt : 이전 출력 결과에 추가로 출력
- >> : Redirection한 결과를 덧댐, 추가함
- mail [메일주소] <<[문장을 끝낼 때 사용할 문자]
- ls -al > /dev/null : 실행 결과를 파일과 화면에 모두 출력하지 않음
쉘과 커널
1, SHELL VS KERNEL
- 쉘 : 사용자가 명령을 입력하면 그 명령을 컴퓨터가 이해할 수 있도록 하는 프로그램
- 커널 : 물리적인 기계(하드웨어)를 직접적으로 제어하는 운영체제에서 가장 중심이 되는 코아
- [ [ [ [ 하드웨어 ] 커널 ] 쉘 ] 어플리케이션 ]
2. BASH VS ZSH
- echo "출력한 문장"
- echo $0 : 쉘이라는 카테고리에 속하는 사용하고 있는 구체적인 제품 중에 한 프로그램(bash) 사용
- zsh 설치 후 echo $0 입력하면 zshell로 동작하고 있는 것을 확인할 수 있음
=> 커널에서 만들어진 결과는 zshell를 통해 화면에 출력됨
1) zshell
- cd + 탭키 : 숨김 디렉터리 표시 안함
- cd /h/u/w + 탭키 : 자동으로 완성해서 /home/ubuntu/why 로 이동
- cd why dir1 : /home/ubuntu/dir1 으로 이동
2) bash
- cd + 탭키 : 숨김 디렉터리(.으로 시작)를 표시
- cd /home/ubuntu/why : /home/ubuntu/why로 이동
쉘 스크립트
1. Shell Script 소개
- 쉘 스크립트를 통해 자동화된 작업을 처리할 수 있음
- *.log : 확장자가 log인 모든 파일 가르킴
- cp [파일명].[파일 확장자] [백업할 디렉토리] : 백업할 디렉토리로 파일 백업, 백업할 디렉토리가 없다면 새로 만듦
2. Shell Script 사례
- bash의 위치 : ls /bin (기본 프로그램의 위치)
- bash의 스크립트 작성
1) nano backup
2) #!/bin/bash : bin 밑에 있는 bash라는 프로그램을 통해서 해석해야한다는 뜻
3) if ! [ -d bak]; then (현재 디렉토리에서 bak 라는 디렉토리가 없다면)
mkdir bak (bak 이라는 디렉토리를 만듦)
fi (if 문 종료)
cp *.log bak (.log로 끝나는 모든 파일을 디렉토리로 포함함)
4) ctrl + s 누르고 y
5) chmod +x backup : ls -l 시 x생김(x : 실행 가능한 파일), 파일을 실행 가능하게 만듦
- chmod : change mode, +x : x 추가
6) rm -rf bak
7) ./backup : 현재 디렉토리에 있는(./) backup 파일 실행
8) log 파일 하나 삭제후 ./backup 해도 오류 안뜸
디렉토리의 구조
- 리눅스(유닉스 계열)의 디렉토리 구조
- linux directory structure
1) / (root) : 데이터를 저장하는 최상위 디렉토리
2) /bin (User Binaries) : 사용자들이 사용하는 명령들이 위치
- Binary : 실행가능한 프로그램
3) /sbin (System Binaries) : root user나 시스템을 관리하는 목적을 가진 사용자들이 사용하는 프로그램 위치
4) /etc (Configuration Files) : 설정(프로그램이 동작하는 방법) 파일
- Configuration : 설정 -> 프로그램이 동작하는 방법을 바꾸고 싶을때 바꿈
- # : 주석
5) /var (Variable Files) : 바뀔 수 있는 특성을 가짐
6) /tmp (Temporary Files) : 임시 파일 저장
7) /home (Home Directories)
- cd ~ : 현재 사용자의 home Directory로 한번에 이동
8) /lib (System Library) : 공통으로 사용되는 라이브러리 보관
9) /opt (Optional add-on Application)
- whereis htop : htop 위치 알려줌
10) /usr (User Programs)
프로세스
- 프로세스 : 실행되고 있는 프로그램
1. 컴퓨터의 구조
1) Storage : SSD, HDD -> 프로그램 저장
(1) 가격이 쌈
(2) 저장 용량이 큼
(3) 속도 느림
2) Memory : RAM -> 프로그램 실행시 메모리에 적재
(1) 가격이 비쌈
(2) 저장 용량이 작음
(3) 속도 빠름
3) Processor : CPU -> 프로세서에 의해 처리
4) Program : Command가 /bin, /sbin에 파일 형태로 저장되어 있는 것
2. 프로세스 모니터링
1) ps
- ps : 프로세스 리스트를 보여줌
- ps aux : 백그라운드에서 실행되는 프로세스까지 포함하여 보여줌
- ps aus | grep apache : apache라는 이름을 가진 프로그램을 찾음
- PID : 포로세스 아이디, 식별자
- sudo kill [프로세스 아이디] : 프로그램 강제로 정지
2) top
3) htop
- RES : 실제적인 메모리 사용량
- Load average : CPU의 점유률 (1, 5, 15분간의 CPU의 점유율 평균치 표시), 코어 숫자에 따라 달라질 수 있음