'linux'에 해당되는 글 27건

  1. 2011.02.07 [bash] cat 구문에 대한 부분 추출 및 분석 방법
  2. 2011.01.07 명령어실행은 되고 crontab 은 안되고..
  3. 2010.04.28 콘솔의 한글이 깨질때
  4. 2010.03.10 쉘프로그램 : date 연산에서 하루 전날 구하기 3
  5. 2009.12.08 Ctrl insert 하면 vi에서 계단같이 출력 되요..
  6. 2009.11.23 apache log에서 ip카운터 조회 1
  7. 2009.11.20 crontab 에 설정한 shell이 자꾸 종료될때
  8. 2009.10.19 vi를 통한 문자열 치환
  9. 2009.10.06 telnet 을 이용한 리모스서버 작업실행 2
  10. 2009.10.06 env LANG 설정


앞서 Ruby에 대해서 살펴 보았는데 이번에는 bash 환경입니다.
여기에서는 tab으로 구분된 구분자중에서 2번과 4번 항목을 읽어들여 내부적으로 산술 연산을
하는 부분입니다.

shell 의 목적은 파일사이즈를 모두 합쳐주는것 입니다.

#!/bin/bash


docidG= ""
filesizeG= 0
for docinfo in `cat docsize.txt | awk '{print $2"|"$4}'`
do
        #echo $docinfo
        docid=`echo $docinfo | awk -F"|" '{print $1}'`
        filesize=`echo $docinfo | awk -F"|" '{print $2}'`

         if [ "$docid" == "$docidG" ]; then
            #filesizeG= $filesizeG + $filesize
            let "filesizeG = $filesizeG + $filesize"    >> 산술연산
        else
            echo "$docidG : $filesizeG"
            docidG=$docid
            filesizeG=$filesize
        fi

done


보다 자세한 가이드는
아래를 확인하시면 되겠습니다. ^^
http://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/





shell스크립를 만들어 놓고 잘 구동되는것을 확인한다음 crontab에 등록하게 되면
잘 될꺼라는 무한신뢰를 나타낸다.
하지만 간혹 crontab에서 구동을 시켜도 잘 안되는 경우가 있다.
대표적인 사례로 shell스크립 를 이용해서 ruby나 grovy같은 외부 라이브러리를 import 해서
사용하는 사례가 대표적이다.

crontab이 만들어낸 오류

/usr/local/lib/ruby/site_ruby/1.8/dbi.rb:344:in `load_driver': Could not load driver (libclntsh.so.10.1: cannot open shared object file: No such fi
le or directory - /usr/local/lib/ruby/site_ruby/1.8/i686-linux/oci8lib.so) (DBI::InterfaceError)
    from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:227:in `_get_full_driver'
    from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:213:in `connect'
    from /neouser/script/work/common/dbi.rb:45:in `connectHDBOracle'
    from /neouser/script/work/common/dbi.rb:149:in `getResultHDB'
    from /test/work/neouser/work_ebook/report.rb:21:in `userCnt'
    from /test/work/neouser/work_ebook/report.rb:68


이상하다.. 그냥 shell 명령어를 실행했을때는 잘 나오던 결과가 crontab에서는 해당 명령어가
잘 실행되지 않는다.  그래서 내가 사용하는  test계정을 살펴본다.

[test@test ~/work/neouser/work] env
..
..
USER=test
export LD_LIBRARY_PATH=/usr/lib/oracle/10.0.0.0/client/lib
export ORACLE_SID=TESTDB
export MYSQL_INCLUDE=/test/mysql/include
export ORACLE_HOME=/usr/lib/oracle/10.0.0.0/client
export G_BROKEN_FILENAMES=1
..


계정이 실행된 배경에는 이와같은 환경 변수가 내포 되어있던 것이다.
그렇다면 스크립트안에 뭔가 더 넣어줘야겠네.. ㅎㅎ

#!/bin/bsh
export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.4/client/lib
export ORACLE_SID=BLOGDB
export MYSQL_INCLUDE=/test/mysql/include
export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client
export G_BROKEN_FILENAMES=1

cd /test/work/neouser/work
./test.rb >> log.log




내가 이것으로 2시간을 허비한 것을 생각하면.. 애효..
월급주는 회사가 고맙다.



:set enc=UTF-8

putty를 통해 파일을 열었더니 깨진다면 환경변수 조작하는 방법도 있겠지만
간단하게 위와같은 방법으로 인코딩을 변경해서 확인할 수 있다.
별것 아니지만 역시나 매번 사용하지 않으면 잊어먹기 쉽상이라 적어놔 본다.


today=`date +%Y%m%d`
yesterday=`date +%Y%m%d -d '-1days'`


참 쉽죠잉..

:set paste

vi 상에서 위와같이 처리하면 계단같이 나오는것을 제거할 수 있다.
사실 :set 명령어가 가진 기능이 참 많으나 순간마다 기억은 망각으로 향한다.
그런면에서 티스토리는 참 유용한것 같다 . ^^


cat access.log | awk '{print $1}' | sort | uniq -c | sort -n

여기서의 핵심은 sort를 2번 사용했다라는 점이다.
최초 있는 sort로 한번 정렬하고 여기에 uniq를 하고 그런뒤 보기 편하게 sort -n 으로 재정렬한것이다.

나는 왜 sort를 2번 쓸 생각을 못한걸까?
아직도 즐기지 못하는건가? 쩝


여기서 언급하는 종료는 로직상에는 오류가 없으며 DB와 같은 외부작업을 재실행을 하고
한참있다 종료되는 경우에 해당합니다.

30 6 * * * * a.sh
[test@test work] vi a.sh
#!/bin/bash
nohup b.sh &

실제 로직은 b.sh 안에 있습니다.

vi를 통한 문자열 치환

linux 2009. 10. 19. 15:04

잘 쓰는게 아니라서 항상 잊어먹고 살때가 있다.

:%s/<\/TD><TD>/,/g
:%s/<\/TR><TR>/\r/g

여기서 특이사항은 </TD> 때문이다.
앞에 \가 붇는게 약간의 팁이다 . %s/before/after/g 는 다 아는사실일테고..

야~ 이거 되게 재미있다.
이게될줄은 몰랐다.
하지만 되버렸다.

참고로 이런 방법을 사용하는 본질적인 이유는 conshell상에서 한글이 깨져서 Query를 입력할
수 없었다는 벽에 부딧혔기 때문이다.

shell안에서 한글이 포함된 Query를 만들고 실행하면...
콘솔에 입력하는 한글과 다르게 반응한다.

!/bin/sh

tpipe() {
    sleep 2;echo "id"
    sleep 1;echo "password"
    sleep 1;echo "sqlplus"
    sleep 2;echo "dbid"
    sleep 1;echo "dbpassword"
    sleep 1;echo "insert into test (test) values ('한글작성');"
    sleep 1;echo "commit;"
    sleep 2;
}

tpipe | telnet 127.0.0.1


env LANG 설정

linux 2009. 10. 6. 18:46

글쎄..
이것을 건드려야 하는 이유는 WAS의 엉뚱한 응답이 발생할때 극단의 처방이 이뤄질 필요가 있으면
수행하게 된다.

vi .bashrc
export LANG='ko_KR.euckr'


1 2 3 

글 보관함

카운터

Total : / Today : / Yesterday :
get rsstistory!