Я пытаюсь запустить новый экран с PHP использование сценария shell_exec()
, команда, которую я запускаю, использует sudo
т.е. sudo screen -dmS [name] ....
пока я могу убить экраны используя sudo screen -S [name] -X quit
отлично, я не могу создать новый экран с заданным именем, есть идеи, почему? (Кстати, я добавил своего пользователя в sudoers)
Во-первых, если вы выполняете скрипт, убедитесь, что в скрипте установлен флаг выполнения, если это необходимо; если не вопрос, который я не подозреваю ….
Это весьма вероятно, проблема с вашей средой PATH.
Когда вы запускаете новый сеанс экрана с вашей программой для запуска, вы порождаете новую среду с настройками сеанса по умолчанию; что это значит, что ни ваш .bashrc
ни .profile
или любые сценарии настройки оболочки будут запущены до запуска сценария.
Здесь я предполагаю, что ваш сценарий выполняет бомбардировку с путем, который существует в вашей пользовательской переменной PATH, но отсутствует в переменной PATH сеанса экрана. Либо переопределите путь поиска, либо полностью укажите путь ко всем исполняемым файлам, используемым в скрипте.
Попробуйте запустить экран с -L
Это создаст файл screenlog.0 в вашем текущем рабочем каталоге, он будет содержать содержимое stderr и stdout из сеанса экрана, даже если оно внезапно завершится.
screen -dmLS anything /path/to/script
cat ./screenlog.0
Других решений пока нет …