24小时热门版块排行榜    

CyRhmU.jpeg
查看: 826  |  回复: 16
当前主题已经存档。
【有奖交流】积极回复本帖子,参与交流,就有机会分得作者 yjcmwgk 的 47 个金币

yjcmwgk

禁虫 (文坛精英)

密度泛函·小卒

优秀版主

[交流] 【求助】Linux问题,奖励100金币,谢谢诸位高手

【求助】Linux问题,奖励100金币,谢谢诸位高手

各位Linux高手你们好。我是咱们区量子化学版的斑竹,外号:密度泛函·小卒。我们版一直在做一个大工程,名为GaussianFAQ,其中第一章第4-6节涉及到了许多Linux知识。这三节都是小卒我自己写的,但是小卒毕竟是化学出身。请各位高手帮小卒看看应该改什么东西?我知道我一定有很多错误的或者不合适的东西在里面,还请各位Linux高手不吝赐教。
每个意见给10-100金币。非常感谢您的慷慨指点。
引用回帖:
(1.4)
难道非要用Linux算高斯吗?Windows算高斯的缺陷是什么?
后续问题:听说Linux很难的。我是电脑小白,在Windows上都不太懂,只会最基本的操作,看看电影听听歌而已。连Windows系统都是别人替我装的。Linux我能学会吗?
后续问题:为什么Linux那么难看?看见一行一行的命令,就一点研究它的兴趣也没有了。听说Linux也是有桌面的,为什么师兄师姐们从来不用Linux的桌面呢?你们所说的那个SSH又是个什么软件啊?头大ing……
[quote]暂时的最佳答案(提供者:密度泛函·小卒)
Linux做高斯计算比Windows优势大得多。Windows对并行处理、频繁存取、超大文件、海量运算,都是瓶颈,而这些都将是你运行高斯的大障碍。你现在算个水分子、算个甲烷分子,你用Windows觉得还挺不错的,但是你的计算量一旦变大,你将会对“Windows做计算”极为失望。

你可以用mem指定你希望能被高斯调用的最大内存。但是,Windows有自己的一套内存调用规则(高斯毕竟是一个应用软件,Windows则是操作系统。Windows能管着Gaussian)

好了,我形象化的说说这个事儿吧
Gaussian软件(以下简称高斯)说:“我要1G内存!”
Windows操作系统内核(以下简称系统)说:“行!如你所愿”
过了一会儿……
高斯:“你给我的1G内存,我咋觉得这么不对劲儿呢?”
系统:“咋就不对劲儿了?”
高斯:“就50多M的内存空间读写速度正常,另外950M的内存空间读写速度超慢!”
系统骗高斯:“哦,内存条质量不好,凑合着用吧!”
高斯:“NND,主人要做高斯计算,却买这么慢的内存条,我不干活了!我要怠工!”
于是高斯Link died。

真实情况是:Windows对内存使用的控制是非常苛刻的。高斯申请1G的内存,那么Windows也就拿出50M的真正的内存空间给高斯,剩下950M的都是用硬盘空间来“伪装”出来虚拟内存。每当有某软件要求巨大内存的时候,Windows都会用虚拟内存来应付,而软件就以为这是真内存,还用的不亦乐乎。说白了,Windows不是一个设计用来运行“海量数据频繁内存读写”的程序的操作系统,它为了勉强运行这种程序,他就用虚拟内存来欺骗,事实上是硬盘在起到内存的作用,而硬盘的读写速度不到内存的十分之一。这样造成的直接严重后果是:即使电脑资源一样大,在Windows和Linux下运行同样的任务,后者往往比前者快3到20倍。这也是我们一直推荐使用Linux的原因。

我给Windows和Linux分别打个比方:Windows是一辆精致的法拉利,很漂亮、很人性化、操作很简便(其实Windows也有自己的复杂和高明之处,只是你从没使用过它们),但是她终究是一辆小轿车。而Linux是一辆载重数十吨的斯太尔大卡车。搬运大量货物(大量数据的海量计算)还是要靠Linux。运送一个小箱子,法拉利和斯太尔没什么区别,但是如果运送一个集装箱呢?为了能顺利运送集装箱,请学习Linux
如果你既想享受法拉利的精致,也想得到斯太尔的强大工作能力,你就装一个SSH软件吧。【图5】SSH就像你的忠实信使,在Linux和Windows之间传达各种指令。你的师兄师姐会教给你如何用好SSH。
另外,不要总想着使用Linux的GUI。其实Linux有比Windows更绚丽的桌面系统,但是它对你的高斯计算毫无意义,而且会占用更多的服务器资源。把这些资源用在你的高斯计算上,比浪费在运行图形界面上更有意义。DIY是Linux很重要的宗旨之一:合适就选,不合适就不选。这比Windows强制安装“用户一辈子也不会需要的许多功能”强多了。
其实吧,现在作为初学者,你也没必要去管那些面目可憎的命令行,那还是你的师兄师姐的事儿。作为一个新手,你记住,服务器的维护管理自然有你的师兄师姐来完成,你仅仅是使用者,而且是非常初级的使用者——我这样说,并没有一点点轻视你的意思,请勿误解。因此,你所要知道的仅仅是最常用的命令即可:

ssh zzz                                       
进入zzz服务器

exit                                       
离开当前服务器

mkdir                                       
建立文件夹

rmdir                                       
删除空文件夹

rm -fr
删除非空文件夹

ls                                       
列出本文件夹下的所有文件和子文件夹

vi xxx.xxx                               
建立新文件xxx.xxx

top                                       
打开任务管理器

rm xxx.xxx                               
删除文件xxx.xxx

nohup g03 xxx.com xxx.log &               
运行高斯文件xxx.com进行计算

cd xxxx                                       
进入xxxx子文件夹

cd ..                                       
返回上层文件夹

formchk xxx.chk xxx.fchk               
用xxx.chk生成xxx.fchk

scp xxx.xxx nod:/aaa/bbb/xxx.xxx       
将xxx.xxx复制到nod下的/aaa/bbb/文件夹下

cubman                                       
使用高斯的cubman命令

cubegen                                       
使用高斯的cubegen命令

sh xxxx.in
运行批处理命令xxxx.in

ps 某个进程的进程号
查看某个进程的状态

adduser 账户名
增加一个账户

passwd 账户名
账户改密码

userdel 账户名
删除某个账户

su 账户名
转换当前账户

du -sh
查询该文件夹大小

env
列出全部环境变量

export 变量名 变量值
增加环境变量

unset 变量名
删除环境变量

chmod -R 770 g03
赋予g03使用/tmp文件夹的权限

vi下的命令

   i                                       
   进入修改状态

   ESC                               
   退出修改状态

   :wq                               
   保存退出

   :q!                               
   不保存退出

   :set nu                               
   显示行号

   /某个字符串                       
   查找某个字符串

top下的命令

   先按u再输入高斯用户名再回车       
   查看高斯所属的进程

   先按u再输入超级用户名再回车       
   查看系统所属的进程

   先按u再输入空格再回车               
   查看全部进程

   q                                       
   退出任务管理器

   先按k再输某个进程对应的pid,然后输入yes               
   强制结束某个进程

关于解压

   解压FileName.tar
   tar xvf FileName.tar

   解压FileName.gz
   解压1:gunzip FileName.gz
   解压2:gzip -d FileName.gz

   解压FileName.tar.gz 和 .tgz
   tar zxvf FileName.tar.gz

   解压FileName.bz2
   解压1:bzip2 -d FileName.bz2
   解压2:bunzip2 FileName.bz2

   解压FileName.tar.bz2
   tar jxvf FileName.tar.bz2

   解压FileName.bz
   解压1:bzip2 -d FileName.bz
   解压2:bunzip2 FileName.bz

   解压FileName.tar.bz
   tar jxvf FileName.tar.bz

   解压FileName.Z
   uncompress FileName.Z

   解压FileName.tar.Z
   tar Zxvf FileName.tar.Z

   解压FileName.zip
   unzip FileName.zip

   解压FileName.rar
   rar x FileName.rar

多说一句:其实Windows也有这种命令行操作模式【图6】,名叫DOS(不是态密度的缩写,而是Disk operation system的缩写。Microsoft的MS-DOS已经发展到7.1版了,当然你装的WindowsXP SP3自带的MS-DOS不是真正的DOS,是用XP模拟的命令行操作5.1,不过对于初学者学习dos已经足够了。Vista我没用过,我个人从心理上比较排斥它,哪位熟悉Vista的人给个补充,谢谢)有闲时间,在你上网玩游戏听歌聊天之余,如果能学学DOS,对你加深对电脑的了解,很有益处的

(1.5)
Gaussian如何在Linux下安装?
引用回帖:
暂时的最佳答案(提供者:密度泛函·小卒)
其实高斯在Linux下安装非常容易:

建立用户gau
useradd gau

以gau登录
su gau

在/home/gau目录下解压缩G03包:
gunzip g03.tar.gz
tar xvf g03.tar


在g03目录下,执行bsd/install

在/home/gau/.bashrc这个文件中加入两行:
g03root=/home/gau
. /home/gau/g03/bsd/g03.profile


现在可以运行g03了

(1.6)
Gaussian如何实现批处理?
引用回帖:
暂时的最佳答案(提供者:密度泛函·小卒)
如果你有三个文件分别进行计算
这三个文件叫做a.gjf,b.gjf和c.gjf
那么可以进行的批处理方法是:

1)Linux下
写一个文件x.in,内容如下
==文件开始==
nohup g03 a.gjf a.log &
wait
nohup g03 b.gjf b.log &
wait
nohup g03 c.gjf c.log &
==文件结束==

然后提交这个文件,命令为sh x.in &

2)Window下
写一个文件x.bcf,内容如下
==文件开始==
!start=1
a.gjf , a.out
b.gjf , b.out
c.gjf , c.out
==文件结束==

然后用G03运行这个文件

3)Linux和Windows通用
把三个gjf文件写成一个gjf,内容如下
==文件开始==
a.gjf的全部内容(原封不动照抄)
(空行)
--link1--
b.gjf的全部内容(原封不动照抄)
(空行)
--link1--
c.gjf的全部内容(原封不动照抄)
==文件结束==

[/quote]

[ Last edited by nono2009 on 2010-1-5 at 15:17 ]
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jjdg

版主 (知名作家)

优秀版主


yjcmwgk(金币+1,VIP+0):你以为我真不会呀?晕 1-5 18:39
sorry

[ Last edited by jjdg on 2010-1-5 at 18:40 ]
努力学习!以正当途径!获得需要的知识!
2楼2010-01-05 17:40:19
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lanlianhua

木虫 (小有名气)


jjdg(金币+1,VIP+0):谢谢回帖交流 1-7 00:09
学习学习
3楼2010-01-06 13:30:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoxiaoqi

木虫 (著名写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
yjcmwgk(金币+10,VIP+0): 1-9 12:32
一条一条来。
关于windows的内存分配,默认是打开虚拟内存的。
但是你也可选择彻底关闭它*你的内存必须足够使用
4楼2010-01-08 23:28:59
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoxiaoqi

木虫 (著名写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
yjcmwgk(金币+10,VIP+0):其实我们喜欢64位Linux系统。请问64位Linux和64位Win谁更适合科学计算呢?谢谢zhaoxiaoqi 1-9 12:33
相比大家通常使用的32位系统,64位win系统更适合科学计算。
计算的速度,相同硬件下,取决于驱动程序,操作系统的资源分配机制,编译器,包括编译器的库函数等
系统的安全性、稳定性的提高,会降低部分效率,直接用相应的硬件的汇编语言理论上说效率或许比有操作系统的情况下更高。
但问题也来了,一不小心就会造成硬件的彻底*物理上的*损坏。
5楼2010-01-08 23:40:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoxiaoqi

木虫 (著名写手)

我用过Redhat的企业版*正版的,经常会出现低级错误。像剪贴板内容无法共享等等
如果使用Windows的标准函数库,一般是不会出现这种错误的
如果在将linux的终端显示复制到报告中去时,出现上述情况,你一定会想起windows的好。当然你用linux的dup函数改变命名管道也可以直接将结果输出到文件中去。当然你的代码将便复杂。
6楼2010-01-08 23:45:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaoxiaoqi

木虫 (著名写手)

★ ★ ★
余泽成(金币+3,VIP+0):谢谢应助! 1-9 22:18
vista的命令行
-------------------------------------------------------------------------------------------------
源自网络
vista新的命令提示符窗口运用了Aero界面的窗口风格,以及全新的最大化、最小化、关闭窗口的按钮以及圆角。在Windows XP中,命令提示符窗口使用的是传统的Windows样式。(注意,默认的命令提示符环境配色依旧是黑色背景上的灰色文本)

当你访问命令提示符的属性对话框,你会发现控制台大同小异。唯一的差别是Window Vista中的选项卡不再提供显示选项面板(原面板提供了窗口运行与全屏幕运行的设置)。实际上,当我按下窗口满屏的默认快捷键“Alt+回车”时,我得到了一个错误提示。看来不可能再在Windows Vista中运行一个满屏的命令提示符窗口了。
------------------------------------------------------------------------------------------------------
我自己的使用感受
关闭了UAC,vista和XP的视觉特效之后,WinXP和VISTA的命令行两者基本是一样的。开启了UAC之后,vista下的不少命令行操作会跳出UAC的提示。
7楼2010-01-08 23:52:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dreamingnow

新虫 (初入文坛)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
yjcmwgk(金币+10,VIP+0):我只会在top下kill进程,有没有别的方法我确实不知道。谢谢您 1-9 12:35
其实楼主也可以写写Linux的ZMODEM支持,在用Windows控制一台Linux的机器时,只上传或者下载几个文件的时候相当有用,但这个需要Linux端安装ZMODEM支持的软件包,比如lrzsz
另外我觉得写写怎么kill进程会有用,比如发现刚跑起来的运算参数写错了,可以马上kill掉
再有就是可以讨论一下windows下的ssh客户端
8楼2010-01-09 12:27:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

dreamingnow

新虫 (初入文坛)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
yjcmwgk(金币+20,VIP+0):哈哈,谢谢您。我毕竟是化学出身的,因为要用Linux算东西,才开始接触Linux。有您这样的专家讲解,受益匪浅啊 1-9 15:44
呵呵,其实还有最最重要的一个忘记说,man命令。查看命令的说明
用法:man 命令名
显示的文档中,会有该命令的详细说明,有的可能还会有例子。这个可以说是用*nix系统还不太熟练时的必杀技,平时有不会的命令用法多查文档,慢慢就会变熟练了。
关于kill,一般和ps命令一起用,先查看现在正在运行的g03进程
ps aux |grep g03
会得到一个列表,列表中会列出每个g03进程的pid,所属用户,然后
kill -9
杀掉指定pid的进程。
当然top也很方便~

另外,如果log文件很长,有时需要分析一下(比如有错误),可以使用grep来处理,复杂一点的可以用sed和awk,这些东西如果可以灵活运用,可以带来很多方便。
9楼2010-01-09 15:37:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

hakekill

木虫 (小有名气)

楼上说的很好,以我的经验,如果想在bash里面如鱼得水,首先必须掌握gun的各类文本处理工具,如wc,head,tail,cut等,再就是find命令,掌握这些基础工具后就要灵活应用管道,把各种工具很好的粘合在一起完成任务,更高一级就是使用能处理正则表达式的工具,如gawk、sed等,后面这两个工具都非常强大,不过可以掌握一些自己平常会用到的功能就行了
10楼2010-01-10 10:44:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yjcmwgk 的主题更新
普通表情 高级回复(可上传附件)
信息提示
请填处理意见