'분류 전체보기'에 해당되는 글 265건
- 2010.07.15 뽀로로와 한컷
- 2010.07.14 턱시도 연동 서버 live check
- 2010.07.13 양양솔비치 다녀오다
- 2010.07.12 추천 온라인 만화
- 2010.07.07 weblogic redeploy시 invalid type code 31 오류발생 조치법
- 2010.07.02 unix shell tips
- 2010.06.30 svn sync
- 2010.06.30 hudson slave 설정
- 2010.06.29 rcp shell 사용하기
- 2010.06.24 턱시도 관련 트러블슈팅
턱시도의 dom 파일에 기술한 연동서버가 정상적으로 떠있는지 확인하는 방법은
- telnet IP port 로 상대 서버의 포트가 LISTEN 상태인지 확인이 가능한데,,,
가끔 telnet 을 막아서 refused 되는 경우가 있다.
이경우에는... - tmadmin 의 psc 명령으로 상대 서버의 지정된 서비스가 available 상태인지 체크하면 된다.
대충 아래와 비슷하게 하면 되는데...
% tmadmin
>psc -s 해당서비스명
Service Name Routine Name Prog Name Grp Name ID Machine # Done Status
서비스명 ? ? 그룹명 ID ? - AVAIL
>quit
이거 번거로우니 당연히 스크립트로 !!! -
스크립트
- #!/bin/sh
- # 타 턱시도 서버의 AP가 살아있는지 확인하기 위한 script
# 활용성을 높이기 위해 인자를 받아 처리하도록 함.
# 사용법
# $0 {severname_text} {ap} 2>/dev/null
if ! [ $# = 2 ]
then
echo usage : $0 {servername_text} {ap}
echo example : $0 HelloServer ap_hello
exit
fi
PGM=tmadmin
server=$1
text=live-$server.txt
app=$2
(
echo "psc -s $app"
echo "quit"
) | $PGM > $text
cnt=`grep AVAIL $text | wc -l`
if [ $cnt -gt 0 ]
then
echo "$server status OK"
else
echo "$server problem detected. see $text"
fi
이 글은 스프링노트에서 작성되었습니다.
작년에 이어 다시 양양 솔비치를 다녀왔다.
역시 여행은 분위기가 좋아야 하는데,
날씨도 춥지도 무덥지도 않게 적당히 받쳐주고
파도도 살랑살랑 무척 즐거웠다.
노는 사진을 많이 찍어야 했는데 디카는 집에 두고 왔고, 물놀이라서 핸폰도 꺼내오지 못했다.
다음엔 방수장비를 챙겨서 찍을까 싶다.
갔다온지 이틀 지났는데 벌써 또 어디 놀러가고 싶다. ^-^
구름이는 멀미를 한다.
다행히 멀미가 심해지면 차안에서 잠을 자는 선택을 하는데..
너무 예쁜 모습에 한컷.
숙소 바로 앞에서 한컷 . 분위기가 참 좋다.
모녀가 손잡고 산책중.
블럭도 쌓았다가
과감하게 부수고
쌍둥이 달걀 위에서 멋진 점프를 보여주시더니
다놀았네 헤헤헤
이 글은 스프링노트에서 작성되었습니다.
추천만화
연민의 굴레 / 재활용
그림이 다소 무성의하게 느껴지지만 위트와 여유가 느껴지는 학원물
연옥님이 보고계셔 / 억수
사랑, 젊은시기의 고민들을 다시한번 나눠볼수 있는 이야기
나이트 런 / 김성민
sf를 좋아하는 사람이라면 아주 좋아할듯
디테일이 좀더 있었으면 하는 아쉬움과 너무 편이 짧아서 금방 보고 다음편을 기다려야 하는 고통이...
두근두근거려 / 하일권
그림이 예쁘다. 엉뚱한 듯한 시작이지만 잘풀어나가는 맛에 앞으로도 작가만의 독특한 이야기를 기대하게 된다.
이 글은 스프링노트에서 작성되었습니다.
eclipse 에서 weblogic을 deploy, undeploy, redeploy 할수 있도록 스크립트를 제공하고 있다.
오늘은 한 신입 개발자가 에러가 난다고 노트북을 들고 왔다.
어, 처음보는 에러다.
순서대로..
Caused by: javax.enterprise.deploy.spi.exceptions.DeploymentManagerCreationException
Caused by: javax.naming.CommunicationException [ Root exception is weblogic.security.acl.internal.AuthenticatedUser; nested exception is:
java.io.StreamCorruptedException: invalid type code : 31]
weblogic.deploy.api.tools.deployer.DeployerException: Unable to connect to 't3://localhost:8001': invalid type code: 31. Ensure the url represents a running admin server and that the credentials are correct. ...
이거 뭐야...
답은.. jdk 버전의 문제였다.
플젝은 1.5를 쓰는데 1.6을 가지고 돌린결과.
참고글에 따르면 ClassLoarder.loadClass에서 byte array 처리방식이 변경되었다고 한다.
우선 가이드는 환경변수에서 jdk1.6 경로를 제거하고 1.5로 재지정 하도록 시켰고.
참고글에는 -Dsun.lang.ClassLoader.allowArraySyntax=true 를 VM 인자에 추가해도 된다고 한다.
뭐 이거 호환도 잘 안되고.. 궁시렁 궁시렁..
참고 : http://forums.sun.com/thread.jspa?threadID=5195504
이 글은 스프링노트에서 작성되었습니다.
한 조직이 하는 일을 혼자 맡아서 해야 하는 관계로 쉘스크립트 KID가 잠깐 되었다.
몇가지 실생활에 도움이 되고 있는 스크립트 트릭들을 기록한다.
다 알고 있는 수준의 정보지만... 이정도도 하지 않고 모든걸 수작업으로 해결하는 모습이 주위에 가끔씩 보인다.
알면, 좀 쓰자. 모르면 좀 물어보자. 일을 조금더 즐겁게, 아니면 좀더 깔끔하게 하려고 생각해보자.
운영체제 : AIX 1.6
- script로 telnet 명령 실행하기
목적 : 총 66명의 유닉스 유저에 각각 접속하여 컴파일 메이크 작업을 수행해야 했다. 한줄씩만 해도 66회다.
제약조건 : 각 유저계정의 ID, password 정보를 미리 알수 있어야 한다. 컴파일 방법이 동일해야 한다.
과정 : telnet script 를 웹서핑하여 발견...
추가 : telnet script를 좀더 재사용 가능하게 재작성함.
#!/usr/bin/ksh
# name : common_telnet_cmd.sh
# telnet 으로 접속하여 컴파일등 작업수행
# 실행방법 : $0 user_id shellcommand
# 멀티 실행방법 : cat user_list | xargs -i $0 {} shellcommand;
hostt=localhost
port=23
user=$1
cmd=$2
( echo open ${host} ${port}
sleep 1
echo ${user}
sleep 1
echo ${user}XXX # 암호가 다를 경우 변수로 빼서 처리하세요...
sleep 1
echo ${cmd}
sleep 1
echo 'exit' ) | telnet - 일괄 replace
목적 : 여러 파일을 대상으로 특정 문자열을 한꺼번에 바꾸기
제약조건 : 글쎄.. 뭐 있나?
과정 : 역시 웹서핑
1단계 : 조건에 맞는 파일을 검색하여 sed 를 이용한 치환
find . -type f -name '*.source" -print | while read i
do
sed -e 's|/SAMPLE|/REAL|g' $i > $i.tmp && mv $i.tmp $i
done
이렇게 하니 잘 되긴 하는데 간혹 마지막에 캐리지리턴이 없는 파일의 경우에는 마지막 라인이 날라가는 불상사가 발생했다.
그래서 시행착오 끝에 만든 두번째 버전
2단계 : 치환 전에 먼저 파일 끝에 빈줄을 추가한다.
find . -type f -name '*.source" -print | while read i
do
echo \\n>> $i
sed -e 's|/SAMPLE|/REAL|g' $i > $i.tmp && mv $i.tmp $i
done - 실행중인 프로세스ID 가져오기, 혹은 죽이기
목적 : 종료쉘을 제공하지 않는 프로그램을 종료시킬때 사용
제약조건 : 프로그램 정보를 확실히 알고 있어야 잘못 죽이지 않는다. awk를 쓸수 있어야 한다.
과정 : 생략
조회 : ps -ef | grep 검색문자열 | grep -v grep | awk '{ print $2 }'
죽이기 : kill `ps -ef | grep 검색문자열 | grep -v grep | awk '{ print $2 }'`
이 글은 스프링노트에서 작성되었습니다.
두 repository 동기화 하기
백업용으로 다른 서버에 하나를 더 만들었다.
절차
- svn bianry install
- make repostiroy directory
mkdir /repository/svn
cd /repository/svn
svnadmin craete mysvn-sync - edit hooks/pre-revprop-change
unix에서는 pre-revprop-change 파일을 다음과 갈이 작성한다.
#!/bin/sh
실행권한도 추가한다. chmod +x pre-revprop-change - svnsync init
svnsync init file://a/b/c/mysvn-sync svn://myhost/mysvn - sync
여러가지 방법이 있다는데 잘 안되서 스케줄링 하는 방법을 택했다.
sync_repo_cron.sh
#!/bin/sh
export LANG=ko_KR
export RUN=/opt/subversion/bin/svnsync
$RUN --non-interactive sync file:///a/b/c/mysvn-sync --username myid --password mypass - 스케줄 등록
crontab -e
* * * * * /shell/sync_repo_cron.sh &
보아하니 svn서버를 띄워 놓아야 하나보다...
이 글은 스프링노트에서 작성되었습니다.
목적 : 유휴 장비를 추가로 빌드서버로 사용하고 master node에서 통합하여 관리
방법 : 유휴 장비를 선정하여 slave를 설치한다.
준비사항 : jdk 1.4 이상, ant 1.7 이상, 접속 가능한 hudson master node
절차
- slave 선정
당연히 놀거나, 빌드서버의 노고를 덜어줄수 있는 장비면 된다. OS 무관.
대신 jnlp agent 접근을 위해 ssl 이나 특정 tcp 포트에 접속이 가능해야 한다.
(여기서는 jnlp slave agent 를 위한 tcp port 오픈으로 작업했다.) - hudson server에서 slave.jar 카피
참고자료에서는 가능한 버전을 동일하게 가기 위해서 wget 같은 방법을 사용하여 복제하는 것을 권고 하고 있다.
현재 hudson의 slave.jar 를 내려받는 방법은
$HUDSON_MASTER/jnlpJars/slave.jar
ex) http://myhudsonserver:80/jnlpJars/slave.jar - hudson master jnlp tcp port setting
hudson master server의 hudson 관리 > Configure System > TCP port for JNLP slave agents 값을 Random 또는 Fixed 로. (특정 포트만 오픈하는 경우에는 Fixed) - hudson master node에서 new node 추가
hudson master server에서 hudson 관리 > Manage Nodes > New Node >
Node Name : 원하는 노드명. 참고자료에서는 slave hostname을 추천. 해보니 괄호 같은건 인식안됨
Remote FS root : slave의 작업 root 절대패스
Labels : slave들을 논리적으로 grouping 짓기 위한 명칭
나머지는 default 값. - slave.jar 실행
실행명령은 다음과 같다.
java -jar slave.jar -jnlpUrl http://myhudsonserver:80/computer/허드슨슬레이브노드이름/slave-agent.jnlp - 빌드JOB 설정을 slave node에서 실행되도록 변경
JOB의 Configurer 화면으로 이동하여
Tie this project to a node 를 체크하면 노드 또는 Label을 선택할수 있게 된다.
이때 주의할 것은 서버에 종속되는 정보를 빌드스크립트에 전달할 목적으로
Build > Invoke Ant 의 Targets 항목에 -propertyfile /a/b/c.properties 등을 추가해두었다면
반드시 slave 서버의 로컬경로 내에 해당 파일이 존재해야 한다는 것.
추가 : 특정 서버에 종속되야 할 경우 Tie를 반드시 시켜둘것 (아니면 hudson이 지맘대로 서버를 돌려버린다. 장점이자 주의사항이다. ) - 기타...
ant 확장 library (ftp, svn 등)가 slave에도 배포되었는지 확인할 것 -
회고
좋은점 :
웹배포 job들을 분리하여 좀더 깔끔해졌고, 배포형상이 틀어지는 것을 피할 수 있었다. (기존엔 웹리소스만 업데이트 하고 싶은데, 소스나 서버 프로그램들이 업데이트 되는 문제가 있었다.)
기존 빌드시간을 단축할 수 있게 되었다 (웹 배포만 1분넘게 걸린다.)
제한된 자원을 보다 효율적으로 사용할 수 있게 되었다.
아쉬운점 :
처음에 분산빌드를 준비하기 위한 좋은 가이드를 찾지 못해 작업중간에 시간을 낭비했다. (slave.jar 는 실행했는데,, 그담에 뭘해야 하지?? ) 다음엔 좋은 가이드를 먼저 찾는데 좀더 시간을 투자하자.
점점 빌드서버 구조가 복잡해지고 있는데, 정리를 못하고 있다.
계속할것 :
통상 PJT가 파일서버, 형상서버 두대 정도는 가지고 있으니, 가용장비를 적절하게 활용할 수 있도록 구성을 해주는 것도 좋을듯 싶음.
이 글은 스프링노트에서 작성되었습니다.
rcp 사용하기
1. rcp란 : transfer files between a local and a remote host or between two remote hosts.
2. setting
[src host]
/etc/hosts file
targetip target-hostname
~/.rhost file
target-hostname target-user
[target host]
/etc/hosts file
src-ip src-hostname
~target-user/.rhost file
src-hostname src-user
3. usage
put : rcp myfile target-hostname:/a/b/myfile
get : rcp target-hostname:/a/b/myfile myfile
4. sample
DEPLOY_HOST=xxxxxx
rcp $LIB_PATH/$LIB_PREFIX$FILENAME.so $DEPLOY_HOST:$LIB_PATH/$LIB_PREFIX$FILENAME.so
cf) rsh
rsh $DEPLOY_HOST mv /afile /bfile
이 글은 스프링노트에서 작성되었습니다.
-
오라클 접속이 안되는 경우
관련로그ORA-01034: ORACLE not available
ORA-27121: unable to determine size of shared memory segment
IBM AIX RISC System/6000 Error: 13: Permission denied
원인
oracle 계정이 아닌 타 계정으로 oracle을 실행시킬때 oracle 실행파일의 permission 과 관련되어 발생하는 문제임.
조치방법
1. oracle이 기동되어 있는지 확인
ps -ef | grep ora | grep -v grep
# 특정경우 oracle 이 아닌 ora_xxx_xxxx 형태로 기동되는 경우가 있으므로 가장 확실한 방법은 oracle user가 소유한 프로세스를 확인하는 것이다.
2. tuxedo 실행계정에서 설정한 ORACLE_SID 와 tnsnames.ora 파일내 설정한 SID 값이 동일한지 확인 (오타등)
echo $ORACLE_SID # 통상 실행계정의 .profile 내에 설정한다.
grep $ORACLE_SID $ORACLE_HOME/network/admin/tnsnames.ora # 같은 이름의 설정이 존재하면 OK
3. $ORACLE_HOME/bin/oracle 실행파일의 권한을 확인하여 변경한다.
정상적으로 실행되기 위해서는 oracle 실행파일의 권한은 아래와 같아야 한다.
-rwsr-s--x
통상 s 값이 설정되지 않은 경우가 있어 변경을 해주어야 한다.
oracle 설치계정 또는 root 권한으로 아래와 같이 변경한다.
chmod +s $ORACLE_HOME/bin/oracle
변경이 정상적으로 되었는지 확인한다.
ls -al $ORACLE_HOME/bin/oracle
다시 턱시도를 기동하여 정상적으로 연결되면 OK
이 글은 스프링노트에서 작성되었습니다.