본문 바로가기
컴퓨터활용

[윈도우 스케줄러] 시스템 종료&종료취소 스케줄러 만들기

by 황금웃음만두 2020. 1. 18.

컴퓨터를 자동으로 종료하고 시작하는 스케줄러를 만드는 방법을 설명하겠습니다

 

사무실 출근시간이 09:00인데, 사무실 컴퓨터는 CMOS에서 컴퓨터가 켜지는 POWER 옵션을 설정할 수 있어서

 

08:50에 전원을 키는 설정을 해두었습니다. 09:00에 사무실에 도착하면 윈도우 로그인만 하면 바로 부팅시간을 기다리지 않아도 되기 떄문입니다(워크스테이션이라 부팅이 2~3분정도 소요되서 답답하여 설정하였습니다)

 

 

다만 출장이나 주말이면 사무실에 나오지 않을때 PC가 무의미하게 계속 켜져있어야 하므로 자동종료 스케줄을 설정하였습니다

 

자동종료 스케줄의 시나리오는 2개가 있습니다

 

1. 컴퓨터를 키고 로그인하지 않을 경우

 1) 컴퓨터를 켠다

 2) OS가 켜지고 컴퓨터 1시간 뒤 종료 스케줄이 실행된다

 3) 로그인하지 않고 1시간이 지나면 시스템이 자동으로 종료된다

 

2. 컴퓨터를 키고 로그인하지 않을 경우 시스템을 종료한다

 1) 컴퓨터를 켠다

 2) OS가 켜지고 컴퓨터 1시간 뒤 종료 스케줄이 실행된다

 3) 로그인하면 1시간 뒤 종료 스케줄을 취소한다

 

 

위 경우를 충족하면 출장이나 주말 등 사무실에 나오지않을 경우 잠깐 켜져있다가 자동으로 종료되도록 할 수 있습니다

 

 

 

 

위와 같이 세팅하는 방법은 윈도우 프로그램의 작업 스케줄러를 활용하는 방법입니다

 

 

실행은 실행에서 taskschd.msc를 입력한 후 확인을 누룹니다

 

 

 

차례대로 따라하세요

 

# 자동종료 스케줄 등록

 

 

자동종료 스케줄은 os가 가동된 후 1시간 이내로 시스템을 종료하는 명령어를 시작합니다

 

위 트리거는 시스템 시작시, 동작은 shutdown /s /f /t 입니다

 

/t 옵션은 종료시간을 초단위로 설정할 수 있습니다

 

 

 

 

 

작업만들기 > 사용자 또는 그룹 변경

 

사용자 또는 그룹 선택 > 고급

 

사용자 또는 그룹 선택 > 고급 > 검색결과(SYSTEM)

 

사용자 또는 그룹 선택 >SYSTEM 입력확인 > 확인

 * SYSTEM 권한을 주는 이유는 최상위 권한에서 자동종료 프로그램 실행을 보장하기 위함입니다

 

트리거 >새로 만들기

 

트리거 >새로 만들기 > 시작할 때 > 확인

 

동작 > 새로만들기

 

동작 > 새로만들기 > 프로그램 시작 > 찾아보기

동작 > 새로만들기 > 프로그램 시작 > 찾아보기

 > C:\Windows\SYSTEM32 > shutdown.exe

동작 > 새로만들기 > 인수등록 > /s /f /t 3600 

                                                  * /t 3600은 3600초라는 의미

동작 > 확인 

 * 조건 ,설정 탭 변경사항 없음

 

 

 

 

 

# 종료해제 스케줄 등록

 

종료 해제 스케줄은 os가 가동된 후 1시간 이내로 사용자가 로그인하면 종료가 해제되는 프로그램을 스케줄에 등록합니다

 

위와 동일한 내용이 이어지므로 핵심 부분은 트리거, 동작입니다

 

트리거는 로그인시 동작하게 만들고, 동작은 shutdown /a 명령을 입력합니다

 

shutdown의 /a옵션은 자동 종료를 취소하는 명령어입니다

 

 

 

작업 만들기 > 일반

트리거 > 새로 만들기

 

작업 지연시간을 넣어주는 이유는  

 

해제 스케줄에서 0x45C 이벤트가 발생하기 때문인데 

 

종료 전에 해제스케줄이 실행되기 때문입니다

1116 (0x45C) ERROR_NO_SHUTDOWN_IN_PROGRESS: 
Unable to abort the system shutdown because no shutdown was in progress.

 

이를 방지하기 위해 작업 지연시간을 설정합니다

 

컴퓨터 성능에 따라 종료프로그램이 늦게 실행되는 경우가 있어 성능이 느릴경우 지연시간을 3분까지 늘리는걸 권장드립니다

 

 

 

 

 

 

실제로 동작해보고 작업스케줄러에서 프로그램의 작동여부를 확인합니다

 

주로 권한 문제로 작동하지 않으므로 작업 이력을 보고 실패이유를 찾아서 스케줄 로직을 보강합니다

 

 

 

이상으로 포스팅을 마칩니다

댓글