안녕하세요 한국 리눅스 사용자 그룹 이호성 (Tommy Lee) 입니다. 드디어 내일 커뮤니티 세미나가 시작됩니다.

관련해서 일정과 약도를 아래와 같이 공지해 드립니다..오실때 아래의 내용을 참고하시면 찾아오실때

도움이 되실듯 합니다.

또한 몇가지 양해의 말씀을 드렸으면 합니다.


Percona 클러스터와 관련된 내용을 강의해 주시기로 했던 분께서 이번 세미나에  불가피한 사정으로 참석이

어렵게 되셔서, 다음번 세미나때  다시한번  요청을 드리기로 했습니다. 관련된 내용을 기대하셨던 분들께

양해의 말씀을 드리며, 다음번 세미나때 관련 내용이 전달 될수 있게, 준비하도록 하겠습니다.


두번째는  소규모 세미나인데도 불구하고 참 많은 분들께서 참석 의사를 밝혀 주셨습니다. 더군다나 봄날의 토요일

오후이면 시간 내기가 쉽지 않으실 텐데 이렇게 많은 분들께서 시간을 함께 하시겠다고 신청해 주셔서

너무나 감사할 따름 입니다. 한 가지 걱정인 것은 오시는 분들에 비해서 장소가 많이 협소 할듯 합니다. ㅠㅠ

최대 30 ~ 40명 정도 (최대 40명) 되는 세미나 실이기 때문에 참석을 밝히신 모든 분들을 수용하기 에는 어려움이

따를수도 있을 듯 합니다.. 모든 분들께서 함께 참석하 실수 있도록  넉넉한 공간을 빌리지 못한 점 죄송합니다.

다음번 세미나 때는 더 큰 장소를 빌려서 더 많은 분들이 많은 것들을 공유하고 나눌수 있는 장을 마련해 보도록

하겠습니다.


1. 일정 : 2014년 4월19일

2. 시간 : 오후 2시 ~ 5시

3. 장소 : 한빛 미디어 1층 세미나실

4. 주소 : 서울시 마포구 양화로 7길 83 (구 서교동 480-26)

Agenda

1. Linux kernel core 분석 방법론 

   - 강사: 이미르 (한국 오라클 GSS)

2. zinst 패키지 기반의 리눅스 중앙관리 시스템

    - 강사 : 양지욱 과장 (GS샵) 


3. GlusterFS를 이용한  NAS 솔루션

    - 강사 : 이호성 차장 (오픈소스 컨설팅, 한국리눅스 사용자 그룹 운영자) 

4. Linux RBAC with LDAP 

   
 - 강사 : 송상준 부장 (서진 디엔에스)



신고


RHEL6가 나오면서 부터 NUMA 지원 여부에 대해서 좀 더 강력해 지는듯 합니다.






신고

LVM으로 구성된 파일 시스템에 대한 사이즈를 조정하려면 우선 모든 데이타에 대해서
안정하게 백업을 받아 놓으셔야 합니다.  모든 데이타가 정상적으로 백업이 되었다면, 아래의
절차대로 차분하게 Step by Step으로 진행하시면 됩니다.

/mnt 파일시스템 축소 명령어

# umount /mnt   ## 파일시스템 작업 전 unmounting

# e2fsck –f /dev/mapper/vg01-lvol01   ## 파일시스템 축소 작업 전, 파일시스템 체크

# resize2fs –f /dev/mapper/vg01-lvol01 70G   ## 파일시스템을 70G로 축소

# lvreduce –L -19G /dev/mapper/vg01-lvol01   ## lv  19G 축소

# lvs   ## lv 사이즈 확인

# mount /dev/mapper/vg01-lvol01 /mnt   ## 파일시스템 mount

# df   ## mount 및 사이즈 정상 확인

 

/TESTS 파일시스템 확장 명령어

# umount /TESTS   ## 파일시스템 작업 전 unmounting

# lvextend –L +40G /dev/mapper/vg01-lvol02   ## LV 40G 확장

# e2fsck –f /dev/mapper/vg01-lvol02   ## 파일시스템 확장 전, 파일시스템 체크

# resize2fs /dev/mapper/vg01-lvol02   ## 파일시스템 확장

# lvs   ## lv 사이즈 확인

# mount /dev/mapper/vg01-lvol02 /TESTS   ## 파일시스템 mount

# df   ## mount 및 사이즈 정상 확인


신고

리눅스 운영체제 설치 완료 및 외장형 디스크를 연결한 후에 시스템을 재부팅을 하면 디스크의 순서가 
변경되서 올라오는 경우가 있습니다..(PCI로 연결된 이더넷도 순서가 변경되서 올라오죠 아마..ㅜㅜ)
시스템이 재부팅 되면 Disk의 PCI 버스등 여러가지 X86 아키텍쳐상 가장 먼저 전기신호를 받고 감지된 
디스크를 가장 우선순위에 두고 인식 하기 때문이겠죠, 관련해서 아래와 같이 디스크의 순서 즉 DISK Order에 대한 부분을 처리하는 Work Arround 입니다. 

문제

  • Originally the system has one local disk /dev/sda, then  connected with a new external storage (a storage array or a  fiber-channel or a SAS disk). After the system was booted up, the  internal disk on the server were changed to /dev/sdb while the external disks on the fiber storage were now /dev/sda.

  • How to control scsi device ordering during boot. For instance, having the local storage be mapped to sd names before the SAN storage. An example of this would /dev/sda being local and /dev/sdb being external.

  • scsi order discovery between local RAID and HBA Qlogic

  • Sometimes when we reboot a server which take part in cluster (and only this server currently), the boot hang because HBA Qlogic card is seen as scsi0 instead of local RAID and so no boot partition is available.

환경

  • Red Hat Enterprise Linux 5
  • Red Hat Enterprise Linux 6
  • SAN/Storage

해결

  • There are various options that can help control individual device/path names:
  • Specify a module load order. For example: if you are using the modules ips and qla2200 for internal and external storage and wanted ips module to load first, we could add something similar to the lines below in /etc/modprobe.d/scsi-order.conf

install qla2200 { /sbin/modprobe ips; } ; /sbin/modprobe --first-time --ignore-install qla2200

  • Next it is important to rebuild your initramfs, which can be done by following the article below How do I rebuild the initial ramdisk image in Red Hat Enterprise Linux?.

  • Note: scsi-order.conf is a chosen name and can be changed to suit your needs.

  • Specify the module load ordering in the bootloader, in /boot/grub/grub.conf. The following arguments simply needed to be appended to the kernel line.

rdloaddriver=ips,qla2200

 [출처 : https://access.redhat.com/site/solutions/67778]

 [참고 : https://access.redhat.com/site/solutions/44389]

 [참고 : https://access.redhat.com/site/node/45626]

신고

Setup SAN Boot for RHEL 6.x using native multipath on EMC storage

Requirements:
1) RHEL 6.x (most apply to RHEL 5.x too, RHEL 5.x use mkinitrd instead of Dracut and the /etc/multipath.conf is slightly different refer to Red Hat KB in reference section)
2) EMC storage was setup with Active/Active (ALUA)
3) Boot LUN was presented with single path for initial install


Procedures:

1. Server boots up after initial install
2. Login to server as root to enable multipath
[root@server1]#mpathconf --enable –-with_multipathd y
3. Edit /etc/multipath.conf and make sure it only contains following valid parameters

blacklist {
}


defaults {
 user_friendly_names yes
}
devices {
  device {
    vendor "DGC"
    product ".*"
    product_blacklist "LUNZ"
    hardware_handler "1 alua"   
    path_checker directio    
    prio alua                
  }
}
4.Find out the logical path the root disk is mapped
[root@server1]#multipath –v3 
It should be /dev/mapper/mpatha

5. Create initramfs with multipath module
[root@server1]#dracut --force -–add multipath

6. Make sure multipath.conf is included in initrd image
[root@server1]#lsinitrd /boot/initramfs-*.x86_64.img | grep multipath.conf
-rw-r--r--   1 root     root         2525 Feb 27 13:31 etc/multipath.conf
7. Modify the /boot/grub/device.map and change
 (hd0) /dev/sda    to
 (hd0) /dev/mapper/mpatha
This is assuming the boot disk is on /dev/mapper/mpatha as verified in step 2 above.

8. Reboot the server.

9. Verify multipath, check hwhandler='1 alua' and member disk sda for mpatha
[root@server1]#multipath –ll 
mpatha (3600601609973310067eb1e1ed69ae311) dm-0 DGC,VRAID
size=150G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
`-+- policy='round-robin 0' prio=10 status=enabled
  |- 1:0:0:0 sda 8:0   active ready running
  

10. Ask storage administrator to enable other paths for boot LUN.
11. Reboot server again after multipath is aenabled in storage too
12. Login server to verify all paths, check hwhandler='1 alua' prio>0
if hwhandler='1 emc' or prio=0 means PNR mode

[root@server1]#multipath -ll
mpatha (3600601609973310067eb1e1ed69ae311) dm-0 DGC,VRAID
size=150G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=130 status=active
| |- 1:0:1:0 sdd 8:48  active ready running
| `- 2:0:1:0 sdj 8:144 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
  |- 1:0:0:0 sda 8:0   active ready running
  `- 2:0:0:0 sdg 8:96  active ready running
mpathb (360060160997331009fd6e124d69ae311) dm-1 DGC,VRAID
size=800G features='1 queue_if_no_path' hwhandler='1 alua' wp=rw
|-+- policy='round-robin 0' prio=130 status=active
| |- 1:0:0:1 sdb 8:16  active ready running
| `- 2:0:0:1 sdh 8:112 active ready running
`-+- policy='round-robin 0' prio=10 status=enabled
  |- 1:0:1:1 sde 8:64  active ready running
  `- 2:0:1:1 sdk 8:160 active ready running
13. Partition other LUNS using fdisk command as normal, but use logical path /dev/mapper/mpathb etc (partition will be created as /dev/mapper/mpathbp1 instead of /dev/mapper/mpathb1
NOTE: any change to /etc/multipath.conf requires re-create initramfs ( dracut --force -–add multipath) and a reboot, because the boot LUN is on SAN, if boot LUN is local disk, change to /etc/multipath.conf only requires multipathd restart

<출처: http://honglus.blogspot.kr/2014/03/setup-san-boot-for-rhel-6x-using-native.html>

신고

안녕하세요 한국 리눅스 사용자 그룹을 운영하고 있는 이호성 (Tommy Lee) 라고 합니다. 먼저 금번 

소그룹 세미나때 발표를 허락해 주셔서 다시한번 감사의 말씀을 드립니다. 

발표 시간은 40분 내외로 준비를 해주시고.. 혹시나 데모 (Demo)를 준비하신 연사분들 께서는 

Presentation을 짧게 하시고 데모 위주로 하셔도 상관은 없습니다. (자유롭게 진행하셔요..^^)

커뮤니티 세미나 이기 때문에 너무 경직되지 않았으면 좋겠습니다..^^

재능기부 형태의 세미나 발표를 감당해 주시고 참여해 주셔서 다시한번 감사의 말씀 전해드립니다..


1. Linux kernel core 분석 방법론 

   - 강사: 이미르 (한국 오라클 GSS)


2. zinst 패키지 기반의 리눅스 중앙관리 시스템

    - 강사 : 양지욱 과장 (GS샵) 


3. Percona를 이용한 클러스터 구축 

   - 강사 : 이동현 차장 (오픈소스 컨설팅) 


4. GlusterFS를 이용한  NAS 솔루션

    - 강사 : 이호성 차장 (오픈소스 컨설팅, 한국리눅스 사용자 그룹 운영자) 


5. Linux RBAC with LDAP 

    - 강사 : 송상준 부장 (서진 디엔에스) 



난공불락세미나_템플릿.pptx


신고

難攻不落(난공불락) 리눅스 및 오픈소스 인프라 세미나  강사진이 모드 섭외가  됐습니다..

모든 분들께서 흔쾌히 허락해 주시고 자발적으로 자신이 가지고 있는

오픈소스 기술과 노하우를 나누겠다고 해주신 분도 계십니다..이자리를 빌어서 

다시한번 감사의 말씀을 드립니다....모든 분들께서 IT에서 소히 "고수"로 불리시는

분들이여서 (저빼고..ㅜㅜ) 많은 것들을 공유하고 나눌수 있지 않을까 기대해봅니다 


1. Linux kernel core 분석 방법론 

   - 강사: 이미르 (한국 오라클 GSS)

2. zinst 패키지 기반의 리눅스 중앙관리 시스템

    - 강사 : 양지욱 과장 (GS샵) 

3. Percona를 이용한 클러스터 구축 (가제목) 

   - 강사 : 이동현 차장 (오픈소스 컨설팅) 

4. GlusterFS를 이용한  NAS 솔루

    - 강사 : 이호성 차장 (오픈소스 컨설팅, 한국리눅스 사용자 그룹 운영자) 

5. Linux RBAC with LDAP 

    - 강사 : 송상준 부장 (서진 디엔에스) 

신고
  1. 김정석 2014.02.27 18:56 신고

    세미나 신청은 어디에 하면 되나요

  2. 프르딩딩 2014.03.11 19:20 신고

    조만간 접수 페이지 만들어서 진행할 예정이에요..^^ 조금만 기다려 주세요..

안녕하세요 한국 리눅스 사용자 그룹을 운영하고 있는 오픈소스 컨설팅의 이호성 (Tommy Lee) 입니다, 날씨도 선선히 풀리고 있는 것 같고 봄이 오는 느낌도 들고, 여러모로 계절이 바뀌고 있다는 느낌이 들어서 4계절이 뚜렷한 나라에 사는 것도 나쁘지 않다는 생각이 드는 요즘입니다..^^ 

제가 한국 리눅스 사용자 그룹을 오픈하게 된것은 오픈소스를 접근하는 방법에 있어서는 상황에 따라서 여러가지  차원으로 접근하게 되는데 하나의 솔루션 으로써 적용되는 것도 의미가 있지만, 한개인 또는 기업에게 오픈소스를 통해서 원천 기술 또는 기반 기술을 슬득하고 서로 공유하고자 하는데 그 의미를 
두고 미약하지만 열심히 나누고 공유하려 노력하고 있습니다.(뭐..나름의 철학입니다 마는..ㅋㅋ) 

그렇게 미약한 시작이기는 하지만 참 많은 분들께서 함께 공유해주시고 의견주셔서 이제 오프라인 세미나를 통해서 좀더 많은 것들을 나누고자 하는 시도를 해볼까 합니다.. 

예정된 일정은 이렇습니다. 

일정 : 4월12일 또는 19일 (토요일
- 정확한 일정은 survey monkey를 통해서 설문을 받아 보도록 하겠습니다. 
- 설문을 통해서 정해진 날짜를 세미나 2주전에 공지하도록 하겠습니다.

장소 : 강남 토즈 타워 (예정) 
- 현재 오픈소스 커뮤니티 모임의 지원을 통한 장소섭외가 가능하지도 알아보는 중입니다. 
- 장소 또한 결정되면 별도 공지하도록 하겠습니다.

대략적인 아젠다는 아래를 참조해 주시구요... 

혹시 내가 오픈소스를 통해서 경험했던 것들을 나누고자 하시는 분들께서는 한국 리눅스 사용자 
그룹에 댓글로 남겨 주시거나 제 블로그 댓글에 남겨주시면 별도로 연락 드리도록 하겠습니다. 

현재까지 확정된 세미나 주제와 아젠다는 아래와 같습니다. 


難攻不落(난공불락) 리눅스 및 오픈소스 인프라 세미나

1. Linux kernel core 분석 방법론 

   - 강사: 이미르 (한국 오라클 GSS)

2. zinst 패키지 기반의 리눅스 중앙관리 시스템

    - 강사 : 양지욱 과장 (GS샵) 


3. Percona를 이용한 클러스터 구축 (가제목) 

   - 강사 : 이동현 차장 (오픈소스 컨설팅) 

4. GlusterFS를 이용한  NAS 솔루션

    - 강사 : 이호성 차장 (오픈소스 컨설팅, 한국리눅스 사용자 그룹 운영자) 

5. Linux Rdac with LDAP 

   
 - 강사 : 송장준 부장 (서진 디엔에스) 


6. z/VM를 이용한 zLInux 이야기

   - 강사 : 장혁수 차장 (Aimacy)


難攻不落(난공불락) 

난공불락 이라는 말은 공격하지 쉽지 않고 함락하기 어려운 성을 일컫는 말입니다. 또한 심지가 

곧아서 웬만한 유혹에는 힘들리지 않는 강직한 성격을 가진 사람들을 비유해서 일컫는 말이기도 하죠..

모든 오픈소스는 커뮤티니와의 연계성이 가장 중요하다고 봅니다..


오픈소스는 한 개인이 또는 어느 한조직이 독자적으로 넘어설수 있는 그 무엇이 아닙니다.. 다같이 

나누고 공유했을 때 오픈소스를 통한 원천기술 확보 내지는 기술력 내재화 라는 목적을 이룰수 

있을꺼라는 나름의 오픈소스 철학을 담아봤습니다.. 


그리고 이전 배고픈 시절부터 리눅스나 오픈소스를 끝까지 포기하지 않고 "삽질" 신공을 단련해온 

강직한 리눅서들과 개발자들의 강직함으로 표현하고 싶었습니다.. 

신고
  1. jerryp 2014.02.12 15:48 신고

    그래서... 언제한다는겁니까? ^^ 완전 기대기대!

  2. 프르딩딩 2014.02.21 14:17 신고

    일단 아젠다 정리좀 하구요 조만간 곧..진행할 예정입니다.^^

  3. hiboss1 2014.02.21 18:08 신고

    정말 기대가 되네요...

Quick Guide

https://sites.google.com/site/fagonas/li/spacewalk/spacewalk-quick-guide

신고

. 프로그램 에러 시그널들 (SIGFPE, SIGILL, SIGSEGV, SIGBUS, SIGABRT) - 매우 중요 ★★★★★

다음의 시그널들은 심각한 프로그램의 에러가 운영체제나 컴퓨터 자체에 의해 검출되었을 때 발생 된다. 
일반적으로, 이들 시그널 모두는 당신의 프로그램이 심각하게 깨져있고, 에러가 포함된 그 실행을 계속할 아무런 방법이 없음을 지적한다.


어 떤 프로그램들은 프로그램의 에러 시그널로 인해서 종료되기전에 그들을 깨끗하게 처리한다. 예를 들어, 터미널 입력의 반향을 끈(tnun off) 프로그램들은 다시 반향을 켤 목적으로 프로그램 에러 시그널들을 처리할 것이다. 핸들러는 시그널을 위한 디폴트 동작을 정하고 그 동작을 함으로써 끝날 것이다. 만일 프로그램이 시그널 핸들러를 가지지 않았다면, 프로그램은 그 시그널로 인해서 종료될 것이다.

SIGFPE 시그널은 심각한 산술적 에러를 보고한다. 그 이름이 "floating-point exception"에서 유래된것이라 할지라도, 이 시그널은 실제로는 모든 산술적 에러들에 작용한다. 만일 어떤 프로그램이 어떤 위치에 정수 데이터를 저장하고 그 데이터에 플로팅-포인트 명령을 사용한다면, 이것은 그 프로세서가 데이터를 플로팅-포인트 수로써 인식할 수 없기 때문에 종종 "유용하지 않은 연산"의 원인이 된다.

SIGILL 시그널의 이름은 "비합법적인 명령(illegal instruction)"에서 유래되었다
그것은 쓸모없거나 특권이 부여된 명령어를 실행하려 했다는 의미이다. 
오직 유용한 명령어만이 발생된 C 컴파일러에서, SIGILL은 전형적으로 실행 가능 파일이 훼손되었거나, 당신이 데이터를 실행하려 시도했다는 것을 지적한다. 

후자의 상황이 발생되는 일반적 상황으로는 함수를 위한 포인터가 있을 것이라고 예상된 곳에서 유용하지 않은 오브젝트를 파싱하거나, 자동 배열의 끝을 넘어서 기록을 하고( 또는 자동 변수를 위한 포인터와 유사한 문제들) 스택 프레임의 반환 어드레스 처럼 스택에서 
다른 데이터의 훼손과 같은 문제들이 있다.

SIGSEGV 시그널은 할당된 메모리의 범위를 벗어나는곳에서 읽거나, 쓰기를 시도할 때 발생 된다. 
(실제로, 그 시그널들은 프로그램이 충분한 영역을 할당받지 못할 때 시스템 메모리 보호 메커니즘에 의해서 발생한다.) 

그 이름은 "segmentation violation"의 약자이다. 
SIGSEGV 상황이 발생되는 가장 일반적인 방법은 비참조 되는 널( defeferencing a null) 이나 초기화되지 않은 포인터에 의한 것이다. 

널 포인터는 주소 0으로 참조되고, 대부분의 운영체제는 이 주소가 정확하게 유용하지 않음을 확실히
하기 때문에
비참조 널 포인터는 SIGSEGV가 발생될 것이다. 
(어떤 운영체제는 주소가 0인 메모리도 유용하고, 비참조 널 포인터는 그들 시스템상에서는 시그널을 발생하지 않는다.) 
비초기화된 포인터에서는, 유용하지 않거나, 유용하더라도 임의의 주소들을 갖게된다. 
SIGSEGV 상황이 얻어지는 다른 일반적 방법은 배열에 포인터를 사용했을 때 그 배열의 끝을 체크하기를 실패했을 때이다. 

SIGBUS 시그널은 유용하지 않은 포인터가 비참조되었을 때 발생 된다. 
SIGSEGV 처럼, 이 시그널은 초기화되지 않은 포인터를 비참조 한 것의 결과이다. 
두 시그널의 차이점은 SIGSEGV는 유용한 메모리에서 유용하지못한 억세스를 지적하고, 
SIGBUS는 유용하지못한 주소를 억세스 하는 것을 지적한다. 
특별하게, SIGBUS 시그널은 4개로 나누어지지 않은 주소에 4-단어 정수로 참조하는것처럼, 
부적당한 포인터가 비참조 됨으로써 발생한다. 
(각종 시스템은 주소 정렬은 위한 자신만의 필요조건을 갖는다.) 이 시그널의 이름은 "bus error"의 약자이다.

SIGABRT 시그널은 프로그램 그 자체와 abort가 호출되었음을 보고함으로써 발생되는 에러를 지적한다.

2. 종료 시그널 (SIGHUP, SIGINT, SIGQUIT, SIGTERM, SIGKILL) - 중요 ★★★★

이들 시그널들은 이런 저런 방법으로 프로세스를 종료함을 알리기위해 사용된다. 
그들은 완전히 다른 목적을 위해 사용되기 때문에 다른 이름을 가졌고, 프로그램은 그들은 다르게 취급하기를 원할 것이다.
이들 시그널들은 처리하기 위한 이유는 보통 당신의 프로그램이 실제로 종료되기전에 적당하게 처리할 수 있도록 하기 위한 것이다. 
예를 들어, 당신은 상황정보를 저장하고, 임시 파일들을 지우고, 이전의 터미널 모드를 반환하기를 원할수도 있다. 
그와 같이 핸들러(handler)는 발생된 시그널을 위한 디폴트 동작을 지정하고 그리고 그 시그널을 다시 발생시킴으로써 종료할 것이다. 
이것은 만일 프로그램이 핸들러를 가지지 않았더라도, 그 시그널로 인해서 프로그램이 종료될 것이다.

SIGHUP ("hang-up") 시그널은 사용자 터미널의 단절을 보고하기 위해 사용되어지는데, 
아마도 네트웍이나 전화선 연결이 끊어졌기 때문이다. 

SIGINT("program interrupt") 시그널은 사용자가 INTR 문자를 (보통 C-c)을 입력했을 때 보내어진다. 

SIGQUIT 시 그널은 다른 키_QUIT 문자, 보통 C-\_에 의해서 제어된다는 것을 제외하고는 SIGINT와 유사하고, 그 프로세스가 종료 될 때 프로그램 에러 시그널처럼 코어 파일을 작성한다. 당신은 사용자에 의해 "검출된" 프로그램 에러 상황으로 이들을 생각할 수 있다. 

SIGTERM 시그널은 프로그램을 종료하는데 사용하는 포괄적인 시그널이다. SIGKILL과 달리, 이 신호는 블록되어진고, 처리되어지고 무시되어질 수 있다.

SIGKILL 시그널은 즉각적인 프로그램 종료를 일으키기 위해서 사용되어진다. 이 시그널은 처리되거나, 무시되거나 할 수 없고, 그 결과는 항상 치명적이 된다. 이 시그널은 블록하는것도 불가능하다. 

3. 알람 시그널 (SIGALRM, SIGVTALRM, SIGPROF) - 알아도 그만.. 몰라도 그만..  ^^;;

그들 시그널은 타이머의 경과를 지적하는데 사용되어진다. 
그들 시그널을 위한 디폴트 동작은 프로그램을 종료를 일으키는 것이다. 
이 디폴트 동작은 거의 유용하지 않다. 
그 들 시그널을 사용하는 대부분의 방법은 어느 경우에 맞는 핸들러 함수들을 요구하는 것이다.

SIGALRM 시그널은 전형적으로 실제또는 클럭 시간을 계산한 타이머의 경과를 지적한다. 
예를 들어 alarm 함수에의해 사용되어진다. 

SIGVTALRM 시그널은 전형적으로 현재 프로세스에 의해 사용된 CPU시간을 계산하는 타이머의 경과를 지적한다. 
그 이름은 "virtual time alarm"의 약자이다.

SIGPROF 시그널은 현재의 프로세스에 의해 사용된 CPU 시간과, 
프로세스를 대신하여 시스템에의해 사용된 CPU시간의 둘을 계산한 타이머의 경과를 지적하는데 사용된다. 
타이머가 자원의 프로파일링을 위한 도구로써 사용되어지므로, 시그널의 이름이 SIGPROF이다.

4. 비동기 입/출력 시그널 (SIGIO, SIGURG)

이 절에 설명된 시그널들은 비동기 입/출력 도구들과 함께 사용되어진다. 
당신은 어떤 특정한 파일 기술자가 그들 시그널을 발생시키도록 하기 위해서 fcntl을 호출함으로써 명백한 동작을 취하도록 해야한다.

SIGIO 시그널은 파일기술자가 입력 또는 출력을 수행할 준비가 되어있을 때 보내어진다. 
대부분의 운영체제에서, 터미널과 소켓만이 SIGIO를 발생시킬 수 있다. 
보통의 파일들을 포함한 다른 종류들은 당신이 그들에게 요청했을지라도 SIGIO신호를 발생시키지 않는다.

SIGURG 시그널은 소켓에 도착한 데이터가 "긴급"하거나 범위를 벗어 났을 때 보내어진다.

5. 작업 제어 시그널 (SIGCHLD, SIGCONT, SIGSTOP, SIGTSTP, SIGTTIN, SIGTTOU) - 중요 ★★★★

이들 시그널은 작업 제어를 지원하기 위해서 사용되어진다. 
만일 당신의 시스템이 작업 제어를 지원하지 않는다면 시그널들은 발생되어지거나, 처리될 수는 없지만 매크로들은 정의되어있다. 
당신이 실제로 작업이 어떻게 제어되는지를 이해할 수 없다면 그들 시그널을 그대로 방치할 것이다.

SIGCHLD 시그널은 자식 프로세스들중의 하나라도 종료되거나 멈출 때마다 부모 프로세스에게 보내어진다. 
이 시그널을 위한 디폴트 동작은 그것을 무시하는 것이다. 

당신은 프로세스가 계속되도록 하기 위해서 SIGCONT 신호를 보낼 것이다.
SIGCONT 시그널을 위한 디폴트 동작은 만일 그 프로세스가 멈추었다면 그 프로세스를 계속하도록 만드는 것이고 
그렇지 않다면 그것을 무시하는 것이다. 
대부분의 프로그램에서는 SIGCONT를 처리할 아무런 이유가 없다. 
그들은 전에 멈추었었음을 인식함이 없이 계속 실행되고 있다고 가정한다. 

SIGSTOP 시그널은 프로세스를 멈춘다. 그것은 처리되거나, 무시되거나 블록될 수 없다.

SIGTSTP 시그널은 상호 작용하는 멈춤 신호이다. SIGSTOP와는 달리 이 신호는 처리되거나 무시되어질 수 있다. 
당신의 프로그램에서 프로세스가 멈추었을 때 파일이나 시스템 테이블을 안전한 상황으로 만들어놓을 특별한 필요가 있다면 
이 신호를 처리할 수 있다.

한 프로세스가 배경 작업으로써 실행되고 있는 동안 사용자의 터미널로부터 읽을 수 없다. 
배경 작업에 속한 어느 프로세스가 터미널로부터 읽으려 시도할 때, 그 작업에 속한 모든 프로세스는 SIGTTIN 신호를 받는다. 
이 시그널을 위한 디폴트 동작은 그 프로세스를 멈추는 것이다. 

SIGTTOU 시그널은 배경 작업에 속한 프로세스가 터미널에 출력하려 시도하거나 그 터미널 모드를 설정하려 시도할 때 발생 된다. 
다시 말하면 디폴트 동작은 그 프로세스를 멈추는 것이다. 
프로세스가 멈추어있을 동안, SIGKILL 시그널과 SIGCONT시그널을 제외하고는 어느 다른 시그널들은 배달되어질 수 없다.

SIGKILL 시그널은 항상 프로세스의 종료를 유발하고 블록되거나 무시될 수 없다. 
당신이 SIGCONT 시그널을 무시하거나 블록할 수 있지만, 그것은 만일 그 프로세스가 멈추어져있다면 프로세스가 계속되도록 한다. 
프로세스에게 보낸 SIGCONT 시그널은 아직 미해결인채로 남아있는 멈춤 시그널을 프로세스가 버리도록 한다. 
이와 비슷하게, 어떤 프로세스에서 아직 미해결인채로 남아있는 SIGCONT 시그널은 멈춤 시그널이 도착했을 때 버려진다. 
고아가 되어버린 프로세스 그룹에 있는 한 프로세스에게 SIGTSTP, SIGTTIN, 또는 SIGTTOU 시그널을 보내면 그것은 처리되지도 않고, 
그 프로세스는 멈추어 지지도 않는다. 
그것을 계속할 아무런 방법이 없는 부당하게 되어버린 프로세스를 멈추게 하라. 
운영체제에 의존하지 말고당신이 무언가를 사용해서 멈추게 하라. 어떤 시스템은 아무런 일도 하지 않을 것이다. 
다른 시스템들은 대신에 SIGKILL 또는 SIGHUP와 같은 시그널들을 배달할 것이다. 

6. 잡다한 시그널 (SIGUSR1 ~ SIGUSR22)

그들 시그널은 다양한 다른 상활들을 보고하기 위해서 사용되어진다. 이들의 디폴트 동작은 프로세스가 종료되도록 하는 것이다.

SIGPIPE 시그널은 읽는 프로세스가 없는 상황에서의 PIPE에 대한 쓰기시 발생한다.

SIGUSR1 과 SIGUSR22 시그널들은 당신이 원하는 어떤 방법을 사용하지 못하도록 한다. 그들은 프로세스간 통신을 위해서 유용하다. 

그들 시그널을 보통 심각하기 때문에 당신은 그 시그널을 받은 프로그램에서 그들은 위한 시그널 처리를 해야할 것이다.

신고

+ Recent posts