【发布时间】:2015-02-12 00:06:19
【问题描述】:
我正在尝试在由 php 脚本触发的 bash 脚本中运行以下两个任务。当我注释掉另一个时,这两个都正确执行,所以这显然是我错误地布置了完整工作的方式。
它们应该按顺序运行,而不是并行运行,因此第一个 exec 需要在第二个开始之前完成...
我还应该注意,变量是从触发它的 php 脚本传递的(如果它是相关的)。
#!/bin/bash
Udata1=$1
Udata2=$2
#Encode incoming audio file to 128k MP3 using avconv
exec avconv - i /var/www/html/tracks/$Udata1/$Udata2 -ab 128k /var/www/html/tracks/$Udata1/serve/$Udata2.128k.mp3;
#Encode 128k MP3 generated above to WAV using avconv
exec avconv -i /var/www/html/tracks/$Udata1/serve/$Udata2.128k.mp3 /varwww/html/dump/$Udata2.wav
exit;
我想我最终要问的是如何在同一个 .sh 脚本中运行多个 exec?
【问题讨论】:
-
a bash script being triggered from a php script请确保您非常了解这样做的安全隐患。 -
是的,我完全知道谢谢。触发这个的 php 是通过一个完全不同的 php 页面上的包含调用的。这不像只是坐在网络服务器上供访问者点击。当然知道他们在做什么和寻找的人可能会违反它,但任何网站都不是这样吗?不过,我很感谢您的建议。
-
将 PHP 配置为允许其执行操作系统进程远不如将其配置为不安全。在这种情况下,我通常设置一个标志(在数据库、文件系统等中酌情设置)或将某些内容推送到消息队列以触发外部进程运行,而不是直接启动进程。
-
这是个聪明的主意,没想到。有点像 cron 作业,等待某事告诉它运行?
-
cron 是一个很好的方法。