
Upstart는 이벤트 인수를 기반으로 작업 시작을 지원합니다.
start on custom-event NAME=foo
custom-event
이 명령은 가 내보내지고 인수에 NAME
값이 있을 때만 작업을 시작합니다 foo
.
또한 일련의 인수에서 시작하는 방법을 제공합니다.
start on custom-event QUANTITY=[12]
custom-event
이는 방출된 인수에 QUANTITY
값 1
또는 이 있을 때만 작업을 시작합니다 2
.
관계 연산자를 제공하는 방법을 알 수 없습니다.
start on coretemp TEMP>60
stop on coretemp TEMP<50
여기서 아이디어는 CPU 코어 온도가 너무 커지면 이 작업(실제로는 작업)을 시작하는 것입니다.
Upstart가 아직 산술 관계 연산자를 지원하지 않더라도 놀라지 않을 것입니다. 그러나 이 구문도 작동하지 않습니다.
start on coretemp TEMP=[60,61,62,63,...,79,80]
stop on coretemp TEMP=[30,31,32,33,...,49,50]
내가 전혀 의도하지 않았던 일을 신생기업에게 시키려고 하는 것은 아닌가?
지금까지 실행 가능한 유일한 솔루션은 온도 모니터링 데몬이 사용자 지정 이벤트를 생성하도록 하는 것입니다.
coretemp-above-60
coretemp-below-50
답변1
제가 보기에는 무뚝뚝하게 "당신이 잘못하고 있어요."라고 말하는 것 같습니다. :)
시작 스크립트에는 구성 논리가 없어야 하며 구성 파일에 있어야 합니다. 따라서 온도 모니터링 데몬은 해당 중단점이 무엇인지 지정하는 구성 파일을 내보내고 보유 coretemp-too-hot
해야 합니다. coretemp-nominal
이렇게 하면 시작 파일을 편집할 필요 없이 구성 파일(필요한 경우 여러 앱에서 볼 수 있는 한 곳)의 값만 변경하면 됩니다.
아니면 나를 무시하고 싶다면(당신 마음대로 하세요!) 다음을 시도해 보세요.
start on coretemp TEMP=[678][0123456789]
stop on coretemp TEMP=[34][0123456789]
내가 생각하기에 당신이 얻을 수 있을 만큼 가까운 것입니다.
답변2
start/stop on
저는 여전히 Upstart의 조건 과 함께 사용할 관계 연산자를 갖고 싶습니다 . 그러나 문제를 너무 많이 생각한 것 같습니다.
내 해결책은 온도 모니터링 데몬이 각 변화 정도에 따라 coretemp 이벤트를 내보내도록 하는 것이었습니다. 즉, 온도가 50°에서 55°로 올라가면 데몬은 51, 52, 53, 54, 55를 방출합니다. 그러면 start on
로스팅 프로그램의 조건은 간단해집니다.
start on coretemp TEMPERATURE=60
stop on coretemp TEMPERATURE=50
exec cpuroast
유일한 단점은 시작 시 스크립트가 여러 온도 이벤트를 발생시킨다는 것입니다. 내 경우에는 25°와 초기 온도 사이의 모든 온도입니다. 주변 온도가 60° 이상일 때 시스템이 부팅되는 경우에 이 작업을 수행해야 합니다.