Gaussian 与 GaussView 部署和排错:许可、最小权限、Scratch 与集群作业

2014 年原文记录了在 Ubuntu 14.04 上配置 Gaussian 03、Gaussian 09 与 GaussView 的个人经验。它包含启用 root 密码、以 root 运行计算、关闭 ASLR、宽泛递归修改权限等高风险做法。本文不再把这些命令当作当前方案;它们仅逐字保留在文末的惰性历史存档中。

Gaussian 和 GaussView 是许可软件。本文只适用于组织或用户已经获准使用的厂商或机构介质;不提供下载镜像、许可证绕过或复制介质的方法。真正的安装命令、可用平台和许可范围必须来自与你手中产品、版本、修订号和介质完全匹配的文档。公开页面不足以判断时,应联系许可证管理员、集群管理员或 Gaussian 技术支持,不能猜测。

安全边界:不要启用 root 密码,不要日常以 root 运行 Gaussian/GaussView,不要关闭 ASLR,不要使用 chmod -R 777、盲目的递归 chmod/chown,也不要让程序树对未获许可的用户全局可读。权限问题应定位到具体路径、属主和组后,由管理员做一次有记录、可回退的最小修改。

1. 先建立版本、许可与平台矩阵

部署前记录以下证据,不要从文件名推断版本:

必须确认 权威来源
产品与许可 Gaussian 或 GaussView、版本、修订号、二进制/源码介质、机器或站点范围、允许的用户 采购记录、签署的许可、机构许可证管理员
介质 厂商/机构来源、介质标签、交付清单,以及厂商或机构提供的校验值 授权介质及其随附文件;没有校验值就询问供应方
平台 CPU 架构、操作系统及补丁级别、必需库、并行/GPU 组件 介质中的 platform_rev.pdf 与对应安装手册;再核对公开 G16 平台表
执行环境 本机、工作站还是调度集群;核数、内存、scratch、文件系统和作业限制 机构管理员与调度器文档
图形界面 GaussView 的版本、许可、受支持桌面平台,以及 Gaussian 是否在另一台机器 GaussView 6 支持平台与机构桌面规范

先采集基础信息;分享输出前删除主机名、内部路径和许可证标识:

uname -m
cat /etc/os-release
id
umask

Ubuntu 14.04 已于 2019 年结束标准维护、于 2024 年结束常规 Ubuntu Pro 覆盖;Ubuntu 生命周期目前另列有期限有限的 Legacy add-on。它不应被当作当前通用部署基线。公开的 Gaussian 16 平台表按修订号列出特定系统;“较新的 Ubuntu”也不自动等于厂商支持。若实际平台没有明确列出,应先让厂商或机构管理员确认,不要靠关闭安全功能来强行运行。

2. 许可优先的安装与回退计划

安装前应有一张变更单,至少包含:授权人、确切介质/修订、目标主机、安装父目录、许可用户组、维护窗口、空间预算、旧版备份和回退路径。备份脚本、模块文件、站点配置与需要保留的作业数据;只有在许可证允许时才能备份安装介质或程序树,并限制备份访问。

由管理员按匹配的厂商手册完成安装。Gaussian 公开的 G16 UNIX 二进制安装说明要求先检查平台文件、选择许可组,再使用介质中的安装脚本;这是 G16 UNIX 二进制的文档,不是 g03、g09、源码版或其他修订的通用命令。GaussView 也有单独的 UNIX 安装说明,不能把 Gaussian 的程序目录或变量机械套用到 GUI。

管理员应先在准确目标上做只读清单,再执行手册中要求的有限变更。不要对一个未解析的符号链接、共享 /opt 树或用户主目录递归改属主。安装完成后,程序树应由专用管理员/服务属主和获许可组控制;普通用户只获得运行所需的读取/执行权限,不能写程序树。可用以下命令检查路径链和顶层权限:

stat -c '%A %U %G %n' "$g16root" "$g16root/g16"
namei -l "$g16root/g16"
find "$g16root/g16" -maxdepth 1 -printf '%M %u %g %p\n'

如果 namei 不可用,保留 stat 与受限深度的 find 结果。输出可能暴露内部路径,提交工单前先脱敏。发现权限不符时停止,由管理员对照许可组和厂商手册修复具体对象;不要从网上复制数字权限,也不要为了消除错误而把整棵树设为全局可读。

3. 用模块或用户配置加载环境,不切换 root

多用户服务器优先由管理员提供版本化模块,例如 gaussian/16-c02,使旧版与新版可以并存并可回退。若站点提供 Environment Modules 或 Lmod,用户可以只读检查并在当前 shell 加载:

module avail gaussian
GAUSSIAN_MODULE="site-approved/version"
module show "$GAUSSIAN_MODULE"
module load "$GAUSSIAN_MODULE"
module list
type -a g16

module show 中的根目录、初始化脚本和依赖必须与获授权修订一致。模块语法和调度器集成属于站点配置,本文不提供可直接复制的通用 modulefile。

若管理员要求使用每用户 shell 配置,下面只展示当前公开 G16 UNIX 二进制手册中的变量形状;路径是不可运行的占位符,必须用机构批准的实际位置替换,并先与对应介质手册核对:

export g16root="/path/from-authorized-media"
export GAUSS_SCRDIR="/path/to/user-owned-scratch"
. "$g16root/g16/bsd/g16.profile"

不要把它写进 /root/.bashrc,也不要为了继承变量使用 su -。g03、g09、不同 shell、源码构建和 GaussView 可能使用不同脚本;必须查相应手册。修改个人 profile 前先备份,使用新的登录 shell 验证,并能一行一行撤销。

4. Scratch 必须私有、可写且容量可观测

Gaussian 的运行文档说明 GAUSS_SCRDIR 指定 scratch 位置,异常终止可能留下文件。站点管理员应为每个用户或作业提供属主正确、不可被其他普通用户读取的目录;调度器提供的每作业本地 scratch 通常比共享程序树更合适,但生命周期和清理规则以站点政策为准。

在提交作业前只读验证:

printf '%s\n' "$GAUSS_SCRDIR"
test -d "$GAUSS_SCRDIR"
test -O "$GAUSS_SCRDIR"
test -w "$GAUSS_SCRDIR"
df -h "$GAUSS_SCRDIR"
df -i "$GAUSS_SCRDIR"

某个 test 失败、容量/索引节点不足、配额不明或路径位于会随作业删除的文件系统时,停止提交并联系管理员。不要用 root 创建随后由普通用户运行的 scratch,也不要把它设为世界可写。清理前必须确认没有活动作业并按作业 ID/属主限定范围;不要在启动脚本中无条件清空共享目录。

5. 让 Gaussian 请求与调度器分配一致

Gaussian 输入中的 %NProcShared%Mem%Chk 是作业请求,不会自动替你向调度器取得资源。Link 0 文档解释这些指令;队列中的 CPU、内存、GPU、节点和时限仍由调度器决定。

下面仅是便于讨论的假设性头部,不是推荐规模:

%NProcShared=4
%Mem=8GB
%Chk=job.chk
  • %NProcShared 不得超过该作业实际分配给此进程的 CPU;不要把登录节点的总核数当成分配量。
  • %Mem 要同时服从 Gaussian 算法需求、节点物理内存、调度器限制和同节点其他进程开销;请求超过可用内存可能导致性能恶化或被调度器终止。
  • Linda、GPU 和多节点运行需要许可证、匹配修订和站点支持;不要仅靠增加 Link 0 指令开启。
  • 用调度器批准的作业脚本加载模块并启动,不要在登录节点长期后台运行,也不要用 sudo

在已分配的作业环境中,执行形式应来自匹配手册或站点模板;常见的标准输入/输出形状是:

g16 < job.com > job.log

保留调度器作业 ID、资源请求、模块列表、输入版本和输出日志。正常结束的字符串只是一个证据,还要核对调度器退出状态、墙钟/内存使用、预期输出和科学结果。

6. Checkpoint 路径是工作流契约

Linux 作业中不要沿用 Windows 盘符路径。相对的 %Chk=job.chk 可避免把某台机器的绝对目录写进输入,但它相对于作业工作目录,因此脚本必须明确 cd 到持久项目目录。不要把需要保留的 checkpoint 只放在会被调度器清理的 scratch。

作业停止写入后再复制或归档 checkpoint,并记录校验值:

sha256sum job.chk

移动后要同步更新 %Chk/%OldChk 关系并做小规模读取验证。二进制 checkpoint 是否能跨 Gaussian 修订、平台或字节序使用,不能仅由文件名判断;按获许可版本手册或技术支持答复处理。研究输入、结构、结果和 checkpoint 可能是未公开数据,备份和工单都应遵循项目的数据分级。

7. GaussView 与计算节点分开看待

GaussView 是独立的许可 GUI。GaussView 6 页面帮助文档说明它可建立输入、启动计算并解释输出,但这不意味着任意计算节点都提供受支持桌面会话。

先确认桌面平台、显示会话和机构远程图形政策:

printf '%s\n' "${DISPLAY:-unset}"
printf '%s\n' "${XDG_SESSION_TYPE:-unset}"

显示变量为空、Wayland/X11 不匹配或远程会话受限时,不要以 root 启动 GUI,不要使用 xhost +,也不要暴露无认证的 X 服务。可在获支持的工作站上运行 GaussView、在集群运行 Gaussian,再按厂商的跨机器可视化说明传递必要结果;传输方式、数据权限和版本兼容仍以机构政策为准。

8. 证据优先的排错矩阵

现象 先收集的证据 安全处理边界
g16: command not found module listmodule showtype -a g16、确切修订 修正当前用户的模块/profile;不要切 root 或改 /root/.bashrc
Permission denied idstatnamei,判断失败的是祖先目录、文件还是 scratch 由管理员修复一个确定对象和许可组;不要递归 chmod/chown
scratch 写入、扩展或空间错误 GAUSS_SCRDIR、属主、可写性、df -hdf -i、配额、调度器清理策略 先保留日志并停止新作业;不要把所有段错误都归因于空间
线程数超过可用 CPU 调度器实际分配与 %NProcShared 缩小 Gaussian 请求或重新申请资源;不要超卖分配
segmentation fault 完整日志上下文、产品/修订、平台矩阵、CPU/库、最小复现 不关闭 ASLR;不能在支持矩阵内解释时提交厂商工单
“directory is world accessible” 程序树及祖先路径的属主、组、其他用户位 按许可组做有界修复;不要改成 777 或全局 755
checkpoint 打不开 当前工作目录、POSIX 路径、属主、文件完整性、生成它的版本 不直接删除盘符或猜路径;保留原件,在副本上验证
GaussView 无显示或崩溃 受支持平台、版本、DISPLAY/会话类型、远程方式、GUI 日志 不用 root 绕过;走机构桌面支持或厂商远程可视化路线

Linux 内核的 `randomize_va_space` 文档说明该设置控制地址空间随机化。原文把全局关闭 ASLR 当作 Gaussian 段错误修复,这是不可接受的诊断捷径。若获授权版本在列出的受支持平台上仍崩溃,应保存最小复现和日志,交给厂商判断,而不是降低整机防护。

9. 日志、更新、备份与升级回退

工单应包含产品与精确修订、介质类型、平台表条目、OS/CPU、加载模块、调度器资源、scratch 文件系统、复现输入的最小脱敏版本、输出末尾及错误前的上下文。不要上传许可证文件、介质、完整未发表结构、用户名/内部路径或其他用户数据。

升级时把新修订安装到新的版本目录和模块名,先在相同调度资源上运行厂商/机构批准的测试,再做科学回归;不要覆盖当前工作版本。保留旧模块、作业脚本、必要 checkpoint 和配置,直到结果、性能、GUI 互操作与回退演练通过。卸载或删除旧介质前确认许可与记录保留要求。

遇到下列情况应停止并升级处理:许可范围或介质来源不明;平台/修订未列出;需要 root 常驻运行;需要关闭 ASLR/安全机制;程序树必须对未授权用户开放;scratch 位于未知共享目录;调度器资源无法与输入匹配;checkpoint 是唯一副本;或问题无法用脱敏最小复现说明。入口是机构许可证/集群管理员和 Gaussian 联系支持页面

官方资料

本文核对于 2026-09-01。Gaussian 的公开资料不能代替特定许可证随附的手册;最终以授权介质的修订匹配文档、机构政策和厂商书面答复为准。

历史原文存档(仅供溯源)

以下是 source_export 的完整可见正文,逐字保留;没有删除、改写、空白规范化或隐私/安全删改。它含启用 root 密码、root 执行、全局关闭 ASLR、开机写入 sysctl 和宽泛递归权限等危险旧建议。整个区块为惰性纯文本,链接不可点击、命令不可执行,不能替代上面的当前指南。

以下方法对g03和g09均可行。

Table of Contents

Toggle

- [一、解压](https://blog.lazying.art/en/html/chemistry/1113/ubuntu-14-04-%e4%b8%8b%e6%88%90%e5%8a%9f%e5%ae%89%e8%a3%85gaussian-03%ef%bc%88g03%ef%bc%89%e5%92%8cgaussian-09%ef%bc%88g09%ef%bc%89%e5%8f%8a%e5%b8%b8%e8%a7%81%e9%94%99%e8%af%af%e8%a7%a3%e5%86%b3.html/#%E4%B8%80%E3%80%81%E8%A7%A3%E5%8E%8B)
- [二、安装](https://blog.lazying.art/en/html/chemistry/1113/ubuntu-14-04-%e4%b8%8b%e6%88%90%e5%8a%9f%e5%ae%89%e8%a3%85gaussian-03%ef%bc%88g03%ef%bc%89%e5%92%8cgaussian-09%ef%bc%88g09%ef%bc%89%e5%8f%8a%e5%b8%b8%e8%a7%81%e9%94%99%e8%af%af%e8%a7%a3%e5%86%b3.html/#%E4%BA%8C%E3%80%81%E5%AE%89%E8%A3%85)
- [三、运行](https://blog.lazying.art/en/html/chemistry/1113/ubuntu-14-04-%e4%b8%8b%e6%88%90%e5%8a%9f%e5%ae%89%e8%a3%85gaussian-03%ef%bc%88g03%ef%bc%89%e5%92%8cgaussian-09%ef%bc%88g09%ef%bc%89%e5%8f%8a%e5%b8%b8%e8%a7%81%e9%94%99%e8%af%af%e8%a7%a3%e5%86%b3.html/#%E4%B8%89%E3%80%81%E8%BF%90%E8%A1%8C)
- [四、安装gview](https://blog.lazying.art/en/html/chemistry/1113/ubuntu-14-04-%e4%b8%8b%e6%88%90%e5%8a%9f%e5%ae%89%e8%a3%85gaussian-03%ef%bc%88g03%ef%bc%89%e5%92%8cgaussian-09%ef%bc%88g09%ef%bc%89%e5%8f%8a%e5%b8%b8%e8%a7%81%e9%94%99%e8%af%af%e8%a7%a3%e5%86%b3.html/#%E5%9B%9B%E3%80%81%E5%AE%89%E8%A3%85gview)
- [五、常见错误](https://blog.lazying.art/en/html/chemistry/1113/ubuntu-14-04-%e4%b8%8b%e6%88%90%e5%8a%9f%e5%ae%89%e8%a3%85gaussian-03%ef%bc%88g03%ef%bc%89%e5%92%8cgaussian-09%ef%bc%88g09%ef%bc%89%e5%8f%8a%e5%b8%b8%e8%a7%81%e9%94%99%e8%af%af%e8%a7%a3%e5%86%b3.html/#%E4%BA%94%E3%80%81%E5%B8%B8%E8%A7%81%E9%94%99%E8%AF%AF)

### 一、解压

首先对文件进行解压缩,我的文件名是G09.B01.LINUX_E64-930X.tgz,文件在桌面,你应填上你对应的文件目录和文件名,可用tab键补全。

tar -xvf Desktop/G09.B01.LINUX_E64-930X.tgz


注意:

1、应注意文件是否解压完全,我第一次安装的时候,exe后缀的文件不知什么原因都没有解压出来,所以安装一直失败,重新解压一次又好了;

2、尽量不要使用sudo,倘若你的Home目录权限有问题,使用加sudo解压后再将权限恢复正常,或者通过创建一个用户组。

改变文件夹权限

chmod -R u=755 g09


创建组及用户,改变文件及文件夹的组及用户

sudo groupadd g09users 创建组
sudo useradd g09 -g gaussuser 创建组用户
chgrp -R g09users g09
chown -R g09users:gaussuser g09


将用户添加进组

usermod -G g09users gaussuser


### 二、安装

其实,安装的过程就是设置变量的过程。
 进入主目录,Ctrl+H显示隐藏文件,打开.bashrc文件,在文件末尾加上以下内容(安装g03请把g09全部替换成g03就行了),注意你的g09的目录和你的用户名,按照以下的格式修改就行。(注意:经过我多次安装,发现修改主目录的/home/yourusername/.bashrc,用su获得超级用户的权限后,每次仍需要使用source /home/yourusername/.bashrc才能够成功设置环境变量,我发现直接修改/root/.bashrc便不用每次都需要再重新设置环境变量)

#gaussian09
export g09root=/home/yourusername
GAUSS_EXEDIR=$g09root/g09/
export GAUSS_SCRDIR=/home/yourusername/g09/scratch
LD_LIBRARY_PATH=$g09root/g09/:$LD_LIBRARY_PATH
PATH=$g09root/g09/:$PATH
export g09root GAUSS_EXEDIR GAUSS_SCRDIR LD_LIBRARY_PATH PATH
source $g09root/g09/bsd/g09.profile


最后,在g09的目录里创建scratch目录

### 三、运行

[![gauss-procedure-full-edited](images/gauss-procedure-full-edited.png)](https://blog.lazying.art/wp-content/uploads/2014/06/gauss-procedure-full-edited.png)

(最后的Error是由于我Ctrl+C终止程序)

运行时的命令用sudo提示permission denied,所以应当用su获取超级权限。

取得超级用户权限,先给超级用户设置密码,终端输入以下命令,然后输入密码。

sudo passwd root


然后,输入以下命令,输入刚设置的密码

su –


这样进入的是root的根目录/root,需切换到用户目录/home/yourusername,亦即我们的g09目录存放的目录。

cd /home/username


输入以下命令,第一条是避免Segmentation fault(段错误)该命令只能在su下执行,在sudo下会提示权限不足(Permission denied),该命令也可添加进/etc/rc.loacal,开机自动执行,第二条是运行命令,”./g09/g09″是我的g09目录下的g09文件的地址,其中tasks是我的任务文件gif存放目录,可在命令末尾加上&表示后台执行。

echo 0 > /proc/sys/kernel/randomize_va_space
./g09/g09 tasks/xxx.gif &


[![rc.local-gauss](images/rc.local-gauss.png)](https://blog.lazying.art/wp-content/uploads/2014/06/rc.local-gauss.png)

### 四、安装gview

在.bashrc末尾加上以下内容
 export GV_DIR=/home/yourusername/gv/
 export LIBPATH=/home/yourusername/gv/lib
 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/yourusername/gv/lib
 PATH=$PATH:/home/yourusername/gv/

### 五、常见错误

1、forrtl: No such file or directory
 没有创建scratch目录,或者目录路径设置不对,这是Gauss的输出目录。

2、Warning: omp_set_num_threads (4) greater than available cpus (2)
 这是gif文件设置不对,cpu的核数为2却设成了4,只要打开改回电脑应有的cpu的个数就行了

3、Segmentation fault
 Erroneous write during file extend. write -1 instead of 4096
 Probably out of disk space.
 Write error in NtrExt1: Bad address
 Segmentation fault
 解决办法:
 sudo echo 0 > /proc/sys/kernel/randomize_va_space
 最好写进/etc/rc.local文件(ubuntu系统,其他系统写进相应文件),令其开机自动加载该命令,省时省力。

4、ntrex1: Bad file descriptor
 Error: segmentation violation
 rax 0000000000000000, rbx 00007ffffffdecb0, rcx ffffffffffffffff
 rdx 00000000000029b8, rsp 00007ffffffdebc8, rbp 00007ffffffdecc0
 rsi 000000000000000b, rdi 00000000000029b8, r8 00002aaaaaaf2300
 r9 0000000000000000, r10 00007ffffffde990, r11 0000000000000202
 r12 00000000ffffffff, r13 000000000061c830, r14 0000000000000001
 r15 0000000000010000
 — traceback not available
 Aborted (core dumped)
 gif文件%chk设置错误,因为Linux下没有Windows下的分区和目录结构,例如,%chk=D:\he-test-c.chk,把分区号去除就可以了,例如%chk=he-test-c.chk。
 5、运行g09后出错,查看log文件,信息如下:
 Entering Gaussian System, Link 0=g09
 Input=1.com
 Output=1.log
 Files in the Gaussian directory are world accessible.
 This must be fixed.
 原因是g09文件夹权限太高,如果整个改成777就有可能出这个问题。解决办法是除了scratch目录以外,均用755或者750等。(所以之前建议用更改用户组的办法来实现权限)。

Leave a Reply