리눅스에서 cp 명령으로 복사를 하다가 중단한 것을 나중에 재개하는 문제
By 반달가면 | 2019년 3월 12일 |
cp 명령으로 복잡한 디렉토리 구조의 엄청 많은 파일을 복사하던 중에 시간이 없어서 중단하고 내일 다시 이어서 복사를 진행해야 하는 상황이 벌어졌을 경우에 대한 내용이다. 가끔 이런 일이 벌어지는 관계로 작업 절차를 정리해 두기로. # ~/src 디렉토리의 내용 전체를 ~/backup 디렉토리로 복사 cp -r ~/src ~/backup 예를 들어 ~/src 디렉토리를 ~/backup 디렉토리 하위에 복사를 하고 있던 중에 ctrl-c 눌러서 중단을 했는데, 이미 복사된 것들을 다 지우고 다시 처음부터 복사하자니 그동안 들인 시간이 아깝다. 문제는 파일이 워낙 많다 보니, 대체 어느 파일을 복사하다가 중간에 끊어졌느냐를 찾아야 한다는 점. find 명령을 이용해서 ~/backup 하위에서
[bash: function] 함수의 반환값을 변수에 할당할 때 유의할 점
By 반달가면 | 2017년 9월 7일 |
셸 스크립트에서 함수(function)를 사용하다가 간혹 실수할 때가 있어서 정리해 두기로. 우선 함수에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 함수에서 뭔가 작업을 한 결과를 변수에 저장하는 경우를 생각해 보자. 함수 test_func에서 도출된 결과값을 변수 test_val에 저장한다면 아래와 같은 모양일 것이다. # 함수 정의 function test_func() { ... } # 결과값을 변수에 할당 test_val=`test_func` 위와 같이 역따옴표(`)를 이용해서 함수를 호출하고 그 결과를 변수에 할당할 경우, 함수 안에서 해당 결과값은 echo 명령으로 출력하도록 해야 한다. 개인적으로 아무 생각 없이 echo 대신 return을 쓰는 바람에 오동작
[라즈베리파이] 동기화 - 스핀락(spinlock): 스핀락 중복 획득 시 동작
By Guillermo Austin Kim | 2018년 12월 25일 |
이전 시간까지 스핀락을 획득하고 해제하는 기본 동작만을 확인했습니다. 실전 개발에서는 스핀락을 다른 프로세스가 접근하는 동작에서 예상치 못한 문제를 볼 수 있습니다. ftrace 로그로 커널을 디버깅하면 스핀락을 바로 획득할 때 보다 스핀락을 얻지 못해 기다리는 빈도가 훨씬 높습니다. 스핀락을 제대로 이해하려면 스핀락을 누군가 획득한 다음 다른 프로세스가 같은 스핀락을 얻기 위해 기다릴 때 어떤 동작을 하는지 상세히 분석할 필요가 있습니다. 그동안 이미 분석한 어셈블리 코드는 될 수 있는 대로 넘어가고 스핀락 중복 획득 시 스핀락이 어떤 동작을 하는지 초점을 맞춰서 코드를 살펴보겠습니다.
locate - mlocate 데이터베이스 정보 확인 및 수동 갱신
By 반달가면 | 2018년 12월 5일 |
파일을 빠르게 찾기 위한 locate 명령에 대한 기본적인 내용은 이전 게시물을 참고하자. 여기로 기본적인 사용 예시는 아래와 같다. # 디렉토리 경로 또는 파일명에 문자열 "abc"를 포함한 경우 찾기 locate "abc" # 파일명(basename)에 문자열 "abc"를 포함한 경우 찾기 locate -b "abc" # 정규표현식 사용, 문자열 "Abc" 또는 "abc"를 포함한 경우 찾기 locate --regex "[Aa]bc" locate에서 참조하는 데이터베이스(mlocate DB) 관련 정보를 확인하려면 -S(대문자) 옵션을 이용한다. # mlocate DB 정보 출력 locate -S Database /var/lib/mlocate/mlocate.d