Windows 10 및 11의 WSL에서 자동으로 Cron을 시작하는 방법

게시 됨: 2022-01-29
스톱워치를 들고 있는 손.
10억 사진/Shutterstock.com

Windows에는 작업을 자동화하는 여러 가지 방법이 있습니다. 가장 일반적인 도구는 Windows 작업 스케줄러이지만 WSL(Linux용 Windows 하위 시스템)을 사용하는 경우 WSL 설치를 위해 백그라운드에서 작업을 실행하는 cron 데몬도 있습니다.

Cron은 기본적으로 실행되지 않습니다.

Windows 10 및 Windows 11에서 cron은 Ubuntu와 같은 Linux 환경에 포함되어 있습니다. 문제는 WSL이 자동으로 cron을 시작하지 않는다는 것입니다. 즉, 자동화된 작업이 기본적으로 실행되지 않습니다.

이 문제를 해결하려면 명령줄을 열 때마다 수동으로 cron을 시작할 수 있지만 작업을 자동화해야 하는 도구를 수동으로 시작하는 것은 요점을 놓치고 있습니다.

다행히도 이 문제를 쉽게 해결할 수 있는 방법이 있으며 작업 스케줄러를 사용해야 합니다.

cron이 실행되고 있지 않음을 보여주는 Windows WSL 터미널 창.

Linux에서 cron을 사용하여 작업을 실행한 적이 없다면 Linux에서 작업을 예약하는 방법에 대한 이전 자습서를 확인하십시오. 여기에서는 WSL 설치에서 일부 cron 작업을 이미 생성했으며 항상 cron을 돌보는 대신 실행되도록 하는 데 도움이 필요하다고 가정합니다.

광고

이 튜토리얼에서는 sudo service 를 사용하여 cron을 확인하고 시작할 것입니다. cron은 WSL에서 가장 인기 있는 배포인 Ubuntu의 최신 빌드에서 서비스를 중지 및 시작하는 데 권장되는 방법입니다.

또한 이 자습서에서는 사용자에게 WSL 버전에 대한 관리자 권한이 있다고 가정합니다. PC의 유일한 사용자이고 스스로 WSL을 활성화했다면 관리자 권한이 있는 것입니다.

팁: 이것은 Windows 10뿐만 아니라 Windows 11의 Linux용 Windows 하위 시스템에서도 작동합니다.

관련: Linux에서 작업을 예약하는 방법: Crontab 파일 소개

리눅스 준비

가장 먼저 해야 할 일은 컴퓨터가 암호 없이 cron을 시작할 수 있도록 하는 것입니다. cron과 같은 서비스를 시작할 때 sudo service cron start 명령을 사용합니다. 그러나 그 명령에는 암호가 필요하며 Windows가 시작될 때 이 암호에 액세스할 수 없습니다. 이 문제를 해결하는 방법은 이 명령에 대한 암호 요구 사항을 끄는 것입니다.

그렇게 하려면 WSL 터미널 창을 열고 sudo visudo 를 입력합니다. 키보드에서 Enter 키를 누르고 Linux 암호를 입력한 다음 Enter 키를 다시 누르십시오. Ubuntu를 사용하는 경우 초보자에게 친숙한 Nano 명령줄 텍스트 편집기를 사용하여 "sudoers" 파일을 엽니다. Sudoers는 사용자의 권한 및 접근 권한을 변경할 수 있는 시스템 관리자용 파일입니다.

sudoers 파일 맨 아래에 다음 명령을 추가하고 Ctrl+o를 눌러 저장하고 Ctrl+x를 눌러 파일을 종료합니다.

 %sudo ALL=NOPASSWD: /usr/sbin/service cron start

이 sudoers 명령은 sudo 명령을 사용할 수 있는 충분한 권한이 있는 사용자(귀하를 포함해야 함)가 cron 데몬을 시작하는 sudo service cron start 명령을 실행하는 데 암호가 필요하지 않다고 말합니다.

광고

파일을 저장한 후 sudo service cron start 를 입력하여 명령이 제대로 작동하는지 확인할 수 있으며 암호를 묻지 않고 cron을 시작해야 합니다. 작동했다면 cron을 다시 꺼서 다음 단계에서 만들고 있는 작업이 제대로 작동하는지 테스트할 수 있습니다. 그렇게 하려면 sudo service cron stop 을 실행하십시오.

Windows 작업 스케줄러에서 Cron 설정

이것이 cron 자동화를 향한 여정의 1단계입니다. 작업 스케줄러를 사용하여 2부로 이동하겠습니다. 키보드에서 Windows 키를 누른 다음 "작업 스케줄러"를 검색합니다. "작업 스케줄러" 바로 가기를 실행합니다.

작업 스케줄러를 옵션으로 표시하는 Windows 10의 검색 결과.

시작되면 "작업"섹션을보고 "기본 작업 만들기"를 선택하십시오.

"기본 작업 만들기" 옵션을 가리키는 빨간색 화살표가 있는 Windows 10의 작업 스케줄러.

기본 작업 마법사가 열립니다. 먼저 작업의 이름을 지정하고 설명을 제공하도록 요청합니다. 여기에 원하는 것을 입력할 수 있습니다. 우리는 작업을 "cron"이라고 불렀고 설명은 "시스템 시작 시 cron을 시작하는 작업"입니다. 이제 "다음"을 누르십시오.

다음 섹션에서는 비즈니스에 대해 알아보겠습니다. 첫째, Windows는 언제 작업을 실행할지 알고 싶어합니다. "컴퓨터가 시작될 때" 라디오 버튼을 선택하고 "다음"을 클릭합니다.

"컴퓨터가 시작될 때" 옵션을 가리키는 빨간색 화살표가 있는 Windows 10의 라디오 버튼 세트.

다음 섹션에서는 "프로그램 시작"이 필요합니다. 해당 옵션은 기본적으로 선택되어 있으므로 "다음"을 클릭합니다.

프로그램 경로 및 추가 인수 텍스트 입력 상자를 가리키는 빨간색 화살표가 있는 Windows 10 작업 스케줄러의 프로그램 옵션.

광고

이제 실행하려는 프로그램인 WSL을 지정해야 합니다. "프로그램/스크립트" 텍스트 입력 상자에 다음을 입력합니다. C:\Windows\System32\wsl.exe

우리는 또한 몇 가지 인수를 추가해야 합니다. 지금까지는 WSL을 시작하는 것이지만 WSL 내부에서는 Ubuntu에 cron을 시작하도록 지시해야 하기 때문입니다. 따라서 "인수 추가" 상자에 다음을 추가합니다. sudo /usr/sbin/service cron start

완료 시 작업 속성 창을 여는 옵션을 가리키는 빨간색 화살표가 있는 Windows 10의 작업 스케줄러의 최종 작업 생성 창.

"다음"을 한 번 더 누르고 "마침을 클릭하면 속성 대화 상자 열기" 확인란을 선택한 다음 "마침"을 클릭합니다.

"사용자가 로그온했는지 여부에 관계없이 실행" 옵션을 가리키는 빨간색 화살표가 있는 Windows 작업 속성 창.

작업이 생성되었지만 모든 것이 제대로 작동하는지 확인하기 위해 마지막으로 한 가지 작업을 수행해야 합니다. 생성한 작업의 요약을 표시하는 새 창이 열리지만 로그온한 경우에만 실행되도록 설정됩니다. "사용자가 로그온했는지 여부에 관계없이 실행"이라는 라디오 버튼을 선택한 다음 "확인"을 눌러야 합니다.

이제 두 가지 방법으로 작업을 테스트해 보겠습니다. 먼저 작업 스케줄러의 기본 창에서 작업 이름이 보일 때까지 아래로 스크롤합니다. "cron"이라는 이름을 사용한 경우 목록 상단에서 찾을 수 있습니다. 작업을 마우스 오른쪽 버튼으로 클릭하고 "실행"을 선택합니다.

cron이 실행 중임을 보여주는 터미널 창.

그런 다음 WSL 터미널로 돌아가서 sudo service cron status 를 입력하면 cron이 실행 중이라고 표시되어야 합니다. 그렇지 않은 경우 이전 단계에서 모든 항목을 올바르게 입력했는지 다시 확인하십시오.

광고

첫 번째 검사에서 모든 것이 제대로 작동했다면 큰 테스트를 할 때입니다. PC를 다시 시작하고 돌아올 때 WSL 터미널을 열고 sudo service cron status 를 실행하면 cron이 현재 실행 중임을 보고해야 합니다.

축하합니다! 더 크고 자동화된 세계로 첫 발을 내디뎠습니다. 백그라운드에서 실행 중인 cron을 사용하면 WSL에서 구성한 cronjob이 자동으로 일정에 따라 실행됩니다.