我有一个非常简单的问题。
我创建了多个运行 3 或 4 个 MATLAB 脚本的计划 bash 文件。像这样:
cat /pathtobash/bash_script.sh
#!/bin/bash
~/path/run_mat_script.sh ~/path2/matlab matlab_script
~/path/run_mat_script.sh ~/path3/matlab matlab_script2
~/path/run_mat_script.sh ~/path2/matlab matlab_script3
一个(或多个)bash 脚本中的 MATLAB 脚本之一没有按预期运行,只是"挂起"
如何找出哪个失败了?
我尝试了"top"和"ps"命令,它们只是告诉我 MATLAB 命令正在运行。
例如:
ps ax | grep MATLAB
498 ? Sl 45:00 /opt/matlab/bin/glnxa64/MATLAB -nodisplay -nosplash
2059 ? Sl 32:35 /opt/matlab/bin/glnxa64/MATLAB -nodisplay -nosplash
4098 ? Sl 14:33 /opt/matlab/bin/glnxa64/MATLAB -nodisplay -nosplash
5690 pts/9 S+ 0:00 grep MATLAB
29409 ? Sl 70:20 /opt/matlab/bin/glnxa64/MATLAB -nodisplay -nosplash
29797 ? Sl 69:10 /opt/matlab/bin/glnxa64/MATLAB -nodisplay -nosplash
32233 ? Sl 50:00 /opt/matlab/bin/glnxa64/MATLAB -nodisplay -nosplash
谢谢你的帮助
我会尝试在每次调用 bash 后打印最后一个 PID,然后您可以将每个正在运行的脚本与唯一的标识号匹配。
检查此示例:https://stackoverflow.com/a/18123333/6404262
我会做这样的事情。
./proc1 &
proc_1=$!
./proc2 &
proc_2=$!
#Wait for processes to finish
if `echo wait $proc_1 $proc_2`; then
echo success
else
echo "A proc failed, either: $proc_1 $proc_2"
fi
#Check exit status
echo $?
当然,您可以在创建PID时使用echo "Pid:$proc_2"
打印PID。