[Ubuntu 16.04] DNS 설정

일반적인 리눅스 환경에서는 /etc/resolv.conf 파일에 DNS 주소값을 세팅합니다.
그러나, 우분투가 12.04 부터는 /etc/resolvconf 디렉토리와 /etc/network/interfaces 등을 종합하여 /etc/resolv.conf를 덮어씌웁니다.
아래와 같이 /etc/resolvconf 디렉토리에 있는 base 파일에 DNS 서버를 설정하면, /etc/resolv.conf 에 설정내용이 반영됩니다.

$ cat /etc/resolvconf/resolv.conf.d/base
nameserver 208.67.222.222

수정 후에는 아래의 명령어를 수행하여 DNS 변경사항을 시스템에 반영합니다.

$ sudo resolvconf -u

카테고리: Linux | 댓글 남기기

[bash] 경과시간 출력하기

bash 스크립트로 작업을 처리하고선 그 경과 시간을 측정하고자 하려고 한다.

스크립트 특성상 다양한 방법이 있겠지만, date, bc, awk 를 이용해서 만들어 봤다.

#!/bin/bash
beginTime=$(date +%s%N)

# 여기에 작업 내용을 구현한다
sleep 1

endTime=$(date +%s%N)
elapsed=echo "($endTime - $beginTime) / 1000000" | bc
elapsedSec=echo "scale=6;$elapsed / 1000" | bc | awk '{printf "%.6f", $1}'
echo TOTAL: $elapsedSec sec

date 를 이용해서 nanosecond 시간을 얻어서 그 차이를 구한다.

그리고 bc 를 이용해서 부동소수의 초단위의 시간을 계산하고, 그 결과를 awk 에 넘겨서 출력 포맷팅을 만들었다.

위의 실행 결과는 다음과 같다.

TOTAL: 1.003000 sec

참고:

출처: https://netmaid.tistory.com/34 [Service for Every Master]

카테고리: Linux | 댓글 남기기

make 컴파일 에러시 쉘 스크립트 중단

소개

리눅스에서 쉘 스크립트가 수행되는 도중 에러가 발생하면 멈추게 하고 싶었다.

$? 특수변수 사용

쉘 스크립트에는 $? 라는 예약된 특수변수가 있다.
이 특수변수는 이전에 실행된 자식 프로세스의 main() 함수 리턴값을 의미한다.
성공시 0, 실패시 non-zero 을 리턴한다.

이를 스크립트에 넣으면 다음과 같은 코드가 된다.

make 어쩌구 저쩌구
if [ $? -ne 0 ]; then
echo "Fail(make) ... $?"
exit 1
fi

makefile은 error가 나면 중지되겠지만,
make를 호출한 script는 make의 다음 문장을 계속 수행하겠지요.
bash의 경우 -e 옵션을 주면 error가 발생하면 종료하게 됩니다.
예를 들어 #!/bin/bash -e 를 script의 첫줄에 써주면 됩니다.

카테고리: Linux | 댓글 남기기

[Synology NAS] 리다이렉트(redirect) 설정

시놀로지 DSM 6.x 에서 도메인 포워딩 또는 리다이렉트를 설정하는 방법
* /usr/syno/share/nginx 로 이동
* WWWService.musrache 파일을 편집
* sudo synoservice –restart nginx

예를 들어 http://wiki.joannes.kr 으로 접속한 도메인을 https://wiki.joannes.kr 연결하도록 한다면 아래의 내용을 적절한 위치(마지막 부분)에 추가

WWWService.mustache 수정

카테고리: Memo | 댓글 남기기

OSTEP 06. Direct Execution

이번 글은 OSTEP 6장 Direct Execution을 공부하며 정리한 내용입니다. 이전 장에서 fork(), exec(), wait() 같은 프로세스 API를 봤다면, 이번 장에서는 운영체제가 CPU를 어떻게 빠르면서도 안전하게 가상화하는지 살펴봅니다.

계속 읽기

카테고리: Operating System | 태그: , , , , , | 댓글 남기기

OSTEP 07. CPU Scheduling

이번 글은 OSTEP 7장 CPU Scheduling을 공부하며 정리한 내용입니다. 앞 장에서 제한적 직접 실행으로 운영체제가 CPU 제어권을 회수하는 메커니즘을 봤다면, 이번 장은 그 위에서 어떤 프로세스를 먼저 실행할지 정하는 정책을 다룹니다.

계속 읽기

카테고리: Operating System | 태그: , , , , , , , | 댓글 남기기

OSTEP 05. Process API

이번 글은 OSTEP 5장 Process API를 공부하며 정리한 내용입니다. 이전 장에서 프로세스가 무엇인지 봤다면, 이번 장에서는 사용자가 운영체제에 어떤 요청을 보내 프로세스를 만들고 제어하는지 살펴봅니다.

계속 읽기

카테고리: Operating System | 태그: , , , , , | 댓글 남기기

OSTEP 04. Processes

운영체제를 공부할 때 가장 먼저 잡아야 하는 개념 중 하나가 프로세스(Process)입니다. 프로세스는 단순히 디스크에 저장된 프로그램 파일이 아니라, 운영체제가 메모리에 올리고 실행 상태를 부여한 실행 중인 프로그램입니다.

이번 글은 OSTEP 4장 Processes를 공부하며 정리한 내용입니다.

계속 읽기

카테고리: Operating System | 태그: , , , , | 댓글 남기기