最近开始回顾一些Linux的基础知识,温故而知新才行。
在linux下安装JDK如下:
第一步:查看Linux自带的JDK是否已安装
(1)查看已经安装的jdk:
# rpm -qa|grep jdk ← 查看jdk的信息或直接执行
或
# rpm -q jdk
或
# java -version
(2)rpm -qa|grep jdk 卸载:
(3)rpm -e rpm包名(上面看到的)若存在依赖关系,先卸载上层的。
第二步:安装JDK
<1>从SUN下载jdk-1_5_0_14-linux-i586-rpm.bin或jdk-1_5_0_14-linux-i586.bin
在/usr下新建java文件夹,将安装包放在/usr/java目录下
# mkdir /usr/java
<2>安装JDK
# cd /usr/java(mkdir java ?此目录需要创建)
①jdk-1_5_0_16-linux-i586-rpm.bin文件安装
# chmod 777 jdk-1_5_0_16-linux-i586-rpm.bin ← 修改为可执行
# ./jdk-1_5_0_16-linux-i586-rpm.bin ← 选择yes同意上面的协议
# rpm -ivh jdk-1_5_0_16-linux-i586.rpm ← 选择yes直到安装完毕
②jdk-1_5_0_16-linux-i586.bin文件安装
# chmod a+x jdk-1_5_0_16-linux-i586.bin ← 使当前用户拥有执行权限
# ./jdk-1_5_0_16-linux-i586.bin ← 选择yes直到安装完毕
第三步:配置环境变量
<1># vi /etc/profile
(PS:经测试同时修改了 ~/.profile文件, 用vi或者vim,gedit修改都可以)
<2>在最后加入以下几行:
export JAVA_HOME=/usr/java/jdk1.5.0_16
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
PS:(测试OK的环境变量设置)
export JAVA_HOME=/usr/java/jdk1.8.0_65
export JRE_HOME=/usr/java/jdk1.8.0_65/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
<3># source /etc/profile 执行后生效
(PS: 经测试同时修改了 ~/.profile )
第四步:测试JDK
(PS: 这里应该使用java -version测试)
#vi hello.java
public class hello {
public static void main(String args [ ])
{
System.out.println(“Hello World!”);
System.out.println(“2011/1/15”);
}
}
# javac hello.java
# java hello
Hello World!
2011/1/15
看到这些就代表安装成功了!
PS(参考):
Ubuntu的软件包格式为deb,而RPM格式的包则是Red Hat 相关系统所用的软件包。当我们看到一个想用的软件包时,如果他是RPM格式,而你的操作系统是Ubuntu,那岂不是很遗憾?其实,在Ubuntu系统中通过一定的方法也是可以很有效的安装RPM格式包的,本文就针对此加以介绍:
首先,我们要安装alien这一软件:
$sudo apt-get install alien ##alien默认没有安装,所以首先要安装它
$sudo alien xxxx.rpm ##将rpm转换为deb,完成后会生成一个xxxx.deb
$sudo dpkg -i xxxx.deb ##这样xxxx软件就可以安装完成了
注意,用alien转换deb包并不能保证完全顺利安装,所以如果能找到deb包,还是用deb包为好。
(1)
/etc/profile
export JAVA_HOME=/usr/java/jdk1.7.0_67-cloudera/
export PATH=$PATH:$JAVA_HOME/bin
export JRE_HOME=”$JAVA_HOME/jre”
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/rt.jar
修改完成后,使用source /etc/profile 命令进行更新;
PS:
export JAVA_HOME=/usr/java/jdk1.8.0_65
export JRE_HOME=/usr/java/jdk1.8.0_65/jre
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH
(2)下面这几步比较重要,因为在许多linux系统中都预装了openjdk,所以即使上面进行了这些设置,系统默认的还不是我们要设置的内容;如果要真正使用我们自己的jdk,还需要一下步骤:
sudo update-alternatives –install /usr/bin/java java /usr/java/jdk1.7.0_67-cloudera/bin/java 300
sudo update-alternatives –install /usr/bin/javac javac /usr/java/jdk1.7.0_67-cloudera/bin/javac 300
(这里的300只是标识一下,没什么意义,只是下一步要用到)
(3)大功告成,使用java -version 命令来查看我们的java环境变量,显示如下内容:
java version “1.7.0_05”
Java(TM) SE Runtime Environment (build 1.7.0_05-b06)
Java HotSpot(TM) Server VM (build 23.1-b03, mixed mode)
PS:
java -version
java version “1.8.0_65”
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
* 对于更新一个 /usr/bin/xxx 命令指向一个新的路径可以用 sudo update-alternatives –config xxx
PS:tomcat的环境变量设置如下:
经测试必须放在
exec “$PRGDIR”/”$EXECUTABLE” start “$@”
之后才可以正常启动(有网友说必须放在之前,请自己测试)
JAVA_HOME=/usr/java/jdk1.8.0_20
JRE_HOME=${JAVA_HOME}/jre
PATH=$JAVA_HOME/bin:$PATH
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
TOMCAT_HOME=/opt/apache-tomcat-8.0.35
之后就是maven的配置了。
在/etc/profile下同时在个人的 ~/.profile下
加入
#set maven environment
MAVEN_HOME=/usr/local/apache-maven-3.3.9
export MAVEN_OPTS=”-Xms256m -Xmx512m”
export PATH=$MAVEN_HOME/bin:$PATH
测试
$ mvn -version
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /usr/local/apache-maven-3.3.9
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /usr/java/jdk1.8.0_65/jre
之后配置下xml文件
配置用户范围setting.xml
sudo cp /usr/local/apache-maven-3.3.9/conf/settings.xml ~/.m2/
PS:在当前用户目录下的.m2文件夹下
sudo gedit ~/.m2/settings.xml
在文件中找到
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
在其后添加内容:
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository
<localRepository>/path/to/local/repo</localRepository>
-->
<localRepository>/home/yan/code/repository/maven</localRepository>
其中:/home/yan/code/repository/maven是你maven本地仓库的路径。
那么两个profiel有什么区别?
两个重要的profile文件
在UNIX/Xenix系统中有两个对用户而言必不可少的文件??etc目录下的profile文件和
用户主目录($HOME)下的.profile文件。前者是系统文件,对系统下全体用户起作用,后者是
用户自己的”私人”文件。
这两个文件的功能类似于DOS系统下的Autoexec.bat文件,不同之处在于Autoexec.bat文
件可以为空,而这两个文件内容不仅不能为空,而且必须存在。它们在用户登录(Login注册)
时,被系统自动执行,为用户设置工作环境,若使用得当,可发挥强大作用。
etc目录下的profile文件是每一个用户登录时,操作系统首先执行的文件,然后再将控制
权交给用户主目录下的.profile文件,当系统给出主提示符($PS1)后,用户就可以开始自己的
工作了。以上全过程对用户而言是透明的。
/etc/profile文件的主要功能包括:显示UNIX/Xenix版本信息或者系统专用应用程序的
提示信息,设置掩码(umask),对终端和邮箱(mail box)进行处理,对非root用户禁止使用new
s命令等。
因为/etc/profile文件的作用范围是全体用户,所以非共性的设置应放在用户自己的.p
rofile文件中。下面就详细讲述.profile文件。
.profile是隐含文件,普通的列目录命令(l、ls、lf,ls-l等)显示不出该文件。UNIX/X
enix系统所有隐文件前都有”.”符。
显示UNIX/Xenix系统中的隐含文件属性用以下命令:
$l – a
原始的.profile文件是系统管理员使用Sysadmsh命令或mkdev user命令创建用户时,系
统为该用户自动生成的,用户可使用vi编辑该文件为自己所用。.profile文件产生的效用直
至用户退出系统后才消失,而当用户重新登录时,又开始发挥作用。
设置终端类型
用户使用UNIX/Xenix系统时可能会遇到这样一个现象:每次登录后,系统会要求用户敲入
终端类型,然后在用户输入相应信息后,才给出提示符。这是为什么呢?
原来在原始.profile文件中有这样一个语句:
eval ‘test -m ansi:ansi -m:${TERM:ansi}-r -s -Q’
该语句的作用是要求用户敲入所使用终端的类型并进行测试。
如果我们在.profile文件中加入以下命令:
TERM=terminal-name
TERM变量指明终端类型。
如:TERM=vt100,并且注释掉eval语句。这样处理以后,用户再注册时,就无需敲入终端类
型了。
定义PATH变量
该变量类似于DOS系统的PATH变量,其格式如下:
PATH=$PATH:$HOME/bin:/usr/informix/bin:.
说明:
1.该语句未尾的”?”表示当前路径,不可缺少;
2.不同路径间用”:”隔开;
3.$PATH是系统中提供的默认变量,其初始值为/bin:/usr/bin;
4.路径的顺序是很重要的,前后次序不宜随便颠倒。比如用户自编了一个与系统命
令同名的可执行文件,并将其放在$HOME下,并且打算使用这个命令而不是系统提供的同
名命令,那么PATH应设置为:
PATH=$HOME/bin:$PATH:/usr/informix/bin:.
因为,若不同路径下有相同的命令或可执行文件,则以第一个路径下的为准。这时,SHEL
L先搜索$HOME/bin路径,发现其下的这个可执行文件,就为用户调用,而不会再运行/bin或者
/usr/bin下的标准同名命令了。
设置提示符
用户可以将PS1(主提示符)、PS2(辅助提示符)改为更受欢迎的形式。通常情况下,以超
级用户登录时,主提示符为”#”,其它用户为”$”,PS2一般为”<“。修改提示符的方法如下:
格式:PS1=”$LOGNAME> “
说明:将主提示符由默认值改为用户注册名。
使用stty命令重设终端配置
1.对数据传输方式进行设置
如:对奇偶校验位、波特率(bps)大小、停止位位数进行重新设置。
2.字符处理
例1:stty nl
系统只接受字符作为换行符。
例2:stty-nl
系统以(RETURN)字符做为换行符。
例3:stty echo
置击键后屏幕回显。
例4:stty-echo
置击键后,屏幕无显示方式。
3.特殊键定义
例1:
stty erase escape #置抹除键(erase)为escape键
重置抹除键键值,缺省值为”#”。
例2:
stty kill delete #置删行符(kill)为delete键
重置删行符,缺省值为”@”。
例3:
stty eof ctrl-D #置文件结束符(eof)为ctr-D键
重置文件结束符。
例4:
stty intr ctrl-C #中断键可中止系统中绝大多数前台进程,是很重要的终端参数
重置终端中断键为ctrl-C键。
4.其它常用stty命令
例1:stty sane ctrl-J
若终端功能发生紊乱,可用该命令来重置终端设置,使之恢复其出厂参数。该命令以”ct
rl-J”作为行结束符,因为在终端参数紊乱的情况下,RETURN键的功能很可能已经失效,而ctr
l-J命令是系统提供的强行回车键,在绝大多数情况下不会失效。
例2:stty -a
该命令可以显示出终端的所有参数。
以上stty命令是UNIX系统提供的,可随时使用,用户可据自己的需要在.profile文件中设
定。
用户自定义SHELL变量
用户自定义SHELL变量是很有用的,使用情况也很广泛。其功能有些类似于C语言的宏定
义(#define)。最常见的情况是将自己常去的而且很深的路径自定义为一个固定变量,放在.
profile文件中。
如:ML=/usr/work/source/firstml/secoudml
这时,若用户在主提示符($PS1)下键入:
$>cd $ML
$>pwd # 显示当前路径
屏幕显示当前路径为:/usr/work/source/firstml/secondml。
需注意的是:无论使用SHELL专用变量还是自定义变量,均需在变量(大写拼写)前加上”$
“符。并且,在定义完所有变量后,需在.profile中使用export语句,它的作用是将变量设置在
SHELL环境中,以在任意路径下使用。
如:export SHELL ML TERM PATH MAIL PS1
使用Shell内部命令
用户可在.profile文件内使用SHELL内部命令和操作系统命令,Shell常用命令见下表。
@@28173000.GIF;表1@@
.profile文件在Client/Server结构中的应用
在Client/Server结构下,Server总是时刻在运行的,不断地接收Cleint发来的请求,处理
完后向Client发回某些信息。我们指定由server用户来启动server守候进程,特别需要注意
的是,该进程的父进程需设为系统起始进程(init进程),脱离所属终端。否则当server用户从
该终端退出后,该进程就变成了无法控制的”僵尸”进程。
因此,在server用户的.profile文件中加上如下设置:
$HOME/bin/server >>/tmp/server.tmp 2> &1
说明:
1.”&”符号的作用是使系统将进程作为后台进程处理。
2.”2″的作用。
SHELL在执行一个UNIX命令时,自动打开三个文件:stdin(标准输入)、stdout(标准输出
)、stderr(标准错误),文件描述字分别是0、1、2。所以,上面语句中的”2″表示标准错误的
文件描述字。将server进程的错误信息重定向到/tmp/sever.tmp文件中,而不是stdout上,这
样处理后既不会干扰前台工作,而且用户可随时浏览/tmp/server.tmp文件及时发现错误,便
于程序调试,一举两得。对于后台进程,一般都要将其结果重定向到某固定文件中。
3.由于UNIX系统是多用户、多任务、分时处理系统,所以不排除许多用户以server用户
注册,因此其.profile文件会被执行许多次,因之server进程也会被启动许多次,这种情况是
有害的,所以我们作以下修改:
if ps -ef| grep “server” >/dev/null
then echo”server already running……”
else
echo “server is running…”
$HOME/bin/server >> /tmp/server.tmp 2>&1
sleep 5
fi
对所有UNIX/Xenix系统守侯进程都可按上述处理。