[bash: if, grep] 특정 문자열의 존재유무에 따른 작업 지정하기
By 반달가면 | 2017년 10월 31일 |
어떤 파일에 특정한 문자열이 있는 경우와 없는 경우에 각기 다른 작업을 해야 할 경우, if 조건문과 grep을 적절히 조합해서 간편하게 구현할 수 있다. 우선 if 조건문의 -z 옵션을 보자. 이것은 문자열의 길이가 0이면 참, 0이 아니면 거짓이다. 아래의 예시를 보자. string="abc" # 변수 abc에 저장된 문자열의 길이가 0인 경우 메시지 출력 if [[ -z $string ]] then echo "변수 string에 저장된 문자열의 길이는 0입니다." fi 이제 원래의 문제로 돌아가서, 예를 들어 파일 my_file.txt에 문자열 "abcd"가 존재하느냐 여부에 따라서 뭔가 다른 작업을 해야 하는 경우를 생각해 보자. if 조건에 grep을 이용한 문자열 검색의
[라즈베리파이] 비트 처리 __test_and_set_bit() __test_and_clear_bit() 함수 동작 원리
By Guillermo Austin Kim | 2018년 8월 19일 |
리눅스 커널과 드라이버에서 __test_and_set_bit()와 __test_and_clear_bit() 함수를 많이 씁니다. 두 함수 중 test_and_set_bit()를 써서 비트를 처리하는 코드를 보겠습니다.다음은 워크를 워크큐에 큐잉하는 queue_work_on() 함수입니다.[kernel/workqueue.c]1 bool queue_work_on(int cpu, struct workqueue_struct *wq,2 struct work_struct *work)3 {4 bool ret = false;5 unsigned long flags;67 local_irq_save(flags);89 if (!test_and_set_bit(WORK_STRUCT_PENDING_BIT, work_dat
[라즈베리파이] 워크큐(Workqueue)의 특징
By Guillermo Austin Kim | 2018년 8월 19일 |
다른 인터럽트 후반부 처리 기법과 비교하면서 알아봤으니 이제 워크큐의 특징에 대해서 알아봅니다. 첫째, 드라이버 레벨에서 워크큐는 쓰기 쉽습니다. 워크큐는 struct work_struct 구조체 변수만 설정하고 워크를 실행할 코드에 queue_work() 나 schedule_work() 함수만 추가하면 됩니다. 간단한 코드로 워크큐를 쓸 수 있다는 것은 워크큐 관련 커널 함수들이 예외 처리나 로컬리티 등등 많은 처리를 한다는 의미입니다. 둘째, 워크큐 실행 단위는 워크이며 워크는 워커 쓰레드에서 실행합니다. 워커 쓰레드는 프로세스 레벨로 실행되는데 워커 쓰레드 실행 여부는 스케쥴러가 결정합니다. 따라서 밀리 초 이내로 워커 쓰레드 실행을 제어하기는 어렵습니다. 실행 시각에 민감한 후반부 처리 용도로 워
우분투 계열 리눅스의 시냅틱 패키지 관리자에서 검색바(search bar) 활성화
By 반달가면 | 2018년 10월 15일 |
데비안/우분투 계열 배포판에서 제공되는 S/W 패키지 설치 도구인 시냅틱 패키지 관리자(Synaptic Package Manager)에서 검색바(search bar)가 표시되도록 하는 방법이다. 기본설정으로 검색바가 활성화되어 있는 경우도 있지만, 검색 아이콘만 나오는 배포판도 있으므로 여기에 정리해 두기로. 시냅틱 패키지 관리자에서 검색바가 표시되어 있지 않으면 "검색(search)" 아이콘을 클릭한 후에 검색어를 입력해야 하는데, 이것보다는 실행 윈도우에 검색어 입력 바가 존재해서 여기에 검색어를 입력하면 곧바로 결과가 나오도록 하는 것이 훨씬 편리하다. apt-xapian-index 패키지를 설치한 후에 색인(index)을 갱신해 주면 된다. 터미널창에서 아래와 같이 작업. # apt-