리눅스에 대한 이해
monitor program : OS의 전신, application 실행 -> 제어 반납 -> 다른 app 실행
운영체제 : 컴퓨터나 스마트폰 같은 시스템 및 하드웨어, 시스템, 리소스를 제어하고 프로그램에 대한 일반적 서비스를 지원하는 시스템 소프트웨어
자원관리 : CPU(-스케줄러, 프로세스를 스케줄링 하는데 나름의 정책이 있다.),
RAM(-메모리 매니저),
하드 디스크 등 메모리(-파일 시스템) ,
주변 장치(마우스, 키보드 등) 등(- 디바이스 드라이버 - 인터럽트 발생 시 처리하는 주체),
네트워크(-네크워크 시스템)
사용자 접근 : kernel - shell -user, 유저는 쉘을 통해서 커널에 접근한다.
프로세스 스케줄링 : 어떤 프로세스를 선택하여 실행할 것인가
스케줄링 알고리즘 : 프로세스 선택 방법
프로세스 스케줄러 : 스케줄링의 주체
멀티 태스킹 : 운영체제가 프로세스 스케줄러를 사용하여 번갈아 할당해줌으로써, 동시에 실행되는 것처럼 보이는 것
**환경 설정
Oracle Virtual Box + Ubuntu 24.04
Virtual Box 자체 환경 세팅, 네트워크2 추가(호스트 네트워크)
openssh-server 설치(윈도우 시스템에서 가상 컴퓨터 연결)
가상 컴퓨터 ip 확인 - ifconfig 명령어로 사용가능
ping 확인 후, ssh usrname@ip address로 들어가기
linux env.
1. ubunut on real PC(권장) or raspberry pi
2. ubunut on virtual PC
3. ubunut on WSL(2번 하고 다름, 하단 기능이 적음)
1. server
2. desktop << heavy함, ssh를 사용하여 조금이라도 경량으로
4. other emulator (ie, cygwin, minGW)
Linux Shell(/bin/bash) - Window의 CMD : 커널에 명령을 내리는 창구
PID : 프로세스 아이디
PPID : 부모 프로세스 아이디
COMMAND
internal cmd : /bin/bash 안에 있는 명령어, bash가 알고 있다.
external cmd : /bin/bash 밖에 있는 명령어 - ex) cat - /usr/bin/cat
현재 bash의 자식 프로세스가 된다.
콘솔, 터미널, 쉘
HW
1. 콘솔 : 사용자와 컴퓨터 간 인터페이스를 담당하는 입출력 장치(HW, VM), 키보드 + 모니터, dircetly attatched ex) ttyX
2. 터미널 : 콘솔의 소프트웨어적인 구현, 사용자의 입력을 셸에 전달하고, 출력을 표시하는 역할을 수행, 과거에는 콘솔 장치를 의미하였음 ex) pts/X
SW
1. 쉘 : 명령어 해석기, 명령어 해석 및 실행, 스크립트 처리를 담당하는 프로그램
명령어
1. 파일 및 디렉터리 관련 명령어
ls | 현재 디렉터리의 파일 및 디렉터리 목록을 출력 |
cd | 디렉터리 이동 (cd /home/user - 디폴트), - : 바로 이전 위칟쵀 |
pwd | 현재 작업 중인 디렉터리의 경로 출력 |
mkdir | 새 디렉터리 생성 (mkdir new_folder), -p 재귀적으로 디렉터리리르 만들 수 있다. |
rmdir | 빈 디렉터리 삭제 |
rm | 파일 또는 디렉터리 삭제 (rm file.txt, rm -r folder) |
cp | 파일 복사 (cp source.txt dest.txt) |
mv | 파일 또는 디렉터리 이동 또는 이름 변경 |
touch | 새 파일 생성 또는 기존 파일의 수정 시간 변경 |
find | 특정 조건에 맞는 파일 찾기 (find . -name "*.c") |
locate | 데이터베이스를 이용한 파일 위치 검색 (locate filename) |
2. 파일 내용 확인 및 조작 명령어
cat | 파일 내용 출력 |
more, less | 페이지 단위로 파일 내용 보기 (less는 방향 이동 가능) |
head | 파일의 앞 부분 출력 (head -n 10 file.txt) |
tail | 파일의 끝 부분 출력 (tail -f logfile.log는 실시간 모니터링) |
grep | 패턴이 포함된 줄 검색 (grep "main" *.c) |
wc | 행, 단어, 문자 수 출력 (wc -l file.txt) |
cut | 특정 필드 추출 |
sort | 정렬 |
uniq | 중복 제거 |
diff | 두 파일의 차이 비교 |
tee | 출력을 파일에 저장하면서 화면에도 출력 |
3. 파일 압축 및 해제 명령어
tar | 아카이브 생성 및 해제 (tar -cvf, tar -xvf) |
gzip, gunzip | 압축/해제 (gzip file, gunzip file.gz) |
zip, unzip | ZIP 형식 압축/해제 |
4. 사용자 및 권한 관련 명령어
chmod | 파일 권한 변경 (chmod 755 script.sh) |
chown | 파일 소유자 변경 |
su | 다른 사용자로 전환 |
sudo | 관리자 권한으로 명령어 실행 |
passwd | 사용자 비밀번호 변경 |
5. 프로세스 및 시스템 관련 명령어
ps | 현재 실행 중인 프로세스 목록 확인 |
top | 실시간 프로세스 및 리소스 사용량 확인 |
htop | top의 개선된 인터페이스 (별도 설치 필요) |
kill | 프로세스 종료 (kill -9 PID) |
killall | 이름으로 프로세스 종료 |
nice, renice | 프로세스 우선순위 조절 |
df | 디스크 사용량 확인 |
du | 특정 디렉터리의 용량 확인 |
free | 메모리 사용량 확인 |
uptime | 시스템 가동 시간 확인 |
uname | 시스템 정보 출력 (uname -a) |
6. 네트워크 관련 명령어
ping | 네트워크 연결 확인 |
ifconfig / ip addr | 네트워크 인터페이스 정보 확인 |
netstat | 네트워크 연결 상태 확인 (현대에는 ss 명령어 사용 권장) |
ss | 네트워크 소켓 상태 확인 |
curl | URL 요청 |
wget | 파일 다운로드 |
scp | 원격 서버 간 파일 복사 |
ssh | 원격 접속 |
7. 패키지 관리 관련 명령어 (배포판에 따라 상이)
Debian/Ubuntu 기반:
명령어설명
apt update | 패키지 목록 갱신 |
apt upgrade | 패키지 업그레이드 |
apt install | 패키지 설치 |
apt remove | 패키지 제거 |
에디터 : nano(기본), vi(추천)
old style commnad - memory가 없던 시절..
ls, cd, cp, mv, vi etc
man : manual
man [option] [section] page
섹션 번호내용 설명
1 | 사용자 명령어 (일반 명령어) |
2 | 시스템 호출 (커널 함수) |
3 | 라이브러리 함수 (C 표준 라이브러리) |
4 | 특수 파일 (디바이스, /dev 등) |
5 | 파일 형식 및 구성 파일 |
6 | 게임 및 스크린 세이버 |
7 | 기타 (매크로, 규약 등) |
8 | 시스템 관리 명령어 (관리자 명령어) |
옵션설명
-f | 명령어가 어떤 매뉴얼 섹션에 있는지 알려줌 (whatis) |
-k | 주제 키워드를 검색함 (apropos) |
-a | 일치하는 모든 섹션을 순차적으로 보여줌 |
-w | 보여줄 매뉴얼 파일의 경로만 출력함 |
--help | 사용법 요약 |
file system
dos에서는 FAT, Windows에서는 NTFS, linux에서는 EXT 방식 사용, 같은 파일 시스템을 사용해야 호환이 가능하다.
linux : 비슷하지만 파일 시스템에 따라서 차이가 있다.
/ - ext4
/etc - ext4
/dev - devtmpfs
/proc - procfs
/sys - sysfs
파일 종류
- : regular file
d : directory
l : link - hard link(default, alias 개념과 유사, 다른 이름 같은 파일, identical link, but only link to file), soft link(symbolic link, -s, 포인터 개념과 유사, 다른 이름 다른 파일, 단 폴더 이동시 상대 경로로 저장한 경후 링크가 끊겨질 수 있다.)
b : block device file
c : character device file
p : pipe //linux system programming - ipc
s : socket //linux system programming - ipc
od : 파일을 hex 형태로 출력
hd : 파일을 hex 형태로 출력
'VEDA 복습' 카테고리의 다른 글
VEDA 28일차 - 임베디드 리눅스 (1) | 2025.04.23 |
---|---|
VEDA 27일차 - 임베디드 리눅스 (0) | 2025.04.22 |
VEDA 25일차 - 임베디드 시스템 (1) | 2025.04.18 |
VEDA 24일차 - 임베디드 시스템 이해 (0) | 2025.04.17 |
VEDA 18일차 ~ 20일차 : Qt 프로그래밍 (0) | 2025.04.10 |