mdmfs 명령을 사용하여 FreeBSD에서 램디스크를 사용해보았다.
목적은 css와 images를 마운트시켜 좀더 속도를 내보려는 심산이었지만,,, 결과는....
HDD와 거의 차이를 보여주지 않았다. 좌절... 크흑
mdmfs는 mdconfig, newfs, mount 명령을 한방에 처리해주는 명령이다. 기본으로 soft-updates가 enable된 상태의 swap기반(swap-based) 디스크를 사용한다. swap 대신 malloc을 원하면 -M 옵션을 사용하면 된다. 하지만 malloc을 사용하게 되면 어떠한 이유에서라도 메모리가 FULL나는 상황 발생 시 시스템이 먹통이 되니
주의할 것!!!!!
# mkdir /mnt/ramdisk
# chmod 1777 /mnt/ramdisk
# /sbin/mdmfs -s 256M md1 /mnt/ramdisk
# mount 명령을 내렸을때
...
...
...
/dev/md1 on /mnt/ramdisk (ufs, local, soft-updates)
아랫줄에 위처럼 보이면 성공이다.
--테스트!!!
웹 서비스 디렉토리의 css와 images를 cp로 가져와서 웹으로
ab테스트를 수행하였다.
#ab -c 3000 -n 300 http://테스트도메인/imageTest.html
수행결과 그냥 HDD와 RAMDISK와의 성능차이는 그다지.......
물론 실 서비스를 하는 서버에서 수행한 것이 아니기 때문에 결과값이 이렇게
나온 것일 수 있지만 현 상황에서는 실 서비스에 적용하기엔 뭔가 2% 부족하다..
다음엔 다른 상황에서 테스트를 진행해봐야지..
인천 만석부두에서 근해를 돌아다니며 광어, 우럭, 장어, 장대 등 여러 생선들을 잡아올렸지만 아쉽게도 우리가 가는 날은 물때가 좋지 않아 조어량이 많지는 않았다.
그래도 배에서 먹는 매운탕과 우리잡은고기로 만들어주신 회의 맛은 일품이었다.
풍랑주의보가 내려 예정된 시간보다 더 빨리 돌아오게 되어 아쉬웠긴 하지만 오랜만에 스트레스를 날려버릴 수 있었던 시간이었다. 다음에 가면 더 익숙하게 할 수 있을 것 같은데... ㅎㅎ 송대리 기다리라구~ ^^
갈매기와 인천대교 샷은 뽀나쓰~
걱정이다. 아프지 말고 잘 달려주렴~
다시는 SLR에 손을 대지 않으려 했지만 계속 내 손에 쥐어지는 다른 사람의 카메라와 펜탁스의 야심작이라고 평가되어지는 새로운 기종의 등장에 그만... 평정심을 잃어버리고 K-7을 질러버리고 말았다...
openssl 명령으로 운영중인 웹서버의 SSL인증서 정보를 살펴볼 수 있다.
# openssl s_client -connect 웹서버:443 |
imaps(IMAP over SSL, 993포트), pop3s(POP3 over SSL, 995포트)는 포트만 변경하여 다음과 같이 확인한다.
# openssl s_client -connect IMAP서버:993 # openssl s_client -connect POP3서버:995 |
1. 샘플로 살펴보자.
# echo "" | openssl s_client -connect logins.daum.net:443 CONNECTED(00000003) --- Certificate chain 0 s:/1.3.6.1.4.1.311.60.2.1.3=KR/2.5.4.15=V1.0, Clause 5.(b)/serialNumber=120-81-47521/C=KR/ST=Seoul/L=Seocho-gu/O=Daum Communications Corp./OU=Pi Lab/OU=Terms of use at www.verisign.com/rpa (c)05/CN=logins.daum.net ... 생략 ... --- Server certificate -----BEGIN CERTIFICATE----- ... 생략 ... -----END CERTIFICATE----- subject=/1.3.6.1.4.1.311.60.2.1.3=KR/2.5.4.15=V1.0, Clause 5.(b)/serialNumber=120-81-47521/C=KR/ST=Seoul/L=Seocho-gu/O=Daum Communications Corp./OU=Pi Lab/OU=Terms of use at www.verisign.com/rpa (c)05/CN=logins.daum.net issuer=/C=US/O=VeriSign, Inc./OU=VeriSign Trust Network/OU=Terms of use at https://www.verisign.com/rpa (c)06/CN=VeriSign Class 3 Extended Validation SSL SGC CA --- No client certificate CA names sent --- SSL handshake has read 4843 bytes and written 340 bytes --- New, TLSv1/SSLv3, Cipher is DHE-RSA-AES256-SHA Server public key is 1024 bit SSL-Session: Protocol : TLSv1 Cipher : DHE-RSA-AES256-SHA Session-ID: Session-ID-ctx: Master-Key: 1160B88DAC017E265FE29B1BE9A85B30FB731B9190A96C06067570E89FEC011EDECA36BB299239959B7DB68A753570E4 Key-Arg : None Start Time: 1230104266 Timeout : 300 (sec) Verify return code: 20 (unable to get local issuer certificate) --- DONE |
-msg 옵션을 추가하면 전송되는 TLS/SSL 프로토콜까지 살펴볼 수 있다. 이 메시지를 통해서 SSL handshake 과정이 쉽게 파악된다. 아래는 결과중에 메시지 부분만 뽑아낸 것이다. >>> 로 표시 된 것은 Client -> Server로 보낸 메시지이고, <<< 로 표시된 것은 Server -> Client로 보낸 메시지이다.
>>> SSL 2.0 [length 008c], CLIENT-HELLO <<< TLS 1.0 Handshake [length 002a], ServerHello <<< TLS 1.0 Handshake [length 10e1], Certificate <<< TLS 1.0 Handshake [length 018d], ServerKeyExchange <<< TLS 1.0 Handshake [length 0004], ServerHelloDone >>> TLS 1.0 Handshake [length 0086], ClientKeyExchange >>> TLS 1.0 ChangeCipherSpec [length 0001] >>> TLS 1.0 Handshake [length 0010], Finished <<< TLS 1.0 ChangeCipherSpec [length 0001] <<< TLS 1.0 Handshake [length 0010], Finished >>> TLS 1.0 Alert [length 0002], warning close_notify |
[ SSL handshake ]

2. 인증서의 만료일자는 어떻게 살펴볼 수 있을까?
# echo "" | openssl s_client -connect logins.daum.net:443 | openssl x509 -noout -dates notBefore=Oct 14 00:00:00 2008 GMT notAfter=Oct 30 23:59:59 2009 GMT |
notBefore= : '이전에는 없음', 발급일
notAfter= : '이후에는 없음', 만료일
s_client 로 얻은 결과를 다시 'openssl x509' 명령으로 넘겨서 얻은 결과이다. -dates 옵션 대신 -startdate -enddate, -text를 사용해도 만료일을 확인할 수도 있다. 이외 -purpose, -subject, -issuer, fingerprint, serial, -hash 등의 옵션으로 인증서의 부분별 정보를 파악할 수 있다.
3. 참고자료
* Monitoring SSL certificate expiration date
http://doodlog.blogspot.com/2008/11/monitoring-ssl-certificate-expiration.html
* OpenSSL Command-Line HOWTO
http://www.madboa.com/geek/openssl/
* 커피닉스의 '네트워크(network) > TCP/IP, 프로토콜, 포트' 중 SSL Handshake 자료
http://coffeenix.net/?cata_code=56
* SSL 운영(https)시 도메인기반 Virtual host가 안되는 이유 (글 좋은진호, 2007.9)
http://coffeenix.net/board_view.php?bd_code=1543
-- 출처 : http://coffeenix.net/board_view.php?bd_code=1661 좋은진호님의 블로그
▒ grep : 패턴을 이용한 search => regular expression을 잘 만드는 것이 필요하다.
grep option(s) pattern filename(s)
OS/tdir] grep -n dba /etc/group # -n : 파일 안에서의 패턴이 발견된 라인 및 라인 번호
OS/tdir] grep -v dba /etc/group # -v : 패턴이 발견되지 않은 라인
OS/tdir] grep -n dba /etc/group /etc/passwd # 파일을 여러개 나열...
OS/tdir] grep -i the ~/tdir/* # -i : 대소구분 무시(ignore) => the 대소구분 없이
OS/tdir] grep -li the ~/tdir/* # -l : 패턴이 들어있는 파일 이름만...
OS/tdir] grep -c the ~/tdir/* # -c : 패턴이 들어있는 라인 번호만...
[패턴을 좀더 정교하게 표현하려면 regular expression을 사용해야 한다]
^ : ^패턴 : 패턴으로 시작하는 모든 라인 찾기
$ : 패턴$ : 패턴으로 끝나는 모든 라인 찾기
. : d... : d로 시작하는 4자리 character 찾기
* : [a-d]* : a, b, c, d로 시작하는 character 찾기
[] : [Dd]atabase : Database 또는 database 찾기
[^] : [^D] : D가 나타나지 않는 라인 찾기
OS/tdir] grep -i ^the ~/tdir/* # the로 시작하는 라인 찾기
OS/tdir] grep -i meal.$ ~/tdir/* # meal.으로 끝나는 라인 찾기
OS/tdir] grep c...d ~/tdir/* # c로 시작하고 d로 끝나는 5자리 character 찾기
================================================================
▒ egrep(expression grep) : searches files for a pattern of characters
and prints all lines that contain that pattern.
OS/tdir] egrep '(a|A)d+' /etc/passwd # ad 또는 Ad가 포함된 라인 찾기
OS/tdir] vi grep_test # 아래 내용을 추가하세요... 붙여넣기... ^^
An Oracle database is a collection of data treated as a unit.
The purpose of a database is to store and retrieve related information.
A database server is the key to solving the problems of information management.
OS/tdir] egrep 'Oracle|purpose' grep_test # Oracle 또는 purpose가 포함된 라인 찾기
===============================================================
▒ sed : stream editor => file을 열지 않고 data를 편집하는 기능
sed [-options] [address] command file... [>newfile]
# sed '/pattern/d' filename # file에서 패턴이 포함된 라인을 지우고 그 결과를 화면에 표시
# 원본 파일에는 아무런 변화가 없다.
OS/tdir] cp grep_test sed_test
OS/tdir] cat sed_test
OS/tdir] sed '/purpose/d' sed_test # purpose 라는 단어가 들어간 라인 삭제
# sed '#d' filename : # 라인만 삭제
# sed '$d' filename : 마지막 라인 삭제
# sed '#,$d' filename : # 라인부터 마지막 라인까지 지우기
# sed '#,#d' filename : # 라인부터 # 라인까지 지우기
OS/tdir] sed '1d' sed_test # 1 라인만 삭제
OS/tdir] sed '$d' sed_test # 마지막 라인만 삭제
OS/tdir] sed '/purpose/d' sed_test > set_out # sed 처리 결과를 sed_out 으로 저장
OS/tdir] cat set_out
OS/tdir] sed '/purpose/p' sed_test # 패턴이 포함된 라인이 두번 출력(print)된다.
OS/tdir] sed -n '/purpose/p' sed_test # 패턴이 포함된 라인만 출력된다.
OS/tdir] sed 's/$/ Oracle/' sed_test # 각 라인의 마지막에 원하는 글자 추가
OS/tdir] sed 's/ */#/g' sed_test # space를 찾아서 #기호로 변환한다.
OS/tdir] sed 's/ */-/g' sed_test # space를 찾아서 -기호로 변환한다.
# * 기호 앞에 space가 두개라는 점에 유의
OS/tdir] # 한번에 여러 가지 편집 수행
OS/tdir] sed -e 's/database/DATABASE/g' -e 's/information/INFORMATION/g' sed_test
===============================================================
▒ awk : 패턴 검색과 처리를 위한 언어
=> 명령어의 이름은 개발자인 Alfred V. Aho, Peter J. Weinberger, Brian W. Kernighan 3인의
머리글자를 사용해서 만든 것이다.
awk '{ action}' filename
OS/tdir] ls -l | awk '{print $0}' # 전체 필드가 모두 나타나도록...
drwxr-xr-x 2 prof9i4 dba 512 4월 25일 15:44 a_dir
drwxr-xr-x 2 prof9i4 dba 512 4월 18일 23:53 b_dir
$1 $2 $3 $4 $5 $6 $7 $8 $9
$0
OS/tdir] ls -l | awk '{print $1}' # 1번 필드만 나타도록...
OS/tdir] ls -l | awk '{print $1, $9}' # 1번과 9번 필드만 나타나도록...
OS/tdir] ls -l | awk '{print $3 "\t" $4 "\t" $9}' # Tab 키가 적용된 결과...
OS/tdir] ls -lt | awk '{print $9, "is using", $5, "bytes"}' # text 추가
OS/tdir] ls -lt | awk '$5 <= 200 {print $0}' # 5번 필드가 200 이하일 경우 출력

PREV