2018. 4. 27. 19:35


집에 백업용으로 Nas가 필요할거 같아서, 찾다가, 시놀로지 하드 5개 짜리는 너무 비싸서 못 사겠고...


사실 나스가격보다, 하드 가격이 너무 비싸서...5개를 사면, 후덜덜...


그래서, 2베이용 시놀로지로 샀다.


DS216j 가 20만원 정도인데, 가격대비 좋을거 같드라.


다른 Nas는 못쓰겠고, 시놀로지를 써본 경험상. 이만한......서버 대용용이 없다는거다~


그래서 나스 20에..하드 개방 10만원 정도 해서 40만원 정도 들어갔다..


그래도 가격대비 최고이다.


집 밖에서 다운 걸어 놓고, 집 티비가 스마트 티비라, 미디어 켜놓으면,


티비에서 외부입력으로 잡혀서 영화나 드라마를 바로바로 볼수있다~ㅎ


이건 최고임!!!






박스는 투박하지만 심플하게 생겼다.




정품 스티커랑 모델명이 써있다.





구성품들은 아래와 같다~

본체, 전원어댑터 케이블, LAN선(cat6였던거 같다.)




외관은 반짝반짝인 유광이다. 

생각보다 앞에 판델이 약해 보이긴한데....

공유기 옆에 모셔놓고 쓰기엔 큰 문제 없을듯..






뒤에 나사를 풀어주면, 밑에 처럼 열린다.




안은 생각보다 투박하다.....


그리고 하드 두개가 너무 붙어 있는 느낌이다.


하드를 끼고, 나사를 조여줘야한다...


살짝 불편함...







구입한 하드 2개 

DT01ACA300 인가 이걸로 샀다. 개당 10만원 정도....3TB...




밑에 하나 먼저 끼었다.




그 위에 하나 더 끼고, 나사로 조여줘야한다.





옆 모습....진짜 너무 붙어있긴하다...


발열이 걱정되긴함....







이상 Synology DiskStation DS215j 오픈기였다.


설치하고, 이후 과정은....사진 찍어 놓은게 없어서....ㅎㅎㅎㅎㅎㅎ


그래도 가격대비 성능은 만족한다~!!

Posted by Tyson
2018. 4. 27. 18:57

디비에 DATE 값에서 오늘 날짜 검색할때

DATA_TABLE 안에, CR_TIME이 등록일이다.


등록일은 DATE 형식으로, 입력시 SYSDATE 값을 넣는다.


오늘 등록된 갑만 보고 싶을때,



SELECT * FROM DATA_TABLE

WHERE TO_CHAR(CR_TIME,'YYYYMMDD') = TO_CHAR(SYSDATE,'YYYYMMDD')




Posted by Tyson
2018. 4. 27. 17:57


기타 정규식방법


1. 숫자형만 

_regexp = /[0-9]/gi;


2. 자릿수 제한(숫자형 3자리까지만 입력)

_regexp = /^[0-9].{0,2}$/;


3.날짜입력

_regexp = /[0-9\-.]/gi;

(날짜 숫자, 대쉬(-), 점(.) 만 입력가능하게)


4. 영문과 숫자만 입력가능

_regexp = /[A-Za-z0-9]/gi;


5. 이메일 형식

 _regexp = /^[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_.]?[0-9a-zA-Z])*.[a-zA-Z]{2,3}$/i;


6. 숫자나 특수문자 포함 10-15자리 영문 대소문자만 가능(암호같은거)

_regexp = /^(?=.*[a-zA-Z])((?=.*\d)|(?=.*\W)).{10,15}$/;


7. 한국, 영문 숫자

_regexp = /^[ㄱ-ㅎ|가-힣|a-z|A-Z|0-9]+$/;


8. 숫자와 "-" 만. (핸드폰번호)

_regexp = /[0-9\-]/gi;


9. 아이피

_regexp = /^(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$/;


10. 재생시간(00:03:23)

 _regexp = /([0-9][0-9])\:([0-5][0-9])\:([0-5][0-9])/;


재생시간 00:03:12  이렇게 입력할때, 분, 초는 60초 넘으면 안되서, 계산하는 로직 짜는것도 좋지만, 


그냥 위에 처럼 , 쓰면 편하다.


 _regexp = /([0-9][0-9])\:([0-5][0-9])\:([0-5][0-9])/;

                 숫자(0-9)숫자(0-9)  :   숫자(0-5)숫자(0-9)  :   숫자(0-5)숫자(0-9)


분, 초위치에서 첫째자리 숫자는 0-5까지의 숫자만 쓸수있게 하는거다


첫째자리 숫자가 5 이상일리가 없으니까....



Posted by Tyson
2018. 4. 27. 14:59


작은 회사들은 사실 Git를 잘 안쓴다.


그냥 바로바로 적용하는게 빠르고 쉬우니까...


깃의 장점에 대한 설명은 여러 사이트에서 설명해주니까, 생략하고,


실제 우리회사에서 깃을 처음쓰고 다들 헷갈려했던 부분들이다.


브랜치 사용법을 어느정도 하고 사용하면, 쉬운데......


그냥 Master브랜치에다가 다 커밋해버린다...


그러면, SVN과 틀린게 없는데...


그래서 브랜치에 대한 설명을 해주고, 적용하는데 많은 시간이 걸린다.


익숙치 않기 때문이다.


그래서 예를 들어 설명하겠다.


현재 운영중인 서버가 있고,


개발용으로 dev서버가 있다.


각자 로컬에서 작업하고 최종을 master에 올려서 dev서버에서 master를 불러와서 그냥 적용해보고, 사용하다가


특별한 에러가 없으면, 실서버에도 master를 불러와서 돌렸다.


근데, 문제가...아직 dev에서 테스트 중에, 급하게 수정 요청이 들어온게 있다.


큰거는 아니고, 오타자 정도 수정인 간단한건데......


실서버에서 master를 불러오면, 아직 테스트가 안된 코드까지 올라가게 된다.


그래서 브랜치를 나눠서 하라는거다.....


예로 api 수정이 있어서....


있어서 수정해야 되면, 먼저 master 최신으로 pull한다음에....브랜치를 나눠서 작업하고,


master_dev라는 브랜치를 만들어서, 그곳에 merge해준다.


그리고 dev서버는 master 브랜치가 아닌 master_dev브랜치로 checkout 해놓는다.


로컬에서 안나오는 서버에서는 dev브랜치에서 충분히 테스트 해보고, 적용시켜도 된다라고 판단이 되면,


그때 마스터에 머지를 하는거다.


실서버적용후에는 master_dev에서 master를 한번 더 머지해줘서, dev에 적용못한 급하게 master에서 수정한 것들을 


합쳐주면 된다.


그러면 Master랑, master_dev랑 같은 히스토리를 가지고 가는거다.


이걸 아무리 말로 설명해줘도 이해하기가 힘들거다.






소규모 그룹이다 보니, 다들 그냥 master에다가 다 때려 넣다보니까.... 운영중에, 아직 반영하기 그런것들이랑 섞이다 보니까.... 


진짜.....class파일 뒤져서, 완전 노가다로 급하게 수정해준적도 있다.


그러니까...우리 브랜치를 나눠서 잘 사용하는 법을 배우자고요.



Posted by Tyson
2018. 4. 25. 18:33

혜택 좋은 카드 순위를 봤었는데,


1위는 여성전용 카드였고,

2위가 삼성카드 V2 

3위가 신한카드 삑


이였다.


여성전용은 내가 못 만드니까,


V2카드랑, 삑 카드랑 두개를 어떻게 써야지 제일 효율적으로 쓸 수 있는지 비교해 보았다.



밑에는 카드회사 사이트에 있는 카드소개이다.


1. 삼성카드




2.신한카드





이거만 봐서는 어떤게 효율적인지 모를거 같아서, 표로 만들어 보았다.


 분류

 삼성카드 V2

신한카드 삑 

비고 

 연회비

18,000원 

10,000원(Visa는 13,000원) 

 

 

 

 

 

 교통

(사용비에 따라 틀림)

 

 1일200원(25일기준)

 

 30만원

 4,000원

5,000원 

 

 50만원

 

 10,000원(1일 400원)

 

 60만원

 8,000원


 

 90만원

 12,000원

 

 

 100만원

 

 15,000원(1일 600원)

 

 

 

 

 

 택시/KTX할인

 

 사용량의 10%

 

 30만원

 

 5,000원

 

 50만원

 

 8,000원

 

 100만원

 

 12,000원

 

 150만원

 

 15,000원

 

 

 

 

 

 커피

 스타벅스, 커피빈, 

카페베너, 할리스

 스타벅스, 커피빈,

카페베네, 엔제리너스

 

 

 5%

 10%

 

 

 월 5,000원

월 10,000원

삼성카드는 기본사용있음 

 

 (30만원이상 사용시)

 

 

 

 

 

 

 통신비

10% 

5% 할인

 

 

 (교통/통신 합쳐서 월 12,000원)

  (승인금액 1만원까지)

 

 

 

 

 

 편의점

 포인트 3%

 5% 할인

신한카드는 월 5회만

 

 

 (승인금액 1만원까지)

 

 

 

 

 

 백화점

 포인트

 5% 할인

 

 

 

 (승인금액 10만원까지)

 

 

 

 

 

 영화

CGV 3,000원 

CGV 4,000원 

 

 

 롯데시네마 6,000원

 (월 1회)

 

 

 (월 2회, 년 12회)

 

 

 

 (제휴사 사이트 할인 안됨)

 (제휴사 사이트 할인 적용)

 

 

 

 

 

 포인트/캐쉬백

 유니클로, 의류(5%)

년 1000만원 이상시 

 

 

 편의점, 올리브영(3%)

 5% 캐쉬백

 

 

 기타이용 (1%)

(전기요금, 통신비,해외이용금만) 

 

 

 

(최대 5만원/년) 

 

 스포츠

 야구,축구(삼성팀) 2,000원

 

 

 

 

 

 

 좋은거

 핸드폰 요금

교통, 택시, 커피 

 

 

 옷 쇼핑, 인터넷 쇼핑

 편의점, 영화

 

 

 기타 카드 결제사용(포인트)

 

 

 

 포인트 기본 1% 큼.

 

 

 

 

 

 

 제약사항

 월 기본 30만원 이상시

  월 기본 30만원 이상시

 

 

 

 

 



두개를 비교했을때, 교통, 택시는 신한카드가 좋고,


커피는 한달에 10만원까지는 신한카드를 쓰고, 그 이후는 삼성카드를 써서, 할인 받고, 포인트 적립까지 하는게 좋다.


편의점은 하루에 만원까지는 신한카드를 쓰고, 이후는 삼성카드로 포인트 3%로 받는게 이득임.


통신비는 삼성카드가 좋은데, 만약에 교통도 삼성카드를 쓴다면, 최대 12,000원밖에 안되니까,

교통카드는 신한카드를 쓰고, 통신비는 삼성카드로 할인 받는게 이득이다.


참고로, 교통, 통신비는 월 기본사용료 30만원에 포함이 안된다.


영화는 한달에 한번은 신한카드로 하고, 통신사 사이트에서도 할인 적용되니까, 통신사에서 티켓 구매시는, 

신한카드로 하고, 두번째 영화부터는 영화사 사이트에서 삼성카드를 이용하는게 좋다.


신한카드는 년간 1000만원 써야지, 5%캐쉬백인데, 이게 전기요금,통신비,해외이용금만 포함이고, 최대 5만원이다.


년간 1000만원 사용하려면, 한달에 85만원 정도 사용해야한다.


그러면 년간 천만원 사용했을때, 5만원 정도 받는거다.


그리고, 삼성카드로 천만원 사용했을때, 기본 1%포인트로 계산을 하면, 10만원 정도 되는거다.


같은 1천만원 이용시에는 오히려 삼성 카드 포인트 받는게 더 이득이다.


내 결론은 교통, 택시, 커피, 영화, 편의점 등을 제외한 소비는 삼성카드를 사용하는게 더 나은거 같다.


편의점도 월 5회 이상은 삼성카드를 이용해서, 포인트를 받는게 이득이다.


여기에는 월 30만원 이상이라는 전제가 깔려있다.


신한카드는 교통비를 제외한, 식비 같은걸로 30만원까지만, 사용하고, 나머지는 삼성카드의 포인트가 나은거 같다.


그리고 삼성카드 포인트는 생각보다, 사용하기가 편하다.


인터넷 쇼핑할때, 포인트 결제 체크만 하면 바로바로 사용가능하고, 포인트 다 쓰고 나머지 금액만 청구한다.


근데, 신한카드 포인트 결제를 하게 되면, 포인트가 부족시에는 결제 취소가 되기 때문에 


포인트 사용하려면 액수를 맞춰야 한다는 단점이 있다.


예로, 나 같은 경우는 식대, 커피, 영화, 택시, 그리고 편의점(5번까지만) 사용해서, 최대한 30까지 맞추고,


나머지 사용은 삼성카드가 나은거 같다.


이 계산들은 연말정산 계산은 포함 안되어 있기 때문에, 어느정도는 체크카드를 사용하고, 나머지는 신용카드로


위 제약들만 맞춰주어서 사용하는게 나을거 같다.





다들 현명한 소비 하시길~!!!!


Posted by Tyson
2018. 4. 24. 17:29


사업자 등록번호 체크할 일이 있어서, 


밑에 페이지에서 가져와서 해놓았는데, 


체크썸이 0으로 끝났을때는 안되서, 보니까, 10일수도 있어서 한번 더 해줘야 되더라..


퍼온 페이지

https://gs.saro.me/#!m=elec&jn=10




사업자 등록번호는 123-45-67890 의 10 자리 구조입니다.
123 : 국세청 / 세무서별 코드
45 : 개인 법인 구분코드
6789 : 과세/면세/법인 사업자 등록/지정일자 일련번호
0 : 검증번호

검증방법
예제번호 : 123-45-67891
1. 하이픈 제거
1234567891 [사업자 10자리]
2. 인증키 배열 - 고정된값이다.
137137135 [인증키 9자리]
3. 사업자 앞 9자리와 인증키 앞 9자리를 각각 곱하여 모두 더합니다.
123456789 [사업자 앞9자리]
137137135 [인증키 9자리]
합계 = (1 * 2) + (2 * 3) + (3 * 7)..... + (9 * 5) = 165
합계 = 165
4. 앞 9자리의 마지막 값을 다시 곱하고 10으로 나눕니다.
((9 * 5) / 10) = 4.5 소수점제거 = 4
5. 합계에 바로위 값을 더해준다.
합계 = (합계165) + 4
합계 = 169
6. 합계를 10으로 나누어 나머지를 구합니다.
(169) % 10 = 9
값 = 9
7. 10 - 값을한다.
10 - 값(9) = 1
8. 마지막 자리수가 1이면 사업자등록번호입니다.
그럼으로 예제는 사업자 등록번호입니다.

  1. // 국내에 종속성을 가지고있기에 라온에는 직접 들어가지 않겠지만 나중에 확장용으로 들어갈 수 있습니다. (은글슬쩍 라이브러리 광고....)
  2. // https://dev.saro.me/raon/
  3. // 사업자번호 체크
  4. // 2015-04-24 전명 박용서 작성
  5. function ckBisNo(bisNo)
  6. {
  7. // 넘어온 값의 정수만 추츨하여 문자열의 배열로 만들고 10자리 숫자인지 확인합니다.
  8. if ((bisNo = (bisNo+'').match(/\d{1}/g)).length != 10) { return false; }
  9. // 합 / 체크키
  10. var sum = 0, key = [1, 3, 7, 1, 3, 7, 1, 3, 5];
  11. // 0 ~ 8 까지 9개의 숫자를 체크키와 곱하여 합에더합니다.
  12. for (var i = 0 ; i < 9 ; i++) { sum += (key[i] * Number(bisNo[i])); }
  13. // 각 8번배열의 값을 곱한 후 10으로 나누고 내림하여 기존 합에 더합니다.
  14. // 다시 10의 나머지를 구한후 그 값을 10에서 빼면 이것이 검증번호 이며 기존 검증번호와 비교하면됩니다.
  15. return (10 - ((sum + Math.floor(key[8] * Number(bisNo[8]) / 10)) % 10)) == Number(bisNo[9]);
  16. }

=============================================================================


여기 같에 보면 마지막에 한번 더 %10 이 들어가야한다.

값이 체크썸 값이 10이 떴을때는 틀렸다고 나온다.



  1. return ((10 - ((sum + Math.floor(key[8] * Number(bisNo[8]) / 10)) % 10)) % 10) == Number(bisNo[9]);



위에처럼 해야한다.



나 같은 경우는 아래처럼 나눠서 체크했다.

   function ckBisNo(bisNo)

    {

        // 넘어온 값의 정수만 추츨하여 문자열의 배열로 만들고 10자리 숫자인지 확인합니다.

        if ((bisNo = (bisNo+'').match(/\d{1}/g)).length != 10) { return false; }


        // 합 / 체크키

        var sum = 0, key = [1, 3, 7, 1, 3, 7, 1, 3, 5];


        // 0 ~ 8 까지 9개의 숫자를 체크키와 곱하여 합에더합니다.

        for (var i = 0 ; i < 9 ; i++) { sum += (key[i] * Number(bisNo[i])); }


        // 각 8번배열의 값을 곱한 후 10으로 나누고 내림하여 기존 합에 더합니다.

        // 다시 10의 나머지를 구한후 그 값을 10에서 빼면 이것이 검증번호 이며 기존 검증번호와 비교하면됩니다.

        

        // 체크섬구함

        var chkSum = 0;

        chkSum = Math.floor(key[8] * Number(bisNo[8]) / 10);

        // 체크섬 합계에 더해줌

        sum +=chkSum;

        var reminder = (10 - (sum % 10)) % 10;

        //값 비교

        if(reminder==Number(bisNo[9])) return true;

        return false;

    }

'컴퓨터 > JavaScript (jQuery)' 카테고리의 다른 글

jQuery에서 따옴표 처리하기  (0) 2018.05.24
정규식 패턴 종류  (0) 2018.04.27
Modal로 팝업 띄우기  (6) 2018.02.07
엔터 칠때 자동으로 클릭하기  (0) 2018.01.05
jQuery 동적 이벤트 on  (0) 2015.10.22
Posted by Tyson
2018. 4. 24. 15:36

쉘 스크립트에서,


한달된 로그파일들을 지워서 공간을 확보해 놓고 싶어서, 하나 만들었다.


su - test -c "rm -f /backup/db_backup_`date -d '1 month ago' +%Y%m`*.bak"


이렇게 하면, test 계정으로 들어가서, 

(현재 4월임)


3월달에 만들어진 파일들(rm -f /backup/db_backup_201803*.bak)을 삭제한다.



date 에서 가져오고 싶은 날짜 찾는거는 밑에 퍼온거를 참조해서 


아래와 같이 하면 된다.


날짜가 제대로 나오는지 확인해 보고 싶으면, echo로 아래와 같이 해보면 된다.


> echo `date -d '2 days ago' +%Y%m%d`



퍼온거

===========================================================================


과거


  1. date -d 'yesterday' # 어제
  2. date -d '1 day ago' # 1일전 = 어제
  3. date -d '2 day ago' # 2일전
  4. date -d '35 day ago' # 20일전
  5. date -d '1 week ago' # 1주일전
  6. date -d '2 month ago' # 1달전
  7. date -d '3 year ago' # 3년전
  8. date -d '10 second ago' # 10초전
  9. date -d '20 minute ago' # 20분전
  10. date -d '30 hour ago' # 30시간전
  11. date -d '3 year 7 month ago' # 3년 7개월전




미래 

* 과거에서 ago 를 빼면 됨

  1. date -d 'tomorrow' # 내일
  2. date -d '1 day' # 1일후 = 내일
  3. date -d '2 day' # 2일후
  4. date -d '35 day' # 20일후
  5. date -d '1 week' # 1주일후
  6. date -d '2 month' # 1달후
  7. date -d '3 year' # 3년후
  8. date -d '10 second' # 10초후
  9. date -d '20 minute' # 20분후
  10. date -d '30 hour' # 30시간후
  11. date -d '3 year 7 month' # 3년 7개월후



요일 기준


  1. date -d 'this friday' # 이번주 금요일
  2. date -d 'last monday' # 지난 월요일
  3. date -d 'next tuesday' # 다음 화요일



특정 시간을 기준으로 날짜 더하고 빼기


  1. date -d '2010-01-03 07:32:10 + 2 day 5 hours 17 minute'
  2. # 2010년 1월 3일 7시 32분 10초를 기준으로 2일 5시간 17분후



옵션 1


-d 는 --date 옵션으로 사용해도 됩니다. --date 로 쓸때에는 --date= 형식으로 사용하시면 됩니다.

  1. date --date='2 month'



옵션 2


시간단위를 나타내는 day, week, month, year, second, minute, hour 등은 뒤에 s(복수)를 붙여도 되고 안붙여도 됩니다.

  1. date -d '1 day ago'
  2. date -d '1 days ago'



옵션 3


시간을 원하는 형식으로 뽑기위해서는 아래같이 하시면 됩니다.

현재 시간으로부터 2일전의 년-월-일 시:분:초 형식으로 표시하려면

  1. date '+%Y-%m-%d %H:%M:%S' -d '2 day ago'



쉘스크립트에서 해당 시간을 변수에 담기


보통 위와 같은 date 함수는 주로 쉘스크립트에서 사용하게 됩니다. 리눅스 명령으로 가져온 결과값을 변수에 담으려면

  1. yesterday=$(date -d '1 day ago')


또는

  1. yesterday=`date -d '1 day ago'`


변수를 사용할때는

  1. echo $yesterday



자료출저 : http://steadypost.net/post/knowhow/id/8/


============================================================================


날짜별로 log파일 만들때 유용하다.

Posted by Tyson
2018. 4. 24. 11:49


앞에 만든 오라클 백업 스크립트를 자동으로 cron에 넣어주고, 


매일 백업하게 해주는 cron를 작성하겠다.


오라클백업 스크립트 만들기

http://tyson.tistory.com/113


===========================================================================

퍼온거

crontab 명령어

crontab [ -u 사용자 id] 파일
crontab [-u 사용자 id] { -l | -r | -e}

  • crontab -l : 예약된 작업리스트
  • crontab -e : 예약된 작업 수정
  • crontab -r : 예약된 작업 삭제
  • crontab -u 사용자명 : 루트관리자는 해당 사용자의 crontab 파일을 보거나 삭제, 편집가능

등록 내용 설정

"분,시,일,월,요일,[사용자명] 실행명령" 순으로 설정

crontab 파일 형식

------    --------  ---------------------------------------------------

필  드    의  미    범  위

------    --------  ---------------------------------------------------

첫번째    분        0-59

두번째    시        0-23

세번째    일        0-31

네번째    월        1-12

다섯번째  요일      0-7 (0 또는 7=일요일, 1=월, 2=화,...)

여섯번째  사용자명  /etc/crontab, /etc/cron.d 에 저장될 경우 필요

일곱번째  작업명령  실행할 명령을 한줄로 쓴다.

------    --------  ---------------------------------------------------


예)

45,5 10 * * 1-5 root /usr/bin/rdate -s time.bora.net && clock -w

월요일~금요일에 매월 매일 10시 5분과 45분에 루트의 권한으로 시간동기화 명령어를 실행한다.

  • * : 범위 내 모든 경우
  • 숫자 : 정확히 일치하는 그 시각, 날짜
  • '-' 기호로 연결된 두 숫자 : 두 숫자 사이에 포함된 범위를 뜻함
  • 콤마(,)로 구분돼 나열된 숫자 : 나열된 숫자 중 일치하는 경우를 뜻함



출처: http://webdir.tistory.com/174 [WEBDIR]


============================================================================

퍼온거 


$ crontab -e

그러면 뭔가 편집할 수 있는 곳이 로딩됩니다. 이곳이 바로 크론탭을 설정할 수 있는 장소이죠. 여기에 각종 크론탭 명령어를 입력후 콜론(:) 입력 후에 wq 를 입력해 크론탭을 갱신시킵시다.

반대로 현재 크론탭에 어떤 내용이 들어있는지 보려면 다음처럼 입력하세요.

$ crontab -l

그러면 cat 명령어로 파일을 읽어들인 것처럼 표준 출력으로 크론탭 내용이 나오게 됩니다. 그런데 만약(거의 없겠지만) 크론탭을 지우고 싶다면?

리눅스 쉘에 다음처럼 입력합니다.

$ crontab -d

이렇게까지 하면 크론탭의 기본 설정 및 확인, 삭제에 대해 배운 것입니다. 그러면 실제로 크론탭에 크론 하나를 예제로 등록 해봅시다.




주기 결정


*      *      *      *      *
분(0-59)  시간(0-23)  일(1-31)  월(1-12)   요일(0-7)

각 별 위치에 따라 주기를 다르게 설정 할 수 있습니다. 순서대로 분-시간-일-월-요일 순입니다. 그리고 괄호 안의 숫자 범위 내로 별 대신 입력 할 수 있습니다.

요일에서 0과 7은 일요일입니다. 1부터 월요일이고 6이 토요일입니다.


요일은 0부터 시작합니다.



1. 매분 실행

# 매분 test.sh 실행
* * * * * /home/script/test.sh

2. 특정 시간 실행

# 매주 금요일 오전 5시 45분에 test.sh 를 실행
45 5 * * 5 /home/script/test.sh

3. 반복 실행

# 매일 매시간 0분, 20분, 40분에 test.sh 를 실행
0,20,40 * * * * /home/script/test.sh

4. 범위 실행

# 매일 1시 0분부터 30분까지 매분 tesh.sh 를 실행
0-30 1 * * * /home/script/test.sh

5. 간격 실행

# 매 10분마다 test.sh 를 실행
*/10 * * * * /home/script/test.sh

6. 조금 복잡하게 실행

# 5일에서 6일까지 2시,3시,4시에 매 10분마다 test.sh 를 실행
*/10 2,3,4 5-6 * * /home/script/test.sh



크론 로깅 (cron logging)

크론탭을 사용해서 정기적으로 작업을 처리하는 것은 좋은데, 해당 처리 내역에 대해 로그를 남기고 싶을 때가 있을겁니다. 그럴때 다음처럼 한번 써봅시다.

* * * * * /home/script/test.sh > /home/script/test.sh.log 2>&1

위처럼 작성하면 매분마다 test.sh.log 파일이 갱신 되어 작업 내용이 어떻게 처리 되었는지 알 수 있습니다. 만약 2>&1 을 제거하면 쉘스크립트에서 표준 출력 내용만 나옵니다. 2>&1은 이곳에서 확인합시다.

그런데, 이게 너무 자주 실행 되고 또한 지속적으로 로깅이 되야 해서 로그를 계속 남겨둬야 한다면 다음처럼 입력합니다.

* * * * * /home/script/test.sh >> /home/script/test.sh.log 2>&1

그러면 계속 로그가 누적이 되는 것을 확인 할 수 있을겁니다. 대신 로그가 과도하게 쌓이면 리눅스 퍼포먼스에 영향을 주므로 가끔씩 비워주거나 파일을 새로 만들어주는 센스가 필요합니다.

반대로 로그는 필요 없는 크론을 위해선 다음처럼 입력합니다.

* * * * * /home/script/test.sh > /dev/null 2>&1




위에꺼는 퍼온겁니다.


펌:  http://jdm.kr/blog/2

============================================================================


저같은 경우 매일 새벽에 돌리고 싶어서, 아래와 같이 만들었습니다.


# 새벽 1시에 매일 실행시키기 0 1 * * * /bin/sh /home/oracle/backup/cron/db_backup.sh



위에처럼 하면 매일 실행 합니다.





Posted by Tyson
2018. 4. 24. 11:10

오라클 자동백을 하기 위해서 쉘 스크립트를 만들어서 쉘을 돌리게 백업하는 방법이다.


> vi backup.sh


치고 들어가서, 안에

밑에꺼를 써준다.

su - oracle -c "exp db유저/db패스워드 file=/home/oracle/backup/backup_`date +%Y%m%d`.dmp log=/home/oracle/backup/log/backup_log_`date +%Y%m%d`.log"


orcle 계정에서

 c 커멘드를 쓴다.

 exp 오라클 백업명령어

 유저명/유저패스워드 쓰고, 


file=은 저장 경로 및 파일명 를 적어주면 된다.

뒤에 `date +%Y%m%d`.dmp  이거는 파일명뒤에 날짜를 입력해준다.

예 ) backup_20180424.dmp 이렇게 저장된다.

여기에쓰는 콜론은 `이거다. 이거는 숫자1키옆에 있는 ~ 여기에 있는 콜론이다.

엔터옆의 " ' 이 아니다.

이거때문에 처음에 계속 에러 떴음.


그리고,  쉘 스크립트를 실행해 본다.

> ./backup.sh

또는 

> sh backup.sh 

하는데, 안 먹힐때가 있다.


이건 쉘 스크립트 실행권한을 줘야한다.


> chmod +x /home/oracle/backup/backup.sh

또는

> chmod +rx /home/oracle/backup/backup.sh


이렇게 해주고.

> ./backup.sh

하면 먹힌다. 


근데, 갑자기 


EXP-00056: ORACLE error 21561 encountered

ORA-21561: OID generation failed

에러를 토해낸다.

이거 해결법은 아래 포스트에 있다.


http://tyson.tistory.com/112




근데, 또 아래와 같은 에러가 뜬다.


Connected to: Oracle Database 11g Release 11.2.0.4.0 - 64bit Production

EXP-00028: failed to open /home/oracle/backup/backup_20180424.dmp for write

Export file: expdat.dmp >



이건, 오라클이 폴더권한이 없어서 그런거다.


그래서 위 경로 폴더에 777권한을 준다.


>chmod 777 /home/oracle/backup

>chmod 777 /home/oracle/backup/log


이렇게 준다.


그리고 다시 

> ./backup.sh

실행했을때, 자동으로 실행이 완료되면 스크립트 만들기는 끝난거다.



여기까지 하면 이제 cron에 등록만 해주면 된다.


크론에 등록법은 다음 포스트에서~

http://tyson.tistory.com/114



Posted by Tyson
2018. 4. 24. 10:49

오라클 백업시 (exp) 실행시 에러


Export: Release 11.2.0.4.0 - Production on Tue Apr 24 10:31:03 2018


Copyright (c) 1982, 2011, Oracle and/or its affiliates.  All rights reserved.



EXP-00056: ORACLE error 21561 encountered

ORA-21561: OID generation failed


이란 에러가 계속떠서, 쉘 스크립트가 자동 실행이 안되는거다.


host파일에서 아이피 적고, 호스트 이름을 적어줘야한다.


vi /etc/hosts 


치면, 호스트 파일에 들어간다.


거기에서 내 아이피 호스트 이름을 써주면 된다.


예 :


192.168.0.10 TESTSERVER 


아이피 호스트이름(TESTSERVER)


이렇게 해주면 된다.


Posted by Tyson