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

おすすめ記事