자율주행/김선영님의 리눅스 강의 10

리눅스 day9

memory page == 메모리를 규격화된 크기로 잘럿 사용한다. 인덱싱이 편하도록 segment == 프롤세스가 실제로 사용하는 메모리다. memory lock == one way to ensure that a process stays in main memory and is exempt from paging. 시간이 중요한 어플리케이션에게 유용하다. dirty page == modified page 가 디스크에 wirte back 되기전 상태이다. mmap == ram 의 페이지와 disk의 페이지를 매핑시켜서 빠르게 처리하는 기법이다. is used for mapping between a process address space and either files or devices. When a file..

리눅스 day8

Built in command built in command를 사용하면 fork의 부담이 거의 없다. e.g) expr보다 let이나 ((...)) 를 사용하는게 좋다. time == cpu 시간 측정 (time은 built-in 과 external cmd 둘다 있다.) xargs == stdin으로부터 argv를 받아서 명령어 생성 sort == ls -l | sort -M -k 6 -k 7n -k 5nr == 6번쨰 기준으로 만약 같으면 7번째 column 같으면 5번쨰 column reverse기준 split == 처리할 데이터(Line 단위) 가 큰 경우 이를 자르는 용도로 주로 사용된다. 큰 파일을 작은 파일로 쪼갤 수 있다. paste == merge lines of files -s == pa..

리눅스 day7

Debugging signal event : trap trap (command | function) (SIGSPEC ...) command ,function = 시그널이 캐치되면 작동될 명령 or 함수 SIGSPEC = 트랩을 설치할 시그널 or 조건 (...;) = sub shell 임으로 {...;} 그룹으로 묶어야 한다. 효율성을 위해서 예시중에 SIGTTIN ,SIGTTOU에 관해서 주의 하며 코드를 쓰라는 것이있는데 A process cannot read from the user’s terminal while it is running as a background job. When any process in a background job tries to read from the terminal, ..

리눅스 day7(REGEX)

\ 두개의 sh file을 chmod +x 해주고 ./daemon.sh > >(./proclog.sh INFO) 2> >(./proclog.sh ERR) & 를 실행 해주면 stdout 을 /dev/fd/60(임시 file descriptor) 에 연결해주고 stderr 를 /dev/fd/61(임시) 에 연결해주고 백그라운드 job으로 돌린다. mkfifo /tmp/myfifo_m1 이런식으로 파이프를 생성 해줄수 있다. expr command는 sub-shell을 생성해서 실행되기에 fork가 엄청일어난다 쓰지 않는게 좋다. let 이나 ((expression)) 처럼 내장된 함수를 서야 한다. {s1,s2,s3,s4}_job == s1job,s2job,s3job,s4job 처럼 된다. {1..100}..

리눅스 day6(bash)

Shell에서 실행되는 Unix 명렁어는 sub-shell이 생성되어 실행된다. 외부 명렁어 실행은 기본적으로 sub shell을 생성하므로 , process 생성의 overhead가 존재한다. bash(Parent process) =>(fork) => bash:sub-shell(child process) => (exec) => ls-al(child process) 마지막 child process가 exitcode($? ,return code) 를 Parent process에게 리턴한다 zombie process 는 이미 안의 코드는 끝나서 os가 메모리를 회수해 갔지만 meta data만 남아있는 상태이다. 이 경우에는 parent process 에 문제가 있는 것이다. rm --force 옵션은 강제..

리눅스 day5 (file sytem)

fdisk /dev/sd[a...z] == old version 이긴 하지만 유용하다 여러 설정을 진행해도 w키를 입력하기 전까지는 저장이 안됨으로 연습할떄는 ^C 나 q로 종료를 하자 안에들어가게되면 p를 통해 현재 파티션들을 볼 수 가 있고 m을 통해서 나머지 명령들도 볼 수 있다. File System 리눅스에서 지원하는 FS는 여러개가 있다. ext4 == 저성능의 I/O효율이 높음 (IOT) , xfs == 그래픽을 많이 다룰때 씀 lsblk : 현재 추가된 장치들의 정보를 볼 수 가 있다 mkfs -t ext4 /dev/sdb2 == 저 위치를 포맷한다 타입은 ext4로 fsck -y -t ext4 /dev/sdb2 == 일반적으로 offline에서 fs를 체크 해야한다. fstab == fi..

리눅스 day4 (network)

Package Mangement redhat (centos, fedora) : rpm database, yum debian(ubuntu) : dpkg, apt(얘를 써야한다) dpkg file 구조 == strace_4.5.20_2.3_amd64.deb // 4.5.20 버전 2.3은 간단한 수정을 했을 때 증가하는 release apt source list == /etc/apt/sources.list == apt가 package를 가져오는 곳 source list format == deb [option1=value1 option2=value2 ] uri suite [component1] [component2] [...] uri ==deb 패키지를 제공하는 사이트의 uri suite == distribu..

리눅스 day3 (Vim)

Vi command 쭈욱 A : 현재행의 끝(오른쪽)으로 간후 입력모드 I : 현재행의 맨앞으로 (왼쪽)으로 간후 입력모드 [#]gg : # 없으면 맨위로 아니면 숫자줄로 G : 맨 아래로 j : 한칸 아래로 [#]dd : 행을 삭제하면 임시 버퍼에 들어간다. #만큼 반복 [#]p : 현재행에 아래에 붙여넣는다. P : 현재행의 위쪽에 붙인다. yy : 버퍼에 넣기만함 u : 컨트롤 제트 : . , 12y == 현재행 부터 12+ 까지 버퍼에 넣기 이런식으로 레인지(range) 형식으로 코드 작성 가능 vim clipboard를 사용할려면 +register에다 저장하면 된다. vim에서는 모든 키보드가 하나의 register에 해당된다. e.g) "ay (yanked in a register) "ap (..

리눅스 day2

Linux basic commands pushd [OPTIONS] [DIRECTORY] : directory stack에다 하나씩 넣어준다. 추후에 pushd +3 같은 것을 통해 스택의 3번째 디렉토리로 이동이 가능하다. popd [OPTIONS] : directory stack에서 하나씩 제거한다. which [OPTIONS] FILE_NAME... : 특정 명령어(파일,저 FILE_NAME parameter) 의 위치를 찾아주는 명령어이다. readlink [OPTIONS]... FILE... : symbolic link 가 있으면 그 링크의 원래 path를 알려준다. cpio 굉장히많은 옵션 : copy in copy out 의 줄임말로 .tar ,.cpio 를 처리한다. gzip [Options..

리눅스 Day 1

RedHat 계열 Fedora RHEL(RedHat Enterprise Linux) 의 베타 버젼이라고 생각하면 된다. 주로 새로운 기능을 테스트 할떄 많이 사용 Centos 많은 대기업이 서버용으로 많이 사용. 추후에 배워야할 것 Debian 계열 Ubuntu 초보자가 쓰기 쉽고 Iot ebmedded에서 많이 쓰인다 Kail Linux 네트워크, 보안쪽 사람들이 많이 쓰는것 같다 Ubuntu Bash shell Command Line(day1) CLI 가 GUI 보다 많이 쓰이는 이유는 낮은 대역폭에서 잘 작동 하기 때문이다. e.g) GUI 1920 *1080 *24 *60(hz) 이지만 CLI 80*24*8* 60(hz) 이다 Console 원격이아닌 로컬에 붙어있는것 Terminal 목적지나 출..