LINUX

포스트: 487|아이템:LINUX(477)
Tags

Posts

487 posts

which - 리눅스에서 특정 프로그램의 위치 확인

반달가면|2018년 4월 25일

리눅스에서 PATH에 등록된 디렉토리 안에 있는 특정 프로그램의 위치가 어디인지 확인하고 싶을 때 which를 사용하면 편리하다. PATH에 여러 디렉토리가 등록되어 있는데, 특정 프로그램이 이들중 어느 디렉토리에 속해 있는지 구분하고 싶을 때 사용한다. 아래의 예시를 보자. # PATH 변수에 등록된 디렉토리 확인 echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin # 자바(java)의 위치 확인 which java /usr/bin/java # bash 셸의 위치 확인 which bash /bin/bash

[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

[0410] Slab Memory Corruption Case Study#3 - 디버깅

Guillermo Austin Kim|2018년 4월 23일

난이도: 최하 커널 로그를 보니 Binder:1887_12란 프로세스가 7676767e 란 가상 주소를 처리 못해 데이터 어보트가 발생했습니다.[ 970.135274 / 04-07 17:58:32.685][7] Unable to handle kernel paging request at virtual address 7676767e[ 970.135315 / 04-07 17:58:32.685][7] pgd = d549c000[ 970.135339 / 04-07 17:58:32.685][0] [7676767e] *pgd=91d26831, *pte=00000000, *ppte=00000000[ 970.135392 / 04-07 17:58:32.685][7] Internal error: Oops: 17 [#

[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.