FlexGet을 주기적으로 자동실행하는 방법은 두가지가 있습니다. FlexGet이 백그라운드에 상주하면서 자체적으로 Scheduler를 가동 task를 실행하는 방법과 OS의 Scheduler(ex. Cron)를 통해서 FlexGet을 실행하는 것입니다. 저는 FlexGet을 상주시키는 방법을 사용하고 있는데, 설정 파일을 한 곳에서 관리할 수 있기 때문입니다. 이 글은 FlexGet 자체 Scheduler 플러그인을 사용하는 방법을 다루고 있습니다.
제 생각에는 이전 2개의 글과 더불어서 scheduler 플러그인 까지만 설정하면 아주 기초적임에도 불구하고 실 사용가능한 시드박스를 구축할 수 있을 것으로 기대합니다.
이전글 목록:
- FlexGet 설정파일 만들기 1 - 동작 확인을 할 수 있는 최소한의 설정
- FlexGet 설정파일 만들기 2 - rss와 토렌트 클라이언트 (deluge) 연동하기
- FlexGet 설정파일 만들기 2 - rss와 토렌트 클라이언트 (transmission) 연동하기
1. FlexGet을 램에 상주시키기 - Daemon Mode로 가동
FlexGet을 daemon mode로 가동하는 것은 윈도우즈의 서비스와 비슷한 개념입니다. 명령행 옵션은 아래와 같습니다.
1 | $ /실행파일 위치/flexget daemon start | cs |
참고로 종료와 재실행 명령은 아래와 같습니다.
1 2 | $ /실행파일 위치/flexget daemon stop $ /실행파일 위치/flexget daemon reload | cs |
물론, 매번 부팅 시 마다 수동으로 FlexGet을 실행하는 것은 합리적이지 않습니다. 따라서 아래 링크의 글을 참조하여 부팅 시 자동실행 되도록 Systemd 서비스를 만들어줍니다.
- FlexGet 설치 및 자동실행 설정: http://notme.tistory.com/62
2. schedule 플러그인 설정: https://flexget.com/Plugins/Daemon/scheduler
FlexGet의 Schedule 플러그인을 이용합니다. 사용 방법은 cron과 거의 같네요. schedules 키워드는 FlexGet의 최상위 키워드로써 1열부터 바로 시작해야 합니다. 즉 다른 키워드의 구성요소로 사용할 수 없습니다.
아래 예시는 "a_tv"와 "b_tv" task(할 일)를 시간대별로 서로 다른 주기로 실행하도록 설정한 것입니다. INPUT(입력) 소스가 자주 갱신되는 오후 8시~새벽3시에는 15분 간격으로, 자료 갱신이 더딘 새벽3시~오후 8시에는 1시간 간격으로 "a_tv"와 "b_tv"를 실행합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | schedules: - tasks: [a_tv, b_tv] schedule: # 20시 이상 24시 미만에는 15분 간격으로 실행 hour: 20-23 minute: "*/15" - tasks: [a_tv, b_tv] schedule: hour: 0-2 minute: "*/15" - tasks: [a_tv, b_tv] schedule: # 03시 이상 20시 미만에는 1시간 간격으로 실행 hour: 3-19/1 | cs |
만약 완전히 다른 주기로 실행할 task를 추가하고 싶을 경우 아래 처럼 - tasks: 키워드를 더 써주면 됩니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | schedules: - tasks: [a_tv, b_tv] schedule: # 20시 이상 24시 미만에는 15분 간격으로 실행 hour: 20-23 minute: "*/15" - tasks: [a_tv, b_tv] schedule: hour: 0-2 minute: "*/15" - tasks: [a_tv, b_tv] schedule: # 03시 이상 20시 미만에는 1시간 간격으로 실행 hour: 3-19/1 # c_series task는 하루 한 번 실행 - tasks: c_series interval: days: 1 | cs |
이번에는 해당 스케줄에 단 하나의 task만 포함이 되었는데, 이 때는 대괄호가 필요 없습니다.
그런데 곰곰히 살펴보면 a_tv, b_tv와 c_series는 scheduler 구조가 좀 다른 것을 알 수 있습니다. 전자는 schedule 이라는 키워드를 사용했고, 후자는 interval 이라는 키워드를 사용했지요. schedule은 시각(시,분), 요일, 날짜를 이용하는 방식이고, interval을 주기만을 사용합니다. 두 방식에서 사용할 수 있는 필드는 아래와 같습니다.
- schedule 방식
year, month, day, hour, minute, week, day_of_week
대개는 hour, minute, day_of_week 정도만 사용하면 충분합니다. day_of_week은 요일인데, 세글자 영문 약어를 사용하거나 0(일요일)~6(토요일)의 숫자를 사용할 수 있습니다. (mon,tue,wed,thu,fri,sat,sun)
- interval 방식
weeks, days, hours, minutes
만약 모든 task를 15분 주기로 실행하고자 한다면 아래와 같이 아주 간단한 설정을 해주시면 됩니다.
1 2 3 4 | schedules: - tasks: '*' interval: minutes: 15 | cs |
3. 마무리 - 혹시나 schedules 키워드의 위치 설명이 애매할까봐...
마지막으로 제가 작성한 FlexGet 설정파일 만들기 1편, 2편에 이어, scheuler 플러그인 까지 설정하셨다면 설정 파일 형태가 아래처럼 구성되었을껍니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | # 스케줄러 플러그인 schedules: - tasks: '*' interval: minutes: 15 # 할 일 목록 정의 tasks: torrent_rss: # "입력" inputs: - rss: https://RSS피드 주소 1 - rss: https://RSS피드 주소 2 # "필터" regexp: accept: - '프로그램명1.*릴그룹' movedone: /media/모나코 방송/프로그램 1 디렉토리 - '프로그램명2.*릴그룹' movedone: /media/팔라우 방송/프로그램 2 디렉토리 # "출력" deluge: username: 'deluge RPC 계정' password: 'deluge RPC 암호' | cs |
이렇게 제가 생각하는 FlexGet 설정파일의 최소 구성이 비로소 완성되었고, 이제 써 가면서 조금씩 배우고 개선해가면 되겠네요. 아마도 정규식 규칙을 조금 더 배운 후 set과 deluge (또는 transmission) 플러그인의 옵션을 한번 찾아보시면 좋을 것 같습니다.
'홈서버 (리눅스) > 다운로드 서버' 카테고리의 다른 글
FlexGet + 토렌트 다운로드 시 PLEX 호환 형식으로 파일명 자동 변경 (0) | 2017.08.24 |
---|---|
FlexGet과 youtube-dl을 이용하여 유튜브 채널/재생목록 자동 다운로드하기 (9) | 2017.08.21 |
FlexGet 설정파일 만들기 2 - rss와 토렌트 클라이언트(transmission) 연동하기 (0) | 2017.08.21 |
FlexGet 설정파일 만들기 2 - rss와 토렌트 클라이언트(deluge) 연동하기 (0) | 2017.08.21 |
FlexGet 설정파일 만들기 1 - 동작 확인을 할 수 있는 최소한의 설정 (0) | 2017.08.21 |