레벨에 따른 Upstart 이벤트

레벨에 따른 Upstart 이벤트

Upstart는 이벤트 인수를 기반으로 작업 시작을 지원합니다.

start on custom-event NAME=foo

custom-event이 명령은 가 내보내지고 인수에 NAME값이 있을 때만 작업을 시작합니다 foo.

또한 일련의 인수에서 시작하는 방법을 제공합니다.

start on custom-event QUANTITY=[12]

custom-event이는 방출된 인수에 QUANTITY1또는 이 있을 때만 작업을 시작합니다 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° 이상일 때 시스템이 부팅되는 경우에 이 작업을 수행해야 합니다.

관련 정보