Linux
[Inotify] 파일 이벤트 감시
리눅스에서는 커널 2.6.13 부터 파일시스템 이벤트를 모니터링할 수 있는 메커니즘을 제공합니다. inotify와 dnotify인데요, 이 글에서는 inotify만 다룰 계획입니다. inotify가 dnotify를 대체하기 위한 녀석이기 때문이죠. Inotify는 파일이나 디렉토리를 개별적으로 모니터링 할 수 있도록 해줍니다. 여기서 한가지 유의할 점은 디렉토리 모니터링 시 재귀적으로 모니터링 되진 않는다는 것입니다. 만약 하위 모든 디렉토리를 모니터링 하기 위해선 각 디렉토리에 대해 모니터링을 하도록 해야합니다. 한가지 Inotify의 사용 예시를 생각해보죠. 여러분이 Daemon과 Daemon의 설정 파일을 제공한다고 가정했을 때, 누군가 설정파일을 변경 시 Daemon에서 이걸 알고 처리할 수 있도..
shared memory with semaphore
앞서 'shared memory with mutex' 에서는 2개 이상의 프로세스에서 공유 메모리를 이용해 데이터를 공유할 때 Lock / Unlock을 위해 mutex를 사용하는 방법에 대해 살펴보았습니다. 이번 글에서는 공유메모리를 이용해 데이터를 공유할 때 여러 프로세스들이 semaphore을 이용해 Lock / Unlock 하는 방법에 대해 알아보겠습니다. 앞서 'shared memory with mutex'를 보신 분들이라면 쉽게 이해 하실 수 있는데요, 코드 중 mutex 관련된 코드 대신 semaphore 코드로 대체해 주는 것 밖에 없습니다. 저는 semaphore을 POSIX Spinlock API들을 사용하였습니다. semaphore는 커널에서 관리해주는 정수로서 0이하의 음수 값으로는..
[ODP] 실행시간 측정하기
이 글은 ODP(Open Data Plane) 오픈소스 프로젝트를 이용하여 개발 시 ODP API를 이용한 내용을 다루고 있습니다. ODP 프로세스를 개발 시 프로세스 내의 실행시간 측정을 위해서는 아래와 같은 방식으로 시간 측정이 가능합니다. 리눅스 시스템 프로그래밍 시 사용하는 방법과 매우 유사하기에 빠르게 이해할 수 있을 것입니다. 1234567891011121314#include #include #include odp_time_t s_time;odp_time_t e_time;odp_time_t e_time; s_time = odp_time_global();// Do locking and unlockinge_time = odp_time_global(); d_time = odp_time_diff(e_..
ssh man-in-the-middle attack 문제 해결
ssh를 이용해 server 또는 target에 접속 시 위와 같은 error를 볼 수 있었습니다.(ssh로 접속하려는 IP 210.***.***.***는 예시로 든 IP입니다.) 123456789101112$ssh user@210.***.***.*** @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ @ WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! @ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY! Someone could be eavesdroppin..
expect - programmed dialogue with interactive programs
expect: programmed dialogue with interactive programs 개요Expect는 ' interactive '한 프로그램입니다. ' interactive ' 하다는 단어와 같이 Expect는 Shell 프로그램과 대화하듯 스크립트를 구성할 수 있는 프로그램입니다! Expect를 이용하면 여러 기능들을 굉장히 쉽게 만들 수 있습니다. 여러분들이 작성한 스크립트에 따라 프로그램에서 예상되는 내용에 맞는 답을 작성할 수 있습니다. 여러분들은 프로그램 실행 시 원하는 라인에서 제어권을 갖고 직접 상호 작용할 수도 있습니다. 옵션과 예시를 살펴보면서 좀 더 알아보겠습니다. 설치만약, expect가 설치되어 있지 않다면 아래 명령어로 설치한다.$sudo apt install expe..
/Proc FileSystem - Kernel
The /Proc Filesystem for Debuggingproc - process infomation pseudo-filesystem(Kernel infomation) 리눅스가 인기 있는 이유 중 하나는 UNIX 시스템의 좋은 feature들을 결합시킨 점입니다. Proc 파일시스템은 그 좋은 feature들 중 한가지 인데요, 대다수의 Linux 배포판에 포함되어 있습니다. proc 파일시스템은 /proc에 마운트되어 있으며 kernel data 구조에 대해 인터페이스를 제공하고 있습니다. proc 파일시스템의 파일들은 READ-ONLY 이지만, 몇몇의 파일들은 커널 변수를 변경하여 적용할 수 있도록 WRITE가 가능합니다. proc 파일시스템의 구성요소를 하나하나 살펴보도록 하시죠. 이전 글에서..