운영 체제가 시작된 후 애플리케이션을 시작한 다음 1시간마다 애플리케이션을 다시 시작합니다.

운영 체제가 시작된 후 애플리케이션을 시작한 다음 1시간마다 애플리케이션을 다시 시작합니다.

부팅 후 바로 애플리케이션을 실행할 수 있는 방법을 찾고 있습니다. 이 애플리케이션은 1시간 후에 시간 초과됩니다. 초기 시작 후 1시간(초기 애플리케이션 시간 초과 후)에 애플리케이션의 다른 인스턴스를 시작하고 싶습니다. 나는 Cron이 이 작업을 수행하도록 (영리하게) 구성될 수 있다고 생각했습니다. 부팅 시 시스템 시계를 00:00:00으로 재설정한 다음 Cron을 정상적으로 실행하는 것 외에 다른 방법이 있습니까? 미리 감사드립니다.

고쳐 쓰다:maulinlawn의 제안에 따라 Systemd.service 접근 방식을 사용했습니다. 특히 /usr/bin/startVideo/startVideo.py에 Python 스크립트의 복사본을 배치했습니다. 그런 다음 /lib/systemd/service/startVideo.service에 서비스 파일을 만듭니다. 이 파일은,

[Unit]
Description=starts video recorder

[Service]
Type=simple
ExecStart=/usr/local/bin/startVideo/startVideo.py
Restart=always

[Install]
WantedBy=multi-user.target

결국 나는 도망쳤고,

sudo systemctl enable startVideo.service

등록 서비스. 모니터나 키보드가 연결되지 않은 상태에서 카메라에 연결된 Raspberry Pi3에서 실행됩니다. 저는 연중무휴 24시간 비디오를 녹화할 수 있고 전원이 꺼지면 스스로 재부팅할 수 있는 시스템을 찾고 있습니다. 다른 제안? 이 유형의 응용 프로그램에 대해 "WantedBy"가 올바르게 구성되어 있습니까?

Crowell의 이 솔루션과 지침에 대해 많은 감사를 드립니다.

답변1

귀하의 설명을 토대로systemd(내 모든 컴퓨터에 이것이 있기 때문에) 파일을 사용하여 .service응용 프로그램을 시작하십시오..

서비스 파일에서 간단한 while 루프로 애플리케이션을 래핑하는 스크립트를 가리킬 것입니다. 이 같은:

#!/bin/sh

while true; do
    /path/to/your/application
done

이렇게 하면 응용 프로그램이 종료("시간 초과")될 때마다 루프의 조건이 항상 true이기 때문에 자체적으로 다시 시작됩니다.

이것은 하나의 방법이고 제가 생각할 수 있는 가장 간단한 방법입니다. 다른 방법도 있을 수 있습니다!

답변2

systemd를 좋아하지 않는 사람들에게는 /var/run에 있는 pidfile을 사용하여 /etc/rc.local(예: Debian)에 있는 프로그램(셸 래퍼)을 호출하는 것이 좋은 선택입니다. 이와 같은 것 while true ; do $_cmd >/dev/null 2>&1 & sleep 3600 ; pkill $( cat /var/run/pgm.pid ) ; rm /var/run/pgm.pid ; done- 데몬이 자체 PID를 작성할 수 있다고 가정합니다. 그렇지 않으면 하위 프로세스가 아닌 상위 프로세스에만 신호를 보내기 위해 일부 ps text-fu가 필요합니다. 만 PS.

관련 정보