리눅스

포스트: 554|조회수: 0|TERM
Items

Posts

554 posts

vi 편집기의 몇가지 기본적인 명령어

반달가면|2018년 4월 27일

vi 편집기에서 자주 쓰는 몇가지 명령어를 정리해 두기로. 새로 파일을 만들고 싶거나 기존 파일을 열어서 편집하려면 파일명만 인자로 주면 된다. 인자로 지정된 파일이 존재하면 해당 파일을 열고, 없으면 새로 만든다. # my_data.txt 파일 편집 vi my_data.txt 파일을 열 때 특정 행부터 편집을 시작하고 싶은 경우, + 옵션을 사용한다. # my_data.txt 파일의 100번째 행부터 표시 vi +100 my_data.txt 행번호는 모르겠지만 특정 문자열이 나타나는 곳부터 시작하고 싶을 때도 + 옵션으로 가능. # my_data.txt 파일에서 문자열 abc가 있는 행부터 표시 vi +/abc my_data.txt vi를 실행해서 편집을 할 때

[Kernel][Debug] 런큐에서 CFS 스케쥴러에 큐잉된 프로세스 찾기

Guillermo Austin Kim|2018년 4월 26일

런큐에 CFS 스케쥴러로 큐잉된 상태로 기다리는 프로세스 목록은 어디서 찾을 수 있을까요?per-cpu 타입의 runqueues.cfs_tasks 멤버를 찾으면 됩니다. 다음은 CPU4 runqueue의 예시입니다. (struct rq *) [-] (struct rq*)(((void*)&runqueues)+__per_cpu_offset[4]) = 0xFFFFFFC73E0F2900 -> ( (raw_spinlock_t) [D:0xFFFFFFC73E0F2900] lock = ((arch_spinlock_t) [D:0xFFFFFFC73E0F2900] raw_lock = ((u16) [D:0xFFFF (unsigned int) [D:0xFFFFFFC73E0F2918] nr_running

[Kernel] 슬랩 페이지(slab page)가 관리하는 슬랩 오브젝트 갯수

Guillermo Austin Kim|2018년 4월 25일

슬랩 페이지 디스크립터가 관리하는 슬랩 오브젝트의 실제 메모리 덤프를 어떻게 접근할까요? 예를 들어 현재 페이지 디스크립터 주소가 0xEC778540 이라고 가정하겠습니다.그리고 각 멤버는 다음과 같구요. 눈으로 잠깐 봐도 kmalloc-64 타입의 슬랩 페이지임을 알 수 있겠죠. (struct page *) (struct page*)0xEC778540 = 0xEC778540 -> ( (long unsigned int) flags = 0x80, (struct address_space *) mapping = 0x0, (void *) s_mem = 0x0, (long unsigned int) index = 0xC518EC00, (void *) freelist = 0xC518E

[bash: grep] 파일 안에 섞인 바이너리(binary) 데이터 제거

반달가면|2018년 4월 20일

텍스트 파일에 뭔가 문제가 생겨서 중간에 바이너리(binary) 데이터가 포함된 경우 이를 제거하기 위한 방법이다. 간혹 텍스트 중간에 바이너리 바이트가 일부 삽입되어 있는 희한한 상태로 인하여 다른 부분에서 작업이 안되는 문제가 있어서 고육지책으로 셸 스크립트(shell script)를 만들어서 제거했다. 파일 내용을 한줄씩 읽어서 혹시라도 내용 중간에 바이너리가 있을 경우 이를 제외한 나머지만 모아서 별도의 파일로 다시 저장하도록 했다. 아래와 같이 작업. # 탭을 변수로 할당 tab=`echo -e "\t"` # 대상 파일: ~/my_file.txt target_file=~/my_file.txt # 결과 파일: ~/my_file.txt.result res_file=~/my_file.