본문 바로가기

VEDA 복습

VEDA 26일차 - 임베디드 리눅스 프로그래밍

반응형

 

리눅스에 대한 이해

 

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 형태로 출력

반응형