我想知道是否有某种方法可以同时具有路径单元和计时器的功能。这个想法是,如果在系统上找到路径,但仅在上午 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