那个是一个奇怪的,我不知道在哪里寻找答案。
我有一个scriptname.sh
脚本,我手动启动屏幕会话。这个scriptname.sh调用一个单独的PHP脚本,该脚本依次执行如下命令:
$proc = popen("su username -c 'timeout 120 phantomjs --proxy=".$ip.":".$port." --cookies-file=/some/path/cookies/".$filename." /some/path/bot.js \"".$firstParam."\" \"".$secParam."\" '", 'r');
在上面的示例中,一切都很好并且运行顺畅。
但是,我希望自动化这个过程(cron),让我自己不必在服务器重启时手动执行所有操作。
这就是问题所在。当我通过screen命令执行脚本时,如下所示:
screen -dmS screenname /path/to/scriptname.sh
变量$ip
和$port
未传递到命令行。很奇怪$filename
,$firstParam
和$secParam
传递得很好。实际的scriptname.sh执行并在创建的屏幕内运行,但没有提到的PHP变量。他们在这个过程的某个地方迷路了。 所以ps aux
给出了这个输出:
sh -c su www-data -c 'timeout 120 phantomjs --proxy=: --cookies-file=/some/path/cookies/cookiename.txt /some/path/bot.js "firstparam" "secondparam"
su www-data -c timeout 120 phantomjs --proxy=: --cookies-file=/some/path/cookies/cookiename.txt /some/path/bot.js "firstparam" "secondparam"
sh -c timeout 120 phantomjs --proxy=: --cookies-file=/some/path/cookies/cookiename.txt /some/path/bot.js "firstparam" "secondparam"
timeout 120 phantomjs --proxy=: --cookies-file=/some/path/cookies/cookiename.txt /some/path/bot.js firstparam secondparam
phantomjs --proxy=: --cookies-file=/some/path/cookies/cookiename.txt /some/path/bot.js firstparam secondparam
而不是:
sh -c su www-data -c 'timeout 120 phantomjs --proxy=117.164.2.159:8123 --cookies-file=/some/path/cookiename.txt /some/path/bot.js "http://firstparam.is.url" "http://secparam.is.url.too" '
su www-data -c timeout 120 phantomjs --proxy=117.164.2.159:8123 --cookies-file=/some/path/cookiename.txt /some/path/bot.js "http://firstparam.is.url" "http://secparam.is.url.too"
sh -c timeout 120 phantomjs --proxy=117.164.2.159:8123 --cookies-file=/some/path/cookiename.txt /some/path/bot.js "http://firstparam.is.url" "http://secparam.is.url.too"
timeout 120 phantomjs --proxy=117.164.2.159:8123 --cookies-file=/some/path/cookiename.txt /some/path/bot.js http://firstparam.is.url http://secparam.is.url.too
phantomjs --proxy=117.164.2.159:8123 --cookies-file=/some/path/cookiename.txt /some/path/bot.js http://firstparam.is.url http://secparam.is.url.too
问题是 - 为什么以及如何解决这个问题?非常感谢任何帮助。我是以错误的方式逃避角色......?此外,任何优化提示都非常受欢迎。