今年早些时候,我在我的树莓派上安装了 octoprint 来控制我的 3D 打印机。
我已经能够使用 octoprint 让 pi 同时控制 2 台打印机。我还添加了第二个摄像头(USB)来查看第二台打印机。我设法找到一种方法来启动第二个相机并编辑 octoprint 以查看两者之间的差异。
我唯一的问题是每次我再次启动树莓派时我都必须更改为不同的工作目录:
cd ~/mjpg-streamer
然后启动第二个摄像头:
./mjpg_streamer -i "./input_raspicam.so -fps 5" -o "./output_http.so -p 8090"&
我希望能够编写一个脚本来在启动时启动相机,这样我就不必每天通过 ssh 到我的树莓派、登录并发送命令。我发现了很多有关编写启动脚本的信息,但没有发现有关更改其中的工作目录的信息。
我一直用它来编写启动脚本(不成功):
sudo nano /etc/init.d/startsecondcamera
答案1
让启动脚本执行cd
before running操作mjpg_streamer
,就像您手动执行的操作一样:
#!/bin/sh
cd /home/geilisa/mjpg-streamer
./mjpg_streamer -i "./input_raspicam.so -fps 5" -o "./output_http.so -p 8090"
这是假设您的主目录是/home/geilisa
.
您不能~
在脚本中使用,因为它可能由 root 运行。如果以 root 身份运行实用程序存在问题,请sudo -u gelisia ./mjpg_streamer ...
在脚本中使用以用户身份运行它gelisia
。
另一种方法是添加一个在启动时运行的 cron 作业:
@reboot cd /home/geilisa/mjpg-streamer && ./mjpg_streamer -i "./input_raspicam.so -fps 5" -o "./output_http.so -p 8090"
使用命令将其添加到您的 crontab 中crontab -e
。这将打开一个带有 crontab 的编辑器(可能是一个空文件)。添加以上行,保存并退出。
据我所知,大多数 cron 允许使用@reboot
(和@hourly
等@daily
)而不是通常在实际命令之前的五个作业调度列。