특정 셸 프로세스에서 가끔 실행되도록 스크립트를 예약할 수 있나요?

특정 셸 프로세스에서 가끔 실행되도록 스크립트를 예약할 수 있나요?

cron은 가끔씩 실행되는 프로그램을 예약하는 데 사용할 수 있습니다. 그러나 기존 쉘 프로세스에만 국한된 것은 아닌 것 같습니다.

특정 bash 프로세스의 상태에 액세스하는 스크립트(예: 스크립트를 통해 실행의 출력 jobsdirs셸의 출력에 액세스 source)가 있는 경우 특정 bash 프로세스에서 가끔 실행되도록 예약하려면 어떻게 해야 합니까?

감사해요.


업데이트: 두 답변 모두 실제로 기존 bash 프로세스 상태에 대한 직접 액세스를 제공하지 않습니다. 상위 셸 프로세스의 일부 상태 정보를 하위 셸 프로세스로 간접적으로 복사할 수 있습니다. 왜 수락했는지 기억이 나지 않습니다.

답변1

무엇을 하고 있는지 완전히 확신할 수는 없지만, 어떤 작업을 수행하는 백그라운드 작업을 시작한 다음 X초를 기다린 다음 반복할 수 있습니다.

( while : ; do echo hello ; sleep 10 ; done ) &

답변2

date 명령을 사용하여 절전 작업 기간을 동적으로 조정할 수 있습니다.

now() { date '+%s'; }
next() { date -d $(date -d "1 hours" '+%H:00:00') '+%s'; }

( while : ; do echo "Your Tasks Here" ; sleep $(next) - $(now) ; done ) $ 

next() 함수 내부의 날짜 형식은 정시에 실행되도록 구성됩니다. 15분마다 실행되도록 하려면 다음과 같이 조정할 수 있습니다.

next() { date -d $(date -d "15 minutes" '+%H:%M:00') '+%s'; }

또한보십시오:다음 시간의 초를 찾는 Linux 날짜 명령

참고: 절전 작업은 백그라운드에서 발생하므로 위 스크립트를 종료하는 것은 약간 짜증나는 일입니다. PID를 통해 종료하거나 루프 작업을 배경화하지 않는 것을 고려하십시오.

관련 정보