为具有处理器 ID 和时间步长的文件提供名称应包含在文件名中

为具有处理器 ID 和时间步长的文件提供名称应包含在文件名中

我在用福尔坦语言,我想给出文件名,例如它应该包括创建该文件的处理器的处理器 ID 以及创建该文件时的时间步变量。由于文件名应采用以下形式*

文件名_处理器ID_时间步长

例如。 file_00001_001,其中
file -- 文件名,
00001 -- 处理器 ID,
001 -- 时间步长

答案1

要获取进程在其中运行的核心编号,您可以ps与 option 一起使用ps -o psr -p PID

PID要获取正在运行的进程(脚本)的当前信息,您可以使用$$.

要获取您想要的任何格式的时间,您可以使用date,例如timestamp使用 format use获取时间date +"%s"

例如:

filename="file"
script_PID="$$"
core_id="$(ps -o psr -p $script_PID  | tail -n1)"
timestamp="$(date +%s)"
touch "$filename_$core_id_$timestamp"

结果:

file_3_1485412526

答案2

1)在Fortran中要获取进程ID,可以使用getpid函数: https://gcc.gnu.org/onlinedocs/gfortran/GETPID.html

2)将计算出的文件名写入具有格式的字符串中

这是一个例子:

program test
  implicit none
  character*(40) :: filename
  integer :: pid, getpid, timestep
  pid = getpid()
  timestep=1

  write(filename,'(''file_'',I5.5,''_'',I3.3)') pid, timestep

  open(unit=10,file=trim(filename),STATUS='UNKNOWN')
  write(10,*) 'hello'
  close(10)

end

相关内容