将从脚本启动的shell命令的输出发送到日志文件

时间:2015-11-09 12:09:45

标签: php bash shell stdout

我有一个php页面创建了一个shell脚本,在创建它之后会启动相同的php页面,里面我有许多命令之一,我想将这个过程发送到一个不起作用而另一些实际工作的日志。 ..

<php
$scriptfile = script.sh;
$logfile = process.log;
$imgfile = image.ppm;

//this one works, it sends the output to the log file
$cmd ="Scripts/convert.sh file.doc > $logfile \\\n";
file_put_contents($scriptfile, $cmd, FILE_APPEND | LOCK_EX);

//this one does not work, it does not send the output to the log file and stops the process
$cmd = "&& for i in $(seq --format=%003.f 0 $(( $(ls -1 | wc -l) -1 )) ); do echo doing OCR on page \$i; tesseract $imgfile-\$i.ppm $imgfile-\$i -l eng; done >> $logfile";
file_put_contents($scriptfile, $cmd, FILE_APPEND | LOCK_EX);

$cmd = "/bin/sh  $scriptfile > /dev/null 2>&1 &";
shell_exec($cmd);
?>

我尝试过来自shell的not working命令,它确实将输出发送到日志文件:

for i in $(seq --format=%003.f 0 $(( $(ls -1 | wc -l) -1 )) ); do echo doing OCR on page $i; tesseract image-$i.ppm image-\$i -l eng; done >> process.log

或者这样:

for i in $(seq --format=%003.f 0 $(( $(ls -1 | wc -l) -1 )) ); do echo doing OCR on page $i >> process.log; tesseract image-$i.ppm image-\$i -l eng; done

在这里,您可以通过php创建shell脚本的样子:

#! /bin/sh
Scripts/convert.sh file.doc >> process.log \
&& for i in $(seq --format=%003.f 0 $(( $(ls -1 | wc -l) -1 )) ); do echo doing OCR on page $i; tesseract image-000.ppm image-$i -l eng; done >> process.log

所以我的问题是,什么可能是错的,我已经尝试了许多不同的事情,但不幸的是没有成功,任何帮助或建议将非常受欢迎!谢谢你们!

0 个答案:

没有答案