리눅스

포스트: 556|아이템:리눅스(554)
Tags

Posts

556 posts

[리눅스커널][가상파일시스템] 파일 객체: write 연산 세부 동작 분석

Guillermo Austin Kim|2019년 3월 21일

파일 객체: write 연산 세부 동작 분석 유저 공간에서 write() 함수를 호출할 때 가상 파일시스템에서 어떤 흐름으로 파일 별 write 오퍼레이션을 수행하는지 살펴보겠습니다. 유저 공간에서 리눅스 저수준 함수로 write() 함수를 호출하면 시스템 콜을 발생시켜 커널 공간으로 실행 흐름을 스위칭합니다. 이 후 write()에 해당하는 시스템 콜 핸들러인 sys_write() 함수를 호출합니다. 먼저 sys_write() 함수 선언부와 인자와 반환값을 확인하겠습니다.[https://elixir.bootlin.com/linux/v4.19.30/source/include/linux/syscalls.h]asmlinkage long sys_write(unsigned int fd, const char _

우분투 14.04 기반 배포판에서 와이어샤크 2.6.7 설치 (소스코드에서 설치)

반달가면|2019년 3월 20일

우분투 14.04의 공식 S/W저장소에서 제공하는 와이어샤크(wireshark)의 버전은 2.6.6인데, IP주소 위치정보(GeoIP)를 사용할 수 있는 "MaxMind DB resolver"가 제외된 채로 컴파일되어 있었다. 와이어샤크에서 IP주소 위치정보를 사용하는 방법은 이전 게시물을 참고하자. 여기로 IP주소 위치정보를 사용하기 위해 wireshark 공식 홈페이지에서 2.6.7 소스코드(source code)를 다운로드하여 수동 설치를 해 보았다. 생각보다 꽤 번거롭긴 하나, 어쨌든 설치 과정은 아래와 같다. 소스코드를 컴파일하기 위해서는 사전 작업이 좀 필요하다. 아래와 같이 몇가지 S/W를 설치한다. # S/W저장소 정보 갱신 sudo apt-get update # 패키지

[리눅스커널][디버깅] ftrace 설정과 로그 분석하기

Guillermo Austin Kim|2019년 3월 17일

ftrace 란 ftrace 리눅스 커널에서 제공하는 가장 강력한 트레이서입니다. ftrace는 커널 개발자에게 축복입니다. ftrace는 커널 세부 동작을 알기 쉽게 출력하기 때문입니다. ftrace의 특징은 다음과 같습니다.1. 인터럽트, 스케줄링, 커널 타이머 커널 동작을 상세히 추적해줍니다.2. 함수 필터를 지정하면 자신을 호출한 함수와 전체 콜스택까지 출력합니다. 물론 코드를 수정할 필요가 없습니다.3. 함수를 어느 프로세스가 실행하는지 알 수 있습니다.4. 함수 실행 시각을 알 수 있습니다.5. ftrace 로그를 키면 시스템 동작에 부하를 주지 않습니다. 다음에 이어 ftrace를 설정하는 방법을 알아보겠습니다. ftrace는 어떻게 설정할까? ftrace에서 제공하는 nop, func

[bash: csplit] 설정한 기준에 따라 텍스트 파일 분할하기

반달가면|2019년 3월 15일

csplit은 리눅스에서 기본적으로 제공되는 파일 분할 프로그램이다. 특정 행번호, 또는 특정 문자열을 기준으로 파일을 분할해야 하는 경우에 사용한다. csplit의 인자(argument)는 아래와 같이 지정한다 csplit [옵션] [입력 파일] [패턴] 자주 사용하는 옵션은 아래와 같다. -f: 분할된 출력 파일 이름 지정 -z: 결과중에 크기가 0인 파일은 삭제 -k: 오류가 발생할 경우에도 이전까지 생성된 분할 결과 파일 유지(-k 옵션이 없으면 오류 발생시 출력 결과가 삭제된다.) 패턴은 행번호 또는 정규표현식(regular expression, regex), 그리고 반복 회수를 지정할 수 있다. 몇가지 예시를 통해서 살펴보자. 예시에 사용할 파일 sample.t