[생활코딩] Linux 기초 정리 (2) - directory부터 데몬까지
본 글은 “생활 코딩 - Linux” 강의 내용을 요약 및 정리한 글입니다.
리눅스의 기초를 잡기 위해 개인공부 목적으로 정리했으며, 자세한 사항은 생활코딩 - Linux로 참고하시길 바랍니다.
디렉토리 구조1
- [The Linux Directory Structure, Explained](https://www.howtogeek.com/117435/htg-explains-the-linux-directory-structure-explained/){: target="_blank"} 참고
- C:\ 드라이브 및 드라이브 문자가 사라지고 / 및 암호처럼 들리는 디렉토리로 대체되었으며 대부분은 세 개의 문자 이름을 가진다.
/
- root directory
- Linux 시스템의 모든 것은 루트 디렉토리로 알려진
/
디렉토리 아래에 있다. - Linux에는 드라이브 문자가 없다.
root
- root home directory
- 루트 사용자의 홈 디렉토리이다. /home/root에 있는 대신 /root에 있다.
/bin
- Essential User Binaries
- 시스템이 단일 사용자 모드로 마운트될 때 있어야 하는 필수 사용자 바이너리(프로그램)가 들어가 있다.
- 컴퓨터는 0과 1로 되어 있다. 실행가능한 것을 컴퓨터에서는 binary라고 한다.
- 사용자들이 사용하는 명령들이 위치하고 있다.
- Firefox와 같은 응용 프로그램은 /usr/bin에 저장되고 bash 셸과 같은 중요한 시스템 프로그램과 유틸리티는 /bin에 저장된다.
sbin
- System Binaries
- 시스템 프로그램
- root 사용자가 쓰는 프로그램들은 sbin에 있다.
/etc
- Configuration Files
- 일반적으로 텍스트 편집기에서 손으로 편집할 수 있는 구성 파일이 있다.
/lib
- Essential Shared Libraries
- /bin 및 /sbin 폴더의 필수 바이너리에 필요한 라이브러리가 포함되어 있다.
/home
- 각 사용자의 홈 폴더가 있다.
cd ~
를 하면 홈 디렉토리로 한방에 이동할 수 있다.- 예를 들어, 사용자 이름이 bob인 경우 /home/bob에 홈 폴더가 있다. 이 홈 폴더에는 사용자의 데이터 파일과 사용자별 구성 파일이 들어 있다. 각 사용자는 자신의 홈 폴더에 대한 쓰기 권한만 가지며 시스템의 다른 파일을 수정하려면 높은 권한(루트 사용자가 됨)을 얻어야 한다.
/var
- Variable Files
- 내용이 바뀔 수 있는 파일들이 있다.
- 로그 파일 및 정상 작동 중에 일반적으로 /usr에 기록되는 기타 모든 내용은 /var 디렉토리에 기록된다.
/tmp
- Temporary Files
- 여기에 있는 파일들은 reboot되면 없어진다.
/opt
- Optional add-on Applications
- 선택적 소프트웨어 패키지에 대한 하위 디렉토리가 있다.
/usr
- User Programs
- 시스템에서 사용하는 응용 프로그램 및 파일과 달리 사용자가 사용하는 응용 프로그램 및 파일이 포함되어 있다.
- 예를 들어, 비필수 응용 프로그램은 /bin 디렉토리 대신 /usr/bin 디렉토리에 있고, 비필수 시스템 관리 바이너리는 /sbin 디렉토리 대신 /usr/sbin 디렉토리에 있다.
- 각각의 라이브러리는 /usr/lib 디렉토리에 있다.
파일 찾는 법 - locate 와 find
locate
locate 파일명
- 실행이 안된다면
sudo apt install mlocate
로 설치
- 실행이 안된다면
- 컴퓨터 안에 저장되어 있는 파일들에 대한 정보를 가지고 있는 데이터베이스를 찾는다.
- locate가 사용하는 데이터베이스를
mlcate
를 이용한다.sudo updatedb
이 명령을 수행
find
find()
함수는 실제로 파일들을 뒤진다.find /
: 루트 디렉토리부터 찾겠다.- ex.
sudo find / -name *.log
- ex.
find .
: 현재 디렉토리부터 하위디렉토리까지 찾겠다.find ~
: 자신의 홈 디렉토리부터 찾겠다.
whereis
- 어디에 있냐
ls: /usr/bin/ls
: ls의 위치/usr/share/man/man1/ls.1.gz
:man ls
했을 때의 사용설명서 내용echo $PATH
: 환경변수들의 경로인 path를 출력하는 명령어- path들은 전부 : (콜론)으로 구별되어 있다.
- 리눅스에서 사용하는 명령어들도 결국 일종의 실행파일인데 명령어 입력 시 환경변수에 잡혀있는 PATH를 따라가서 해당 파일이 실행되는 원리로 명령어가 작동된다는 것
- 결국 mkdir, ls 등의 명령어도 결국 저 path 경로에 저장되어 있다는 얘기이다.
컴퓨터의 구조
-
프로그램은 storage에 깔려 있다. 깔려 있는 프로그램을 실제로 사용할 때는 그 프로그램을 읽어서 memory에 적재시킨다. 실행 안하는 것은 memory에 올라오지 않는다. 올라온 것을 cpu가 거기에 적혀있는 대로 읽어서 로딩한다.
program
: 파일에 저장된 형태process
: 실행되고 있는 상태의 프로그램processor
: process를 처리하는 것CPU
: 프로그램 실행과 데이터 처리를 담당하는 핵심 요소이다.memory
: 프로그램 코드와 데이터를 저장하는 장치
프로세스 모니터링 (ps, top, htop)
- 현재 시스템의 프로세스를 보여주는 것을 실행.
ps
ps
: process list를 보여주는 명령어
ps aux
: process background를 보여주는 명령어
ps aux | grep apache
: 이 중 apache만을 보여줌
top
sudo top
입력
htop
htop
입력- 화면 상단에 8개의 숫자가 있는데 이는 cpu 숫자를 의미.
- Load average는 부하를 의미
백그라운드
- 멀티태스킹 : 여러 개의 화면을 한 화면에 나타냄
nano
: 에디터 편집기ctrl + z
는 잠깐 나갔다 오는 것fg
로 치면 방금 실행한 것으로 감
jobs
: 현재 진행중인 프로그램 알려줌+
는 fg를 했을 때 되돌아가는 프로그램fg %숫자
: 그 프로그램으로 돌아감
kill %숫자
: 그 프로그램 종료kill -9 %숫자
: 좀 더 강력하게 프로그램 종료
데몬 (daemon)
- 데몬의 특성은 항상 실행되고 있다.를 의미
- ls, rm, mkdir은 필요할 때만 켰다 킨다. 그러나 server는 데몬을 의미.
service와 자동실행
service [데몬] [상태]
: 현재 실행중인 데몬을 제어한다.start
: 실행stop
: 중지
sudo apt-get install apache2
하면 아파치라는 웹서버를 설치한다.- 에러가 나면
sudo apt-get update
해준다. /etc/init.d/
에는 데몬 프로그램들이 있는 곳이다.
- 에러가 나면
sudo service apache2 start
를 입력하면 apache2 웹서버가 시작된다.
px aux | grep apache2
sudo service apache2 stop
: 서버 멈춤
cron
- 정기적으로 명령을 실행시켜 주는 소프트웨어 (ex. 정기적으로 백업, 전송…)
crontab -e
: 하고자 하는 일을 정의할 수 있다.- 정기적으로 실행하고 싶을 때 여기에 적는다.
m
: 실행되는 분의 주기*/1
: 1분마다
h
: 실행되는 시간의 주기dom
: day of month (일)mon
: 달 주기dow
: 요일
date
: 현재 시간을 알려줌
-
>>
: 실행할 때마다 date가 date.log 끝에 추가 -
crontab -l
: 우리가 처리한 내용을 화면에 출력
-
tail -f date.log
: tail은 끝부분을 보여주는데 -f를 하여 감시하고 있다가 date.log의 끝부분이 나타나면 출력해줌.ctrl + c
: 빠져나감 -
*/1 * * * * date >> date.log 2>&1
: 표준에러가 나면 표준출력으로 나타내어 date.log에 추가2>&1
: 표준에러를 표준출력으로 해줌
쉘을 시작할 때 실행
alias
: 별명alias l='ls -al'
하고 l만 누르면ls -al
이 실행된다.
cd ~
로 간 다음nano .bashrc
로 하면 쉘에 접속할 때 쉘 프로그램이 .bashrc 안에 있는 명령어를 수행한다.
crtl + End
을 누르면 코드 맨 아래로 가는데 여기서Hi, bash
를 쳐본다.exit
: 나가기bash
: bash 실행
댓글남기기