Я пытаюсь сделать снимок с помощью своей веб-камеры, и мне нужно зарегистрировать вывод, чтобы проверить наличие ошибок, но cron не может это сделать. Я могу сделать это из терминала, но cron работает не работает.

Вот сценарий:

#!/bin/bash
script -ac "fswebcam -c /home/webcam/webcam.conf" /data/webcam/logscript.txt

Crontab:

@reboot mv /home/webcam/tmp/* /home/webcam/tmp_lost/
* * * * * sh /data/webcam/script.sh > /data/webcam/log.txt 2>&1

Терминальный выход:

[webcam@raspberry-pi webcam]$ sh /data/webcam/script.sh 
Script started, file is /data/webcam/logscript.txt
--- Opening V4L2:/dev/video0...
/dev/video0 opened.
Setting Brightness to 0 (50%).
Setting Contrast to 19 (20%).
--- Capturing frame...
Skipping 50 frames...
Timed out waiting for frame!
Capturing 1 frames...
Timed out waiting for frame!
Captured frame in 0.00 seconds.
No frames captured.
Script done, file is /data/webcam/logscript.txt

logscript.txt (генерируется командой script) при запуске из терминала:

[webcam@raspberry-pi webcam]$ cat logscript.txt 
Script started on ke 21. elokuuta 2013 21.10.52
--- Opening V4L2:/dev/video0...
/dev/video0 opened.
Setting Brightness to 0 (50%).
Setting Contrast to 19 (20%).
--- Capturing frame...
Skipping 50 frames...
Capturing 1 frames...
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0xba 0x28
Captured 51 frames in 3.91 seconds. (13 fps)
--- Processing captured image...
Flipping image horizontally.
Flipping image vertically.
Putting banner at the bottom.
Setting banner background colour to #FF000000.
Setting banner line colour to #FF000000.
Setting banner text colour to #FFFF00.
Setting font to luxisr:12.
Setting timestamp "%d.%m.%Y %H:%M".
Writing JPEG image to '/home/webcam/tmp.jpg'.

Script done on ke 21. elokuuta 2013 21.10.57

Запуск через cron. Выход Cron -> log.txt

[webcam@raspberry-pi webcam]$ cat log.txt
Script started, file is /data/webcam/logscript.txt
Script done, file is /data/webcam/logscript.txt
--- Opening V4L2:/dev/video0...
/dev/video0 opened.
Setting Brightness to 0 (50%).
Setting Contrast to 19 (20%).
--- Capturing frame...
Skipping 50 frames...
Capturing 1 frames...
gd-jpeg: JPEG library reports unrecoverable error: Not a JPEG file: starts with 0x8e 0x80
Captured 51 frames in 3.38 seconds. (15 fps)
--- Processing captured image...
Flipping image horizontally.
Flipping image vertically.
Putting banner at the bottom.
Setting banner background colour to #FF000000.
Setting banner line colour to #FF000000.
Setting banner text colour to #FFFF00.
Setting font to luxisr:12.
Setting timestamp "%d.%m.%Y %H:%M".
Writing JPEG image to '/home/webcam/tmp.jpg'.
Script started, file is /data/webcam/logscript.txt

Файл logscript.txt пуст после Cron, и это проблема. Как вы можете видеть: при запуске из cron команда script запускается и выполняется до того, как произойдет какой-либо вывод. Когда в терминале это хорошо. Кто-нибудь знает, почему это происходит?

1 ответ1

0

Когда sh вызывается как sh /data/webcam/script.sh > /data/webcam/log.txt 2>&1 , sh будет интерпретировать /data/webcam/script.sh как командный файл, а все остальное - как аргументы к нему, включая , возможно, операторы перенаправления.

Заставьте sh интерпретировать '/data/webcam/script.sh > /data/webcam/log.txt 2>&1' как команду:

sh -c '/data/webcam/script.sh > /data/webcam/log.txt 2>&1'

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .