#、$ 和 -l 命令的用途是什么?

#、$ 和 -l 命令的用途是什么?

另外,以下是我收到的 .bat 文件的一部分。我以为该文件格式是针对 Windows 脚本的,但下面是 Unix shell 脚本,不是吗?那么这和 .sh 文件有什么区别呢?

#PBS  -l mem=900mb,walltime=25000:00:00,cput=25000:00:00,nodes=1:ppn=1
cd $PBS_O_WORKDIR

./sample_file.x > tmp

答案1

这是一个 shell 脚本文件(您称之为“sh 文件”)。但是,它还包含以下指令:PBS 调度程序。这是一个经常出现在高性能集群中的系统,其中多个用户需要能够提交作业,然后将作业放入排队系统并在资源可用时启动。

一般来说,shell 脚本中以 a 开头的任何行#都是注释,会被 shell 脚本解释器(例如 bash)忽略。这最常用于注释代码,但一个著名的例外是舍邦线(例如#!/bin/bash)会被 shell 解释器忽略(以 开头#),但会被内核读取以决定应该向哪个解释器提供脚本。

PBS 使用类似的方法:#PBS在为 shell 脚本中描述的作业设置参数时,PBS 会读取注释。所以,这一行:

#PBS  -l mem=900mb,walltime=25000:00:00,cput=25000:00:00,nodes=1:ppn=1

告诉 PBS 在单个节点上使用 900M 内存运行此程序,无论各种选项可能意味着什么。

最后,这cd $PBS_DIRECTORY是一个普通的 shell 命令。$PBS_DIRECTORY是一个变量,大概已被设置为指向应执行工作的目录。因此,脚本的第一步是cd进入该目录,移动到其中,然后运行sample_file.x位于该目录中的脚本。

有关更多详细信息,请咨询您正在使用的 PBS 集群的管理员。

答案2

它看起来确实像一个 shell 脚本。如果是这样,# 就是注释的开头。在该脚本中,$用于变量替换,即$PBS_O_WORKDIR被环境变量PBS_O_WORKDIR的值替换。-l不是命令。

我不知道为什么 shell 脚本被命名为 Something.bat,但你可以随意命名它。扩展名没有任何意义。

相关内容