我想从CentOS linux上的shell脚本运行一些fortran代码。我这样编译了fortran文件:gfortran -ffixed-line-length-none -O3 -o fortran_file.x fortran_file.f
,然后在.scr文件中有以下代码行:timeout {$maxtime}s fortran_file.x
,其中maxtime作为外部参数传递。该代码在另一台计算机上运行良好,因此我很确定没有任何(重大)错误,但是当我以./code.scr
的身份运行.scr代码时,出现此错误:timeout: failed to run command ‘fortran_file.x’: No such file or directory
,尽管{ {1}}显然与.scr代码位于同一目录中。有谁知道我该如何解决?谢谢!
答案 0 :(得分:1)
程序timeout
只会执行您提供的命令:
NAME
timeout - run a command with a time limit
SYNOPSIS
timeout [OPTION] DURATION COMMAND [ARG]...
timeout [OPTION]
DESCRIPTION
Start COMMAND, and kill it if still running after DURATION.
您的命令很简单
fortran_file.x
仅当在可执行文件搜索路径($PATH
)中可以找到程序时,它才会启动程序。显然,事实并非如此。因此,您需要将工作目录添加到$PATH
,
export PATH="$(pwd):$PATH"
或者更好的是,只需使用./
来引用工作目录中的程序,
timeout {$maxtime}s ./fortran_file.x
如果您的原始行在其他系统上工作,则可能是由于工作目录位于$PATH
中,或者由于某种非典型外壳将命令解释为您所期望的(Windows这样做了,对于实例)。