我正在尝试使用shell_exec()
从PHP脚本启动一个新屏幕,我正在运行的命令正在使用sudo
,即sudo screen -dmS [name] ....
虽然我能够使用sudo screen -S [name] -X quit
完全正确杀死屏幕,但我无法创建一个具有给定名称的新屏幕,有什么想法吗?(顺便说一句,我已经将我的用户添加到了 sudoers 中)
首先,如果您正在执行脚本,请确保该脚本设置了执行标志(如果需要); 如果不是我不怀疑的问题......
这很可能是环境 PATH 的问题。
当您使用要运行的程序启动新的屏幕会话时,您将生成一个具有默认会话设置的新环境;这意味着您的.bashrc
、.profile
或任何 shell 自定义脚本都不会在启动脚本之前运行。
我在这里的假设是,您的脚本正在使用存在于用户 PATH 中的路径轰炸,但不在屏幕会话的 PATH 上。重新定义搜索路径,或完全限定脚本中使用的所有可执行文件的路径。
尝试使用-L
启动屏幕
这将在您当前的工作目录中创建一个文件screenlog.0,这将包含屏幕会话中的 stderr 和 stdout 的内容,即使它突然退出。
screen -dmLS anything /path/to/script
cat ./screenlog.0