Alex He

...永远保持希望与激情...约会未来更强大的自己...

 

学习使用Linux做实验

学习使用Linux做实验

         这里介绍的是使用Linux平台做实验,也就是在Linux下运行程序。当然程序的编写可以在Linux下编写,也可在非Linux(也就是Windows)下编写。而我们做实验大都不需要桌面环境,而只需要命令行就行了(这和隔壁实验室不同,他们使用Matlab就常常需要坐在那台大服务器前敲啊敲啊敲键盘,幸福啊,我们),这就是说我们可以在Windows下把程序写好(甚至是编译好,只要两个平台可以兼容),然后把程序移至Linux下运行就了。

         我们实验室大多用Java做实验,这更方便了,因为Java的跨平台,可以直接把编译好的字节码文件拷贝到Linux下运行就是了。当然,有时候要注意下java的版本和32位还是64位的问题。所以这个标题大了很多,应该叫《学习使用Liunx运行Windows下编写的java程序》

好,废话不说!两分钟(除了下载安装软件的时间)就可以掌握基本的操作。

1.首先是软件准备

SSHJava

SSHJava的框架,而是是一个用来替代TELNETFTP以及R命令的工具包,可在此下载。(http://www.onlinedown.net/soft/20089.htm

Windows下安装好SSHJava运行环境,在Linux下安装好同版本的Java运行化境。

2:在Windows下编写程序

写一个生产随机数的程序,并把结果写到一个文本中

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileWriter;

import java.io.IOException;

import java.util.Random;

 

public class MakeRand

{

         public static void main(String[] args) throws IOException

         {

                   System.out.println("程序运行开始时间:"+new java.util.Date().toString());

                   BufferedWriter bw=new BufferedWriter(new FileWriter(new File("rand.txt")));

                   Random random=new Random();

                   int rand;

                   for(int i=0;i<100;i++)

                   {

                            rand=Math.abs(random.nextInt())%100+1;

                            bw.write(String.valueOf(rand));

                            bw.newLine();

                   }

                   bw.close();

                   System.out.println("程序运行结束时间:"+new java.util.Date().toString());

         }

}

3:在Windows下编译程序

cmd环境下输入:javac MakeRand.java(编译MakeRand程序)

得到了MakeRand.class后就可以把其拷到Linux下了(当然这里也可以在cmd下运行)。

4:拷程序到Linux

打开SSHSecure File Transfer Client,也就是这个图标:

连接远程主机,

输入主机IP和用户名,比如,192.168.0.88 hesz,回车,这就到了你的用户目录下了。

/home/hesz,然后你就可以想方法把程序拷到里面去了,不管是拖啊,复制啊都行。

我是新建了一个目录test,然后拷到test下面去的。

5:运行程序

打开SSHSecure Shell Client,也就是这个图标:

同样要输入主机地址和用户名密码

进入到那个目录:cd /home/hesz/test

运行命令:java MakeRand

运行完后输入:ls(常看当前目录下的文件信息)

此时就可以看到多了个rand.txt文件,好了这个就是实验结果了。

 

6:后期处理

怎么查看这个实验结果呢?聪明的你肯定想到了,我们可以把程序拷入Linux下,肯定也可以从Linux拷出啊,这种方法就是又用Secure File Transfer Client把结果拷出。我们还可以直接在Linux下看结果,比如输入:cat rand.txt

其实Linux下有很多很好的文本编辑和常看工具,比如vi,vim,Emacs,cat,等。在命令行下常用的主要是vicat(其实我也就是这两个熟一点,呵呵)

 

好了,基本上差不多了,就是这基本的步骤。知道了这个步骤,就可以自己慢慢钻研一些其他的方法了。下面我还介绍下平时常用的东东。

1:用Eclipse编写程序,怎么样更方便的编写和运行

Windows下用Eclipse编写后一般就会在工程目录下生成.class文件,在bin/目录下(完全按照包层次结构存储)

只要没使用额外的.jar文件和其他的.class文件就可以直接用:

Windowscmd下的命令是: java –cp bin com.math.RandMake

Linux下的命令是:                           java –cp bin com.math.RandMake

两个一样哦,如果认为什么都一样那就要吃小亏了。

如果使用了其的.class文件和.jar文件怎么办呢,比如使用了其他的矩阵运算外部包,中文分词外部包。

Windowscmd下的命令是: java –cp bin; F:\workspace\PreTreatment\lib\ictclas4j.jar com.math.RandMake(没错,就是在不同class间用;隔开)

Linux下的命令是:                           java –cp bin: lib/ictclas4j.jar com.math.RandMake(没错,就是在不同class间用:隔开,就是这点不同)

2:如果我要在linux下作批处理呢?也即是说,我想机器做完了这个程序自动做下一个程序。

当然你可以自己在程序中组合一下。但是Linux下是否有类似Windows下的bat批处理程序呢?有的,那就是shell程序。

比如,

程序1是:java –cp bin p1

程序2是:java –cp bin p2

我希望程序做完了p1后自动做p2,好,我们就可以把两个命令写入到一个文件中,比如是pp.sh(注意后缀一定是.sh

然后把pp.sh拷到linux下,好了,我们就可以到那个目录下输入:./pp.sh

可以看到:-bash: ./pp.sh: 权限不够

这是表明你对该文件没有执行权限。那么我们需要改动一下这个文件的权限。

输入:chmod +xxx pp.sh(就是加执行执行执行权限,3x就是3个执行,细节不讲啦,)

改完之后再运行:./pp.sh(注意一个./表示执行当前目录下的pp.sh文件)

当然如果你还问,如果p1运行后出现结果1我要运行p2,而如果出现结果2我要运行p3,能不能做了,当然可以。去看看linux shell编程就知道了。

3:后台执行程序。有的时候你可能会想,既然是服务器,那么如果我把电脑关掉(或者把Secure Shell Client关掉),那么没有运行完的程序应该会照常运行!但是如果你使用上面的方法,对不起,不行,你关掉了也就等于强行关掉程序。那么怎么办呢?

命令1java –cp bin p1 &

命令2nohup java –cp bin p1 > hah.nohup 2>&1 &

当然如果要求再高些还可以指定时间,指定频率运行程序。(呵呵 我不记得了,如果要写我还要去baidu去,不写了)

4:强制结束程序,查看进程等

常常需要强制结束程序,用CTRL+C

查看进程用ps

查看系统资源用top

等等一些基本的Liunx命令

 

其他应该还有,一下子不太记得了,先就这么多吧,有问题说哈!

posted on 2010-12-14 17:08  Alex木头  阅读(764)  评论(0编辑  收藏  举报

导航