摘要:Linux命令极简教程:本教程为Linux新手而写,通过学习可以掌握在Linux下进行Gaussian安装与使用所必须的最基础知识shell命令。虽然不能用来代替Linux的基础学习课程,但是了解了这些,可以让您有自学Linux的基本能力并知道如何获取帮助,本文的目的即在于此。

作者:肖高铿
email:gkxiao@molcalx.com

一. 前言

有人问:“能不能直接教我怎么在linux下用Gaussian,而不要教我linux怎么用?” 这个问题就像如何直接吃最后一个包子就饱一样,是没有办法做到的。但是,可以学习最少的知识让你够在linux下提交一个gaussian作业,本文的目的即在于此。

本文的另一个目的是推广linux,希望更多的人可以实现快速的linux入门。无论是基于结构的分子对接等虚拟筛选,还是用Guassian进行量子化学计算都需要用到高性能计算。而高性能计算通常在Linux系统下完成,因而有必要对linux常用命令有所了解,至少可以实现重复别人的操作、看懂或简单修改别人的脚本。

二. Linux的shell与terminal

1 shell与terminal

shell是个程序,它负责从键盘接受命令、提交给系统去运行。常用的shell有bash、tcsh、csh、ksh以及zsh。terminal(终端)也是一个程序,它打开一个窗口,让人与shell可以进行交互通讯。你的linux或mac操作系统肯定有个菜单可以让你打开一个terminal,你从程序的菜单里找,一般会找到一个terminal模样的东西,点开就是。

2 打开一个终端

一个terminal打开之后,你会看到自己的用户名,以及机器的名称,后面接着是个美元符($),就像下面的这个样子。

[me@linuxbox me]$

这个就是终端,在这里,你可以用键盘随便敲些东西,再键入回车键,系统就会去执行你随便敲的东西了。

[me@linuxbox me]$ kdkjflajfks

正常情况下,系统会告诉你:命令行找不到。就如下面的提示一样:

[me@linuxbox me]$ kdkjflajfks

bash: kdkjflajfks: command not found

我们现在的任务就是:学习一些极少的命令,让你能够执行一个gaussian 09计算。

[me@linuxbox me]$ |

[me@linuxbox me]$ cd ~/demo

[me@linuxbox demo]$ export g09root=/home/me

[me@linuxbox demo]$ . $g09root/g09/bsd/g09.profile

[me@linuxbox demo]$ nohup $g09root/g09/g09 demo.com &

[me@linuxbox demo]$ |

三. 常用命令

在第二节,我们介绍了如何打开一个终端,并且知道,要想让linux干活,我们需要从终端输入命令,本节开始学习最常见的命令以完成一些特定的任务。

1. 文件系统

文件在linux系统里是按一套层级目录结构来组织,这意味着文件以树型的目录(windows下称为文件夹)形式进行组织,文件存在于目录中,目录中还可以有其它目录。
Linux命令极简教程-墨灵格的博客
最顶层的那个目录是根目录(root,用“/”表示),root目录含有很多文件与子目录,而子目录又含有很多文件与子目录,一层一层套下去。

2. 查询当前目录:pwd

既然我们文件系统是个树形结构,那么在终端那个光标是位于文件系统的什么位置呢?pwd命令可以回答你的问题,只需键入pwd,再按回车键就可以了。实际上pwd的功能就是告诉你当前工作目录的名字。

[me@linuxbox me]$ pwd
/home/me

你可能会想知道,我当前这个目录下有什么文件或子目录,这就需要用到命令“ls”。

3. 列出文件与目录:ls

[me@linuxbox me]$ ls
Desktop Xrootenv.0 linuxcmd
GNUstep bin nedit.rpm
GUILG00.GZ hitni123.jpg nsmail

我们之后会经常用到ls命令,有很多的机会用到他。

4. 目录切换:cd

cd命令可以让你在目录树的不同目录间切换工作目录。切换工作目录非常简单:键入cd与工作目录路径即可:

1
cd /pathname_to_working_directory/working_directory

路径名有两种:绝对路径,相对路径。我们先来看看绝对路径,绝对路径从根目录“/”开始写起,接着写树形分支,一直写到你需要的那个目。举个例子,在linux系统里,几乎绝大部分的程序都安装在根目录下的usr子目录里的bin子目录,用绝对路径表示为:/usr/bin。
假设我们现在要从当前位置切换到上面的/usr/bin目录,你可以试试下面的命令:

[me@linuxbox me]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin
[me@linuxbox bin]$ ls
[ lwp-request
2to3 lwp-rget
2to3-2.6 lxterm
a2p lz
aalib-config lzcat
aconnect lzma
acpi_fakekey lzmadec
acpi_listen lzmainfo
add-apt-repository m17n-db
addpart magnifier

and many more...

你现在已经注意到:我们成功地切换到了当前工作目录/usr/bin,并且列出了当前共走目录里的文件与子目录。你也许注意命令行提示符有所变化,现在是[me@linuxbox bin]而不是[me@linuxbox me]。
绝对路径从根目录一直到目标目录,而相对路径从任意工作目录开始,经常会用到有两个特殊字符:"." (点)与".."(点 点)。 "."(点)是指当前工作目录本身,而".."(点 点)是指当前目录的父目录(上一级目录)。

5. 绝对路径与相对路径

我们再将当前工作目录切换为/usr/bin:

[me@linuxbox me]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin

那我们现在将工作目录从/usr/bin切换到其父目录/usr。有两种方式,先试试绝对路径:

[me@linuxbox bin]$ cd /usr
[me@linuxbox usr]$ pwd
/usr

还可以试试相对路径:

[me@linuxbox bin]$ cd ..
[me@linuxbox usr]$ pwd
/usr

两种不同方法,结果完全一样。我们该用哪一种,当然是打字少的哪一种!

同样,我们也可以用两种不同的方式从工作目录/usr切换到/usr/bin。先试试绝对路径方式:

[me@linuxbox usr]$ cd /usr/bin
[me@linuxbox bin]$ pwd
/usr/bin

或者,用相对路径:

[me@linuxbox usr]$ cd ./bin
[me@linuxbox bin]$ pwd
/usr/bin

有件重要的事:大部分情况下,可以将"./"省略。键入如下命令:

[me@linuxbox usr]$ cd bin

你会发现,确实得到同样的结果。总的来说,如果你什么都不做,那就是指当前工作目录。当然也有例外,我们马上会讲到。

6. 几个特殊的目录切换

如果你只键入cd而不跟随任何东西,那么cd将会切换到你的家目录。如果键入cd ~user_name,将切换到用户名为user_name的家目录。键入cd - 将切换到前一个家目录。键入cd ~,也是切换到家目录,实际上“~”就是指家目录。

7. 新建目录

到目前为止,我们学习了cd, ls, pwd等几个命令。你会注意到,这个几个命令使用时有一个共同的使用格式,那就是:
命令[空格]参数
常见的任务基本上都能找到对应的命令来完成。新建一个目录、并切换到该目录是一个常见的操作,比如,在一个新目录里执行一个gaussian的优化计算。
新建目录对应的命令是mkdir,假设我们要切换到家目录、并在家目录里新建一个子目录demo,然后将当前工作目录切换为demo目录:

[me@linuxbox usr]$ cd ~
[me@linuxbox ~]$ mkdir demo
[me@linuxbox ~]$ cd demo
[me@linuxbox demo]$ pwd
/home/me/demo

8. 文件与目录的复制

文件与目录的复制用命令cp,复制文件的命令格式如下:

1
cp [源文件] [目标文件]

复制目录的命令格式如下:

1
cp -r [源目录] [目标目录]

比如,要将/proc/cpuinfo这个文件复制到/home/me/demo这个目录里,并保存为cpuinfo:

[me@linuxbox demo]$ cp /proc/cpucinfo /home/me/demo/cpuinfo

你也可以将/proc/cpuinfo这个文件另存为/home/me/demo这个目录里的文件saveas.txt:

[me@linuxbox demo]$ cp /proc/cpucinfo ~/demo/saveas.txt

你现在可以切换到上面的demo目录里看看,是不是多了两个文件,希望你还能记得刚才学过的命令:

1
cd ~/demo
1
ls

或者直接ls一下demo目录:

1
ls ~/demo

9. 文件与目录的删除:rm

删除一个文件:

1
rm [file name]

删除目录:

1
rm -r [target directory]

比如,我们将家目录下的demo目录复制为demo1,然后删除demo1目录里的saveas.txt文件:

1
cp -r ~/demo ~/demo1
1
rm ~/demo/saveas.txt

现在要将demo1目录删除:

1
rm -fr ~/demo1

10. Gaussian计算平台相关的命令

Gaussian软件采购首先要知道CPU的型号:是AMD还是Intel? 采用命令:

1
grep 'model name' /proc/cpuinfo |uniq

获得如下输出:

1
model name	: Intel(R) Xeon(R) CPU E5-2650 v2 @ 2.60GHz

这可以清楚的知道,该计算平台为Intel CPU。

此外Gaussian 09采购之前还需要知道自己的机器是否支持SSE4.2指令集、是否支持AVX指令集以便购买适合自己的机型的Gaussian。键入如下命令:

1
grep -o -e sse4_2 -e avx -e sse4a /proc/cpuinfo
  1. 如果什么都不出现或仅有空白行,则您的机器不能支持SSE4.2或AVX指令集,建议您购买Legacy版本;
  2. 如果包含有sse4_2或sse4a字眼而没有avx字眼,则建议您使用支持SSE4.2指令集的Gaussian版本;
  3. 如果包含有avx字眼(无论有无sse4_2或sse4a字眼),则建议您使用支持AVX指令集的Gaussian版本。
  4. 如果包含有avx2字眼,则建议您使用支持AVX2指令集的Gaussian版本。

11. 查询内核版本: uname -a

[me@linuxbox usr]$ uname -a
Linux molcalx.com.cn 3.2.0-29-generic #46-Ubuntu SMP Fri Jul 27 17:03:23 UTC 2012 x86_64 x86_64 x86_64 GNU/Linux

x86_64字样表明该操作系统是64BIT的,如果买Gaussian软件,建议用64BIT的版本。另一个方法是:

[me@linuxbox usr]$ cat /proc/version

12. 查询操作系统发行版

UBUNTU系统可以用:

[me@linuxbox usr]$ lsb_release -a

比如,我的机器是这个结果:

1
2
3
4
5
No LSB modules are available.
Distributor ID:    Ubuntu
Description:    Ubuntu 12.04.5 LTS
Release:    12.04
Codename:    precise

说明该操作系统发行版是Ubuntu 12.04.5,代号precise

其它发行版或者你的机器上可能没有这个命令,那么可以试试下面几个方法:

[me@linuxbox usr]$ cat /etc/issue

或者:

[me@linuxbox usr]$ cat /etc/centos-release

或者:

[me@linuxbox usr]$ cat /etc/redhat-release

13. 获取Mac地址

有的软件安装需要知道物理地址,或用物理地址生成license文件:

[me@linuxbox usr]$ ifconfig | grep eth0
eth0 Link encap:Ethernet HWaddr 00:18:3f:04:11:8a

其中00:18:3f:04:11:8a就是第一块网卡eth0的Mac地址。

想要了解全部的网络设备信息,键入:

[me@linuxbox usr]$ ifconfig

14. CPU类型查询

Gaussian软件采购前还需要知道CPU的类型,还是从cpuinfo里获取:

[me@linuxbox usr]$ grep name /proc/cpuinfo | uniq
model name : Intel(R) Xeon(R) CPU E5-2430 0 @ 2.20GHz

由此可见,刚才查询的机器的CPU是Intel XEON E5-2430。

14. 内存大小查询

1
free

free命令用来查询内存的状态,用h选项可以提高肉眼可读性:

1
free -h

15. 永不挂机

比如从笔记本等登录远程主机作业时,由于客户端经常由于某种原因被迫在作业结束前关机、断网等,这使得正在进行计算的作业被迫停止。如果希望在退出帐户、断网时该计算还不会结束,那么可以使用nohup命令。该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。nohup就是永不挂机的意思( no hang up)。
nohup命令的一般形式为:nohup command &。比如,提交一个Gaussian作业demo.com:

1
nohup g09 demo.com &

其中&表示后台运行的意思。

16. 查看文本的倒数几行

一个Gaussian作业比如demo.log,想看末尾以便观察Gaussian是否正常运行结束,可以使用tail命令。
比如,查看Gaussian作业输出的最后一行:

1
tail -1 demo.log

正常结束的Gaussian文件会给出:

1
 Normal termination of Gaussian 09 at Sat May 28 12:32:35 2016.

将1改成其它数字,则输出指定行数的文本内容,如果不指定行数,给出10行:

1
2
3
4
5
6
7
8
9
10
11
$ tail demo.log
 002863,0.00001605,0.00000279,-0.00002853,0.00004508,0.00003036,0.00000
 140,-0.00000775,0.00006375,-0.00003913,-0.00005084,-0.00004926,0.00006
 433,0.00000864,-0.00004499|||@
 
 
 IF YOU'RE NOT PART OF THE SOLUTION,
 THEN YOU'RE PART OF THE PRECIPITATE.
 Job cpu time:       0 days  0 hours 12 minutes 30.0 seconds.
 File lengths (MBytes):  RWF=     74 Int=      0 D2E=      0 Chk=      5 Scr=      1
 Normal termination of Gaussian 09 at Sat May 28 12:32:35 2016.

17. 查看文本

如果想快速的查看Gaussian结果文件, 可以用more,less命令。因为less支持前后翻页,所以推荐用less。

1
less demo.log

按字母q,退出more或less。

18. 设置环境变量

Gaussian软件,OpenEye软件等很多软件安装的时候需要设置环境变量。在Linux/Mac等Unix下,查看设置过什么环境变量:

1
export

将Gaussian 09安装在主目录(HOME目录)下,需要将环境变量g09root设置为HOME目录,使用export命令:

[user@linuxbox user]$ export g09root=~

安装Gaussian之后,将$g09root/g09添加到PATH环境变量里,可以简化Gaussian的命令,直接键入g09而无需输入环境变量,还是使用export:

1
export PATH=$PATH:$g09root/g09

19. 开机自动加载环境变量

希望开机或下次登陆shell时自动将$g09root/g09加到PATH环境变量里,可以在HOME目录的.bashrc里设置需要的环境变量:

1
vim .bashrc

添加两行:

export g09root=~
export PATH=$PATH:$g09root/g09

这里,初学者有个常见的问题:为什么在我的电脑上看不到.bashrc这个文件,这是因为"."开头的文件在视窗下是默认隐藏的文件。

20. 文件完整性校验

文件下载或拷来拷去,在这过程中文件是否有损坏呢或被人修改呢?Linux下,可以进行一个文件校验来检查文件的完整性。常用的校验方法有MD5,SHA1,GPG。以md5为例:

1
md5sum foo.tar.gz

会给出哈希值(MD5 Hash值),与文件发布者的Hash值比较,如果不同则表示文件被修改或不完整。

21. 我应该安装哪个包

有时候你使用软件的时候,提示你没有xxx.so.1之类的字眼,你需要知道这个文件由哪个包(软件、驱动)来提供,再去安装这个包就可以。你不需要百度、google或问任何人!你问电脑就可以。我用的操作系统是Centos,所以用yum来问:

1
yum whatprovides libGLU.so.1

提示:

1
2
3
4
5
6
7
8
9
10
11
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirrors.aliyun.com
 * epel: mirrors.ustc.edu.cn
 * extras: mirrors.aliyun.com
 * nux-dextop: mirror.li.nux.ro
 * updates: centos.ustc.edu.cn
mesa-libGLU-9.0.0-4.el7.i686 : Mesa libGLU library
Repo        : base
Matched from:
Provides    : libGLU.so.1

由此可见,libGLU.so.1在我的系统里,可以由mesa-libGLU-9.0.0-4.el7.i686来提供,只要安装这个包就可以。要安装这个包,还是用yum来安装:

1
yum install mesa-libGLU-9.0.0-4.el7.i686

用ldconfig可以查询已经安装过的库文件,因此可以用来确认是否安装过libGLU.so.1:

1
 ldconfig -p |grep libGLU.so.1

根据输出很容易断定是否已经安装了。如果输出空白,则便是没有安装,反之相反。

22. ZINC数据库的下载

ZINC最新版本为ZINC15,下载地址为:http://zinc15.docking.org。ZINC数据库提供了cURL,powershell,wget等方式下载。

Linux命令极简教程-墨灵格的博客

没有必要下载ZINC15的全库,可以根据自己的需求通过选项来控制下载化合物的特征,简要说明如下:

  1. 访问数据库
  2. 访问ZINC15数据库:http://zinc15.docking.org,点击Tranches选项卡。

  3. 选择合适的理化性质
  4. 再分子量与logp的坐标上点击确认自己需要的分子量范围与logp范围(见示意图步骤1);

  5. 根据需要选择2D还是3D数据库
  6. 点击2D或3D,可以选择下载2D的SMILES还是3D的结构,见示意图步骤2,这个实际要再做其它选择之前做;

  7. 选择化合物的可获取方式
  8. 示意图第3步可以选择化合物的可获取状态:比如有库存、等等也可以。

  9. 根据化合物特性下载
  10. 示意图第4步可以选择化合物的类药、类先导、片段等特性;

  11. 选择下载方法
  12. 示意图第5步可以选择下载脚本的类型。比如linux可以用curl或wget;windows可以用Powershell。选择一种下载方法即可。

  13. 下载数据库
  14. 假设你选择了wget,你会下载一个类似于"ZINC-downloader-2D-smi.wget"文件名的下载脚本,键入下面命令执行下载脚本:

    1
    
    sh ZINC-downloader-2D-smi.wget

    注意:如果下载3D数据,硬盘一定要大!

四、如何获取帮助

借助bing(强烈推荐)等搜索引擎,你可以很容易获得实现一个任务需可以用什么命令,而命令无非就是由命令本身与参数组成。如果你知道了用什么命令,你可以用info或man来获得程序的使用文档,比如你不知道ls这个程序怎么用,你可以直接使用下面命令之一来实现:

1
info ls

或者:

1
man ls

五、linux命令注意事项

  1. Linux命令是大小写敏感的:“file”是不同于“File”的另一个文件。请在安装Gaussian或键入Gaussian命令的时候,大小写要分清;
  2. Linux文件系统里的文件没有文件扩展名的概念,所以不要以文件后缀来判断文档类型;Linux自身不关心文件扩展名,而应用程序可能会关心;
  3. 不要在文件名或目录的名称里使用空格,如果一定想用,建议使用下划线代替,你以后会感谢自己的;
  4. 文件与目录的名称仅使用:下划线(_),字母与数字组成

所以,Gaussian的作业文件,可以是test.com,test.gjf, test.txt或test.inp等。

五、我还要学些什么?可以开始使用gaussian了吗?

是的,还有很多命令你需要学习,但是你可以一边使用一边学习。我推荐教程

http://linuxcommand.org

当然,你可以开始使用Gaussian了,实际上Gaussian的安装与使用就是执行一系列命令:有的命令是来源于linux系统的,有的来源于Gaussian软件的,你要做的只是严格按照说明书的指令进行操作,虽然你可能还不懂有的命令到底是什么意思。重要的是,你可以举一反三,你知道如何从网络上找到帮助。

六、接下来可以做什么?

建议你试试安装Guassian,并跑一个作业吧:
Guassian 09的安装:http://blog.molcalx.com.cn/2016/03/31/gaussian-09-install.html