리눅스란
컴퓨터 운영체제중 하나이며 1991년 9월 17일 핀란드 소프트웨어 개발자인 리누스 토르발스라는 사람이 개발하여 처음 출시한 운영체제 커널(kernel) 인 리눅스 커널에 기반을 둔 오픈 소스 유닉스 계열 운영체제 계열이다
참고로 펭귄 모양의 마스코트로 이름은 턱스(Tux) 입니다.
*운영체제-
os - 최초의 소프트웨어
리눅스를 사용하는 이유3가지
1. 오픈소스
리눅스는 오픈 소스 운영체제입니다. 즉 일반적으로 서용되는 window 와 Mac OS와 달리 리눅스는 개인이든 법인이든 누구나 리눅스를 무료 설치하여 사용할 수 있습니다.
2. 커스터마이징
사실 리눅스는 엄밀히 말하면 리눅스 커널을(Linux Kernel)을 의미합니다. 커널은 운영체제의 핵심적인 기능을 수행하는 운영체제의 한부부입니다. 즉, 리눅스는 커널의 형태로 만들어져 있어 운영체제가 수행해야하는 핵심 기능만 정의돼 있으며, 이외의 부분은 사용자가 자신의 용도에 맞게 커스터마이징하여 사용할 수 있습니다.
3. 안정적인 동작
현재까지도 리눅스는 오픈소스로 관리되고 있습니다. 이에 따라 넓은 사용 범위에서 다영한 사용자들의 검증을 실시간으로 거치고 있으며, 위험사례나 버그가 발견되면 불특정 다수의 사용자들에 의해 버그가 수정되어 왔기 때문에 다른 운영체제들보다 상대적으로 더 안정적으로 동작할 수 있습니다.
OS
OS 안에 윈도우 와 리눅스, 유닉스 등이 있다. 맥은 유닉스 기반이다(그래서 맥은 리눅스 설치할 필요가 없다).
'카카오톡' '엑셀', '크롬' → 응용 프로그램
OS가 하드웨어에 무언가를 전달해야하는 형태로는 응용 프로그램 →Shell →(socket)→ kernel → 하드웨어로 전달된다.
☆ 커널 : 메모리 상주 프로그램(memoy resident program)으로, 부팅 시 가장 메모리에 올라오며 할상 메모리에 상주한다.
ip
tcp
☆ shell : 응용 프로그램(application program , 유틸리티)이 메모리에서 언제 올라오고 내려가여 하는지 교통정리(job control)를 해주는 프로그램이다.(ex: cd , ls ...)
쉘은 사용자와 커널 사이의 인터페이스이며 사용자로부터 명령을 받아 여러 프로그램이나 명령을 실행한다.
shell에도 버전이 많다(bach, sh , zsh...)
☆zsh: zsh --version 설치는(sudo apt install zsh)
sudo chsh -s/usr/bin/zsh 사용자명
PackageManager (패키지)
멀티우저 : 야라 사용자가 동시에 하나에 시스템에 접근이 가능했다.
'디렉토리' 와 '파일' 에게 권한을 부여할 수 있다.
421
- | rw- | r-- | r-- |
파일타입 | 소유자권한 | 그룸소유자권한 | 그외사용자 |
-rw-r--r--
421
구별법
- : 파일이라는 뜻
d : 디렉토리
r : 쓸 수 있다
w: 실행할 수 있다
6 : rw-
5 : r-x
4 : r--
3: -wx
7 : rwx
chmod
-rw--r--r
-> -r--r--r--
444
"sudo chmod 444./word"
'root' 계정
User 타입
- 루트 사용자 -UID 0
- 사스템 사용자 - UID 1-999
- 일반 사용자 - UIDs 1000 ~n
user 생성
- adduser : 계정 생성하고 부가적인 설정까지 가능 [홈디렉토리, 쉘설정, 그룹설정]
- useradd: 계정만 달랑 생성
useradd: 설정하는법- sudo useradd [user이름]
계정 바꾸는법 :sudo su - [바꿀이름]
리눅스 특징 구조
리눅스는 유닉스 라는 운영체제 기반으로 하고있다.
뚸어난 안정성과 보안성, 높은 신회성과 성능 특징이있다.
대표적으로 멀티유저와 와 멀티 태스킹을 지원하는 특징을 말한다.
ex) 컴퓨터를 키면
'계정명'
'패스워드'
우분투
리눅스 라는 OS에서 하나의 제품군
리눅스에 다른 제품군들은 여러가지가 있다.
- 디렉토리 구조
- CLI (검정화면에 명령어 쓰는것 ex. PowerShell)
디렉토리 명령 예)
- 내가원하는 디렉토리에 이동하기
- 디렉토리 생성하기
- 메모장 열기
- 메모장 닫기
- 파일 저장하기
- 파일 닫고
- 다시 파일 열기
필수 명령어들
pwd : - 현재 디렉토리를 확인할때 사용한다 말그대로 보기만 하는 역할이. 이 명령어를 shell 이라 한다. 그리고 kernel에게 어떤 식으로 전달되었는지 확인하고 화면에 출력된다.
cd: 명령내용- 디렉토리 상대경로, 절대 경로
ex. '..' , '../' , './'
ls: 현재 파일의 목록
'~' : Home 디렉토리 '바탕화'
mkdir : [폴더명] , [경로 , 폴더명] - 디렉토리 생성하기
vi hello : vi 에디터에 대한 명령어
chown: sudo chown [이름] ./[디렉토리 이]
:q - 나가기
vi mode
[Mode] view insert
i : isert 모드로 들어가진다 즉 TEXT 마음껏 쓸 수 가 있다.
inder 모드를 끄는 방법은 'ESC' 누르면 된다. 그러면 명령어 모드로 다시 전환된다.
:w - 저장후 :q로 나가기 다시 들어가고 싶으면 vi 파일
rm - 파일 삭제
greb(Global regular expression print): 코딩을 할때 한 파일에서 키워드를 검색을 하거나 프로젝트 전체를 한해서
키워드를 검색하는 경우가 많을것이다.
ex) greb "world" *.txt 모든 택스트 파일 안에서 world를 검색할 수 있다.
검색했을때 몇 번째 줄인지 확인하고 싶다면 -n 을 이용하면 된다
ex) greb -n "world" *.txt
ls -l : 어떤 파일인지 확인
ls -al : al = all 숨겨진 파일도 보고 싶을때
디렉토리 구조
리눅스의 최상위 디렉토리는 ' / ' (root)이다.
리눅스에서 모든 것은 파일로 표현된다. 디렉토리도 파일의 한 종류로서 여러개의 하위 파일이나 디렉토리의 주소들을 담고 있다. 이러한 디렉토리들을 파일을 효율적으로 관리 하기 위해 계층적으로 구성하는데 이것을 트리구조 라고 한다.
리눅스에서 수많은 파일을 관리하기 위해 이러한 디렉토리 개념을 사용한다.
- /bin (바이너리): 리눅스의 기본적인 명령어가 저장된 디렉토리
- /boot (부트) : 리눅스의 부팅에 필요한 정보를 가진 파일들이 있는 디렉토리
- /root (루트) : 관리자계정 root 사용자의 홈디렉토리 (' / ' 디렉토리와 다르다. 이건 사용자의 디렉토리)
- /dev (디바이스) : 시스템 디바이스 장치 파일을 저장하고 있는 디렉토리 /dev/sda(하드디스크 장치파일),/dev/cdrom(CD-ROOM) 장치파일 등과 같은 장치 파일들이 여기에 위치해있다, 예를들어 마우스, 키보드등의 디바이스와 관련된 파일들. 즉 물리적 장치가 파일화되어 저장
- /etc : 환경설정에 관련된 부분이 저장되어있다.
- /home : 'cd ~' 홈디렉토리 home 디렉토리 빼고는 다 공용 디렉토리이다.
- /lib (라이브러리): 커널모듈파일과, 라이브러리 파일이 저장됨
- /media(미디어) : DVD, CD-ROOM, USB 등의 외부 장치들의 마운트 포인트(연결)로 사용하는 디렉토리
- /mnt (마운트): 새로운 드라이버가 생긴다. ex) USB
- /opt (옵트) : 추가 응용프로그램 패키지 설치 장소 패키지 매니저가 자체적으로 설치/삭제를 수행함
- /var : 로그성 데이터들이 많이 모여있다. 로그 = 기록
사용자 계정
- 다운로드
리눅스는 기본적으로 파일을 다운받을때 인터넷을 사용한다.
PM(패키지 매니저)
apt-get
- bach
- zsh
/bin & /sbin
bin은 user command binaries, sbin은 system command binaries 를 뜻한다.
둘 다 바이너리 파일로 컴파일된 실행 파일들을 포함하고 있다.
- 대체적으로 sbin은 system이 사용하거나 system을 컨트롤하기 위한 파일들을 포함하고
- bin은 커맨드 라인 인터페이스에서 우리가 자주 사용하는 명령어 실행 파일들을 포함한다.
bin 디렉토리에 가서 ls - al 커맨드를 쳐보면 위와 같은 결과를 볼 수 있다.
우리가 흔히 사용하는 cat , chmod, chown, cp, date, echo, kill, In, mkdir 등의 커맨드는 결국 bin 디렉토리에 포함된 해당 이름으로 된 바이너리 파일을 실행한 결과이다. 당연히 ls 도 이 디렉토리 내에 포함되어 있다.
sbin 디렉토리는 sysctl, reboot 등과 같이 시스템을 다루는 파일들을 가지고 있다.
리눅스 프로세스
프로그램 : 프로그램의 의미는 어떤 작업을 하기 위해 해야할 일들을 순서대로 나열한 것으로
쉽게말해 컴퓨터에서 어떤 작업을 위해 실행할 수 있는 '정적인 상태'의 파일이라고 볼 수 있다.
프로세스: 프로그램이 실행되서 돌아가고 있는 상태, 컴퓨터에서 연속적으로 실행되고 있는 '동적인 상태'의 컴퓨터 프로그램이다. (컴퓨터 cpu에서 실행되는 모든 프로그램을 프로세스라한다.)
프로그램은 프로세스가 실행될때마다. 고유의 PID (프로세스 아이디가 생성됨)
ps -ef (ps는 프로세스다.)
리눅스에서 kill명령어를 통해 프로세스를 지정하고 신호(Signal)를 보내서 제어하는 명령어 입니다
kill 명령어는 주로 프로세스를 종료하는 용도로 많이 사용됩니다 예로 지난 포스팅에서 알아본 백그라운드에 있는 프로그램과 같은 경우 kill 명령을 통해서 제어할 수 있습니다
프로세스는 운영체제가 메모리 등의 필요한 자원을 할당해준 '실행중인 프로그램'이다.
프로그램을 실행하면 운영체제로부터 실행에 필요한 자원을 할당받아 '프로세스'가 되는 것이다.
'블록체인 sw개발자' 카테고리의 다른 글
Git 기초 (0) | 2023.08.18 |
---|---|
AWS (amazon web service) (0) | 2023.08.16 |
[JS] e.preventDefault (0) | 2023.08.11 |
[JS] try..catch (0) | 2023.08.10 |
[JS] 모듈 (module) (0) | 2023.08.09 |