bash — запуск скрипта sh из php внутри экрана

Тот странный, и я не уверен, где искать ответы.

у меня есть 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 -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

Вопрос в том — почему и как это исправить? Любая помощь будет принята с благодарностью. Я избегаю символы неправильно …? Кроме того, любые советы по оптимизации приветствуются.

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]