Unraid 플러그인 추천 - User Script (Cron/작업스케줄러)

안녕하세요. 달소입니다.

 

이번글에서는 Unraid 사용시 유용한 플러그인중 하나인 User Script를 소개해드리려고합니다.
@똥쓰똥쓰님 께서 추천해주셨는데 해당플러그인은 리눅스의 Cron / 시놀로지의 작업스케줄러와 비슷한 역할로 봐주시면 됩니다.

Unraid 특성상 재부팅 되면 초기화되는 몇가지 부분이 있는데 User Scripts를 사용하면 부팅 후 어레이가 자동시작될때 스크립트를 실행시키거나 매시간,매 분마다 실행 시킬 수 있기때문에 여러가지 용도로 활용할 수 있어보입니다.

*심지어 crontab도 초기화됩니다 ㄷ

 

image.png

설치 후 동작 -> 설정으로 가면 설정이 가능합니다.

 

image.png

 

image.png

 

New Script를 생성하면 cron이 생기는데 이름을 누르고 Edit Script로 스크립트 내용을 작성해주시면됩니다.

 

image.png

 

기본적으로 bash 쉘 기준으로 작성됩니다.

 

image.png

 

작성 후 스케줄에 대한부분은 우측끝에서 설정가능합니다.

 

image.png

 

똥스똥스님께서 작성해주신 WOL 예제는 아래와같습니다.

image.png

 

 

 작성방법은 아래 내용을 참고해주시면 되겠습니다.

 


 

사용자 스크립트를 추가하려면, 플래시 드라이브의 config/plugins/user.scripts/scripts 폴더 안에 스크립트를 위한 새 폴더를 생성하세요. 이 폴더의 이름은 중요하지 않지만, 다음 문자만 사용할 수 있습니다: 영문자(A-Z, a-z), 숫자(0-9), 하이픈(-), 밑줄(_), 콜론(:), 마침표(.) 및 공백(" "). 이외의 문자가 포함되면 스크립트를 백그라운드에서 실행하는 데 문제가 발생할 수 있습니다.

폴더를 만든 후, 아래 두 개의 파일을 생성하세요:

  1. description 파일
    • 스크립트의 설명을 작성합니다.
  2. script 파일
    • 실제 스크립트를 작성합니다.
      Windows에서는 메모장(Notepad)을 사용해 이 파일을 작성할 수 있습니다. 실행 전에 DOS 형식의 줄바꿈이 자동으로 Linux 형식으로 변환됩니다. 또한 스크립트 실행 전에 #!/bin/bash가 자동으로 추가됩니다.
      단, 스크립트 내에서 사용자 입력(예: 질문에 대한 답변)을 요구하는 경우에는 작동하지 않습니다.
      스크립트에 의존성이 있는 경우(예: 다른 스크립트를 호출), 해당 경로를 전체 경로로 지정해야 합니다. 스크립트는 플래시 드라이브에서 실행되지 않기 때문입니다.
      참고로, 스크립트 실행 중에 텍스트를 출력해야 하는 경우(예: Docker 로그 크기 표시), 해당 스크립트를 백그라운드에서 실행할 필요가 없습니다.

GUI 동작을 변경하는 인라인 변수

스크립트에 인라인 변수를 추가하면 GUI에서의 동작을 변경할 수 있습니다. 사용 가능한 변수는 다음과 같습니다:

변수명 설명
description 스크립트 설명을 작성합니다.
foregroundOnly true로 설정 시, 스크립트를 백그라운드 실행 및 예약할 수 없습니다.
backgroundOnly true로 설정 시, 스크립트를 전경에서 실행할 수 없습니다.
arrayStarted true로 설정 시, 배열이 실행 중일 때만 스크립트가 실행됩니다.
name 스크립트의 이름을 지정합니다. 이 변수가 없으면 폴더 이름이 표시됩니다.
argumentDescription 스크립트 실행 시 사용자에게 인수를 입력받는 팝업을 표시합니다.
argumentDefault 위에서 입력받은 인수의 기본값을 지정합니다.

인라인 변수 사용 방법

스크립트의 해석기 줄(예: #!/bin/bash) 바로 아래에 필요한 변수를 추가하세요. 모든 변수를 사용할 필요는 없습니다.

예시:

#!/bin/bash #description=이 스크립트의 설명입니다. 
#foregroundOnly=true 
#backgroundOnly=true 
#arrayStarted=true 
#name=스크립트 이름 
#argumentDescription=인수 설명입니다. 
#argumentDefault=기본값1 기본값2

변수 파싱은 스크립트의 첫 번째 주석이 아닌 줄 이후로 중지됩니다. 따라서 인라인 변수는 스크립트 파일의 맨 위에 위치해야 합니다.


중요 사항

  • 특정 스크립트에 모든 변수를 포함할 필요는 없습니다.
  • description 파일이 있는 경우, GUI에서 해당 파일의 내용이 description 변수보다 우선합니다.

PHP 스크립트 작성자 참고사항

PHP 스크립트의 경우, <? 또는 <?PHP 줄 바로 아래에 변수 줄을 추가할 수 있습니다.
예:

<?PHP 
#description=PHP 스크립트의 설명 
#name=PHP 스크립트 이름

 

crontab이 안되서 이것도 안되나 싶었는데 괜찮은 플러그인이 있었네요.
공식플러그인이 아닌건 좀;