Systemd: 경로가 발견되면 서비스를 시작하지만 오전 9시에서 오후 6시 사이에만 가능합니다.

Systemd: 경로가 발견되면 서비스를 시작하지만 오전 9시에서 오후 6시 사이에만 가능합니다.

경로 단위와 타이머의 기능을 동시에 가질 수 있는 방법이 있는지 궁금합니다. 아이디어는 시스템에서 경로가 발견되었지만 오전 9시에서 오후 6시 사이에만 발견되면 특정 서비스를 시작한다는 것입니다.

ffmpeg현재 USB 카메라를 사용할 수 있을 때마다 시작되는 다음 경로/서비스가 있습니다 /dev/video4.

카메라 경로:

[Unit]
Description=USB Camera Stream Service Path

[Path]
PathExists=/dev/video4
Unit=camera.service

[Install]
WantedBy=multi-user.target

카메라 서비스:

[Unit]
Description=USB Camera Stream Service

[Service]
Type=simple
User=root
Group=root

ExecStart=/usr/bin/ffmpeg -f v4l2 -input_format h264 -video_size 1920x1080 -i /dev/video4 -copyinkf -codec copy -f flv rtmp://127.0.0.1/live/stream

systemctl start camera.service참고: 또한 언제든지 서비스를 수동으로 시작할 수 있기를 원합니다 .

감사해요.

답변1

가장 쉬운 방법은 아마도 systemd현재 시간을 테스트하고 지정된 범위 내에서 명령을 실행하는 스크립트를 실행하는 것입니다.

예를 들어 다음과 같은 스크립트를 만듭니다 /usr/local/bin/myscript.

#!/bin/sh
if [ $(date +%H) -ge 9 -a $(date +%H) -le 18 ]; then
    ffmpeg -f v4l2 -input_format h264 -video_size 1920x1080 -i /dev/video4 -copyinkf -codec copy -f flv rtmp://127.0.0.1/live/stream
fi

스크립트에 실행 권한을 부여해야 합니다.

sudo chmod +x /usr/local/bin/myscript

그런 다음 다음 줄을 변경하십시오 camera.service.

ExecStart=/usr/bin/ffmpeg -f v4l2 -input_format h264 -video_size 1920x1080 -i /dev/video4 -copyinkf -codec copy -f flv rtmp://127.0.0.1/live/stream

이와 관련하여:

ExecStart=/usr/local/bin/myscript

관련 정보