본문 바로가기

VEDA 복습

VEDA 교과평가2 준비(리눅스, Make, CMake, Git etc)

반응형

 

리눅스(명령어 위주로 정리)

 

터미널 : 컴퓨터와 사용자 간에 상호작용할 수 있게 연결하는 장치

Shell : 운영체제와 사용자 간 상호작용을 지원하는 소프트웨어 ex) Bash

Shell Script : 셸에서 동작 가능한 명령어를 모아놓은 파일

 

#!/bin/bash : bin에 있는 bash를 쉘로 사용하겠다. (#!)

 

명령어

manual : man

section # : 1(shell cmd), 2(system call), 3(lib function)

 

ls : list

    ls -a : all file

    ls - l : including several characteristics(list)

     ls -t : from new file to old file sorting

     ls -R : recursive

     ls -h : readable size file io

 

cd : change directory

pwd : print working directory

cat : catch file contents

exit : terminate on-process

nano : basic editor of linux

 

리눅스의 파일 계층 구조 : 모든 파일이 하나의 계층 구조로 관리, 하나의 루트와 하위 파일

 

파일 종류

일반 파일 : 텍스트, 동영상, 사진 등

디렉터리 : 디렉터리도 파일의 한 종류

심볼릭 링크 파일 : 어떤 파일을 가리킴, 포인터와 유사

블록 디바이스 파일 : 블록 장치(HDD, SDD 등)을 제어하기 위한 파일

문자 디바이스 파일 : 문자 장치(키포드, 마우스, 프린터 등)을 제어하기 위한 파일

파이프 파일 : 프로세스 간 통신에 사용되는 파이프를 나타내는 파일

소켓 파일 : 프로세스 간 통신에 사용되는 소켓을 나타내는 파일

 

루트 디렉터리와 하위 주요 디렉터리

/bin : 기본 실행 명령어 저장

/dev : 디바이스 파일

/etc : 시스템 설정 파일

/home : 사용자 홈 디렉터리

/lib : 시스템 라이브러리 설치

/mnt : 시스템 디스크 등을 임시 마운트

/proc : procfs 마운트

/root : root 사용자 홈 디렉터리

/sbin : 시스템 관리자용 명령어 위치

/sys : sysfs 마운트

/tmp : 시스템 임시 파일 위치

/usr : 시스템 소프트웨어 설치

 

mkdir : make dir

rmdir : del dir

    cp org cpy : copy

    cp -f : 덮어쓰기 가능 

    cp -r : recursive

mv org (dir or file) : 디렉터리 이동 또는 파일 덮어쓰기

    mv -f : 덮어쓰기 시 묻지 않고 시행

    mv -i : 덮어쓰기 시 실행 여부를 물어봄

rm : remove file

    rm -d : remove directory

    rm -f : force

    rm -i : inform

    rm -r : recursive

 

소프트 링크와 하드 링크

아이노드 : 파일에 대한 메타 정보 저장 단위(경로에 대한 정보는 없음)

덴트리 : 파일 계층 구조를 유지하는 데 사용(경로에 대한 정보 포함)

소프트 링크 : 일종의 바로가기, 포인터와 유사한 개념, 별도의 파일

하드 링크 : alias와 유사, 같은 파일을 지지칭

 

ln : linke

    ln -s : s-link

    ln : h-link

stat : 파일 상세 정보 표기

 

사용자 권한(일반, 관리)

su : switch user

sudo : super user do

runuser : switch to user

    run -l : 다른 사용자 셸

    run -g : 기본 그룹 지정  

    run -s : 기본 셸 지정

    run -P : 프로세스 ID 지정  

    run -f : 환경변수 지정

 

/etc/passwd에 user info 저장 : usrname:x:usrID:usrGID:explain:HOMEDIR:SHELL  

사용자 그룹 : GNAME:x:GID:USR LIST

 

adduser : add user

    --home : 홈 디렉터리 지정

    --shell : login shell 지정 

    --ingroup : 지정 그룹에 저장

deluser : delete user

    --remove-home : 홈 디렉터리  삭제

    -- remove-all-files  : 홈 디렉터리 포함 사용자 파일 모두 삭제

addgroup : add group

delgroup : delete group

whoami : print current user

passwd : password

    passwd -d : 비번 제거

    passwd -e : 비번 만료

    passwd -l : lock

    passwd -u : unlock

    passwd -x : 최대 만료일 설정

    passwd -n : 최소 만료일 설정

    passwd -w : 만료일 전 경고일 설정

 

파일 소유권

chown : 소유권 변경

    -R : recursive

    -v : verbose

    -c : 변경 정보만 출력

chmod : 권한 변경

    -R : recursive

    -v : verbose

    -c : 변경 정보만 출력

w : 4, r : 2, x : 1 => 8진수 체계

---...--- : 사용자-그룹-나머지

의미 표기법(a+r :  모든 유저에 읽기 기능 추가)

    u : user

    g : group

    o : other

    a : all

    + : add

    - : del

    = : equal

    r : read

    w : write

     x : execute

 

프로세스 관리

프로세스 : 메모리에서 실행중인 프로그램

부모 프로세스와 자식 프로세스 : init 프로세스(최초의 프로세스-모든 프로세스의 부모 프로세스, PID 1) -> 부모 -> 자식

종료 시점을 알 수 있는 방법 : 부모 프로세스의 무한 대기, 주기적인 확인, SIGHLD 시글널의 수신

좀비 프로세스 : 프로세스가 종료되었지만 종료 처리가 되지 않아서 메모리 상에  존재할 때

고아 프로세스 : 부모 프로세스가 자식 프로세스보다 먼저 종료된 경우

 

ps : process state

    -e : entire

     -f : good form

     -u : user process

     -p : PID 프로세스

     -o : 원하는 필드만 출력

     --sort : 주어진 필드를 기준으로 정렬

     --forest : 트리구조

kill : process 종료, 이름 또는 프로세스 이름

killall : 여러 프로세스 종료

 

프로세스의 동작 

프로세스 스케줄링, 스케줄링 알고리즘(공평성, 우선순위, 효율성, 응답 시간), 컨텍스트 스위칭(PCB로 저장 후 전환)

프로세스 상태(실행/실행 대기, 중단 상태, 종료 상태, 수면 상태)

프로세스와 스레드 : 프로세스는 IPC를 이용하여, 스레드는 메모리 영역을 공유하여 통신한다. 스레드는 프로세스에 속한다.

표준 스트림 : 표준 입력(0), 포준 출력(1), 표준 에러(2)

 

foreground와 background : 사용자가 보이는 곳과 안 보이는 곳, 상호작용 가능 여부

ping : ICMP echo 요청 패킷을 대상에게 송신

-c : count

-i : interval

-s : packet size

-q : quite mode

fg : to foreground

bg : to background

 

IPC

파이프 : 두 프로세서 간 데이터를 전송할 때 사용,  단방향

메시지큐 : 정해진 큐에 메시지를 넣고 빼는 방식, 작은 데이터

소켓 : 네트워크로 연결된 다른 시스템에서 작동하는 프로세스오의 통신에서 사용, TCP/UDP

공유 메모리 : 데이터 자체를 공유, 동기화 필요(동시 참조 문제 등), 세마포어

 

시그널 송수신

시그널을 이용하여 프로세스간 통신이 이루어지기도 한다.

 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

 

kill 명령어로 signal을 전잘하는 것이 가능하다.

    -l : 목록

     -번호

     -이름

     -s 시그널이름

killall도 유사하게 사용

 

9장, 10장, 11장, 12장 Bash(***)

VAR_NAME = value <- string type

$VAR_NAME, ${VAR_NAME}, "$VAR_NAME"

let "formula" : string 처리가 아닌 수처리

if 조건; then

command

elif 조건; then

command

else

command

fi

 

조건 : [표현식], 이중 괄호 표현은 다양하게 지원한다.

-, !=, <>, -n, -z, -eq, -ne, -le, -lt, -gt, -ge

AND(-a), OR(-o), NOT(!)

case 표현식 in

패턴1)

명령;;

 

for 변수 in 목록

do 

명령

done

 

for ((초기;조건;증감))

do 

명령

done

 

while 조건

do 

명령

done

 

while ((조건))

do 

명령

done

 

until 조건

do 

명령

done

 

until ((조건))

do 

명령

done

 

function function_name(){

}

function_name(){

}

 

$1, $2, $3 ~ $255 <= 매개변수

$# : 매개변수 개수

$0 : 파일이름

$*, $@ : 모든 위치 매개변수를 하나의 문자열로 인식, 위치 매개 변수를 각각 인식

$? : 최근 함수 반환값 또는 종료 코드 등

$$ : 현재 스크립트의 PID

 

export : 다른 셸에서도 사용할 수 있도록 공유

환경변수

 

quote : single(string), double(expanded)

 

systemctl : daemon 관련

grep

find

stat

wc

df

du

tar

read

tr

 

make 사용법

CMake 사용법

Git 사용법

Docker 사용법 - 범위 작음, pdf 참고

 

임베디드 엔지니어 교과서 참고할 것

반응형