我使用Raspberry 2和Raspbian以及owncloudcmd。要运行owncloudcmd,我创建了 /home/pi/owncloud.sh #!/ bin / sh的 owncloudcmd --non-interactive -n / home / pi / Pictures / picpreview / http://my_owncloud_server.de/remote.php/webdav/picpreview
当我手动删除它时(sh owncloud.sh)每个按预期工作。但是当我创建一个像这样的crontab -e时:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# ...
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
*/1 * * * * /home/pi/Pictures/preview.sh
*/1 * * * * /home/pi/owncloud.sh
另一个文件 /home/pi/Pictures/preview.sh 如下所示:
NOW=$(date +"%Y-%m-%d_%H-%M")
raspistill -q 50 -awb cloud -sh 40 -co 50 -o ~/Pictures/picpreview/$NOW.jpg
convert ~/Pictures/picpreview/$NOW.jpg[1296x972] ~/Pictures/picpreview/$NOW.jpg
picpreview中的图像不与owncloud同步。我已经做了chmod -x而且我在cron中还有另一个sh脚本可以正常工作(拍摄图像的那个)。我也尝试将crontab设置为sudo -i,但结果相同(我不认为将其作为sudo运行是必要的)
preview.sh - >作品 owncloud.sh - >不工作
有谁知道我对owncloud.sh做错了什么?
答案 0 :(得分:2)
听起来像脚本(或它使用的某个命令)依赖于在命令提示符下运行时设置的某些环境变量,但在通过cron运行时却丢失了。
默认情况下,Cron倾向于使用非常小的环境运行 - 您可以尝试在运行命令" env>的crontab中添加新行。 〜/ cronenv.txt"查看环境包含的内容。希望这能让你看到你所缺少的东西。
<强>更新强>
如果您需要设置环境变量,您可以在表单的#c; NAME = value&#34;的crontab顶部附近添加一行,或者您可以将这些声明放在命令的开头。你想跑。
例如,在这种情况下,您可以使用声明&#34; PATH = / usr / local / sbin:/ usr / local / bin:/ sbin:/ bin:/ usr / sbin:/ usr / bin :/家庭/ PI的/ dev / owncloud /客户建立/斌/&#34;
请注意,并非所有cron变体都支持第一种形式(文件顶部的单独行),特别是Arch Linux和RedHat似乎使用了一个不喜欢这样的变体。在这种情况下,您仍然可以使用第二种形式,但这意味着您必须为需要它的每个命令重复环境声明。
答案 1 :(得分:0)
好吧,就是这样,我不得不用这样的完整路径替换owncloudcmd:
#!/bin/sh
owncloudcmd --non-interactive -n /home/pi/Pictures/picpreview/ http://my_owncloud_server.de/remote.php/webdav/picpreview
进入这个:
#!/bin/sh
/home/pi/dev/owncloud/client-build/bin/owncloudcmd --non-interactive -n /home/pi/Pictures/picpreview/ http://my_owncloud_server.de/remote.php/webdav/picpreview