'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 안에 있습니다.

저작자 표시 비영리 변경 금지
신고

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

:%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.06 18:46

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

vi .bashrc
export LANG='ko_KR.euckr'


저작자 표시 비영리 변경 금지
신고
1 2 3 

글 보관함

카운터

Total : 572,353 / Today : 70 / Yesterday : 54
get rsstistory!