매일 한시간 단위로 데이터를 수집하고 메일을 보내고 싶은데 어떻게 할까 고민하다가
윈도우 작업 스케줄러로 진행하기로 했다!
윈도우 작업 스케줄러
윈도우 작업 스케줄러란 자동으로 실행할 컴퓨터 작업 일정을 만드는 것으로
리눅스에서 cron로 구현할 수 있다면 윈도우에서는 작업 스케줄러로 작업 할 수 있다는 뜻이다.
윈도우 작업 스케줄러를 사용한적이 없어 구글링을 통해 진행했지만
수동으로 실행하면 배치 파일이 잘 구동되었는데 자동 실행은 진짜 신기하게 돌아가지 않아서
폭풍 삽질끝에 되어 기록으로 남기게 되었다.
작업 스케줄러로 *.bat 파일을 자동 실행해보자
1. 작업 스케줄러 앱 실행하기
windows키를 누르고 작업 스케줄러라고 입력하면
해당 화면처럼 작업 앱에 보여진다
만약 "파이썬으로 실행해야한다"면인 경우
반드시 "관리자 권한으로 실행"을 클릭하여 해야한다!
그 이유는 파이썬을실행할때 보통관리자권한으로실행하게 되므로
관리자 권한으로 작업 스케줄러를 만들어야 실행이 된다.
2. 작업 만들기
작업 스케줄러를 실행하면 아래와 같은 화면이 뜬다.
작업 만들기를 클릭한다.
작업 만들기 하면
일반 / 트리거 / 동작 / 조건 / 설정 탭이 있고
일반의 내용이 표시된다.
윈도우에서 표시해준 내용으로 간단하게 설명을 해보자면
일반 | 작업의 이름과 설명 그리고 보안 옵션을 설정 할 수 있다. |
트리거 | 작업을 만들 때 작업을 트리거할 조건을 지정할 수 있다. |
동작 | 작업을 만들 경우 작업을 시작할 때 발생하는 동작을 지정한다. |
조건 | 작업 실행 여부를 결정하는 조건을 트리거와 함께 지정한다. 여기에 지정된 조건이 충족되지 않으면 작업을 실행하지 않는다. 유효 상태 , 전원, 네트워크를 설정한다. |
설정 | 작업의 동작에 영향을 주는 추가 설정을 지정한다. |
로 구성 되어 있다.
- 일반 내용 입력하기
파이썬을 실행하는 경우 관리자 권한이 필요하기 때문에 가장 높은 수준의 권한으로 실행을 클릭하고
관리자 권한이 필요 없는 작업인 경우 체크를 하지 않는다.
관리자 권한이 필요한 작업은 가장 높은 수준의 권한을 체크해야한다.
- 트리거 만들기
탭에서 트리거를 선택하고 새로 만들기를 클릭하면
새 트리거 만들기 창이 뜬다.
작업 시작, 설정, 고급 설정으로 구성되어 있다.
작업 시작은 예약 상태, 로그온할 때, 시작할 때, 유휴 상태, 이벤트 상태, 작업 만들기/수정하기에서, 터미널 서버 세션 연결 상태, 터미널 서버 세션 연결 해제 상태, 워크스테이션 잠금 상태, 워크스테이션 잠금 해제 시가 있다.
설정에는 한 번, 매일, 매주, 매 월을 선택하여 값을 입력 할 수 있고
고급 설정에는 작업 반복에 대한 설정이 있다.
나 같은 경우에는 일정에 따라 작업이 실행되도록 해야하기 때문에 예약 상태를 선택했고
매일 한시간 단위로 보내야했기 때문에
설정은 매일을 선택했고, 고급 설정에는 작업 반복 간격을 1시간으로 하고 기간은 무기한으로 했다.
작업 시작에 대한 내용은 [참고]여기에 작성된 글을 바탕으로 작성했다.
언제 작업을 시작할지에 따라 선택할 수 있다.
- 예약 상태
이 트리거는 일정에 따라 작업이 실행되도록 하며 트리거 설정을 사용하여 일정(한 번, 매일, 매주 또는 매월)을 설정 할 수 있다.
설정한 시간은 작업을 실행하는 컴퓨터에 설정되어 있는 표준 시간대로 하며 작업을 실행하는 컴퓨터에 설정되어 있는 표준 시간대 대신 UTC(Coordinated Universal Time)에 관련된 시간을 설정하려면 세계 확인란을 선택합니다. 여러 표준 시간대에 동시 실행할 작업 집합을 조정하려면 세계 설정을 사용한다. - 로그온할 때
이 트리거는 사용자가 컴퓨터에 로그온할 때 작업이 실행되도록 하며 트리거 설정을 사용하여 임의의 사용자가 컴퓨터에 로그온할 때나 특정 사용자가 로그온할 때 작업이 트리거되도록 지정할 수 있다. - 시작할 때
이 트리거는 컴퓨터가 시작될 때 작업이 실행되도록 한다. - 유휴 상태
이 트리거는 컴퓨터가 유휴 상태로 전환된 후 작업이 실행되도록 한다. - 이벤트 상태
이 트리거는 특정 이벤트 항목이 이벤트 로그에 추가되면 작업이 실행되도록 한다. 기본 이벤트 트리거 설정을 지정하거나 사용자 지정 이벤트 트리거 설정을 지정할 수 있다. 기본 이벤트 트리거 설정을 선택하면 특정 이벤트 로그의 이벤트 하나가 작업을 트리거한다. - 작업 만들기/수정하기
이 트리거는 작업이 만들어지는 즉시 또는 수정될 때 작업이 실행되도록 한다. - 터미널 서버 세션 연결 상태
이 트리거는 로컬 컴퓨터나 원격 데스크톱 연결에서 사용자 세션이 연결될 때 작업이 실행되도록 합니다. 예를 들어 컴퓨터에서 사용자를 전환하여 로컬 컴퓨터의 사용자 세션에 연결하면 이 트리거가 작업을 실행합니다. 또는 사용자가 원격 컴퓨터에서 원격 데스크톱 연결 프로그램을 사용하여 사용자 세션에 연결할 때 작업이 실행되도록 할 수도 있습니다. 트리거의 설정을 사용하여 임의의 사용자가 사용자 세션에 연결하거나 특정 사용자가 연결할 때 작업을 트리거하도록 지정할 수 있습니다. - 터미널 서버 세션 연결 해제 상태
이 트리거는 로컬 컴퓨터나 원격 데스크톱 연결에서 사용자 세션 연결이 끊어질 때 작업이 실행되도록 합니다. 예를 들어 컴퓨터에서 사용자를 전환하여 로컬 컴퓨터의 사용자 세션에 대한 연결이 끊어지면 이 트리거가 작업을 실행합니다. 또는 사용자가 원격 컴퓨터에서 원격 데스크톱 연결 프로그램을 사용하여 사용자 세션 연결을 끊을 때 작업이 실행되도록 할 수도 있습니다. 트리거의 설정을 사용하여 임의의 사용자가 사용자 세션 연결을 끊거나 특정 사용자가 연결을 끊을 때 작업을 트리거하도록 지정할 수 있습니다. - 워크스테이션 잠금 상태
이 트리거는 컴퓨터가 잠기면 작업이 실행되도록 한다. 트리거의 설정을 사용하여 사용자가 컴퓨터를 잠그거나 특정 사용자가 컴퓨터를 잠글 때 작업을 트리거하도록 지정할 수 있다. - 워크스테이션 잠금 해제 시
이 트리거는 컴퓨터 잠금이 해제되면 작업이 실행되도록 한다. 트리거의 설정을 사용하여 사용자가 컴퓨터를 잠그거나 특정 사용자가 컴퓨터를 잠글 때 작업을 트리거하도록 지정할 수 있다.
- 동작 만들기
동작 탭을 선택하여 새로 만들기를 클릭하면 새 동작 만들기 화면이 뜬다.
동작은 프로그램 시작, 전자 메일 보내기, 메시지 표시로 되어있지만 전자 메일 보내기와 메시지 표시는 사용하지 않음으로 되어있기 때문에 실제로는 프로그램 시작 밖에 사용할 수 없다.
프로그램/스크립트
는 시작할 프로그램이나 스크립트의 이름을 입력한다.인수 추가(옵션)
시작할 프로그램이나 스크립트에 명령줄 인수가 사용되는 경우 인수를 추가한다.시작 위치(옵션)
시작할 프로그램이나 스크립트를 실행하는 명령줄에 작업 디렉터리를 지정할 수 있다.
작업 스케줄러가 자동으로 실행되는 경우 어느 순간 자동 실행이 되지 않는다며
프로그램/스크립트에는 파일명만 적고 시작 위치에는 파일의 경로를 하는 글이 많았는데,
그렇게 하니까 정말 실행이 되지 않아 프로그램 시작에는 파일의 풀 경로를 적고
시작 위치(옵션)에는 작업 경로(D:\test\)를 적었다.
- 조건 설정
조건 탭을 클릭하면 조건이 표시된다.
작업 실행 여부를 결정하는 조건이기 때문에
유휴 상태 / 전원 / 네트워크에 따라 실행할 수 있다.
전원에서 컴퓨터 AC 전원이 켜져있는 경우에만 작업 시작의 체크를 해제하면 절전 모드에서도 실행 할 수 있기 때문에
체크를 해제했다.
- 설정
설정 탭을 클릭하면 작업 동작에 영향을 주는 추가 설정을 할 수 있다.
원하는 추가 설정을 선택하여 진행할 수 있다.
- 기록
초반에 스케줄러가 잘 돌아가는지 확인 하기 위해 모든 작업 기록 사용을 하고 기록을 확인했다.
설정한 스케줄러가 언제 시작하여 언제 끝났는지 표시해준다.
다 완료했으면 확인 버튼을 누른다
- 실행 테스트
등록한 작업에 마우스 오른쪽 버튼을 클릭 한 후 실행을 클릭하여
작업이 잘 작동되는지 확인한 후
지정한 시간에 맞춰 잘 작동이 되는지 확인해보면 끝이다!
마치며
보통 이런 작업은 리눅스에서 cron으로 했었는데, 윈도우 작업 스케줄러는 이번에 처음 사용해본다.
삽질했던 부분은 원하는값대로 다 설정하고 실행 버튼을 클릭하여 잘 작동되는것도 확인했는데
자동 실행이 계속 되지않아서 골탕을 먹었다.
분명 관리자 권한 다 설정해도 말이다. .
너무 답답했는데 다시 마음을 가다듬고 처음부터 다시 해보니 잘 작동하여 당황했었던 기억이 있다.
그래서 이번에 글을 쓰면서 정리해보는 시간을 가질 수 있어 재미있었다.
참고 자료
트리거 - https://forsenergy.com/ko-kr/taskscheduler/html/04ea6e78-1d5c-464d-8ba2-b6a441adbdd7.htm
동작 - https://forsenergy.com/ko-kr/taskscheduler/html/a7df21e3-cdd6-450d-94e8-58579cb7be04.htm
'IT > 기록' 카테고리의 다른 글
Github Access Token 적용 (0) | 2021.07.01 |
---|---|
윈도우 작업 스케줄러 삽질기2탄 (0) | 2021.06.18 |
React Native 절대경로 import 구현 하기 (0) | 2021.06.08 |
React Navigation 사용하기 (0) | 2021.06.07 |
React Native에서 Firebase SDK 추가 및 파이어베이스 인증, 데이터베이스, 스토리지 설정하기 (0) | 2021.06.07 |