저는 프로그래머이며 크론에 대해 많이 알지 못하지만 이것이 가능한지 알고 싶습니다.
[option1, option2, option3]
NodeJS에서 실행되는 배열 과 스크립트가 있다고 가정 해 보겠습니다 script.js
. 매일 오전 1시에이 스크립트를 실행하고 싶습니다. 이것의 cron
명령은 다음과 같습니다.
0 1 * * * node ~/script.js
이제 까다로운 부분은 매일 옵션을 교체하고 싶기 때문에 월요일 과 같이 실행하고 싶고 node ~/script.js option1
다음 날 node ~/script.js option2
등입니다. 또한 필요할 때 옵션을 추가 / 제거 할 수 있기를 원하지만 회전은 그대로 유지해야합니다.
어떤 식 으로든 가능합니까? 노드 에서도이 작업을 수행 할 수 있다는 것을 알고 있지만 스크립트 외부 에서이 작업을 수행하고 스크립트를 그대로 둡니다.
답변
또한 필요할 때 옵션을 추가 / 제거 할 수 있기를 원하지만 회전은 그대로 유지해야합니다.
까다 롭습니다. 옵션 목록을 수정 한 후에도 회전이 그대로 유지되는 것은 무엇을 의미합니까? 결국, 당신은 목록을 완전히 재구성하고, 당신이 어디에 있는지에 대한 단서를 파괴 할 수 있습니다.
당신이 할 수있는 일은 옵션을 나타내는 파일 (파일 이름 또는 내용을 통해)이있는 디렉토리를 설정하는 것입니다. 그런 다음 cron 작업이 실행될 때마다 해당 디렉토리를 나열하고 마지막 수정 시간별로 파일을 정렬합니다. 가장 오래된 항목 인 touch
해당 파일을 수정 시간을 현재 시간으로 변경 한 다음이를 사용하여 스크립트를 실행하십시오.
#!/bin/bash
cd ~/script-options
next=$(ls -rt | head -n1)
touch -- "${next}"
node ~/script.js ${next} or $(<"${next}")
원하는 경우 cron을 위해 한 줄로 작성해도 읽을 수는 없습니다.
옵션을 추가한다는 것은 옵션 디렉토리에 새 파일을 추가하는 것을 의미합니다. 옵션을 제거한다는 것은 파일을 삭제하는 것을 의미합니다. 어느 시점에서 가장 오래된 파일이 다음에 실행될 파일이므로,주기가 끝날 때 마치 마치 실행 된 것처럼 새 옵션이 추가됩니다. 옵션을 다시 주문하려면 원하는 순서대로 터치하면됩니다.
답변
요일마다 다른 옵션을 원한다고 가정 해 봅시다. 당신은 할 수 있습니다 :
-
다음에 대해 별도의 cron 작업을 수행하십시오.
0 1 * * 0 node ~/script.js option1 0 1 * * 1 node ~/script.js option2 0 1 * * 2 node ~/script.js option3
기타…
-
이
bash
당신을 위해 원하는 옵션을 제공합니다 :0 1 * * * node ~/script.js case `date +%u` in 0 ) echo option1 ;; 1 ) echo option2 ;; 2 ) echo option3 ;; esac
(나는 후자를 실행하지 않았으므로 약간의 조정이 필요할 수 있지만 이것이 일반적인 아이디어입니다.)
답변
아니, 나는 이것을 할 수있는 확실한 방법이 없다고 생각할 수 있습니다. 날짜를 확인하고 매일 필요한 옵션으로 노드 응용 프로그램을 시작하는 간단한 쉘 래퍼 스크립트를 작성하십시오.