[Ubuntu] DNS 설정

운영체제로그/Linux 2011. 4. 25. 15:35




Ubuntu/Debian 에서 DNS 주소를 설정하는 방법을 알아보자. 
/etc/resolv.conf 파일을 편집하여 DNS 서버의 아이피 주소를 변경할 수 있으며, 최대 3개의 DNS 주소를 설정할 수 있다.
파일에 명시한 순서대로 IP 주소를  알아내기 위해 해당 서버에 요청하는 것에 주의하자. 


1.  아래 명령으로 DNS 서버의 주소를 추가하자.
sudo vi /etc/resolv.conf

nameserver 208.67.222.222
nameserver 208.67.220.220
nameserver 202.51.5.52


2.   DNS가 올바로 응답을 하는지 확인하자!
$ host yahoo.com
$ nslookup google.com
$ ping nixcraft.in












'운영체제로그 > Linux' 카테고리의 다른 글

[Ubuntu] DNS 설정  (0) 2011.04.25
Wget  (0) 2011.04.25
리눅스 자격증  (0) 2011.04.09
리눅스 파일시스템 계층 표준(Filesystem Hierarchy Standard)  (0) 2011.03.09
su, sudo : 특정 사용자 권한으로 쉘/명령 실행  (0) 2011.03.08
cURL  (0) 2011.02.18

Wget

운영체제로그/Linux 2011. 4. 25. 14:29



윈도우에서 사용할 수 있는 curl과 Wget 같은 파일다운로드 유틸리티를 검색하다가  윈도우용 Wget 을 찾았다.
wget.exe 파일을 다운 받아서 PATH 를 잡아주거나,  이미 PATH가 설정된 폴더(예를 들면 c:\Windows\Sytstem32)에
복사해놓으면 터미널 창에서 유닉스와 동일한 명령으로 사용할 수 있다



1. Wget  소개  
 GNU 공식 사이트 Wget 페이지에서는 wget을 다음과 같이 소개하고 있다. 

Wget은 가장 널리 사용되는 프로토콜들인 HTTP, HTTPS, FTP 을 사용해서 파일을 내려받는 free 소프트웨어로,
GUI 없이도,   터미널에서 스크립트나 cron 과 함께 쉽게 되어질 수 있다. 

* REST와 RANGE를 사용해서 취소된 다운로드를 재개할 수 있다. 
* 파일이름에 와일드카드를 사용할 수 있고, 재귀적으로 파일을 다운할 수 있다.
* 옵션을 주면, 문서의 상대경로를 절대경로로 변경해주어  다운로드한  문서는 로컬상에서 서로 간에 링크가 된다.
* Windows 뿐만 아니라 대다수 Unix 유사 계열의 운영체제에서 실행된다.
* HTTP 프록시와 HTTP 쿠키를 지원한다. 
* persistent HTTP 커넥션을 지원한다. 
* 비동기적, 백그라운드 연산을 지원한다. 
* 미러링시에 도큐먼트를 다시 다운받을 필요가 있는지 결정하기 위해 로컬 파일 타임스탬프를 사용한다. 
* GNU Wget 은 GNU General Public License 하에 배포된다. 




2. Windows 용 Wget 설치 
유닉스와 리눅스에서는 거의 대부분 wget 유틸리티가 설치되어 있으며, 패키지 관리툴을 통해 쉽게 설치할 수 있다.
여기서는 윈도우에 설치하는 방법만 소개한다.

1) Wget for Windows <= 요기에서 윈도우용 wget 바이너리를 다운받는다. 

2) Path 환경변수에 wget.exe 파일을 저장한 폴더 경로를 지정한다.

 
 


  아니면 이미 path 경로로 설정되어 있는 c:\windows\system32 폴더에 wget.exe 파일을 복사한다.


 


3) 이제 터미널 창을 열고 wget 명령을 사용하자~~








3. Wget 사용법 
 명령의 형태는 다음과 같다. 
wget <웹페이지 주소> [-p] [-k] [-r]
단일 페이지 또는 파일만을 다운받으려면 어떤 옵션도 주지 않고 주소만을 인자로 전달한다. 

-p  옵션은 저장되는 html 에 필요한 이미지를 모두 내려받게 한다. 
-k  옵션은 링크를 저장되는 파일 위치로 변환한다.
-r   옵션은 연결된 링크를 모두 다운로드 한다.

사이트 전체를 내려받을 수도 있으며,  백그라운드에서 다운받기(-b), 디버깅 메시지(-d),  헤더 저장하기(--save-headers) 등
다양한 옵션들이 제공된다. wget --help 명령을 사용하여 필요한 옵션들을 살펴보고  사용하자. 





'운영체제로그 > Linux' 카테고리의 다른 글

[Ubuntu] DNS 설정  (0) 2011.04.25
Wget  (0) 2011.04.25
리눅스 자격증  (0) 2011.04.09
리눅스 파일시스템 계층 표준(Filesystem Hierarchy Standard)  (0) 2011.03.09
su, sudo : 특정 사용자 권한으로 쉘/명령 실행  (0) 2011.03.08
cURL  (0) 2011.02.18

리눅스 자격증

운영체제로그/Linux 2011. 4. 9. 00:29

자격증 취득을 목표로 하는 것을 별로 좋아하지 않지만,  공부를 해야하는 하나의 동기로서 자격증을 고려하는 것은 
괜찮은 방법이라 생각 한다. 리눅스 공부를 좀더 심도깊게 해볼 생각으로 관련 자격증에 대해서 알아보았다.
가장 잘 알려진 자격증으로 RHCE , LPIC, 리눅스 마스터 자격증이 있었다. 
RHCE 는 레드햇 리눅스 관련 가장 업계에서 인정해주는 자격증이고, 상당한 지식과 경험을 필요로 한다.
LPIC 는 국제인증 리눅스 자격증이고, 습득 난이도에 따라 단계별로 세분화 되어 있었다.
리눅스 마스터는 국내에서만 인정
되는 자격증이었지만, 덤프만 외우면 합격할 수 있는 자격증은 아닌듯 했다.
RHCE와 리눅스 마스터는 한국어로 출제되고, LPIC 은 영어로 출제되나 영어 난이도는 그리 어렵지 않다고 한다. 
자격증 습득 난이도는 RHCE 가 가장 어려운 듯 하고, LPIC 레벨 2가 리눅스 마스터 1급 정도에 해당하지 않을까...(신뢰성 없음) 

리눅스 자격증에 대한 간단한 소개 및 평가요소들을 나름 정리해 보았다. 



1. RHCE

Red Hat Certified Engineer(RHCE)는 레드햇사가 인증하는 국제적으로 가장 인정받는  리눅스 자격증이다. 
시험은 실습방식으로 2시간 동안 치뤄지고, 비용은 약 40만원으로 상당히 비싼편이다. RHCE는 사전에 RHCSA
(Red Hat Certified System Administrator)를 취득하지 않으면 자격증이 발급되지 않는다.  레드햇 커뮤니티를 바탕으로
수집된 실무와 연관된 작업들이 반영되어 출제된다고 한다. 

자격증 관련 자세한 정보는 다음 링크를 참고하자 :  RedHat Korea


시험 출제 목표는 다음과 같다. 

System Configuration and Management
 
Route IP traffic and create static routes
Use iptables to implement packet filtering and configure network address translation (NAT)
Use /proc/sys and sysctl to modify and set kernel run-time parameters
Configure system to authenticate using Kerberos
Build a simple RPM that packages a single file
Configure a system as an iSCSI initiator that persistently mounts an iSCSI target
Produce and deliver reports on system utilization (processor, memory, disk, and network)
Use shell scripting to automate system maintenance tasks
Configure a system to log to a remote system
Configure a system to accept logging from a remote system
 
Network Services
Install the packages needed to provide the service
Configure SELinux to support the service
Configure the service to start when the system is booted
Configure the service for basic operation
Configure host-based and user-based security for the service

HTTP/HTTPS
Configure a virtual host
Configure private directories
Deploy a basic CGI application
Configure group-managed content
 
DNS
Configure a caching-only name server
Configure a caching-only name server to forward DNS queries
Note: Candidates are not expected to configure master or slave name servers
 
FTP
Configure anonymous-only download
 
NFS
Provide network shares to specific clients
Provide network shares suitable for group collaboration
 
SMB
Provide network shares to specific clients
Provide network shares suitable for group collaboration
 
SMTP
Configure a mail transfer agent (MTA) to accept inbound email from other systems
Configure an MTA to forward (relay) email through a smart host
 
SSH
Configure key-based authentication
Configure additional options described in documentation
 
NTP
Synchronize time using other NTP peers








2. LPIC 
LPIC(Linux Professional Institute Certification)는 칼데라시스템, 레드햇, 데비안 등 리눅스 선도 기업들이 주축이 되어 설립한
비영리 단체 LPI에서 운영하는 리눅스 전문가 인증 제도이다. 수검비용은 CBT 경우 약 15만원 정도이고, PBT 방식은 조금 더
저렵하다.  시험이 레벨1(초급), 레벨2(중급), 레벨3(고급)으로 세분화되어 있으며,  실기가 없고 필기로만 시험이 진행되는 것도 
특징이다. 

LPIC에 대한 자세한 정보는 다음 사이트틀 참고 : LPIC Korea
시험 응시는 Prometric 또는 VUE 를 통해 할 수 있다. 

시험 출제 목표는 다음과 같다. 
 

 
 

 




3. 리눅스 마스터
리눅스 마스터는 한국 정보통신 진행협회가 인증하는 리눅스 한국 공인 자격증이다.  1급과 2급이 있으며,  시험을 
위한 특별한 자격요건은 없다.  수검비용은  1차(필기), 2차(실기) 합산하여 2급은 4만 5천원, 1급은 10만원이다.
시험 출제 목표는 아래 표를 참고하자. 

리눅스 마스터 시험 참고 사이트 : 한국 정보통신 진흥협회

 

 
더 자세한 시험 출제범위는 위 사이트에서 확인하자! 


 

'운영체제로그 > Linux' 카테고리의 다른 글

[Ubuntu] DNS 설정  (0) 2011.04.25
Wget  (0) 2011.04.25
리눅스 자격증  (0) 2011.04.09
리눅스 파일시스템 계층 표준(Filesystem Hierarchy Standard)  (0) 2011.03.09
su, sudo : 특정 사용자 권한으로 쉘/명령 실행  (0) 2011.03.08
cURL  (0) 2011.02.18

리눅스 파일시스템 계층 표준(Filesystem Hierarchy Standard)

운영체제로그/Linux 2011. 3. 9. 02:27


unix_file_structure.gif

 

다음은 Filesystem Hierarchy Standard 2.3 내용을  간략히 요약한 내용이다. 

 

Bin 

시스템 관리자와 사용자가 동시에 사용하는 명령을 포함하고 있으며, 이 명령들은 다른 파일시스템이 마운팅 될 필요가 없는 명령이다. (싱글 유저 모드)

스크립트에서 간접적으로 사용되는 명령들도 포함하고 있다.  /bin 디렉토리에는 서브디렉토리가 없어여 한다. 

다음은 bin 디렉토리에서 볼 수 있는 몇 가지 명령들이다.  

cat, chmod, chirp, cp, date, echo, kill, mv, ls


/boot (부트로더의 정적파일)

이 디렉토리는 부팅시 필요한 초기화 파일을 포함하여 부팅과정에서 필요한 모든 것을 포함하고 있다. 

커널이 유저모드 프로그램 실행을 시작 시키기 전에 사용되는 데이터를 저장하고 있다. . 저장된 마스터 부트 섹터와 섹터 맵파일을 포함하고 있다 

운영체제 커널은 / (루트) 또는 /boot 디렉토리에 위치해야한다.


/dev (디바이스 파일)

디바이스 파일들이 있는 디렉토리이다.  /dev 에 디바이스들이 수동으로 생성될 필요가 있다면 , MAKEDEV 라는 이름의 

명령을 포함해야한다.  

로컬 디바이스를 위해 MAKEDEV.local 을 포함할수도 있다. 



/etc (호스트에 있는 특정시스템에 대한 구성파일)

configuration file을 포함한다. 구성파일이란 프로그램에 동작방식을 제어하는 로컬파일을 의미한다. 정적파일이어야 하며, 실행가능한 바이너리여서는 안된다

서브디렉토리 opt는 :/opt에 대한 설정을,  X11 는  X Window 시스템에 대한 설정을,  sgml 은  SGML 에 대한 설정을,  xml은  XML에 대한 설정파일을 포함한다.


/home(사용자 홈디레토리)

사이트에 대한 파일시스템으로,  호스트 마다 설정이 다를 수 있기 때문에 프로그램들은 이 위치에 의존해서는 안된다. 

사용자 개인의 애플리케이션 설정파일은 .(dot)으로 시작하는 이름으로 홈디렉토리에 저장된다. 애플리케이션이 dot 파일을 하나이상 생성해야한다면 dot 디렉토리를

생성하고, 거기에 .dot으로 시작하지 않는 이름으로 설정파일들을 저장해야한다.


/lib  (필수적인 공유 라이브러리와 커널 모듈)

시스템을 부팅시키거나 루트 파일시스템에서 명령을 실행하는데 필요한 공유라이브러리 이미지가 존재한다. 

예를 들어 /bin이나 /sbin에서…필요한…

다음과 같은 이름패턴을 가지고 있어야한다. 

libc.so.* 는  동적으로 링크된 c 라이브러리이며, ld* 는 실행타임 링커/로더를 나타낸다. 

 

/media (제거가능한 미디어에 다한 마운트 위치)
플로피 디스크나 cdrom, zip 디스크와 같은 제거 가능한 미디어를 위한 마운트 포인트로 사용되는 서브디렉토리를 포함한다 

/mnt (일시적으로 마운트되는 파일시스템을 위한 마운트포인트)

시스템 관리자가 필요할 때마다 파일시스템을 일시적으로 마운트하기 위해 존재한다. 설치 프로그램에 의해 이 디렉토리가 사용되어서는 안된다. 


/opt (애드온 애플리케이션 소프트웨어 패키지)

애드온 애플리케이션 소프트웨어 패키지 설치를 위해 제공되는 디렉토리이다. . /opt에 설치된 패키지는  /opt/<package>, /opt/<provider> 에서 정적파일을 찾을수 있어야한다 <package> 는 소프트웨어 패키지를 기술하는 이름이며,  <provider> 는

제공자의 LANANA 등록된 이름이다.


 /root (루트유저 홈데릭토리)

루트 계정의 홈디렉토리는 개발자에 의해 결정될 수 있지만,  root 라는 디렉토리 명을 사용이 권장된다.  


/sbin (시스템 바이너리)

시스템 관리자에 의해 사용되는 유틸리티들이  /sbin,  /usr/sbin,   /usr/local/sbin 에 저장된다. /sbin은  시스템의 부팅,  복원, 복구, 수리를 위한 필수 바이너리를 포함한다.  


/tmp (임시파일)

임시파일을 요구하는 프로그램이 사용하기 제공되는 디렉토리이다 . /tmp에 있는 어떤 파일과 디렉토리도 보존되지 않는다는 것을 주의해야한다.  


'운영체제로그 > Linux' 카테고리의 다른 글

Wget  (0) 2011.04.25
리눅스 자격증  (0) 2011.04.09
리눅스 파일시스템 계층 표준(Filesystem Hierarchy Standard)  (0) 2011.03.09
su, sudo : 특정 사용자 권한으로 쉘/명령 실행  (0) 2011.03.08
cURL  (0) 2011.02.18
grub에서 디폴트 부팅 os 변경하기  (0) 2011.02.16

su, sudo : 특정 사용자 권한으로 쉘/명령 실행

운영체제로그/Linux 2011. 3. 8. 18:10

 

su

su 는 substitue(교체하다)의 약자로  다른 사용자의 계정으로 전환해 주는 유틸리티이다. 

-,  -l, -login 모두 동일한 옵션으로, 이 옵션을 주고, 실행을 하면, 해당 사용자의 권한으로 쉘을 실행하고, 환경변수까지 변경해준다.  

su - hiddenviewer=> hiddenviewer 계정으로 쉘을 실행하고, 환경변수까지 변경함

 - 옵션을 사용하지 않고, su를 실행하면 해당 사용자의 계정으로 쉘을 실행하지만 환경변수는 변경하지 않는다. 

 

 

 

sudo

시스템 관리자나 다른 사용자의 권한으로 해당 명령을 실행할 수 있게 하는 명령으로,  이런 허용여부는 /etc/sudoers 파일에 설정되어 있다.  

일반 사용자 계정으로 로그인 했을 때, 잠시 관리자 권한으로 특정자원에 접근하고 싶을 때 sudo 명령을 사용하여 관리자 권한으로 

명령을 실행할 수 있다.  다른 사용자의 권한을 획득하려 할 때, 비밀번호를 묻게 되는데 이 비밀번호를 올바로 입력했다 하더라도, 

/etc/sudoers 파일에 해당 사용자가 지정되어 있지 않으면, sudo 명령은 실패하게 된다. 

 

sudo cat /etc/sudoers<= -u옵션으로 사용자를 지정하지 않으면, 기본으로 root로 실행함
Password:   <= 여기서 올바로 비밀번호를 입력했다 하더라도, /etc/sudoers에 hiddenviewer가 
명시되어 있지 않으면 실패한다.

 

 

/etc/sudoers 파일에

 hiddenviewer ALL=(ALL) ALL 
이라는 문장을 추가하여 sudo 실행을 허용하면, 위 명령은 성공하게 된다. 

cURL

운영체제로그/Linux 2011. 2. 18. 19:15

 

curl은 URL 문법을 사용해서 네트웍으로 데이터를 전송할 수 있는  커맨드 라인 툴로,  DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS,

IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP,SMTP, STMPS, TELNET 등 다양한 프로토콜을 지원한다. 

 

curl 명령에 -v 옵션을 사용하여,  curl 명령이 서버에 보내는 명령들을 볼 수 있다. 

 

웹페이지를 요청하는 다음과 같은 요청을 할 수 있다. 

curl http://curl.haxx.se

위와 같이 요청을 하면, 웹페이지 소스를 확인할 수 있다. 

 

-i 옵션을 사용하여, 헤더를 볼수 있으며, -I 옵션을 사용하여 헤더만 볼수도 있다.  

curl -I http://curl.haxx.se

 


GET 방식의 요청

curl "www.hotmail.com/when/junk.cgi?birthday=1906&press=OK"


POST 방식의 요청

curl -d "birthday=1905&press=OK" www.hotmail.com/when/junk.cgi

 

특수문자를 포함하기 위해서  curl에 --data-urlencode 옵션을 사용하여 인코딩할 수 있다. 

curl -data-urlencode "name=I am dDaniel" www.example.com

 

 

File Upload 하기 

 

위와 같이 html 문서내 파일업로드를 다음과 같은 curl 명령으로 수행할 수 있다. 

curl -F upload=@로컬파일이름 -F press=OK www.example.com

 

PUT 방식 

HTTP 서버에 데이터를 업로드하는 가장 좋은 방법은 PUT  을 사용하는 것이다. 물론 서버단에 HTTP PUT 스트림을

받는 방법을 아는 프로그램이나 스크립트가 존재해야한다. 파일을 HTTP 서버로 전송하는 명령이다 .

curl -T 파일 www.upload.com/receive.cgi

 

 

HTTP 인증 

HTTP  인증은 서버에 사용자명과 비밀번호를 전송하여 컨텐츠 접근권한을 허용받는 것이다. HTTP  는 디폴트로 순수 텍스트

기반 인증을 수행하기 때문에 비밀번호가 언제든지 네트워상에서 노출될 위험이 있다. 

curl -u name:password www.secret.com

사이트 마다 다른 인증방식을 요구할 수 있기때문에 서버로부터의 헤더를 확인하여, ---ntlm, --digest, --negotiate, -- anyauth 등

적합한 옵션을 주어야 할 수있다. 

 

User Agent 설정 

웹 요청시 User-Agent 헤더를 설정하여 원하는 버전의 웹페이지를 얻어 올 수 있다. 

 

Window에서 Internet  Explorer를 사용하고 있다면, 

curl -A "Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)" www.example.com

 

리눅스에서 Netscape를 사용하고 있다면, 

curl -A "Mozilla/4.0 [en] (X11; U; Linux 2.2.15 i686)"  www.example.com



curl을 사용하여 트위터에 tweet 하기

트위터 API를 사용에서 글을 트윗 하기 위해서, 인증을 거쳐야하는데 curl을 사용하여 인증처리 및 글을 등록해보자!

--basic --user 사용자명:비밀번호

옵션을 사용하여 Basic Auth 을 처리할 수 있다. 그을 트윗하는 완전한 예는 다음과 같다. 

 

curl --basic --user 사용자명:비밀번호 --data status="my test tweet!!" http:// twitter.com/statuses/update.xml

 

 

세션쿠키값을 파일에 저장하여 로그인상태 유지하기

트위터의 특정 사람에게 DM을 보내기 위해 로그인 처리를 다음과 같이 할 수 있다. 

curl --cookie /tmp/cookies.txt --cookie-jar /tmp/cookies.txt --user-agent Mozilla/4.0 --data 
'username=사용자명' --data 'password=비밀번호' --data 'commit=Sign In' http://twitter.com/login

 

--cookie /tmp/cookies.txt --cookie-jar /tmp/cookies.txt

위 옵션은 /tmp/cookies.txt 파일에서 쿠키를 읽어오고 저장하게 한다.  최초에 빈파일이지만, 로그인 완료되면 세션쿠키가 해당 파일에

저장되게 된다. 이후 요청에서는 이 쿠키를 읽어서 별도의 인증과정 없이  아래와 같이 DM을 전송 할 수 있다. 

 

curl --cookie /tmp/cookies.txt --cookie-jar /tmp/cookies.txt --user-agent Mozilla/4.0 --data
"text=보낼 메시지를 이곳에" --data 'commit=Send' http://twitter.com/direct_messages/create/대상사용자아이디(숫자)


이 글은 스프링노트에서 작성되었습니다.

grub에서 디폴트 부팅 os 변경하기

운영체제로그/Linux 2011. 2. 16. 09:26
/boot/grub/grub.cfg 또는 /boot/grub/grub.conf 또는 /boot/grub/menu.lst 파일을 편집하여,
디폴트 부팅 os에 대한 인덱스를 변경해주면 된다.  위 파일에서는 부팅 메뉴에서 볼 수
있는 목록이 설정되어 있는데, 가장 상단부터 인덱스 0이 부여된다.
default 0
라고 되어있는 라인을 부팅하고 싶은 os의 인덱스로 변경하자~~

Bash 스크립트

운영체제로그/Linux 2011. 1. 20. 22:33
리눅스를 서버로 자바언어 기반의 웹서비스를 운영하려고 준비하다가,  로그를 
시간, 일일 단위로 수집하여 에러가 발생하면 메일로 전송해주는 기능을 작성해야할 일이 생겼다. 
스프링에서 지원해주는 스케줄링과 메일전송 기능을 사용할 수도 있지만, crontab과 몇 가지 리눅스 유틸리티를
사용해서도 쉽게 해결할 수 있는 일이다. 

일단 스크립트에 익숙지  않기 때문에   Bash 스크립트 구문을  간략히 정리해보고 원하는 기능을 구현해보자

사용자의 디폴트쉘은  /etc/password 파일에 사용자 엔트리에 기반하여 적용이 되며,  대부분 bash(/bin/bash)가 사용된다. 
bash 쉘은 시작시에 /etc/profile 파일을 읽어서 모든 사용자에 쉘환경에 적용을 한다.  사용자 홈디렉토리에 위치하고 있는
.bash_profile, .bash_login, .profile 파일은 현재 쉘환경만 적용이 된다. 쉘이 닫힐 때는 ~/.bash_logout 파일이  실행이 된다. 

1 스크립트 실행 
스크립트를 실행하기 위해서는, 파일에 실행권한을 부여해야 한다. 
$chmod u+x myscript.sh
bash 명령을 주어 명시적으로 실행하려면,  스크립트 파일의 가장 첫라인은 다음과 같이 시작해야 한다. 
#!/bin/bash

2 변수선언과 테스트문 
테스트문은 참과 거짓을 판별하는 표현식으로 대괄호[] 안에 표시를 한다.  변수를 선언하고 테스트문을 사용하는 예이다. 
MYSTRING=abc if [ $MYSTRING = abc ] ; thenecho “The variable is abc” if
위 예에서는 MYSTRING 이라는 변수를 선언하고 그 값이 "abc" 와 같은면 메시지를 출력하고 있다. 
다음은 테스트문에서 수를 비교하는 예이다. 
MYNUMBER=1 
if [ $MYNUMBER -eq 1 ] ; then
    echo “MYNUMBER equals 1”; 
fi 

if [ $MYNUMBER -lt 2 ] ; then 
    echo “MYNUMBER <2”; 
fi 

if [ $MYNUMBER -le 1 ] ; then 
    echo “MYNUMBER <=1”;
 fi 

if [ $MYNUMBER -gt 0 ] ; then 
    echo “MYNUMBER >0”; 
fi 

if [ $MYNUMBER -ge 1 ] ; then 
    echo “MYNUMBER >=1”; 
fi

각각 MYNUMBER 변수에 있는 값을 비교하여 메시지를 출력하고 있다. 테스문에서 사용한 기호는 각각 =, <, <=, >, >= 를 의미한다. 다음은 파일에 대한 테스문 예이다.
filename=”$HOME” 
if [ -e $filename ] ; then 
    echo “$filename exists”; 
fi

if [ -f “$filename” ] ; then
    echo “$filename is a regular file” 
elif [ -d “$filename” ] ; then	
    echo “$filename is a directory” 
else	
    echo “I have no idea what $filename is”
fi
위에서 사용한 테스트문 연산자에 대해서 알아보자 .

                      연산자   의미  연산자  의미
 -e(a) file 파일이 존재하는지 검사   expr1 -a expr2 and 
 -d file  파일이 디렉토리인지 검사  expr1 -o expr2  or
 -f file  파일이 일반파일인지 검사  file1 -nt file2  modification time is newer than
 -L(f) file 파일이 심볼릭 링크인지 검사   file1 -ot file2  modification time older than
 -n string 문자열길이가 0보다 큰지검사   file1 -ef file2 두 파일이 링크로 연결유무 
 -z string 문자열길이가 0인지 검사   var1 -ne(!=) var2  not equal
 -o file 파일을 소유하고 있는지검사   var1 -eq(=) var2  equal
 -r file 파일을 읽을 수 있는지 검사   var1 -ge var2  equal or greater than
 -w file  파일을 쓸 수 있는지 검사  var1 -gt var2  greater than
 - x file  파일을 쓸 수 있는지 검사  var1 -le var2 less than or equal 
 -s file  파일이 존재하고, 
0바이트보다 큰지 검사
var1 -lt var2   less than
   
 


3 case 문 (c언어의 switch 문)
case “$VAR” in	 
string1)		
    { action1 };; 
string2)		
    { action2 };;	
*)		
    { default action } ;; 
esac


4 for 문
for NUMBER in 0 1 2 3 4 5 6 7 8 9 do	echo The number is $NUMBER done
아래와 같이 backtick(`)으로 감싸 ls 명령을 수행한 결과에 대해서 반복을 할수도 있다. 
for FILE in `/bin/ls`; do
     echo $FILE; 
done


5 while문
변수를 카운트하여 루프를 도는 예이다. 
VAR=0 
while [ $VAR -lt 3 ]; do
    echo $VARVAR=$[$VAR+1]
Done


6 until 문
until 구문을 사용하여,  while 문과 동일한기능을 수행할 수 있다. 
VAR=0 until [ $VAR -eq 3 ]; do echo $VAR; VAR=$[$VAR+1]; done

[Ubuntu] NFS 사용하기

운영체제로그/Linux 2011. 1. 10. 00:05

NFS(Network File System) 은 원격호스트에 있는 파일시스템을 로컬 하드인 것처럼 사용할 수 있는 
선마이크로 시스템즈사에 의해 개발된 파일시스템이다.  지금과 같이 파일공유가 되지 않았던 예전에 많이 사용되었던
방식이라고 한다.  NFS는 서버 / 클라이언트 모델로 동작하는데, 파일소스를 제공하는 측이 서버가 되고,  파일소스를 이용하는 
측이 클라이언트가 된다.
우분투/데비안에서,  NSF 클라이언트로 동작하기 위해서는 nfs-common, portmap 패키지가 필요하며,  
서버로 동작하기 위해서는  nfs-common, portmap, nfs-kernel-server,  패키지가 필요하다. 이름대로 nfs-common 패키지는
서버와 클라이언트 에서 공통으로 사용하는 모듈로,  showmount, nfsstat 등의 유틸리티가 포함되어 있다.  
 


이제 NFS 를 설치해보자. 
 

1. 패키지 설치 (서버, 클라이언트 패키지 모두 설치)
# apt-get install nfs-kernel-server nfs-common portmap




2. /etc/exports 파일에 공유폴더 설정하기 (서버측 설정)
/folderToShare1 192.168.1.10(rw,no_root_squash,async)
/folderToShare2 192.168.1.1/24(rw,no_root_squash,async)

exports 설정파일은 <공유폴더 공유호스트1(옵션) 공유호스트2(옵션) ...> 와 같은 형태를 따른다. 
한줄에 여러 호스트를 지정할 수 있으며, 2번줄처럼 서브넷마스크를 적어주어 ip범위(1~255)를 지정해
줄 수도 있다. 참고로 맥에서 공유폴더를 마운트하기 위해서는 반드시 insecure 옵션을 명시해 주어야 한다. 




3. export 파일을 편집했다면 nfs 데몬을 재실행하여 변경사항을 적용해 준다 (서버측 설정)
# sudo /etc/init.d/nfs-kernel-server restart




4. 클라이언트에서 원격호스트 폴더를 마운트하여 사용한다. (클라이언트측 설정)
# mkdir ~/mymount

# cd ~

# sudo mount servername:/folderToShare1 ~/mymount 
서버의 exports 파일에 명시된 호스트라면, mymount 디렉토리에  /folderToShare1 서브디렉토리들이 마운트되어
이후에는 로컬 디스크처럼 사용할 수 있다. 




5. 마운트를 해제하기 위해서는 아래와 같이 한다 
#umount ~/mymount 




[Mac]launch daemon vs launch agent

운영체제로그/MacOS 2010. 12. 11. 16:37


운영체제 부팅과 함께 프로그램을 실행시키는 2가지 형태의 방법이 있다. 
launch daemon 으로 실행하는 방법과, launch agent 로 실해하는 방법이 그것인데, 
각각 윈도우에서 서비스 , 시작프로그램으로 실행하는 것과 같다. 

[Launch daemon]
사용자 로그인없이도 실행이 가능하지만,  GUI 상에서 정보를 보여줄 수는 없다. 
웹서버와 데이터베이스 서버 구동을 위해 적합한 방법이라 할수 있겠다.  프로그램들은 plist 설정파일에 
실행할 명령 및 옵션과 함께 기술된다.   /System/Library/LaunchDaemons 폴더에는 애플에서 제공되는 
daemon들을 위한 설정파일이 위치하고, /Library/LaunchDaemons 폴더에는 사용자 및 그외의
 daemon들을 위한 설정파일들이 저장된다. 

[Launch agent]
agent는 사용자를 대신하여 실행되는 프로그램이기 때문에 반드시 사용자가 로그인되어 있어야 한다. 
GUI를 통해 정보를 보여줄 수 있기 때문에,  SNS 애플리케이션과 같이 자주 사용하는 애플리케이션 등록에
적한한 방법이다. 역시 plist 포맷으로 기술되며, 모든 사용자가 공통으로 사용할 프로그램은  /System/Library/LaunchAgents 와 /Library/LaunchAgents 폴더에 설정파일이 저장된다. 사용자별 설정파일은 ~/Library/LaunchAgents 폴더에 저장된다. 

'운영체제로그 > MacOS' 카테고리의 다른 글

[Mac]launch daemon vs launch agent  (0) 2010.12.11
[Mac]시작프로그램/Script 등록하기  (0) 2010.12.11