在一台机器上,我有一个 PHP 脚本,它使用 exec 作为用户“matlab_executor”调用 bash 脚本,AQuA_WBSv_Instance_Spool.sh,
并且不等待返回:
exec('bash -c "exec nohup setsid sudo -u matlab_executor bash /home/matlab_executor/matlab/AQUA_WBSv/AQuA_WBSv_Instance_Spool.sh testU > /dev/null 2>&1 &"');
AQuA_WBSv_Instance_Spool.sh
,位于/home/matlab_executor/matlab/AQUA_WBSv/
,看起来如下所示:
#DISPLAY=:0 ./matlab -r 'AQuA_WBSv_Main("$1")'| tr -d '\r'
echo "spooler entry with argument $1 executing as user $(whoami)" > /home/matlab_executor/matlab/AQUA_WBSv/output.txt | tr -d '\r'
并且它成功地写入到output.txt
同一目录中,内容如下:
spooler entry with argument testU executing as user matlab_executor
此外,在本地登录matlab_executor
、DISPLAY=:0 ./matlab -r 'AQuA_WBSv_Main("testU")'
在终端中运行、在同一目录中启动时,MATLAB 可以启动并成功运行通过参数 -r 提供的函数,同时在屏幕上直观地显示。
我的问题是:
当我从 bash 脚本中删除哈希时#DISPLAY=:0 ./matlab -r 'AQuA_WBSv_Main("$1")'| tr -d '\r'
,即脚本现在是:
DISPLAY=:0 ./matlab -r 'AQuA_WBSv_Main("$1")'| tr -d '\r'
echo "spooler entry with argument $1 executing as user $(whoami)" > /home/matlab_executor/matlab/AQUA_WBSv/output.txt | tr -d '\r'
为什么 MATLAB 在本地登录时无法启动或以可视方式显示,为什么我在 output.txt 中没有得到任何输出?
谢谢