저번의 리눅스의 개념이 아직 부족하다고 느껴 해당 리눅스에 대한 공부를 시작하게 되었다.
유닉스라는 운영체제는 리눅스가 탄생하기 이전부터 널리 사용되었으며, 현재까지도 가장 많이 사용되는 운영체제이다.
유닉스는 상용 소프트웨어로 발전되었고, 현재는 무척 비싼 비용을 지불해야 사용이 가능하다.
이것을 대체하는 것이 리눅스이며, 유닉스와 비슷한 기능과 역할을 하며 무료로 사용이 가능하다.
1991년 8월 리누스 토발즈가 어셈블러어로 리눅스 커널을 처음 만들면서 리눅스가 만들어졌다.

현재 리눅스는 위와 같이 운영되고 있다고 이해하면 된다.
커널에는 제어하는 하드웨어 장치의 지원여부 정보, 하드웨어 성능, 하드웨어를 제어하는 코드들이 들어있다.
리눅스 커널의 버전은 안정버전과 개발버전으로 나뉜다. 안정버전은 이미 검증된 개발 완료 코드로 구성되어 있으며, 개발버전은 현재 개발중인 코드다.
리눅스는 시스템이 가동되는 방법을 7가지 런레벨로 나눌수 있으며, 런레벨은 다음과 같다.
런레벨0: power off 종료모드
런레벨1: Resque 시스템복구모드
런레벨3: Multi-User 텍스트모드의 다중 사용자 모드
런레벨5: Graphical 그래픽모드의 다중 사용자 모드
런레벨6: reboot
살펴보면
init0은 즉시 런레벨0번으로 시스템 전환하라는 의미이며, 런레벨0은 종료모드이다.
런레벨 2,4는 호환성을 위해 런레벨3번과 동일한 것으로 취급한다.
/lib/systemd/system
디렉토리에서 runlevel?.target파일 확인을 하면 된다.
전체적으로 아는 내용이었으나,
more,less라는 명령어도 존재한다.
more: 텍스트 형식으로 작성된 파일을 페이지 단위로 화면에 출력한다.
(스페이스바 누르면 다음페이지로 이동,b를 누르면 전페이지, q를 누르면 종료)
ex)
more /etc/systemd/system.conf
more +100 /etc/systemd/system.conf -> 10행부터 출력
less: more명령어와 용도가 비슷하지만 기능이 더 확장되어 있다. more명령에서 사용하는 키도 사용할수 있으며, 추가로 화살표키나 pageup/pagedown 키도 사용가능하다.
less /etc/systemd/system.conf
less +10 /etc/systemd/system.conf
리눅스는 다중 사용자 시스템이다.
/etc/passwd 파일을 에서

ubuntu사용자를 보면 ubuntu고 암호가 x로 표시되는데, 이는 /etc/shodow 파일에 비밀번호가 지정되어 있다는 의미다.
또한 홈디렉토리는 /home/ubuntu 이고, 로그인시 제공되는 셸은 /bin/bash이다.

/etc/group에서도 확인 가능하다.
파일 허가권은 rw-, r--, r-- 3개씩 끊어 인식하면 된다.
r은 read, w은 write, x는 excute의 약자이다.
즉 rw-는 읽거나 쓸수는 있지만 실행할수는 없다는 의미다.

위의 표를 보면 이해할 수 있다.
파일의 링크에는 하드링크와 심볼릭 링크가 존재한다.

위 그림을 살펴보면
원본파일이 inode1을 사용할때 하드링크를 생성하면 '하드링크파일'만 하나 생성되며, 같은 inode1을 사용하게 된다.
하드링크 생성방법
ln 링크대상파일이름 링크파일이름
원본파일에 심볼릭 링크를 생성하면 새로운 inode2를 만들고, 데이터는 원본파일과 연결되는 효과를 갖는다. (윈도우환경의 바로가기를 이해하면 편하며, 보통 심볼릭을 생성)
심볼릭링크 생성방법
ln -s 링크대상파일이름 링크파일이름
inode
리눅스/유닉스의 파일 시스템에서 사용하는 자료구조이며 파일이나 디렉터리의 여러가지 정보 존재한다.
모든 파일이나 디렉토리에는 하나의 inode가 존재하며 해당 파일의 소유권,허가권,파일종류 등의 정보와 해당 파일의 실제 데이터 위치가 있다. 이러한 inode가 모여있는 공간이 inode블록이며, 일반적으로 전체디스크 공간의 1%정도 차지한다.
dpkg, apt개념
파일 압축
리눅스에서 예전에는 gz를 사용했지만 요즘은 압축률이 높은 xz나 bz2를 사용한다.
xz: 확장명 xz로 압축하거나 풀어준다. 비교적 최신 압축 명령으로 압축률이 뛰어나다.
bzip: 확장명 bz2로 압축하거나 풀어준다.
gzip: 확장명 gz로 압축하너가 풀어준다.
zip/unzip: Windows용과 호환되는 확장명 zip으로 압축하거나 풀어준다.
파일 묶기
리눅스에서는 파일압축과 파일묶기를 원칙적으로 별개의 프로그램으로 실행하도록 되어 있다.
tar: 확장명 tar로 묶음 파일을 만들거나 묶음을 풀어준다.
사용예시
tar cvf example.tar /etc/systemd/
tar xvf example.tar /etc/systemd/
묶기
tar풀기
tar cvfJ example.xz /etc/systemd/
tar xfJ example.xz /etc/systemd/
묶기 + xz 압축
xz 압축 해제 + tar풀기
tar cvfz example.gz /etc/systemd/
tar xfz example.gz /etc/systemd/
묶기 + gzip 압축
gzip 압축 해제 + tar 풀기
tar cvfj example.bz2 /etc/systemd/
tar xfj example.bz2 /etc/systemd/
묶기 + bzip2 압축
bzip2 압축 해제 + tar풀기
리눅스에서 특정 파일의 위치를 검색하는 명령어는 다음과 같다.
find명령어를 통해 확인이 가능하다.
브로드캐스트 주소
게이트웨이
내부 네트워크가 외부로 연결되기 위한 컴퓨터 또는 장비
route add default gw 게이트웨이주소 dev 장치이름
위와 같이 추가해주면 된다.
서비스는 평상시에도 늘 가동하는 서버 프로세스 이며, 소켓은 필요할때만 작동하는 서버 프로세스 이다.
초창기 커널은 하드웨어가 그리 많지 않았으므로 커널에 하드웨어를 지원하는 코드를 모두 넣어놓았다. 그런데 시간이 지날수록 지우너해야할 하드웨어가 많아져 커널에 넣어야할 코드가 많아졌고, 커널도 점점 커졌다. 커널이 커지면 컴퓨터의 자원을 많이 차지하여 결국은 운영체제를 무겁게 만드는 결과를 낳는다.
커널에 들어이쓴 하드웨어를 제어하는 코드 중 일부는 항상 사용되는 것이 아니라 필요할때만 가끔씩 사용된다. 그러다보니 자주 사용하지 않고 가끔 사용하는 코드를 커널에 넣지 않고 별
도로 보관했다가 필요할 때 호출해 사용한다면. 커널의 크기가 커지지 않아•도 더 많은 하드웨어를
지원할 수 있겠다는 생각을 하게 되었다. 이렇듯 별도로 보관했다가 필요할 때마다 호출하여 사용되
는 코드를‘모듈’이라고 부른다.

전체적인 플로우는 다음과 같다.
1학년때 수업 잘 들을걸