학습자료/리눅스 2012. 11. 13. 17:31

요약 - 리눅스의 proc 파일시스템은 프로세스의 정보뿐만 아니라 커널이 실행되면서 작성된 각종 정보들을 역시 파일로 관리하고 있다.

 

간단한 내용이 아니니, 잘 정리하신 분들 글(joinic, ibm 글)을 봅자. 

 


글의 일부

기본적으로 proc 파일 시스템은 커널이 가지고 있는 여러가지 데이타 구조체를 시스템 사용자(프로그래머 혹은 시스템 관리자)에게 쉽게 전달하기 위해서 사용하는 목적으로 만들어져 있다. 이 /proc 파일시스템 을 이용하게 됨으로써 좀더 쉽게 각종 시스템 정보를 얻어올수 있으며, 여러가지 커널옵션을 특별한 프로그래밍 과정없이 단지 파일의 정보변경 만을 통해서 쉽게 변경할수 있도록 도와준다.

 

파일 내용
apm Advanced power management 정보
bus bus 관련정보
cmdline 커널 실행옵션
cpuinfo 사용cpu 정보
device 사용가능한 디바이스(블럭/문자 장치)
dma 사용하고 있는 DMS 채널
filesystems 지원되는 파일시스템
driver/rtc 드라이버 정보
execdomains execdomains, 보안과 관련
fb 프레임버퍼 디바이스
ide IDE 장치에 대한 정보 디렉토리
interrupts 인터럽트 사용율
iomem 메모리지도
ioports 사용중인 입출력포트
isapnp pnp 정보
kcore 커널 core 이미지
kmsg 커널메시지
ksyms 커널 심볼 테이블
loadavg 최근 1,5,15 분의 평균 load
locks kernel locks 정보
meminfo 메모리 정보
misc 기타등등
modules 실행중인(load) 모듈 목록, lsmod로 나오는 정보다
mounts 마운트된 파일시스템 정보
net 네트워킹 정보
partitions 파티션 정보
pci PCI 버스 정보
scsi SCSI 정보
slabinfo Slab pool 정보
swaps swap 파일시스템 사용정보
sysvipc SysVIPC 자원정보(메시지큐, 세마포어, 공유메모리등)
tty tty 드라이버 정보
uptime 시스템 가도시간
version 커널버젼

 

 

 

사이트

http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/proc/GetSMSInfo

http://www.ibm.com/developerworks/kr/library/l-proc.html#downloads

 

'학습자료 > 리눅스' 카테고리의 다른 글

extend a partition  (0) 2013.02.01
rpm 명령어  (0) 2013.02.01
[리눅스] 날짜 시간 변경, 동기화  (0) 2012.10.29
개발자 vim 기초 + tip + plugin(tag list, ctags, 자동완성 기능)  (0) 2012.10.19
[링크] systemctl  (0) 2012.09.21
posted by cozyboy
:
학습자료/tools 2012. 10. 31. 11:05

Function

create : 새로운 Round Robin Database(RRD)를 만든다

update : RRD에 새로운 값으로 갱신/저장한다.

graph : Rrd에 저장된 데이터를 이용하여 그래프를 생성한다. 이 데이터는 stdout으로 추출할 수 있다.

dump : rrd데이터를 다른 architecture의 컴퓨터에서도 사용 할 수 있도록 xml 포멧으로 변형하여 저장

restore : xml 포멧으로 저장된 RRD를 binary RRD로 재저장 한다.

fetch : rrd로부터 특정시간의 데이터를 얻을 수 있다. graph 기능이 rrd에서 데이터를 얻기 위해 fetch를 사용한다.

tune : rrd를 고친다.

last : RRD의 가장 마지막 update 시간을 찾는다.

info : rrd에 대한 정보를 얻는다

rrdresize : RRAs를 변경한다. 이것은 매우 위험하다

flushcached : memory로부터 특정 RRD를 위한 값을 flush 한다.

rrdcgi :

xport :

updatev :

 

 

RRD 데이터 확인(명령어+결과)

: rrdtool graph를 사용하지 않고 직접 그래프를 그려야 할때, 필요 하겠지

 

rrdtool fetch cluster.rrd AVERAGE -r 900 -s -1h

1351653000: 5.0396000000e+10 1.4584000000e+10 3.5812000000e+10 1.3936553333e+04 1.1113766667e+04 2.8227866667e+03 4.7611493333e+04 6.2746666667e+01 4.7548746667e+04
1351653300: 5.0396000000e+10 1.4584000000e+10 3.5812000000e+10 5.3596386667e+04 4.3166866667e+04 1.0429520000e+04 5.0934720000e+04 2.7266666667e+01 5.0907453333e+04
1351653600: 5.0396000000e+10 1.4584000000e+10 3.5812000000e+10 5.3679180000e+04 4.3181840000e+04 1.0497340000e+04 5.0096360000e+04 1.9086666667e+01 5.0077273333e+04

 

rrdtool dump cluster.rrd > cluster.xml 

<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE rrd SYSTEM "http://oss.oetiker.ch/rrdtool/rrdtool.dtd">
<!-- Round Robin Database Dump --><rrd> <version> 0003 </version>
        <step> 10 </step> <!-- Seconds -->
        <lastupdate> 1351656486 </lastupdate> <!-- 2012-10-31 13:08:06 KST -->

        <ds>
                <name> storage_total </name>
                <type> GAUGE </type>
                <minimal_heartbeat> 30 </minimal_heartbeat>
                <min> NaN </min>
                <max> NaN </max>

                <!-- PDP Status -->
                <last_ds> 50396000000 </last_ds>
                <value> 3.0237600000e+11 </value>
                <unknown_sec> 0 </unknown_sec>
        </ds>
                                        ...................

 

 

참고 사이트 :

http://oss.oetiker.ch/rrdtool/doc/rrdfetch.en.html

 

링크 :

전체적 정리 - http://blog.syszone.co.kr/590

rrd4j(rrd Java Library document) - http://rrd4j.googlecode.com/svn/trunk/javadoc/reference/org/rrd4j/core/package-summary.html

 

rrdturorial 번역? :

http://blog.naver.com/PostView.nhn?blogId=monovision&logNo=140054589924&parentCategoryNo=2&viewDate=&currentPage=1&listtype=0

posted by cozyboy
:
학습자료/리눅스 2012. 10. 29. 14:09

http://blog.naver.com/shw20319?Redirect=Log&logNo=20136369737

 

 

시간확인  :

 date

 

날짜/시간 변경 :
> date 122213002000
# 12월 22일 13시 00분 2000년


 

시간 동기화 :

rdate -s time.bora.net (시스템 시간 동기화) 

clock -w (CMOS 시간에 적용)

 

그냥 date, rdate, clock 명령어만 기억하고

--help 옵이나 man page 보자.

 

posted by cozyboy
:
학습자료/리눅스 2012. 10. 19. 13:38

▶ 기초

리눅스와 좀 더 친해지기....


리눅스는 직접 경험해 봐야 익숙해지고 알 수 있게 된다.

 


1. 여러 파일을 편집하는 방법

vi file1.c file2.c file3.c /*file1, file2, file3 열기*/


vi *.c *.h /*c파일과 헤더파일 열기*/

:ls 열린 파일 리스트 보기
:b[N] ex):b2 버퍼 2(file2.c)로 이동
:bw[N] N버퍼 삭제(N없으면 현재 버퍼)
:bp[N] 이전 버퍼 이동(N번)
:bn[n] 이후 버퍼 이동(N번)


tip>


코딩을 하는 사람이라면, 이 방법보다 플러그인을 활용한 Tlist를 사용할 수 있다.


여러 파일 편집과 아래의 키 매핑의 기능은 Tlist로 더욱 쉽게 사용 할 수 있다.

 



2. 키 매핑

map ,1 : b!1<CR> ~/.vimrc 파일 편집(추가)
map ,2 : b!2<CR>

  • map = 맵핑
  • ,1 : b!1 = ex모드(ESC 누른 상태)에서 ,1을 눌렀을 때 b!1<CR> 이 실행
  • b!1 = 파일을 수정중일때 경고 무시하고 강제로 창 전환
  • <CR>

주의> ",1" 누를 시 ','키 누르고 뗀 후 빨리 '1'키를 눌러야 인식

tip>
<F4>키로 Tlist를 실행 혹은 ,ma 키 입력으로 해당 줄의 함수의 man 페이지를 볼 수 있도록 할 수 있다.


3. 매크로 사용
: ex 모드에서 qb( q[네임레지스터명] ) 입력 시 하단에 '기록 중'글이 나온다. 이 후 누르는 키는 b 레지스터에 저장된다.

ex>^i//[space bar][ESC][ENTER]
^ : 행의 처음
i : 삽입
esc : ex모드
enter : 개행


@b 혹은 5@b 형태로 사용 가능 하며 자동으로 주석처리를 하게 된다.

4. 다중 창 사용
: 터미널을 분할하여 효율적으로 사용 한다.

[분할]

ctrl+w n (new)가로 분할
ctrl+w s (split)동일한 파일을 복사, 가로 분할
ctrl+w v (vertical)동일한 파일 복사, 세로 분할

분할된 창에서 파일 로드 ==> :e[파일명]

[창 이동]

ctrl+w w 창전환
ctrl+w h/j/k/l 왼쪽, 위, 아래, 오른쪽으로 이동
ctrl+w 화살표 위와 동일
ctrl+w t (top) 가장 위의 창으로
ctrl+w b (bottom) 가장 아래 창으로


[크기 변환]

ctrl+w _ 수평분할일때 현재 창 최대로
ctrl+w | 수직분할일때 현재 창 최대로
ctrl+w = 모든창을 동일한 크기로
ctrl+w [N]+ or [N]- 수평분할일때 해당 창 n씩 크기 변동
(n이 없을 시 1크기만큼 변동)
ctrl+w [N]> or [N]< 수직분할일때 해당 창 n씩 크기 변동


5. 마킹 이동
: 코딩을 하다가 기억해야 하는 위치가 있을 때 마킹을 사용하면 해당 위치로 복귀가 가능하다.

전역마킹(A - Z) : 서로 다른 파일간에서도 이동 가능
지역마킹(a - z) : 현재 파일 내에서만 이동 가능

마킹 ex모드, ma or mb
마킹된 행의 처음으로 이동 ex모드, :'a
마킹 테이블 보기 ex모드, :marks



6. 쉘명령어 사용
: 편집 중 쉘을 잠시 써야 하는 일이 발생할 때, 번거롭게 새 터미널을 켜거나 vim을 종료 하지 않고 이용 할 수 있다.

:!ls ls가 실행되고 다시 vim으로 복귀
:!bash, :sh, :shell 잠시 쉘로 이동, 쉘에서 exit로 vim 복귀

7. 문자 치환

:패턴s/기존문자열/바꿀문자열/옵션

:%s/기존/바꿀/g

예를들어 첫줄부터 끝줄까지의 index를 dex로 바꾸려면 다음과 같이 쓰면 된다.

:%s/index/dex/g

옵션 c : 바꿀때마다 묻기


8. 복사/붙이기/잘라내기/삭제

복사 - yy(현재 행 복사), 10yy 10개의 행 복사

붙이기 - p

잘라내기 - x

삭제 - dd(현재 행 삭제)

9. 되돌리기/되살리기

되돌리기 - u

되살리기 - ctrl+r


10. 주석 

// 블록만큼 주석 하기
1. Ctrl + v 로 원하는 만큼 블록지정
2. Shift + i 
3. // 입력
4. ESC 2번 누름

// 블록만큼 주석 지우기
1. Ctrl + v 로 원하는 만큼 블록지정
2. x

 

11. 탭 끼워넣기/제거

v 키로 블럭을 잡고 '>' 또는 '<' 키로 탭을 넣기/제거 할 수 있다


-sw(shift width) : < 또는 >로 탭 사이즈를 조절할때 표시 크기. 

:set sw=4  #vim설정


▶ tip + plugin


1. 파일 탐색 기능 - 디렉토리 브라우징과 선택열기가 가능하다.

:20vs ./

 

2. 빠른 괄호 이동 - if, while 문의 범위가 어디까지인지 한번에 확인 할 수 있다.

'{' 기호에서 %를 누르면 쌍을 이루는 괄호로 이동.

 

3. 폴딩기능

함수 시작부위 '{' 위에 커서를 두고 명령모드에서 v]}zf

혹은 ./vimrc 에 매핑시켜 사용가능 하다.

map <F1> v]}zf

 

4. 함수의 원형보기, 지역변수 선언 부분 바로 이동

함수 원형 보기 -[i

선언부분 바로 이동 -gd

 

5. 흐트러진 소스 정렬

v로 블록 지정후, '=' 키

 

6.파일에서 다른 부분 비교하기 - 다른 부분의 라인이 색깔표기되어 알기쉽다

vimdiff a.txt b.txt

 

7. header 파일 바로 읽기 - ~/.vimrc에서 지정되있는 path에서 파일을 찾기때문에, 만약 열리지 않는 헤더파일이 있다면, 그 곳의 path를 지정해주어야 한다.

일고자 하는 헤더에 커서 위치 -> ctrl+wf (창이 수평분할 되며 헤더파일이 열린다)

path 지정 - set path=/usr/include (.vimrc에)

 

8. plug in 사용(tag list, ctags, 자동완성, help page 세팅)

8.1. TagList

왼편에 추가된 것이 taglist이다.

구조체, 변수, 함수 등이 정리되어서 나오며 해당 위치로 바로 이동 가능하다.

창전환 : crtl +ww

창전환으로 tag쪽에 커서가 이동하면, 이동 하고픈 곳에서 엔터키를 눌러서 해당 라인으로 이동하게 된다.

설치법.

1. 우선 apt-get install ctags로 ctags를 설치 한다.

2. taglist 최신버전을 다운 받는다.

http://vim.sourceforge.net/scripts/script.php?script_id=273

3. 받은 파일의 압축을 풀면 doc/, plugin/ 폴더 두개가 있고 각각 폴더에 doc/taglist.txt, plugin/taglist.vim 파일이 존재한다.

그 파일들을 각각 아래 위치로 이동

/usr/share/vim/vim72/doc/

/usr/share/vim/vim72/plugin/

실행법.

1. 커맨드모드에서 :Tlist 입력

2. vimrc파일을 열어 단축키를 지정

map <F4> :Tlist<cr> //커맨드 모드에서 :Tlist 입력 과 같다.

 

8.2 ctags

소스원문에서 해당 함수로 이동할 수 있다.

 - 함수 들어가기 : ctrl+]

 - 이전 위치로 돌아오기 : ctrl + t

 

8.3. 자동완성기능


filetype plugin on

vim 7.? 버전 이상에선 위와 같이 적어주면 된다. tab ctrl+p로 자동완성이 가능하다.


set complets : 이것이 자동완성 기능이다.

c 소스를 vi로 연 후 (ctrl+p?) ctrl+space 를 눌러보자

 

 

이제 vim으로도 멋지게 코딩합시다.


8.4 plugin help page 세팅

doc 페이지 세팅

:helptags /usr/share/vim/vim73/doc/

다만 위의 폴더에 플러그인의 doc 문서가 존재해야 한다.


doc 페이지 보기

:help taglist (혹은 help tagli 까지만 해도 비슷한 류가 있다면 해당 doc 문서가 열린다)




------------------------

ctags 더 자세한 내용 :

http://www.viper.pe.kr/cgi-bin/moin.cgi/ctags_%EC%99%80_vi_%EC%82%AC%EC%9A%A9%ED%95%98%EA%B8%B0 


posted by cozyboy
:
학습자료/tools 2012. 10. 17. 11:03

[첨부파일] : Naios_basic.pdf

목차는 다음과 같다. nagios site에 제공되는 문서를 기반으로 정리, 설치, 운용 해보았다. 한마디로 nagios 문서를 번역, 요약 하며 실습 해보았다.

모니터링 툴에 필요한 기본적인 운용이 가능하다. 로컬과 리모트 서버의 모니터링이 가능하며, 알림기능이 가능하다.

리눅스/윈도우 모두 가능하며 가장 중요한 점은 open sorce project이다.

selinux, 방화벽 모두 off 한후 테스트 하였다. 그것에 대한 내용은 이문서에 없음. nagios site 참고(잘 설명해줌)


실습 : 64bit fedora 16(virture box 사용함) 

1 개요
2 정리 개요 및 순서
3 nagios 설치
4 nrpe 설치
5 nrpe Customizing Configuraton
6 nsca 설치
7 NSCA Sample script(passive_check)
 
8 Nagios api 조사
9 nagios rest api
....... 
12 관련 페이지
13 HA 관련 페이지
 

목차 8,9는 굳이 하지 않아도 된다. 조사 페이지이며 필요하다면 관련 자료가 있다는 정도 일뿐.

하지만 목차 13 HA는 그닥 도움이 되지 않을 것 이다. nagios에서 추후 ha관련 모듈을 만든다는 내용, 혹은 ha스럽게 운용할 수 있는 구조, 리눅스 ha를 사용하는 법 정도가 링크되어 있다.

 

 

nagios site에 보면 nigios 설치, core 구조, 운용법, 세팅법 모든 것들이 잘 적혀 있다. 하지만!! 영어.. 그것들은 전부 보며 해석 비스므리하게 해둔 문서가 있지만.. 전부 다 하기엔 너무 많다. 오 육백 페이지가 넘는.. 그래서 필요 한 부분만 정리했음.

추 후 update.

 

posted by cozyboy
:
학습자료/리눅스 2012. 9. 21. 14:58
posted by cozyboy
:
학습자료/리눅스 2012. 9. 20. 12:39

Identifying shared memory segment users using lsof

Lsof (list open files) is a really useful tool for troubleshooting open file decriptors which prevent a deleted file from being released or a shared memory segment from being removed.

Here’s a little situation on Linux where an Oracle shared memory segment was not released as someone was still using it.

$ ipcs -ma

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0x00000000 393216     oracle    640        289406976  1          dest
0xbfb94e30 425985     oracle    640        289406976  18
0x3cf13430 557058     oracle    660        423624704  22

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0xe2260ff0 1409024    oracle    640        154
0x9df96b74 1671169    oracle    660        154

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages

The bold line should have disappeared after instance shutdown, but it didn’t. From “natcch” (number of attached processes) column I see there is still some process using the shared memory segment. Thus the segment was not released and even ipcrm command did not remove it (just like with normal files if someone has them open).

So, I needed to identify which process was still using the memory segment. If that had been a normal existing file, I’d could have used /sbin/fuser command to see which process still holds it open, but this only works for existing files with existing directory entries.

However for deleted files, sockets and shared memory segments, you can use lsof command (it’s normally installed by default on Linux, but for Unixes you need to separately download and install).

The SHM ID of that segment was 393216 as ipcs -ma showed, so I simply run lsof to show all open file descriptors and grep for that SHM ID:

$ lsof | egrep "393216|COMMAND"
COMMAND     PID      USER   FD      TYPE     DEVICE       SIZE       NODE NAME
python    18811    oracle  DEL       REG        0,8                393216 /SYSVbfb94e30

See how the NODE column corresponds to SHM ID in ipcs output.

So I kill the PID 18811 which is still attached to the SHM segment:

$ kill 18811

$ ipcs -ma

------ Shared Memory Segments --------
key        shmid      owner      perms      bytes      nattch     status
0xbfb94e30 425985     oracle    640        289406976  18
0x3cf13430 557058     oracle    660        423624704  25

------ Semaphore Arrays --------
key        semid      owner      perms      nsems
0xe2260ff0 1409024    oracle    640        154
0x9df96b74 1671169    oracle    660        154

------ Message Queues --------
key        msqid      owner      perms      used-bytes   messages


Now the shared memory segment is gone and its memory released.

Note that the lsof command is very useful for many other tasks as well. For example it allows you to list open sockets by network protocol, IP, port etc. For example you can determine to which client some server process is talking to, from OS level:

$ lsof -i:1521
COMMAND   PID   USER   FD   TYPE DEVICE SIZE NODE NAME
tnslsnr  6212 oracle   11u  IPv4  49486       TCP *:1521 (LISTEN)
tnslsnr  6212 oracle   13u  IPv4 276708       TCP linux03:1521->linux03:37277 (ESTABLISHED)
tnslsnr  6212 oracle   14u  IPv4 264894       TCP linux03:1521->linux03:41122 (ESTABLISHED)
oracle  22687 oracle   20u  IPv4 264893       TCP linux03:41122->linux03:1521 (ESTABLISHED)
oracle  25250 oracle   15u  IPv4 276707       TCP linux03:37277->linux03:1521 (ESTABLISHED)
oracle  25530 oracle   15u  IPv4 279910       TCP linux03:1521->192.168.247.1:nimsh (ESTABLISHED)

Unfortunately lsof is not installed by default in classic Unixes, but in some shops the sysadmins have chosen to install it. But even then, it may not work for regular users as lsof requires access to kernel memory structures through /dev/kmem or similar. If you can’t get access to lsof then there may be other tools available which can do some tricks lsof can do. For example on Solaris, there’s an useful command pfiles which can show open files of a process and since Solaris 9 ( I think ) it can also report the TCP connection endpoints of network sockets…

 

 

 

펌:http://blog.tanelpoder.com/2009/01/22/identifying-shared-memory-segment-users-using-lsof/

'학습자료 > 리눅스' 카테고리의 다른 글

개발자 vim 기초 + tip + plugin(tag list, ctags, 자동완성 기능)  (0) 2012.10.19
[링크] systemctl  (0) 2012.09.21
fstab[펌]  (0) 2012.06.15
리눅스 LVM[펌]  (0) 2012.06.15
[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
posted by cozyboy
:
학습자료/Java 2012. 8. 14. 15:01

+ split 정규식 & regualar Expressions

- http://www.tobearchitect.com/entry/Java-String의-split-함수의-재발견
- http://www.vogella.com/articles/JavaRegularExpressions/article.html


정규표현식 문법

^ : 문자열의 시작을 나타냄. 

$ : 문자열의 종료를 나타냄.

. : 임의의 한 문자를 나타냄. (문자의 종류는 가리지 않는다)

| : or를 나타냄. 

? : 앞 문자가 없거나 하나있음을 나타냄. 

+ : 앞 문자가 하나 이상임을 나타냄. 

* : 앞 문자가 없을 수도 무한정 많을 수도 있음을 나타냄. 

[] : 문자 클래스를 지정할 때 사용한다. 문자의 집합이나 범위를 나타내며 두 문자 사이는 '-' 기호로 범위를 나타낸다. 

      []내에서 ^ 가 선행하여 나타나면 not 를 나타낸다. 

{} : 선행문자가 나타나는 횟수 또는 범위를 나타낸다. 

a{3} 인 경우 a가 3번 반복된 경우를 말하며, a{3,}이면 a가 3번 이상 반복인 경우를 말한다. 또한 a{3,5}인 경우 

a가 3번 이상 5번 이하 반복된 경우를 나타낸다. 

( ): 소괄호 ‘( )’ 특수문자는 ‘( )’ 특수문자 안의 글자들을 하나의 문자로 봅니다. 예를 들어 ‘gu(gg){2}le’ 와 같은 패턴을 작성하게 되면    

     ‘guggggle' 문자열이 문자열에 포함되어 있어야 됩니다.

|: 패턴 안에서 OR연산을 사용할 때 사용합니다. 예를 들어 'hi|hello' 는 hi 나 hello 가 포 함되어있는 문자열을 의미합니다.

\w : 알파벳이나 숫자

\W : 알파벳이나 숫자를 제외한 문자

\d : 숫자 [0-9]와 동일

\D : 숫자를 제외한 모든 문자

\: 위의 각 기능에서 벗어납니다(escape).

(?i): 앞 부분에 (?i) 라는 옵션을 넣어주면 대소문자를 구분하지 않는다 (물음표+소문자i(아이))

 

기본적인 문자열 검증 정규식

 

^[0-9]*$  :  숫자만

^[a-zA-Z]*$  :  영문자만

^[가-힣]*$  :  한글만

^[a-zA-Z0-9]*$  :  영어/숫자만

.+ : 한문자 이상의 전체문자를 표시한다.

 

정규식 표현 예제

이메일 : ^[a-zA-Z0-9]+@[a-zA-Z0-9]+$  or  ^[_0-9a-zA-Z-]+@[0-9a-zA-Z-]+(.[_0-9a-zA-Z-]+)*$ 

휴대폰 :  ^01(?:01[6-9]) - (?:\d{3}\d{4}) - \d{4}$ 

일반전화 : ^\d{2,3} - \d{3,4} - \d{4}$

주민등록번호 : \d{6} \- [1-4]\d{6}

IP 주소 : ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3}) \. ([0-9]{1,3})

파일확장자: ([^\s]+(\.(?i)(jpg|png|gif|bmp))$)

 

 

클래스 사용 예.

A typical invocation sequence is thus  

Pattern p = Pattern.compile("a*b"); 

Matcher m = p.matcher("aaaaab"); 

boolean b = m.matches();

 

A matches method is defined by this class as a convenience for when a regular expression is used just once. 

This method compiles an expression and matches an input sequence against it in a single invocation. The statement  

 

boolean b = Pattern.matches("a*b", "aaaaab");

 

 

참고 사이트

자바, javascript, oracle 정규식: http://litlhope.springnote.com/pages/1786498

자바 정규식 간단 설명: http://twinstarbox.tistory.com/entry/Java-%EC%A0%95%EA%B7%9C%EC%8B%9D%EC%9D%B4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80

URL 정규식으로 분리하기: http://goodidea.tistory.com/86


출처 - http://blog.naver.com/beabeak?Redirect=Log&logNo=50126941465


posted by cozyboy
:
학습자료/Java 2012. 8. 14. 14:43

Jdk 5.0 에서 새로 선보인 (Annotation) 어노테이션 이라는 겁니다.

 

자바 언어로 표현할수 없지만 프로그램 전체적으로 표현해야할 테이터를 기술하는 방법을 제공하죠.

다시말하면, 어노테이션을 사용하면 프로그램에서 컴파일러가 테스트하고 검증해야하는 부가 정보를 정해진

형식으로 설명하는 것이 가능하게 됩니다. 또한 설명 파일이나 새로운 클래스 정의를 생성하여 공통코드를

작성하는 부담을 줄이는 용도로도 활용할 수 있죠.

 

가장 자주 쓰이는 어노테이션은

 

@Override

 : 기반 클래스의 메소드를 오버라이드한 것을 표시한다. 메소드 이름을 잘못 표기하거나 시그니처를 잘못 지정할

경우 컴파일 에러 발생

 

@Deprecated

 : 해당 요소가 사용될 경우 컴파일러가 경고를 발생 시킨다.

 

@SuppressWarning

 : 부적절한 컴파일러의 경고를 제거하기 위해 사용된다.

 

음..어노테이션은 자바 고급기술에 속하는 편이어서 그냥 이런게 있구나 하고 넘어가셔도 무방합니다만

좀더 자세히 알고 싶으시면 관련서적을 보시거나 검색해보시는 편이 나으실 겁니다^^

그밖에  

-----------------------------------------------------------------------------------------

[펌]내사랑꿀떡 


java 1.5 이후에 generic type 에서 unchecked 라고 경고하는경우에.(이클립스 같은 ide에서) 또는 콘솔에서도 컴파일 할때 하는듯 하다.


@SuppressWarnings("unchecked")

이 annotation을 해당 메서드 앞에 또는 해당 멤버 변수에 얹어준다.


class Test(){

......


@SuppressWarnings("unchecked")

private List list;

....


@SuppressWarnings("unchecked")

public void setList(List list){

this.list = list;

}


}


또 지역변수에서 사용하는 경우가 있는데... 변수에 바로 할당하는 경우는 그위에 얹어도 되지만

변수를 할당하고 중간에 사용하면 안된다..  그러니까


public void method(){

....

@SuppressWarnings("unchecked")

List list = xxx.getList();

//이거는 되지만

}


public void method(){

....

List list = null;

....


@SuppressWarnings("unchecked")

list = xxx.getList();

//이거는 싫다고 한다. 

....

}


이클립스 노란느낌표 뵈기 싫어서.. ^^;;

---------------------------------------------------------------------------------------------------
@SuppressWarnings 어노테이션은 네이밍처럼 compile시 warnning을 체크하지 않기위한
용도로  사용됩니다.

argument의 "serial"은
java.io.Serializeable 인터페이스를 구현하는데 serialVersionUID 를 정의해 주지 않은 경우
나타나는 warnning을 체크하지 않겠다는 의미 입니다.

출처 : http://mykjy.tistory.com/7


posted by cozyboy
:
학습자료/리눅스 2012. 6. 15. 10:22

ㅁ /etc/fstab

ㅇ 리눅스 파일시스템의 마운트 설정정보 파일

[파일시스템장치] [마운트포인트] [파일시스템종류] [옵션] [덤프] [파일점검옵션]

1. 파일시스템 장치 / 레이블명

2. 마운트 포인트 / 디렉토리명

3. 파일시스템 형식 (ext2, ext3, iso9660, swap ...)

4. 옵션 ([Read Only] or [Read Write])

5. dump => fsck (Y/N)

6. 파일점검옵션 -> 0, 1, 2

ex> /dev/sys /sys sysfs defaults 0 0

/dev/hda3 /users ext3 defaults,usrquota 1 1

#cat /etc/fstab

/파일시스템 /마운트포인트 /파일시스템 /옵션 /dump /파일점검옵션

[file system device name]

/etc/fstab 의 첫 번째로 설정되는 항목으로 파일시스템의 장치명을 설정한다.

즉, /dev/sda1, /dev/sda2 등과 같은 파일 시스템 장치명의 위치이다. 첫 번째 항목에는

" 파일시스템장치명" 으로 표시할 수도 있고, "레이블(Lable)"으로 표시할 수 도 있다.

[mount point]

파일시스템이 마운트 될 위치.

마운트 포인트로서 /etc/fstab 의 두번째 항목이다.

"특정 파일시스템 장치를 어디에 마운트 시킨다." 라고 할 때에 " 어디 " 라는 부분에 해당되는 것이 " 마운트 포인트 " 이다. 디렉토리명이라고 할 수 있다.

[file system type]

파일시스템의 종류를 설정하는 항목으로 /etc/fstab 의 세 번째 항목이다.

파일시스템의 종류는 다음과 같다.

1. ext

초기리눅스에서 사용되었던 파일시스템 타입으로서 현재는 사용하지 않음.

2. ext2

현재도 사용되고 있으며 긴 파일명을 지원하는 것이 특징이다.

3. ext3

저널링파일시스템으로서 ext2에 비해 파일시스템 복구기능과 보안부분을

크게 향상시킨 것으로 기본 파일시스템 타입으로 사용되고 있다.

4. ext4

ext3 다음버전의 리눅스 표준 파일시스템으로서 16TB까지만 지원하던 ext3 타입보다 훨 씬 더 큰 용량까지 지원하며, 삭제파일복구 기능 및 파일 시스템 점검 속도가 크게 빨라진 파일 시스템이다.

5. iso9660

DVD 또는 CD-ROM 의 데이터를 읽고자 할 때에 마운트시에 사용하는 파일

시스템으로서 DVD와 CD-ROM 의 표준 파일시스템으로서 Read Only 로 사용.

6. nfs

Network File System 으로서 원격서버를 마운트 할 때 사용함.

7. swap

스왑파일시스템으로서 스왑공간으로 사용되는 파일시스템에 사용됨.

8. ufs

UNIX File System 으로서 UNIX System 5 계열에서는 표준 파일시스템이다.

9. vfat

Windows 95 / 98 에서 사용, 또는 NTFS 를 지원하기 위한 파일시스템

10. msdos

MS-DOS 파티션을 사용하기 위한 파일시스템

11. hpfs

HPFS 에 대한 파일시스템

12. ntfs

Windows NT / 2000 의 NTFS 파일 시스템을 사용하기 위한 파일시스템

13. sysv

UNIX System V 를 지원하기 위한 파일시스템

14. hfs

Mac 컴퓨터의 hfs 파일시스템을 지원하기 위한 파일시스템

15. ramdisk

RAM 디스크를 지원하는 파일시스템

16. 그외

adfs, autofs, coda, coherent, cramfs, devpts, dfs, jfs, minix, ncpfs, proc, qnx4, reiserfs, romfs, smbfs, tmfs, udf, ufs, umsdos, xenix, xfs 등이 있다.

※ 리눅스 시스템에서 지원 가능한 파일 시스템을 확인하려면 /proc/filesystems 를 보면된다.

[options]

파일시스템을 용도에 맞게 사용하기 위한 파일시스템 속성을 설정하는 옵션으로 네번째 항목

1. default

rw, nouser, auto, exec,suid 속성을 모두 가지는 속성으로,

가장 일반적인 시스템에서 사용되는 속성이다.

2. auto

부팅시 자동으로 마운트 된다.

3. exec

실행파일이 실행되는 것을 허용하는 파일 시스템이다.

4. suid

SetUID 와 SetGID 의 사용을 허용하는 파일 시스템이다.

5. ro

읽기 전용(Read Only)으로 파일시스템으로만 사용된다.

6. rw

읽고 쓰기(Read Write) 파일시스템으로 사용된다.

7. user

일반 계정사용자들도 마운트를 할 수 있는 파일시스템이다.

8. nouser

일반 계정 사용자들은 마운트 할 수 없는 파일시스템으로

오직 root 만이 mount 할 수 있다.

9. noauto

부팅시 자동마운트 되지 않게 한다.

10. noexec

실행파일을 실행되지 못하게 하는 파일시스템

11. nosuid

SetUID 와 SetGID 의 사용을 허용하지 않는 파일시스템

12. usrquota

개별 계정사용자의 Quota 설정이 가능한 파일시스템

13. grpquota

그룹별 Qouta 설정이 가능한 파일 시스템

[dump]

/etc/fstab 파일의 다섯번째 항목으로 0 또는 1 값만 가질 수 있다.

1은 데이터 백업등을 위해 dump 가 가능한 파일시스템이다.

0은 dump 명령으로 덤프되지 않는 파일시스템이다.

[file check options]

/etc/fstab 의 여섯번째 항목으로 0 또는 1 그리고 2 값만 사용할 수 있다.

0 은 부팅시 실행되는 fsck 실행되지 않는 설정이다.

1 은 루트파일시스템을 의미한다.

2 는 루트파일 시스템을 제외한 나머지 파일시스템을 의미한다.

여기서 설정된 파일시스템의 순서를 기준으로 부팅 시 선행되는 fsck의 순서가 결정된다.

ㅁ Exercise

ㅇ /dev/hda1 /root/33 exe3 defaults 1 2

Q> fstab 에서 일어날 수 있는 에러상황

상황 1. fstab 파일에 수정오류 발생 된 경우.

A> 보통은 Login Prompt(Console Windows) 까지 가기 때문에 거기에서 복구할 수 있다.

(Repair filesystem) # mount -o remount rw /

(Repair filesystem) # mount -o remount,rw /
# vi /etc/fstab

상황 2. fstab 파일이 삭제되어 boot 가 안되는 경우.

A> 보통은 위의 화면처럼 boot system mount 중에 멈춘다.

하지만 이것은 grup 이 망가진 것은 아니므로 /etc/fstab 만 새로 생성해주면 된다.

=> single mode 로 진입한다.

single mode 진입하는 방법은 아래를 참조한다.

http://blog.naver.com/goisimasyou/30069542377

=> 이 때, 기다리면 single consloe window 가 나오는데 다음을 따라한다.

sh-3.2#fdisk -l [장치(device)명 확인 할 것]

sh-3.2#mount -o remount rw /

sh-3.2#touch /etc/fstab

sh-3.2#vi /etc/fstab

sh-3.2#exit

#mknod /dev/sda2

#chroot/mnt/sysimage /etc/fstab

이것은 임시 방편이므로, 일부 시스템은 비정상적인 운용 환경을 가질 수 밖에 없다.

따라서, 정상적인 시스템을 운용하고 싶다면, 다시 부팅 되어 시스템에 접근이 가능하므로

/etc/fstab 의 모든 mount 내용을 전부 재기입 하여 주는 것이 좋다.

시스템 관리자라면,

안정적인 서버 운용을 위해 백업 데이터로 /etc/fstab 덮어 쓰는 것이 현명하다.

상황 3. HDD 추가

[파티션(parted), 포멧, 마운트]

마운트포인트 : /mnt/net5

fstab 에 자동마운트 설정

Q> 재부팅후 자동마운트 되는 상황체크후 추가된 하드디스크 제거

Give root password for maintenance (or type Control - D to continue) :

유지 보수를 하려면 root password 를 입력(Read Only mode)하고,

<CTRL>+<D> 하면 reboot 된다.

현재 상황을 복구 하려면, /dev/hdd1 을 재장착 하거나,

/etc/fstab 의 해당장치의 명령줄을 삭제하면 된다.

Read Only Mode 일때는

(Repair filesystem) 1 #mount -o remount rw /

명령을 사용하여 (Read-Write mode) 로 변환후 작업을 진행하면 된다

 

 

[펌] http://blog.naver.com/goisimasyou/30069898523

'학습자료 > 리눅스' 카테고리의 다른 글

[링크] systemctl  (0) 2012.09.21
lsof를 이용하여 공유메모리 를 확인하는 방법[펌]  (0) 2012.09.20
리눅스 LVM[펌]  (0) 2012.06.15
[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
[링크]Semaphore  (0) 2012.03.13
posted by cozyboy
:
학습자료/리눅스 2012. 6. 15. 09:47

  • 용량이 다른 여러개의 하디드디스크(달라도 된다는 말)를 하나의 하드디스크처럼 사용한다는 개념
  • 이렇게 하나로 묶인 하드디스크는 자동적으로 앞쪽부터 데이터가 채워지게 되므로 각각 연결하여 사용하는 것보다는 훨 편할 것 같다는...

설정방법 및 순서
  • 먼저 필요한 용어들의 개념
    • Physical Volume(PV:물리 볼륨) : /dev/sda1, /dev/sdb1, /dev/sdc1
    • Volume Group(VG:볼륨 그룹) : Physical Volume을 합쳐서 1개의 물리적 그룹으로 만드는 것
    • Logical Volume(LV:논리 볼륨) : Volume Group을 나눠서 논리적 그룹으로 나눔(1개 이상)

  • 전체 구성도

  • vmware에 하드디스크를 여러개 연결한다 ( 테스트를 위해 3개정도)
  • fdisk -l을 사용하여 하드디스크가 연결되었는지 확인한 후
  • fdisk /dev/sd?(해당 하드디스크 장치명)을 사용하여 fdisk 진입
  • 파티션을 생성한 후 중요한 작업 ->>>>>>> t 명령으로 파일시스템 유형을 변경
    • Hex Code : 8e ----->> Linux LVM
    • Hex Code : L ------>> 선택 가능한 파일시스템 정보가 출력됨
  • 위와 같이 연결된 하드디스크를 LVM 타입으로 파티션을 생성한다


제 LVM으로 연결하는 순서만 남았음


  • 여러개의 하드디스크 하나하나를 각각 물리볼륨으로 생성한다
  • pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 ...
    • pvdisplay , pvscan으로 확인
  • 생성된 물리볼륨들을 하나로 묶어서 하나의 볼륨 그룹으로 생성한다
    • vgcreate <생성될 볼륨그룹명> <생선된 물리볼륨> <생선된 물리볼륨> ....
  • vgcreate myVG /dev/sdb1 /dev/sdc1 /dev/sdd1
    • vgdisplay, vgscan으로 확인
  • 생성된 볼륨그룹은 이제 하나의 하드디스크로 볼 수 있으며, fdisk를 사용하여 파티션을 생성한 것처럼 lvcreate를 사용하여 필요한 만큼 나눈다
    • lvcreate -L <용량:MB,GB> -n <생성될 볼륨그룹의 파티션 이름> <볼륨그룹 이름>
      • lvcreate -L 500MB -n myLG1 myVG
  • 이렇게 생성된 볼륨그룹의 파티션은 mkfs 를 사용하여 포맷해 준다
    • mkfs -t ext3 /dev/myVG/myLG1
  • 위의 과정을 진행하여 여러개의 하드디스크가 하나로 묶여서 필요한 각가의 파티션이 생성되었다. 이제 필요한 디텍터리에 마운트 작업을 한 후 사용하면 끝
    • mount /dev/myVG/myLG1 /data1
    • 확인 : df -h or mount
  • mount 명령을 사용하면 재부팅 후 자동적으로 마운트 되지 않기 때문에 /etc/fstab에 마운트 내용을 적어주면 재부팅 후에도 자동적으로 마운트되어 사용할 수 있다.
설정된 lvm을 해제하는 작업
  • 위에서 설정한 반대 순서로 진행하게 된다
  • lvremove <생성된 볼륨그룹 파티션>
  • vgremove <생성된 볼륨그룹 이름>
  • pvremove <생성된 물리볼륨 경로> [생성된 물리볼륨 경로] ..
위와같이 하면 lvm 설정 및 해제 끝

 

'학습자료 > 리눅스' 카테고리의 다른 글

lsof를 이용하여 공유메모리 를 확인하는 방법[펌]  (0) 2012.09.20
fstab[펌]  (0) 2012.06.15
[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
[링크]Semaphore  (0) 2012.03.13
[링크]Pthread API Reference  (0) 2012.03.12
posted by cozyboy
:
학습자료/리눅스 2012. 3. 13. 09:54

리눅스에서 Semaphore 사용시 주의점

최근 시스템에 문제가 있어서 디버깅을 하다가 디버거를 붙였다 나오면, 세마포어가 비정상 release 되는것처럼 보이는 희한한 버그를 발견했다.

조사해 보니 세마포어가 release되는게 아니라 sem_wait() 에서 EINTR을 받고 sem_wait() 가 -1을 리턴하는 문제였다.

일부 시그널 핸들러에 의해 이렇게 되는 경우가 있다고 하는데, 따라서 세마포어를 쓸때는 그냥 쓰지 말고 다음과 같이 wrapper 함수를 하나 만들어서 쓰는게 좋을것 같다.

void sema_wait_nointr(sem_t *sem)
{
int sema_result;

sema_result = sem_wait(sem);
while ((sema_result == -1) && (errno == EINTR))
{
sema_result = sem_wait(sem);
}
}


위 문제는 다음의 코드로 확인해 볼수 있다.

<sema_test.c>

#include <stdio.h>
#include <semaphore.h>

sem_t sema_block;

int main()
{
sem_init(&sema_block, 0, 0);

while (1)
{
int sem_result;
sem_result = sem_wait(&sema_block);
printf("Semaphore is released! : %d\n", sem_result);
perror("Semaphore error! ");
}
}

위 파일을 컴파일한후 실행 시켜보자.

$ gcc sema_test.c -l pthread
$ ./a.out &
[1] 15965
$ pstack 15965
#0 0x00b44402 in __kernel_vsyscall ()
#1 0x006f314e in sem_wait@GLIBC_2.0 () from /lib/libpthread.so.0
#2 0x0804847d in main ()
Semaphore is released! : -1
Semaphore error!: Interrupted system call


pstack 명령으로 허무하게 세마포어가 그냥 뚤려버리는것을 볼수가 있다.

혹시나 싶어 mutex 를 가지고 테스트 해보니 mutex 에서는 이런 문제가 발생하지 않는다.

* 3월 31일 추가
- 다른 child process 나 thread 에서 system() 과 같은 함수를 수행해도 (아마도 수행완료후 SIGCHLD 발행시?)
똑같은 증상이 나타나는것을 확인했다.

[출처]http://cityelf.egloos.com/9370134

'학습자료 > 리눅스' 카테고리의 다른 글

fstab[펌]  (0) 2012.06.15
리눅스 LVM[펌]  (0) 2012.06.15
[링크]Semaphore  (0) 2012.03.13
[링크]Pthread API Reference  (0) 2012.03.12
pthread 기본  (0) 2012.03.12
posted by cozyboy
:
학습자료/리눅스 2012. 3. 13. 09:54
[한빛] 리눅스에서의 세마포어1
http://www.hanb.co.kr/network/view.html?bi_id=1398

[한빛] 리눅스에서의 세마포어2
http://www.hanb.co.kr/network/view.html?bi_id=1399

[joinic] POSIX Semahpore & System V Semaphore
http://www.joinc.co.kr/modules/moniwiki/wiki.php/Site/system_programing/IPC/semaphores


 


 

'학습자료 > 리눅스' 카테고리의 다른 글

리눅스 LVM[펌]  (0) 2012.06.15
[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
[링크]Pthread API Reference  (0) 2012.03.12
pthread 기본  (0) 2012.03.12
리눅스 기본  (0) 2012.01.17
posted by cozyboy
:
학습자료/리눅스 2012. 3. 12. 10:50

'학습자료 > 리눅스' 카테고리의 다른 글

[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
[링크]Semaphore  (0) 2012.03.13
pthread 기본  (0) 2012.03.12
리눅스 기본  (0) 2012.01.17
shell 프로그래밍 기초  (0) 2012.01.13
posted by cozyboy
:
학습자료/리눅스 2012. 3. 12. 10:22

기본 쓰레드 함수


2.1. pthread_create / 2.2. pthread_join


thread 를 처음 배우면서 시작하는 것이 pthread_create / pthread_join 이겠지요?

Main 함수 하나에서 2개의 thread 를 pthread_create 함수로 생성합니다.

각각의 thread 함수는 t_function 을 인자로 받으며 함수를 실행합니다.

t_function 은 while(1) 로 무한 loop 를 돌고 있내요.

그리고 pthread_join( 0, 1) 로 인해 Main 함수에서 2개의 thread 가 종료될 때까지 wait 하게 되내요.

결국 1개의 기다리는 Main 함수와 2개의 무한 Loop 를 도는 thread 가 실행 됩니다... 강제 종료 될 때까지 .. ^^

main 에서 join 을 하지 않는 경우, main 함수가 그냥 끝나기 때문에 thread 가 계속 동작하는것을 보기 위해 join을 합니다.

아니면 .. getchar() 정도로 사용자 입력을 기다리다가 끝내버려도 되겠죠?

사실 join 함수가 하는 일은 쓰레드자원을 해제 시켜주는 거라고 하내요. 해제 시켜주기 위해 ..

일이 끝날때 까지 계속 기다리는거다 .. 라고 생각하려 합니다.


위 예제에서는 thread 가 무한 loop 를 돌고 있지만 , thread 가 항상 loop 를 돌지는 않겠죠.

문제는 thread 가 종료하는 경우에도 메모리는 반환되지 않는다고 합니다.

이럴 경우에는 pthread_detach() 함수를 사용하면 된다고 하내요.


2.4. pthread_exit


pthread_create 로 만들어진 thread 함수가 3초간 loop 를 돌다가 pthread_ext() 함수를 호출합니다.
thread 를 빠져나온다는 말 이겠죠? 3초 후 join 으로 기다리던 main 함수도 종료가 되면서 프로그램이 정상 종료됨을 알 수 있습니다.

뭔가 thread 를 완전히 close 시킬 때 사용하면 되겠내요.

pthread_exit 는 현재 호출되어서 실행중인 쓰레드를 종료시킬때 사용한다. 기본적으로 POSIX 에서는 다른쓰레드가 강제로 다른 쓰레드를 종료 시킬수 없으며, 쓰레드가 스스로 pthread_exit 를 호출하여 종료하는수밖에 없다.

쓰레드가 이 시스템콜을 호출하면 커널은 쓰레드를 없애게된다. pthread_exit 의 결과는 pthread_join() 을 통하여 최종적으로 없어지게 된다.

[joinic 함수 형태 참고]
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/pthread_exit?cx=002661009167463862046%3A8oq6cxlfibu&cof=FORID%3A9&q=pthread_exit&sa=Search&ie=EUC-KR#1257

2.5. pthread_cleanup_push


2.4. 예제와 거의 동일 한 예제내요. 다만 pthread_cleanup_push 라는 함수를 호출해 주고 있는대 ..

pthread_cleanup_push 함수로 특정 함수를 인스톨 하면

pthread_exit() 를 호출 할 때 알아서 인스톨 된 함수를 한번 호출해 주면서 thread 를 종료한다고 합니다.

음 .. 객체의 소멸자 같은 기능이내요.

thread 에서 동기화를 위해 걸어두었던 mutex lock 이나 메모리 해제를 주로 하면 되겠습니다. ^^

[첨가] : http://www.morenice.kr/78
pthread_cleanup_push 는 스택형식으로 관리 되어 여러개의 함수를 등록할 수 있고 thread가 종료되면 제일 마지막에 등록된 함수부터 자동으로 호출됩니다. 또한 pthread_cleanup_pop 함수를 통해 등록된 함수들을 스택 제일 마지막에 있는 함수부터 등록 해제 할 수 있습니다.

참고사항으로 pthread_cleanup_push와 pop은 함께 사용해야 합니다.
예를 들어, 아래 예제 함수와 같이 함수내에 두개가 꼭 쌍으로 있어야 합니다

[joinic 함수 형태 참고]
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3/pthread_cleanup_push
joinic pthread_cleanup_push 설명, 예제,

2.7. pthread_self

thread 가 실행 중인 함수 안에서 pthread_self() 라고 외치면 thread 고유의 id 를 얻을 수 있습니다.

동일한 함수를 실행중인 thread 를 구분해야 할 경우 혹은 클래스마다 thread 를 가지고 있는 경우 객체 할당이 될 때 id 를 가지고 있어도 좋겠내요.


[펌] :
http://libmarco.tistory.com/54


[참고 사이트]
joinic 리눅스 표준라이브러리 (pthread 함수 외 다수 libs):
http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/3

'학습자료 > 리눅스' 카테고리의 다른 글

[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
[링크]Semaphore  (0) 2012.03.13
[링크]Pthread API Reference  (0) 2012.03.12
리눅스 기본  (0) 2012.01.17
shell 프로그래밍 기초  (0) 2012.01.13
posted by cozyboy
:
학습자료/리눅스 2012. 1. 17. 09:53

http://linuxmanpages.com
맨페이지

http://www.joinc.co.kr/modules/moniwiki/wiki.php/man/12/man
시스템 라이브러리 정리, 한글 man 페이지

http://www.viper.pe.kr/docs/make-ko/make-ko_toc.html
http://wiki.kldp.org/KoreanDoc/html/GNU-Make/
한글 Make 설명

http://wiki.falinux.com
C 라이브러리 함수[설명 및 예제]

http://korea.gnu.org/manual/

GNU Korea 매뉴얼 페이지

http://busybox.net
리눅스 시스템 프로그래밍 오픈 소스


http://lxr.linux.no/

리눅스 소스 제공 사이트


'학습자료 > 리눅스' 카테고리의 다른 글

[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
[링크]Semaphore  (0) 2012.03.13
[링크]Pthread API Reference  (0) 2012.03.12
pthread 기본  (0) 2012.03.12
shell 프로그래밍 기초  (0) 2012.01.13
posted by cozyboy
:
학습자료/네트워크 2012. 1. 17. 09:33

네트워크 클래스
http://blog.naver.com/myca11?Redirect=Log&logNo=80146514336
[간단한 쉬운 설명]

http://ko.wikipedia.org/wiki/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC_%ED%81%B4%EB%9E%98%EC%8A%A4
[위키백과]



IPv4의 주소체계는 4바이트(32비트)로 표현되며, 총 12 자리로 나타난다. IPv4에서 IP 주소는 네트워크 주소와 호스트 주소로 나뉜다.



클래스를 알아야 하는 이유 : 글래스 별로 IP 주소에서 네트워크 주소와 호스트 주소가 나뉘는 기준이 다르기 때문

총 32 비트 중
A클래스 : 네트워크 주소(8비트), 호스트 주소(24비트)   
B클래스 : 네트워크 주소(16비트), 호스트 주소(16비트)
C클래스 : 네트워크 주소(24비트), 호스트 주소(8비트)

시작 bit(가장 왼쪽에 있는 bit)
A클래스 : 0
B클래스 : 10  
C클래스 : 110

ex)B클래스 (10******.********.********)
최소 : 10000000.00000000.00000000.00000000
최대 : 10111111.11111111.11111111.11111111 


(++추가++) 서브넷 마스크
http://yagi815.tistory.com/355

 


'학습자료 > 네트워크' 카테고리의 다른 글

MTU, MSS [펌]  (0) 2013.06.17
zero-copy[펌]  (0) 2013.02.27
netstat 명령어 사용법 - 펌  (0) 2013.02.13
zero configuration networking  (1) 2013.02.12
SSL(Secure Sockets Layer)  (0) 2012.01.16
posted by cozyboy
:
학습자료/네트워크 2012. 1. 16. 17:47
: SSL 프로토콜은 처음에 Netscape사에서 웹서버와 브라우저 사이의 보안을 위해 만들었다.(일반적으로 https:// 사용)

SSl 간단한 설명, 쉽게 짧게 설명.
http://blog.naver.com/hoo753?Redirect=Log&logNo=20121474378

ssl 기본 개념과 절차, openssl의 사용에 대한 방법[SSL Certificates HOWTO]
http://wiki.kldp.org/HOWTO/html/SSL-Certificates-HOWTO/index.html


'학습자료 > 네트워크' 카테고리의 다른 글

MTU, MSS [펌]  (0) 2013.06.17
zero-copy[펌]  (0) 2013.02.27
netstat 명령어 사용법 - 펌  (0) 2013.02.13
zero configuration networking  (1) 2013.02.12
네트워크 클래스 서브넷 마스크  (0) 2012.01.17
posted by cozyboy
:
학습자료/리눅스 2012. 1. 13. 14:47

http://blog.naver.com/jamesy?Redirect=Log&logNo=60140853570
배쉬 쉘구조

http://nick_jenny.blog.me/30087755915
쉘스크립트(if, for, while, 함수)  :  함수사용법 설명 중 함수 이름뒤에 ()표시를해야합니다.

http://blog.naver.com/timberx?Redirect=Log&logNo=30036391951
예제로 알아보 는 bash for문

http://bear.sage.kr/34
case문 사용


htp://blog.naver.com/titan79th?Redirect=Log&logNo=140022155339
sh, bash, csh, ksh (걍 궁금해서)

sh는 bone shell이라고 불리우며 가장 기본적인 쉘입니다.

쉘이란 커널과 사용자를 연결해주는 하나의 매개체 역할을 한다고 보시면 됩니다.

가장 기본이 되는 쉘이 바로 sh입니다.

쉘은 여러가지 형태로 만들어 지지만 크게 csh 계열과 ksh계열로 분리가 됩니다.

csh는 c 언어를 기초로 만들어진 쉘입니다.(관리자 중심)

ksh는 korn shell이라고 불리며 사용자 중심으로 만들어진 쉘입니다.

csh는 후에 tcsh(확장c쉘) 로 확장 됩니다

리눅스는 bash 라는 쉘을 사용하며 이 의미는 born again shell의 의미를 가지고 있습니다.

bash는 csh의 관리적인 측면과 ksh의 사용자 편의성 측면을 모두 고려하여 만들어진 쉘입니다.

참고로 sun사의 solaris 는 ksh를 사용합니다.

그외 타 유닉스들도 각자 자기에 맞는 쉘을 사용하고 있습니다.

 

마지막으로 유닉스(리눅스포함)는 대부분의 쉘을 호환하여 사용할 수 있습니다.

예를 들면 리눅스에서 bash쉘을 사용하다가 csh로 바꾸거나 ksh로 바꾸는등 자기에게 맞는 쉘을 선택해서 사용할 수 있습니다.




'학습자료 > 리눅스' 카테고리의 다른 글

[펌]리눅스에서 Semaphore 사용시 주의점  (0) 2012.03.13
[링크]Semaphore  (0) 2012.03.13
[링크]Pthread API Reference  (0) 2012.03.12
pthread 기본  (0) 2012.03.12
리눅스 기본  (0) 2012.01.17
posted by cozyboy
: