Linux Run_Level

Linux 2014. 10. 28. 17:31

 

LINUX RUN LEVEL

<부팅 순서>

1. POST    (파워스위치?)
2. Kernel   
3. init  ( PID 0) => /etc/inittab 참고 함

 

Run-level

0  linux:halt   solaris: PROM모드

1  Single모드

2  Multi user 모드 (약간 제외 – NFS, samba제외)

3  Multi user 모드 모든서비스 가동

4  X

5. GUI까지 구동( linux에만 존재)

 

 

/etc/init.d/ 원본script가 있는데
/etc/
rc1.d/kxxx sxxxx   로 링크 함.
    (
rc1=runLevel  K=stop,  S=Start 프로세서 )
    rc2, rc3….
여러 링크 폴더 존재
    
run_level 스테이징 순서대로 구동 됨.

Posted by yongary
,

remount

Linux 2014. 10. 21. 11:51


linux 커널을 빌드해서 설치하다 보니

/etc가 read-Only인 경우가 발생했다. 

=> (원인은 cloud다 보니, XenServer 에서 발생.. /var/log/messages에 blkfront: barrier: empty write xvdb op failed )


확인:  

$ cat /proc/mounts  해보면  

 /dev/xvda3 / ext3 ro,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered 0 0

이렇게 ro가 보인다. 


$cat /etc/fstab 해보면 부팅시 mount되는 type /위치를 알 수 있다. 


이 때 remount를 하면 되는데

$ mount -o rw,remount -t ext3 /dev/xvda3 / 

   =>  mount: cannot remount block device /dev/xvda3 read-write, is write-protected 

또 에러가 난다.



제대로 된 remount를 하려면

/etc/fstab 에다가 옵션이 defaults일 경우 ext3 rw,relatime,errors=continue,user_xattr,acl,barrier=1,data=ordered 라고 가정하고

 옵션을 defaults ==>  ext3 rw,relatime,errors=continue,user_xattr,acl,barrier=0,data=ordered 으로 수정해서 한번 해본다. 


Posted by yongary
,

ubuntu 14.04 chkconfig

Linux 2014. 10. 17. 13:51

기존에는 chkconfig이란 명령어로 init.d 데몬들을 관리했지만


ubuntu 14.04부터는

update-rc.d 명령어로 하게 되었다.


만약 tomcat7을 startup시에 실행하고 싶지 않다면


$ update-rc.d   -f  tomcat7  remove


로 하면된다.

Posted by yongary
,

Linux 커널 빌드

Linux 2014. 10. 14. 11:47

Linux 커널 빌드



소스를 받은 후에


1) $ uname -r 해서 현재 linux 커널 버전 확인

   2.6.32-281-blabla.


2) 필요시에만.. 즉 재빌드 하는 경우 등에 이전 빌드 clean해 놓기

  $make clean && make mrproper    


3) 현재 config을 .config로 복사 

cp /boot/config-2.6.32-281-blabla ./.config

4)

$make menuconfig 해서 GUI화면이 뜨게 되면 그냥 exit하면서 save=Yes 로 답하면 됨.


5)

$make all   (혹은 make -j4 all :   4 core cpu일 경우 4배 빨리 build)



6)혹은 rpm으로 build하기 위해서는 rpm-build 툴이 깔려있어야 한다. 그 후에 (   예)yum install rpm-build ) 

$make rpm



해당 rpm을 설치시에는

$rpm -ivh kernel-x.x.xxblabla.rpm 하면 됨.



<개인적인 firmware conflict발생 및 conflict해결>

$yum list kernel kernel-firmware

$yum remove kernel kernel-firmware.noarch  까지 해서 해결.

 


<설치 완료후 grub설정 을 하려는데..> 

1. initramfs파일이 /boot에 없어서

  $dracut initramfs-2.6.39.4.img 2.6.39.4


2. /boot/grub/grub.conf 수정.

- 0번자리(즉 윗자리)에 4줄 복사해서 추가하고   vmlnuz-버전과  initramfs 버전 수정. 

Posted by yongary
,

netstat 명령어 활용

Linux 2014. 10. 8. 14:35

Linux에서 네트웍 진단이나 통계시에

netstat 커맨드가 매우 유용하게 쓰인다.



netstat에는 여러가지 옵션이 존재하는데, 이 중에서 비교적 많이 쓰게 되는 옵션은 다음과 같다.


  -   netstat -nap  (n:숫자로 표시,  a:all,  p:프로세스 ID)  : 즉 프로세서별로 통계

  -   netstat -ntl  (tcp 리스닝),  -nul (udp 리스닝)  : tcp/udp 리스닝 상태

  -   netstat -su (s:통계, u=udp)   : udp통계  



  그 외에 nmap이라는 유틸리티를 설치할 경우 특정 IP에 대한 상대방 진단이 가능한데

 사용법은 

   -   nmap -sU -p 100-2000 +상대ip   (s:스캔,  U=UDP  -p: 포트대역)

Posted by yongary
,

TCP UDP 버퍼 길이 확인

Linux 2014. 10. 8. 10:29

특정 기능을 개발하다 보면,

TCP나 UDP의 버퍼길이까지 튜닝하여야 하는 경우가 발생한다.  (예: heartbeat 데몬 등)


이 때 TCP/UDP의 버퍼길이 조정을 하는 api는 주로 setsockopt를 통해 하게 되는데

min이나 max가 제한되어 있으므로 이를 미리 확인하는게 좋다.


Linux에서


/sbin/sysctl -a   | grep net.core 와

/sbin/sysctl -a   | grep net.ipv4 로 확인이 가능하다.



//아래 예제에서 wmem:sendBuf,  rmem: receive Buf

net.core.wmem_max = 5242880   

net.core.rmem_max = 5242880

net.core.wmem_default = 2097152

net.core.rmem_default = 2097152


net.ipv4.tcp_mem = 196608       262144  393216

net.ipv4.tcp_wmem = 16384       122880  204800

net.ipv4.tcp_rmem = 16384       122880  204800


net.ipv4.udp_mem = 761952       1015936 1523904

net.ipv4.udp_rmem_min = 2097152

net.ipv4.udp_wmem_min = 2097152




아직 테스트 중이라 확실치 않은 부분이 있긴한데

setsockopt 함수를 사용하면 sendbuf는 2048, receiveBuf는 256까지 min으로 설정이 되는 것으로 보인다.

 (설정값 *2 로 세팅이 되므로 함수 호출시에는 그 반으로 해야함) 

Posted by yongary
,

redis를 사용하는 유명회사들에 대해선

redis.io 웹사이트에 다음과 같은 회사들이 언급되어 있다.


Blizzard에서 Wow 아바타 서비스에도 사용한다고 하는데 아직 확실치는 않다..

Posted by yongary
,

SW Engineering

IT 2014. 9. 29. 08:54

소프트웨어 공학의 최근 흐름으로는 관점 지향(Aspect), 애자일(Agile), 모델 주도(Model-Driven) 등이 있다.



Agile 방법론의 기본 개념 "반복적으로 프로토 타입을 고객에 전달함으로써 고객의 요구사항 변화에 민첩하게 대응한다"


Agile 방법론의 대표주자XP(익스트림 프로그래밍) 




XP(익스트림 프로그래밍) 개발 프로세스 :


XP의 목적은 '고객이 원하는 양질의 소프트웨어를 빠른 시간안에 전달하는 것'이다. 
수시로 발생하는 고객의 요구사항에 대처하고, 고객이 원하는 SW를 고객이 원하는 시간에 인도하기 위해서는 고객과 팀원간의 대화를 통해 해결한다.


XP에는 7가지 항목이 정의되어 있는데, 7가지 항목 중 특히 공감이 가는 항목은 아래와 같이 4항목이다.

1.Simple-Design

2.Test-Driven

Test_driven은 다른 애자일 방법론과 구분되는 XP만의 특징이기도 하다.

프로그래머들이 코딩을 할 때에, 테스트 코드를 작성하도록 함과 동시에 테스트를 기반으로 프로젝트를 완성시켜 나간다.

3. Pair-Prograimming 

두명 혹은 그 이상의 프로그래머가 함께 코딩을 하는 것을 말한다. 두명의 프로그래머가 함께 코딩을 하고 테스트를 통해서 개발을 할 수도 있고, 한명은 코딩을 하고 한명은 Quality Assurance 역할 통해서 테스트에만 집중을 할 수도 있다.

4. Whole-Team 

기획자, 설계자 심지어는 Tester, User까지도 하나의 팀이 되어 개발을 진행하는 방법이다.


나머지 3항목은 

Planning Game, Small Release, Customer Test이다.








Posted by yongary
,

Linux 버전 확인

Linux 2014. 9. 26. 16:50

Linux kernel 버전 확인:  uname -a    
                                 or  lsb_release -a


OS 버전 확인:

redhat계열:  cat /etc/redhad-release

ubuntu 계열:  cat /etc/issue

Mac: sw_vers

 

32 / 64 bit 확인 :

$ getconf LONG_BIT 

 


 


 

Posted by yongary
,

vim 탭설정

Linux 2014. 9. 25. 10:43

vim 에디터가 요즘 대세인데. 탭 기능이 다소 불편할 수 있다.


Vim에서는 Ctrl+Tab단축키(혹은 linux에서 Ctrl+Shift+Tab단축키)가  기본적으로는 분할된 (:sp 명령어로) 화면간 전환에 쓰이기 때문인데..



개인적으로 애용하는 방법은

.vimrc 파일에  아래와 같이 3줄 추가하는 것이다.


map  <C-l> :tabn<CR>

map  <C-h> :tabp<CR>

map  <C-n> :tabnew<CR>



Windows의 경우에는 

C:\Program Files\Vim\_vimrc 파일에 추가.

 

 

기타 특수명령어

 Shift + j   :  라인구분(엔터키)가 하나씩 없어진다

set list  / set unlist  :  특수키를 다 구경할 수 있다.

Posted by yongary
,