몇 가지 관리 시스템 명령을 실행하는 프로세스를 실행해야합니다. 프로세스가 너무 오래 실행되는 경우에 실행되는 동안 sudo 타임 스탬프를 현재 상태로 유지하려고합니다.어떻게 루비에서 비동기 루프를 실행합니까?
다음 코드가 있지만 제대로 작동하지 않는 것 같습니다.
sudo_keep_alive = Thread.start do
def sudo
sleep 5.minutes
`sudo -v`
sudo
end
sudo
end
at_exit do
sudo_keep_alive.kill
end
규칙이 있습니까?
UPDATE
의 I 스크립트를 실행할 수 없습니다 이유 루트를 가지고는, 다른 시스템이 스크립트가 루트로 실행할 수 없습니다 실행 명령입니다이다. 각 명령은 자신의 관리 명령을 실행해야합니다. 스크립트는 잠재적으로 실행하는 데 상당한 시간이 걸릴 수 있으므로 명령에서 필요로하는 이벤트에서 새로운 sudo 타임 스탬프를 유지하기 만하면됩니다.
왜'sudo'로 루비 스크립트를 실행하지 않습니까? –
별로 의미가 없습니다. 우선 당신은 그러한 해킹이 아닌,보다 체계적인 방법으로 sudo 자격 정보를 유지해야 할 것입니다. 둘째, 스레드는 주 프로세스와 동시에 죽을 것이므로 Kernel.at_exit을 사용하여 등록하는 것은 의미가 없습니다. –