nohup运行matlab 命令产生了Bad file descriptor 和 Warning: “Error reading character from command line” 的错误
错误原因是nohup下执行matlab的文件的命令格式错误;
原输入为:
nohup matlab -nodesktop -nosplash -nodisplay -r main >log.txt 2>&1 &
以上命令的意思是,服务器后台运行main.m文件,对于一般情况下,执行没有问题,当main.m文件中涉及一些文件的读取及保存操作时会输出Bad file descriptor 和 Warning: “Error reading character from command line” 的错误。
把命令改为:
nohup matlab -nodesktop -nosplash -nodisplay < main.m >log.txt 2>&1 &
问题得到解决。
解释一下:“>log.txt” 指把输出的内容重定向到log.txt中,2>&1 的意思是把错误信息也输入到log.txt中,2指的是标准输入输出错误(stderr),1指的是标准输出(stdout),2>&1意思是2等同于1输出,最后的&是后台运行的意思,与nohup命令合在一起使用。