리눅스에서 pdf 파일 분할하기
By 반달가면 | 2017년 7월 10일 |
얼마전에 좀 용량이 큰 pdf 파일을 여러개의 작은 pdf 파일로 분할해서 저장해야 하는 상황이 있었는데, 리눅스에서 깔끔하게 해결이 가능했다. 알고 보면 아무것도 아닌데, 그 당시에 당장 생각이 나지 않아서 고민을 좀 했었기에 여기에 적어 두기로. 우분투, 리눅스 민트 등 데스크탑 리눅스 배포판에 같이 들어 있는 문서 뷰어나 에디터에서 "인쇄" 메뉴로 가 보면 아주 요긴한 기능을 볼 수 있는데, 바로 "파일로 인쇄하기(print to file)"다. 파일 형식은 pdf, ps, svg 등을 지원한다. 분할하고 싶은 파일을 뷰어로 연 후에 인쇄 메뉴로 가서 인쇄할 페이지 범위와 파일명을 지정하고 pdf 파일로 저장하면 된다. 별도의 패키지를 설치할 필요도 없이 가뿐하게 해결되었다.
[라즈베리파이] 프로세스: 태스크 디스크립터(프로세스 관계)
By Guillermo Austin Kim | 2019년 1월 29일 |
이전 시간에 유저 공간에서 생성한 모든 프로세스의 부모 프로세스는 init 이고 커널 공간에서 생성한 커널 스레드(프로세스)의 부모 프로세스는 kthreadd라고 했습니다. 태스크 디스크립터에서는 프로세스의 부모와 자식 관계를 상세히 알 수 있습니다. struct task_struct *real_parent; 프로세스를 생성한 부모 프로세스의 태스크 디스크립터 주소를 저장합니다. struct task_struct *parent; 부모 프로세스를 의미합니다. real_parent 란 멤버는 해당 프로세스를 생성해준 프로세스를 의미합니다. 그런데 자식 프로세스 입장에서 부모 프로세스가 소멸된 경우 부모 프로세스를 다른 프로세스로 지정합니다. 프로세스 계층 구조에서 지정한 부모 프로세스가 없을 경우 in
[리눅스커널] 시스템 콜: 시스템 콜의 특징 알아보기
By Guillermo Austin Kim | 2019년 9월 6일 |
이번 소절에서는 시스템 콜의 특징을 알아보겠습니다. 앞서 알아봤듯이 시스템 콜은 유저 모드에서 커널 모드로 진입하는 관문입니다. 소프트웨어 구조 관점으로 보면 시스템 콜은 유저 공간과 커널 공간 사이 가상 계층으로 볼 수도 있습니다. 이 계층은 다음과 같은 특징이 있습니다.1. 시스템 콜 계층으로 시스템 안정성과 보안을 지킬 수 있습니다. 유저모드에서 어플리케이션이 커널 공간에 아무런 제약 없이 접근한다고 가정합시다. 실수로 어플리케이션이 커널 코드 영역 메모리를 오염시키면 시스템은 오동작할 가능성이 높습니다. 그래서 유저 모드에서 시스템 콜로만 커널 모드에 진입해서 제한된 메모리 공간에 접근하는 것입니다. 2. 유저 어플리케이션에서 추상화된 하드웨어 인터페이스를 제공합니다. 유저 모드에서 구동 중인 어
리눅스에서 파일이 매우 많은 디렉토리에 대한 ls 명령 실행속도 향상 (-f 옵션)
By 반달가면 | 2018년 11월 29일 |
간단한 내용이지만, 간혹 요긴할 때가 있어 정리해 두기로. 리눅스에서 디렉토리 하위에 상당히 많은 파일이 있을 경우, ls 명령을 입력하면 시간이 상당히 오래 걸릴 수 있다. 특히 속도가 느린 HDD에서는 더욱 두드러질 수 있다. 출력이 느린 이유중 하나는 ls에서 조회한 내용을 출력할 때 정렬(sorting)을 하기 때문이다. 항목이 많지 않을 때는 문제가 없지만 항목이 꽤 많을 경우엔 정렬에 소요되는 시간도 무시할 수 없게 된다. 이런 상황일 경우 -f 옵션을 추가해서 정렬하지 않고 바로 결과를 출력하도록 할 수 있다. # -f 옵션: 정렬 비활성화(do not sort) ls -f 예를 들어 특정한 문자열이 포함된 파일이 있는지 유무를 확인하려 할 경우에 굳이 정렬로 시간을 낭비