你好,你说“dataframe selectt * from data”是错的,我不明白啊,我在dos里面运行是可以的啊.

博客分类:
&&& 继上一篇后,继续在为此不断修改,后来因为需求变化,又开始了process的进步一发掘。
&&& 先交代下背景。第三方软件发布了命令接口,根据执行发布的命令,可以得到第三方硬件的信息。而我现在需要软件直接执行我排好序的命令,以便获取硬件信息,这时需要做个远程的命令登陆,然后远程执行命令,再退出。这其实就好比要模拟telnet、ftp等的客户端,当远程登陆后执行一个指令,然后返回一大堆执行结果,从而实现与客户端的命令交互。
&&& 起先,去下了个common-net.jar的源码看了看,发现telnet、ftp等通信协议都是有专门的消息通道,产生专门的端口来做通讯传输。而这个第三方的命令接口只是个在dos下能执行命令的客户端,再说,即使人家做成了类似telnet的通信协议,俺也不可能知道人家用的端口啥啥的。那现在唯一能做的是,模拟DOS窗口,进行命令的交互。
&&& 有了这个思路,就又想到Process可是能执行命令的,那这个是不是可以呢!Process是为了执行命令而产生的一个独立的执行线程。理论上如果只要这个线程不被销毁,那么会一直可以执行命令。可是Process三个流InputStream、OutputStream、ErrorStream在API上说的是提供输出信息的,未知获得了这输入、输出流是否能干出一番事业呢!
1.自动执行命令的交互
&&& public class Demo {
public static void main(String[] args) {
Process process=
BufferedOutputStream out=
BufferedInputStream in=
process=Runtime.getRuntime().exec("sqlplus ethiopia1103/ethiopia1103@db90");
out=new BufferedOutputStream(process.getOutputStream());
in=new BufferedInputStream(process.getInputStream());
out.write("exit".getBytes());
out.write("\r\n".getBytes());
out.flush();
BufferedReader br=new BufferedReader(new InputStreamReader(in));
String line=
while((line=br.readLine())!=null){
if(line.indexOf("&")!=-1)
System.out.println(line);
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
if(null!=out){
out.close();
if(null!=in){
in.close();
int value=process.waitFor();
if(null!=process)
process.destroy();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
试试直接就退出了,证明传进去的exit命令起作用了。之所以用sqlplus做替代的命令测试,因为其和我要做的第三方接口命令类似。
然后依据这个简单的测试封装了一个命令交互的类。直接上代码:
public class DosCommandInteraction {
private static Logger logger=Logger.getLogger(DosCommandInteraction.class);
private static final String ENTER="\r\n";
//每次输入命令后回车,然后命令执行,出结果
private static final String END="& ";
//遇到&时就退出,证明上一个命令已经执行完
private static final String ERROR="ERROR";
//登录时报ERROR就证明已经登录失败
private Process process=
private BufferedOutputStream out=
private BufferedInputStream in=
* 登录到该命令下,创建执行命令的环境进程
* @param command 登陆命令
public boolean loggin(String command){
boolean flag=
process=Runtime.getRuntime().exec(command);
out=new BufferedOutputStream(process.getOutputStream());
in=new BufferedInputStream(process.getInputStream());
String result=writeCommandResult(in);
//把登录时的信息取出来,判断是否登录成功!其实也为后面能正常输出命令结果做了清理
String[] lines=result.split(ENTER);
for(String line :lines){
if(line.indexOf(ERROR)!=-1){
}catch (IOException e) {
// TODO Auto-generated catch block
logger.error(e);
if(!flag) close();
* 将输入的命令转化为流执行命令得到执行的记录
* @param command
public List&String& execCommand(String command){
logger.info("exec command : "+command);
InputStream input = new ByteArrayInputStream((command+ENTER).getBytes());
readerCommand(out,input);
String result=writeCommandResult(in);
logger.info(result);
input.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
return Arrays.asList(result.split(ENTER));
* 将命令写入输出流
* @param outs 全局输出流
* @param ins 输入命令的流
private void readerCommand(OutputStream outs,InputStream ins){
while ((ch = ins.read()) != -1) {
outs.write(ch);
outs.flush();
} catch (IOException e) {
logger.error("readerCommand",e);
* 读取命令返回的结果
* @param ins 全局的输入流
* @return 命令结果
private String writeCommandResult(InputStream ins){
int length = -1;
byte[] buffer = new byte[10240];
String readLine =
StringBuilder readResult = new StringBuilder("");
while((length=ins.read(buffer))&0){
readLine = new String(buffer, 0 , length,"gbk");
readResult.append(readLine);
if(readLine.indexOf(ERROR)!=-1)
if(readResult.toString().endsWith(END)||readResult.toString().endsWith(END.trim()))
} catch (IOException e) {
logger.error("writeCommandResult",e);
return readResult.toString();
* 所有命令执行完成后推出命令,关闭进程
public void quit(){
execCommand("quit");
* 关闭所有的流和进程
private void close(){
if(null!=out){
out.close();
if(null!=in){
in.close();
int value=process.waitFor();
logger.info("process end state :" +value);
if(null!=process)
process.destroy();
} catch (IOException e) {
// TODO Auto-generated catch block
logger.error(e);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
我在配置文件里设置如下:
&bean id="command" class="java.util.ArrayList"&
&constructor-arg&
&value&sqlplus orcl/orcl@db&/value&
&value&select 1&/value&
&value&select 2&/value&
&value&select 3&/value&
&value&select 4&/value&
&/constructor-arg&
&/bean&
测试方法:
public void handler(){
List&String& commList=(List&String&) SpringUtil.getObject("command");
logger.info("start.................");
DosCommandInteraction dos=new DosCommandInteraction();
if(!dos.loggin(commList.get(0))){
logger.info("connection error!");
for(int i=1;i&commList.size();i++)
dos.execCommand(commList.get(i));
dos.quit();
logger.info("end.................");
测试结果如下:
main [ 16:33:59] - start.................
main [ 16:33:59] - exec command : select 1
main [ 16:33:59] -
----------
main [ 16:33:59] - exec command : select 2
main [ 16:33:59] -
----------
main [ 16:33:59] - exec command : select 3
main [ 16:33:59] -
----------
main [ 16:33:59] - exec command : select 4
main [ 16:33:59] -
----------
main [ 16:33:59] - exec command : quit
main [ 16:33:59] - 从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
main [ 16:33:59] - process end state :0
main [ 16:33:59] - end.................
真正做到了自动执行命令,并且获取到该命令的结果。
2.如果是想直接敲命令的互动,可是尝试如下:
public class TwoDemo {
public static void main(String[] args) {
Process process =
BufferedOutputStream out =
BufferedInputStream in =
process = Runtime.getRuntime().exec(
"sqlplus orcl/orcl@db");
out = new BufferedOutputStream(process.getOutputStream());
in = new BufferedInputStream(process.getInputStream());
readWrite(in, out, System.in, System.out);
//该方法借用common-net的测试例子部分的一个工具类的方法
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally {
if (null != out) {
out.close();
if (null != in) {
in.close();
int value = process.waitFor();
if (null != process)
process.destroy();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
public static final void readWrite(final InputStream remoteInput,
final OutputStream remoteOutput, final InputStream localInput,
final OutputStream localOutput) {
Thread reader,
reader = new Thread() {
public void run() {
while (!interrupted() && (ch = localInput.read()) != -1) {
remoteOutput.write(ch);
remoteOutput.flush();
} catch (IOException e) {
// e.printStackTrace();
writer = new Thread() {
public void run() {
Util.copyStream(remoteInput, localOutput);
} catch (IOException e) {
e.printStackTrace();
System.exit(1);
writer.setPriority(Thread.currentThread().getPriority() + 1);
writer.start();
reader.setDaemon(true);
reader.start();
writer.join();
reader.interrupt();
} catch (InterruptedException e) {
}
看看测试结果:
SQL*Plus: Release 10.2.0.1.0 - Production on 星期一 6月 27 16:45:58 2011
Copyright (c) , Oracle.
All rights reserved.
Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options
SQL& select *
SQL& select 1
----------
从 Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production
With the Partitioning, OLAP and Data Mining options 断开
和在dos下执行是完全一样的
产生process = Runtime.getRuntime().exec()时为什么要选择这种方式呢?为什么不是ProcessBuilder了呢?
我们现在不论使用哪种方式产生的命令执行进程都会读取进程的流,所以就不会再有流堵塞而导致无法执行下去的问题了。
ProcessBuilder在加入命令时是以数组的形式,如果是sqlplus orcl/orcl@db就需要分为两个参数加入,而现在我们更希望是一个命令是一个字符串。
有什么问题希望指正。
浏览: 18841 次
来自: 北京
没有用。。。。。。。。。。
(window.slotbydup=window.slotbydup || []).push({
id: '4773203',
container: s,
size: '200,200',
display: 'inlay-fix'我的linux红帽子家族学习借鉴使用笔记(备份用,里面大部分是转别人的)无限更新~~-红联Linux系统门户
您的位置:
&& 查看内容 - - -
我的linux红帽子家族学习借鉴使用笔记(备份用,里面大部分是转别人的)无限更新~~
baizx发布于
&&字号: &&&&(网友评论&188&条)&
[i=s] 本帖最后由 baizx 于
09:31 编辑
Ip 配置方法:
ip addr add dev eth0
ip link set dev eth0
/etc/rc.d/rc.local
ifcongfig etho IP或者写个脚本
再就是改/etc/sysconfig/network-scrips/ifcfg-eth0然后 ifdown eth0 再ifup eth0 或者service network restart 重启网卡服务 就不用重启LINUX了
SETUP 或者netconfig也可以
Linux下星际译王 stardict 的安装
“星际译王”是用Gtk2开发的跨平台的国际化的词典软件。它具有“通配符匹配”、“选中区取词”、“模糊查询”等强大功能。本文主要解说一下主程序和词库的安装;
一、什么是星际译王 stardict ;
“星际译王”是用Gtk2开发的跨平台的国际化的词典软件。它具有“通配符匹配”、“选中区取词”、“模糊查询”等强大功能。所以他不仅仅是汉英和英汉词典;目前星际译王的词库多多;但国人大多还是用英汉和汉英比较多;
官方主站:
词库页面: 词库页面
中英字典: 中(简体)英词典
其它词典,请到词库存页面上查看;
二、安装星际译王 stardict;
1、安装主程序 stardict
您可以通过到官方直接下载 stardict 的RPM 包,也可以通过 yum 或apt 来在线安装stardict ;其实系统光盘映像中也有stardict的主程序包,只是没有词典;
[root@localhost beinan]# yum install stardict
或者直接下载rpm 包来安装;
[root@localhost beinan]#rpm -ivh stardict*
2、安装词典;
我们通过 中(简体)英词典下载所有的RPM 包,放在一个目录中,比如是stardict目录;执行安装命令;
[root@localhost stardict]# rpm -ivh stardict*.rpm
Preparing... ########################################### [100%]
1:stardict-xdict-ec-gb ########################################### [ 13%]
2:stardict-cdict-gb ########################################### [ 25%]
3:stardict-cedict-gb ########################################### [ 38%]
4:stardict-hanzim ########################################### [ 50%]
5:stardict-langdao-ec-gb ########################################### [ 63%]
6:stardict-oxford-gb ########################################### [ 75%]
7:stardict-stardict1.3 ########################################### [ 88%]
8:stardict-xdict-ce-gb ########################################### [100%]
3、调用stardict ;
[beinan@localhost stardict]$ stardict
加载字典详细信息如下:
bookname: 朗道英汉字典5.0 , wordcount 435468
bookname: XDICT英汉辞典 , wordcount 177842
bookname: stardict1.3英汉辞典 , wordcount 51214
bookname: CEDICT汉英辞典 , wordcount 23451
bookname: XDICT汉英辞典 , wordcount 160997
bookname: 牛津现代英汉双解词典 , wordcount 39429
bookname: CDICT5英汉辞典 , wordcount 57510
bookname: Hanzi Master 1.3 , wordcount 25992
4、其它词典的安装;
大同小异,自己下载,直接rpm -vih file.rpm 就能安装上;没有什么难的;
举例:比如下载了一个没有签名的软件包,可以这样安装
--nogpgcheck
install 软件包名称
我一般习惯先su到root,再用yum。网上很多直接再普通用户下用yum的用法,这个例子就应该是这样的
1. su -c 'yum
--nogpgcheck
install 软件包名称‘
我觉得如果要连续操作的时候还是先切到su方便些,不然老要输入密码,命令格式也显的复杂。如果只是安装一个软件的话网上流行的这种方法很好,装完之后自动退出到普通用户模式,安全性高。本文只是列出常用的操作,有些参数和命令没有涉及,不够应该是够用了。
新装好的系统应该简单配置一下yum,载入几个常用的插件,让它更好用
1. yum install yumex yum-presto yum-fastestmirror yum-security yum-allowdowngrade
yum的扩展,图形前端
yum-presto
增量包应用插件,有增量包的时候优先下载增量包,可以大大减少下载量
yum-fastestmirror
可以让yum选择速度最快的源(软件仓库)
yum-security
安全插件,具体功能我也不是很清楚
yum-allowdowngrade
允许软件降级的插件
yum是个功能强悍的包管理工具,命令语法很简单的:yum --操作参数
命令 包名称1 包名称2 .......,,有些操作也可以没有包名称(软件名) ,支持再在报包名称中使用通配符*来一次安装多个名称前端一致的软件包。
下面把操作参数和命令列出来,大多数时候没必要要操作参数的。
Options list (操作参数)
显示帮助信息,并退出
-t, --tolerant
忍受发生的错误
从缓冲中运行,而不是升级缓存
最大化的命令等待时间
[debug level]
调试输出级别
--showduplicates
显示复制, 在repo,list/search命令下
[error level]
错误输出级别
-q, --quiet
安静的操作
回答所有的问题为是
显示 YUM版本信息并退出
--installroot=[path]
设置为root安装
--enablerepo=[repo]
激活一个或多个仓库(支持通配符)
--disablerepo=[repo]
禁掉一个或多个仓库(支持通配符)
-x [package], --exclude=[package]
在名称或glob不包含包。
--disableexcludes=[repo]
禁掉出了这个之外的别的仓库
--noplugins
禁掉yum插件
--nogpgcheck
禁掉GPG验证检查,没有签名的软件安装加这个参数
--disableplugin=[plugin]
用名称禁掉插件
--enableplugin=[plugin]
用名称启用插件
--skip-broken
忽略包的依赖问题
--allow-downgrade
晕软件包降级
--disablepresto
禁用Presto 插件并且不下载任何增量包
list of Commands:(操作命令)
check-update
检查可提供的包升级
删除缓存数据
列出包依赖相关
降级一个软件包
移除一个或多个包从你的系统
显示关于包组的细节
groupinstall
从组里安装软件包到你的系统
列出当前的组
groupremove
在一个组中移除包从您的系统
显示帮助用法信息
显示关于包或一组包的细节信息
info-security
返回影响系统安全的数据
安装一个或多个软件包在你的系统
列出一个包或某组的包
localinstall
安装本地 RPM
生成原数据缓存
重新安装一个包
显示软件仓库的配置
resolvedep
决定哪个包提供了给定的依赖
查找包细节居给定的字符串
运行交互式的yum shell
更新一个或多个系统 中已安装的包
update-minimal
只升级安装最新的包,系统补丁
升级整个系统,一般在系统版本升级的时候用
yum -y remove httpd
卸载多个相类似的软件时
yum -y remove httpd*
卸载多个非类似软件时
yum -y remove httpd php php-gd mysql
像windows下的快捷方式-刚摸索出来。
rpm包一般在终端输入对应与以包名命名的命令
就可以起动,如,vi起动vi编译器,xmms起动xmms.........
下面讲一下怎样利用ln创建rpm包的快捷方式:
例如,rpm -ql gedit,看一下gedit的安装位置和其执行命令的位置
/etc/gconf/schemas/gedit.schemas
/usr/bin/gedit
上面显示了gedit在/usr/bin下,
好了,开始创建(注意大小写):
ln -s /usr/bin/gedit /root/Desktop/gedit
ok。上面的意思是把快捷方式放在桌面上,命名为gedit
其他rpm包,道理same!
2.tar.gz包
此包不能rpm -ql
拿我的gftp举例(我把rpm包的gftp卸了,装tar.gz的gftp包,在
/usr/local/gftp)
我也是新手,我是安装时候制定安装位置的,
在安装位置找到gftp
ln -s /usr/local/gftp/bin/gftp /root/Desktop/gftp
ok..........
有些安装包,以现在的技术,找不到它,
但我知道执行的命令--难道每次用都要输入执行命令?
在桌面上新建起动器,在命令框,输入执行它的命令
双系统只有一个启动解决:
在双安装系统的时候 记得在格完盘后的启动项那里 一个是LINUX的 一个是以前的系统的要设置好
如忘记设置 可在/BOOT/GRUB下的menu.lst 或grub.conf
双系统时间不能同步:
问题主要是FC7中是启用了UTC时间。关闭UTC即可。
打开:/etc/sysconfig/clock
# The ZONE parameter is only evaluated by system-config-date.
# The timezone of the system is defined by the contents of /etc/localtime.
ZONE="Asia/Shanghai"
把 UTC=true 一行改为: UTC= false
保存,退出, 重启,恢得正常了。
也可以用右键点击时间栏,然后选择调整日期和时间,然后去掉时区下面的系统时钟使用UTC的选项,保存退出即可。
最好的办法还是装一个webmin可以同时调整系统时间和硬件时间,以及将系统时间和硬件时间同步,而且可以方便的管理系统其他的信息。
安装webmin的方法和使用,见
wenmin的网址
Linux硬件时间的设置方法(转载):
hwclock [--adjust][--debug][--directisa][--hctosys][--show][--systohc][--test]
[--utc][--version][--set --date=]
补充说明:在Linux
中有硬件时钟与系统时钟等两种时钟。硬件时钟是指主机板上的时钟设备,也就是通常可在BIOS画面设定的时钟。系统时钟则是指kernel中的时钟。当
Linux启动时,系统时钟会去读取硬件时钟的设定,之后系统时钟即独立运作。所有Linux相关指令与函数都是读取系统时钟的设定。
参  数:
--adjust  hwclock每次更改硬件时钟时,都会记录在/etc/adjtime文件中。使用--adjust参数,可使hwclock根据先前的记录来估算硬件时钟的偏差,并用来校正目前的硬件时钟。
--debug  显示hwclock执行时详细的信息。
--directisa  hwclock预设从/dev/rtc设备来存取硬件时钟。若无法存取时,可用此参数直接以I/O指令来存取硬件时钟。
--hctosys  将系统时钟调整为与目前的硬件时钟一致。
--set --date=  设定硬件时钟。
--show  显示硬件时钟的时间与日期。
--systohc  将硬件时钟调整为与目前的系统时钟一致。
--test  仅测试程序,而不会实际更改硬件时钟。
--utc  若要使用格林威治时间,请加入此参数,hwclock会执行转换的工作。
--version  显示版本信息
Vista下安装LINUX
安装准备:1.磁盘分区。vista下用系统自带的分区工具分出2个新区,一个做根分区,一个做swap分区。Vista系统有个UAC的东西,要先把这个东西关了。进入控制面板>用户帐户和家庭安全>用户帐户>打开或关闭用户帐户控制。右键单击桌面“计算机”图标,选择“管理”,进入“计算机管理”窗口,选择“存储”-“磁盘管理”。查看硬盘分区,分出两个空白分区,最好是最后的两个区。xp下用相应的分区工具。更多磁盘分区知识,请参考 零命令玩转Ubuntu 8.04 之 安装篇 (准备知识)2.下载文件。下载一个最新grub for dos ,下载ubuntu8.04安装文件,ubuntu-8.04.1-desktop-i386.iso ,ubuntu-8.04.1-alternate-i386.iso,ubuntu-8.04.1-dvd-i386.iso 三个文件都可以,只不过后面操作稍有不同。安装过程:SP1 不能双系统(其实是过于麻烦)1.解压grub4dos文件夹中的grldr,grldr.mbr,menu.lst到C:\ 。
备注:menu.lst不复制也行,自己用记事本新建一个文件另存为menu.lst。C盘格式为ntfs或者fat32都可以安装。2.把ubuntu安装程序放到c盘根目录下,解压缩ISO文件中的casper目录内的initrd.gz和vmlinuz两个文件,并将其复制到C盘根目录下。如果下载的是desktop版,除了以上文件外,还需要把ISO镜像中的.disk目录也复制到C盘根目录下。3.把grub添加到系统启动菜单。vista和xp下的操作不一样。
vista下:在cmd中输入以下命令:
bcdedit /create /d "GRUB4DOS" /application bootsector
命令结果应该会返回一个GUID,后面的命令用到这个GUID
bcdedit /set {GUID} device partition=C:
bcdedit /set {GUID} path \grldr.mbr
bcdedit /displayorder {GUID} /addlast xp下:在C盘根目录系统文件boot.ini的最后加上一行:c:\grldr=”GRUB4DOS“
如果boot.ini中的timeout值为零,把它设置为大于0的数字,例如timeout=30,然后保存。
注意:boot.ini文件一般是隐藏的,你需要在文件夹选项中设置显示所有文件,或者在cmd中使 用以下命令来去掉boot.ini的隐藏属性:attrib -s -r -h c:\boot.ini4.用记事本编辑刚才复制的menu.lst(如果没有复制,就新建一个),粘贴以下内容:color black/cyan yellow/cyantimeout 30default /defaulttitle Microsoft Windows Vistaroot (hd0,0)savedefaultmakeactivechainloader +1title Install Ubunturoot (hd0,0)kernel=/vmlinuzinitrd=/initrd.gztitle rebootsavedefault --wait=2reboottitle haltsavedefault --wait=2halt如果是alternate和dvd的,直接复制粘贴上面的代码。如果是desktop的,把红色代码替换为:title Install Ubunturoot (hd0,0)kernel /vmlinuz boot=casper iso-scan/filename=/ubuntu-8.04.1-desktop-i386.isoinitrd /initrd.gz备注:如果第一个分区是系统还原分区,C盘在第二个分区,把(hd0,0)改为(hd0,1)。如果desktop安装过程提示找不到文件,检查你下载的文件名是否和iso-scan/filename=/ubuntu-8.04.1-desktop-i386.iso中的文件名一样,如不一样,修改代码。5.重新启动电脑,启动菜单多了一个GRUB4DOS选项,进入后选Install Ubuntu。
安装过程中可以参考 ubuntu中文wiki的” 写给ubunt新手 “或者网上其他图文教程,主要是磁盘分区过程。后面有一个步选择安装软件时,普通用户选desktop就可以了。
最后一步可以把grub写入mbr,用grub引导vista和ubuntu双系统,也可以跟我一样,写在linux分区,用vista的启动管理器引导grub,再用grub引导ubuntu。
如果网速不快,安装时可以拔掉网线。如果自动配置了网络,在后来apt-get下载软件时,速度很慢,可以 Ctrl+Alt+F2 ,sudo pkill apt-get ,Alt+F7。6.重启,进入vista,编辑menu.lst,添加ubuntu启动项。title Start Ubuntu 8.04root (hd0,5)kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/sda6 ro quiet splashinitrd /boot/initrd.img-2.6.24-19-generic如果懒得重复修改menu.lst,直接复制我下面的。重启进入GRUB4DOS,选择Start Ubuntu 就能登陆ubuntu系统了。包括各种ubuntu的安装和启动菜单的menu.lst:color black/cyan yellow/cyantimeout 30default /defaulttitle Microsoft Windows Vistaroot (hd0,0)savedefaultmakeactivechainloader +1title Start Ubuntu 8.04root (hd0,5)kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/sda6 ro quiet splashinitrd /boot/initrd.img-2.6.24-19-generictitle Start Ubuntu 8.04 (rescue)root (hd0,5)kernel /boot/vmlinuz-2.6.24-19-generic root=/dev/sda6 ro single quiet splashinitrd /boot/initrd.img-2.6.24-19-generictitle Install Ubuntu (alternate / dvd)root (hd0,0)kernel=/vmlinuzinitrd=/initrd.gztitle Install Ubuntu 8.04 (desktop)root (hd0,0)kernel /vmlinuz boot=casper iso-scan/filename=/Ubuntu-8.04.1-desktop-i386.iso quiet splash ro locale=zh_CN.UTF-8initrd /initrd.gztitle rebootsavedefault --wait=2reboottitle haltsavedefault --wait=2halt备注:代码中红色部分需要根据自己的实际情况进行更改。1. 一处是hd(0,5),对应的是sda6
hd(0,5) 是指第一硬盘的第6分区,对应于ubuntu,就是sda6。
hd(1,2) 是指第二硬盘的第3分区,对应于ubuntu,就是sdb3。
GRUB 要求设备名被括在一个 ( ) 中。fd表示软盘,hd 表示硬盘(不区分 IDE 还是 SCSI)。其次设备是从 0 开始编号,分区也是如此,分区和设备之间用一个 ‘,’ 分开。
""注意"":"root"必须指向你的'/boot/'分区,如果你有的话。没有,则指向'/'分区。2. kernel和initrd后面的红色数字为内核版本,安装过程中需要留意一下,如果是8.04.1的话,应该是2.6.24-19 ,如果是其他内核,请自己修改一下。
tips:硬盘分区简单介绍
1. 硬盘分区
一块硬盘可以分为四个主分区,或三个主分区加上一个扩展分区。扩展分区其实只是一个容器,我们实际上并不直接使用扩展分区。在扩展分区内,我们可以继续划分逻辑分区。一般的认为在一个扩展分区内,能分出无数个逻辑分区。正因为有了逻辑分区,一块硬盘才能被分成很多个分区。
2. Linux中的硬盘分区
与Windows不同,Linux并不是用C, D, E, F等盘符来标识每一个分区的,而是用一系列设备文件来标识――Linux把一切硬件设备都当成文件。比如,Linux下,四个主分区分别对应/dev /sda1, /dev/sda2, /dev/sda3, /dev/sda4。其中/dev是设备文件所在的目录,sd代表SCSI Disk,a代表第一个SCSI设备,数字1,2,3,4分别代代表了四个主分区。如果你不知道什么是SCSI Disk,不用担心,因为你并不需要知道它究竟是什么。通常,如果你的电脑中只有一块硬盘,那么,这块硬盘一定是/dev/sda。
可能你以前接触过Linux,或曾经在一些老旧的资料中看到过/dev/hda代表第一个主IDE通道上的硬盘,……你现在已经无需知道这些了。因为 Ubuntu已经取消了用hd和sd区分不同类型的硬盘的机制,取而代之的,用sda统一代表电脑中的第一块硬盘。
Linux下,/dev/sdaX中的数字X的编号是有限的。在Linux下,最大的分区编号是16。因此,主分区和扩展分区编号占用 1~4,逻辑分区占用5~16。即使你的硬盘中只有一个主分区(如,/dev/sda1)和一个扩展分区(/dev/sda2),剩下的两个主分区编号: /dev/sda3, dev/sda4 也不会分配给逻辑分区。第一个逻辑分区一定是从/dev/sda5开始编号的。这点与Windows下盘符的编制类似。如:A盘一定是3.5英寸软驱,B 盘一定是5.25英寸软件,而从C盘开始才是硬盘分区。即使电脑上没有软驱,第一个硬盘分区的编号也是C,而不是A。
XP下安装:
最近安装了Fedora11,遇到不少的困难,也走了很多弯路,在这里总结下。
一、安装准备
我是在windowsXP下安装的F11,就是装个双系统。
首先给系统分区,我是分了三个区: 使用了分区魔术师
1、主分区,就是挂载“/”根目录的分区,给了15G。
2、挂载“/tmp”目录的分区,因为在装软件的时候经常要求/tmp文件有一定的空间,所以,我就单独给了它一个分区,2G。
3、swap分区,交换分区,这个必须要有的,一般是内存空间的2倍,我的内存2,所以划给它4G。
4,当然你也可以不需要先分区,但是一到定要 删除 WIN的一部分分区留给LINUX。安装的时候手动分区就好
二、下载镜像
我是在F10的官方网站下载的那个3G多的,就是Upgrade to Fedora 10 from an older version这个,还有一个685M的liveCD,可以制作CD,DVD啥的,从光盘安装,这里我用了个分量大的,从硬盘安装。(很明显两个里面的目录结构是不同的)。
下载之后将它放在一个FAT32格式的硬盘下,一定是FAT32,要不然安装的时候找不到文件。从中提取几个必要的文件,isolinux文件夹中的vmlinuz和initrd.img,为了文件目录的完整性,直接解压出文件夹就行了,放在跟镜像同一个目录下。还有一个images文件夹,也解压到同一个目录下。
文件目录:
Fedora-11-i386-DVD.iso
三、grub4dos的使用
grub for dos 可以帮助你引导安装linux,如果想详细了解什么是grub4dos可以去百度下。
我是下载的grub4dos-0.4.4,这是个绿色版的。
从中提取三个文件: grldr ,
, menu.lst放在C盘下,其实是放在FAT32文件系统的盘下就行,我就放在C盘下,用完了可以删除。 打开文件menu.lst,在文档的末尾添加如下代码
title Install-Fedora11
kernel (hd0,0)/isolinux/vmlinuz
initrd (hd0,0)/isolinux/initrd.img
这3条命令最好抄下来,如果是第一次安装的话。
然后打开我的电脑->右击属性->高级->启动与故障恢复->高级->编辑,打开boot.ini文件,在文件最后添加
C:\grldr="GRUB"
确认之后,可以重启了,启动之后就可以看到grub启动的选项,进入后,可以看到很多选项,当然我们选择刚才配置的最后一项Install-Fedora11,进入,就可以安装Fedora11了,至此第一步完成。
故障处理:
如果不小心弄坏了,但是还有grub提示,那么可以进入grub命令行依次输入:
root (hd0,0)
makeactive
chainloader +1
就可以重新进入Windows了。
如果没有在menu.lst中添加上面的代码,在选项中找不到Install-Fedora11这项,也可以进入命令行,依次输入:
kernel (hd0,0)/isolinux/vmlinuz
initrd (hd0,0)/isolinux/initrd.img
如果在安装的过程中因为人为原因或者自然原因导致安装没完成就机器断电了,使其MBR表损坏不能进入任何系统,任何界面。
可以使用PE进入系统然后安装DiskGenius 修复 MBR 重启 ,OK! 又可以进入WINDOWS XP了!呵呵……
sensors(cpu温度)
groupadd (建立组)
groupdel (删除组)
mv (移动或更名现有的文件或目录)
cp(copy)
find (查找)
tar(解压)
gzip (压缩)
zip (压缩)
unzip(解压缩zip文件)
su -l(变量也跟过来)
uname -a (查看系统是 32 还是64)(686 386=32;86_64 64 大概)
pklill (群杀进程)
(日期显示与添加修改)
(建立用户)passwd (建立密码) -d(删除密码)
userdel (删除用户)
;(例子)#(注销)(vi 某个文件里)
#(注销) “”(如有文档 -AX 之类的无法删除则加)
cat (把档案串连接后传到基本输出(萤幕或加 > fileName 到另一个档案)
rm -rf(强制删除)
mkdir(建目录)mkdir --mode(-m)=666 dir2 (建出来的目录权限) -p(确保路径目录存在)
touch(建文件)
ls -lh (查看文件大小) ls -l=ll
DF -m (查看磁盘使用M)df(查看是否正确mount)
ifdown ifup (关闭启动 网卡)
ntsysv setup 网络配置
vi /etc/inittab(修改 3 5 )
set nu(加上数字)
startX=init 5(进入图形界面)
mount (挂载)
umount (卸载)
chgrp (变更文件所属组)
chmod(变更文件目录权限)
chown (变更文件或目录的拥有者或所属群组。)
chkconfig --list dhcpd(查看级别)
chkconfig --level 35 dhcpd on(提升DHCP 3 5 on)
ps -e(查看所有进程)
arp (使用前先PING一下)
vi /etc/rc.d/rc.local(启动时候最后的脚本)
system-config-packages(在图形界面下安装各种服务)
pwd(查看绝对路径)
vi -o 文件1 文件2(同时打开两个文件)
vi -o 1.txt 2.txt
rpm -qa | grep XXX(安装多少系列软件)
rpm -ql XXX(软件安装到哪里)
grep -v "^#" /etc/samba/smb.conf |grep -v "^;"(查看SMB有效命令)
yum upgrade(升级整个系统)
yum update(升级已经有的包)
linux内核升级后如何删除旧的内核
用fdisk -l ;df -lh ;more /etc/fstab来确认分区情况;
inux下为php添加GD库的步骤如下:一、下载
gd-2.0.33.tar.gz
安装步骤:安装libxml # tar -zxf libxml2-2.6.19.tar.gz# cd libxml2-2.6.19# ./configure (xml默认安装就可以,不要指定路径了,因为安装时php可能找不到它,PHP5只支持libxml2-2.5.10以上版本) # make # make install 安装zlib # tar -zxf zlib-1.1.3.tar.gz# cd zlib-1.1.3# ./configure --prefix=/usr/local/zlib (注意,如果您以前没有安装zlib,可以不指定路径,我是没有删除以前的低版本才指定的!以下雷同!) # make # make install 安装jpeg # tar -zxf jpegsrc.v6b.tar.gz # cd jpeg-6b/ # ./configure --prefix=/usr/local/jpeg# make # make install-lib 如果你选择默认安装,可能很顺利,指定路径后,请先创建以下文件夹 错误提示:...... /usr/bin/install -c -m 644 jconfig.h /usr/local/jpeg6/include/jconfig.h /usr/bin/install: 无法创建一般文件‘/usr/local/jpeg/include/jconfig.h’: 没有那个文件或目录 make: *** [install-headers] Error 1 # mkdir /usr/local/jpeg# mkdir /usr/local/jpeg/include # mkdir /usr/local/jpeg/lib # make install-lib # make install 安装时如果错误提示: /usr/bin/install: 无法创建一般文件‘/usr/local/jpeg6/lib/libjpeg.a’: 没有那个文件或目录 make: *** [install-lib] Error 1 创建如下文件夹: # mkdir /usr/local/jpeg/lib # make install /usr/bin/install -c cjpeg /usr/local/jpeg/bin/cjpeg /usr/bin/install: 无法创建一般文件‘/usr/local/jpeg/bin/cjpeg’: 没有那个文件或目录 make: *** [install] Error 1 # mkdir /usr/local/jpeg/bin /usr/bin/install -c -m 644 ./cjpeg.1 /usr/local/jpeg/man/man1/cjpeg.1 /usr/bin/install: 无法创建一般文件‘/usr/local/jpeg/man/man1/cjpeg.1’: 没有那个文件或目录 make: *** [install] Error 1 # mkdir /usr/local/jpeg/man # mkdir /usr/local/jpeg/man/man1 # make install 好了,直到安装成功! 安装libpng: # tar -zxf libpng-1.2.29.tar.gz# cd libpng-1.2.29.tar.gz # ./configure --prefix=/usr/local/libpng# make # make install 安装freetype: # tar -zxf freetype-2.3.5.tar.gz # cd freetype-2.3.5 # ./configure --prefix=/usr/local/freetype # make # make install 安装gd库: # tar -zxf gd-2.0.35.tar.gz # cd gd-2.0.35.tar.gz # ./configure --prefix=/usr/local/gd --with-zlib=/usr/local/zlib/ --with-png=/usr/local/libpng/ --with-jpeg=/usr/local/jpeg/ --with-freetype=/usr/local/freetype/ (请指定及格插件的安装路径,否则安装php的时候可能出错!) # make # make install
安装GD可能出现的错误:
当make 时出现 configure.ac:64: error: possibly undefined macro: AM_ICONV
下载gettext-devel-0.14.1-13.i386.rpm,然后安装上就行了.
重新安装编译php5: # tar -zxf php-5.1.4.tar.gz # cd php-5.1.4 # ./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-jpeg-dir=/usr/local/jpeg/ --with-png-dir=/usr/local/libpng/ --with-gd=/usr/local/gd/ --with-freetype-dir=/usr/local/freetype/ --enable-trace-vars --with-zlib-dir=/usr/local/zlib/ -with-mysql=/usr/local/mysql
内核下载删除:
首先我们需要查看一下当前使用的是哪个内核:
该命令会告诉你当前使用的内核版本
接下来,如果你是自己动手编译的内核的话,请删除以下文件和文件夹
1. 删除掉/lib/modules/目录下过时的内核库文件
2. 删除掉/usr/src/kernels/目录下过时的内核源代码
3. 删除掉/boot目录下启动的核心档案以及内核映像
4. 更改/boot/grub/menu.lst,删除掉不用的启动列表
如果你使用的是yum或者rpm包管理器更新的话
rpm -qa | grep kernel*
查找所有linux内核版本
rpm -e kernel-(相要删除的内核版本)
用rpm命令行删除的话会遇到依赖关系问题,也就是说如果卸载的时候出现不让卸载的情况,请使用
rpm -e --nodeps
kernel-(要删除的版本)
不检查依赖关系直接删除
yum remove kernel-(要删除的版本)
建议用这个来删除,它会提示所有的依赖关系,如果你确认他会把这些相关的文件全删了,即卸载的很干净。
在CentOS 5.3 命令行中显示中文
第一,打开语系支持文件:#vim /etc/sysconfig/i18n
LANG="en_US.UTF-8”  ← 找到这一行,将“UTF-8”,改为"GB2312"
第二,安装中文环境的shell : 首先安装libstdc++.so.5包:# yum install libstdc++.so.5
再下载zhcon:# wget
安装下载的zhcon:# rpm -ivh zhcon-0.2.3-1.i386.rpm
完了,用zhcon 命令就可以显示中文了。
如果通过 SSH 方式登录服务器,比如用PuTTY登录,不必安装 zhcon就能够实现中文显示,详情请见:Putty中文教程
用putty登录,这样上面wget那段地址就可以直接复制去,不必一个个敲到命令行界面里
b置 b置在Linux鹊n名
IDE硬碟C /dev/hd[a-d]
SCSI/SATA/USB硬碟C /dev/sd[a-p]
USB快W碟 /dev/sd[a-p](cSATA相同)
碟C /dev/fd[0-1]
印表C 25: /dev/lp[0-2]
USB: /dev/usb/lp[0-15]
滑鼠 USB: /dev/usb/mouse[0-15]
PS2: /dev/psaux
前CDROM/DVDROM /dev/cdrom
前的滑鼠 /dev/mouse
磁C IDE: /dev/ht0
SCSI: /dev/st0
/etc/sysconfig/network
@n案主要的功能在於O定『主C名Q( HOSTNAME )c Network c否』!一般碚f,如果您舆^@n案鹊闹C名Qr,毡刂匦麻_C (reboot), 因檫@硬系y上面所有的程式都使用最新O定的主C名Q喔!( 在 SuSEL 上面,主C名Q是在 /etc/HOSTNAME e面的!)
/etc/sysconfig/network-scrips/ifcfg-eth0
@n案的热菁词窃O定W路卡档n案啦!e面可以O定『network, IP, netmask, broadcast, gateway, _Cr的 IP 取得方式( DHCP, static ), 是否在_C的r候印坏鹊取V领 ifcfg-eth0 指的是第一KW路卡,而第二KW路卡 ifcfg-eth1 以此推。(在 SuSE 上面t是使用 /etc/sysconfig/network/ifcfg-eth0 )。
/etc/modprobe.conf
如果硬w要能幼鳎然要核心有支援才行!同r,我也可以利用外斓暮诵哪=M (可以⑺氤墒球映淌) 眚佑搀w,而_Cr用碓O定d入核心模M的n案就是 modprobe.conf 啦。一般碚f,目前的 distributions 通常使用模M的方式砭gW路卡映淌剑裕 您安b完後,您的W路卡c模MǔR呀到@n案中樱
/etc/resolv.conf
我在W路基Ae面稍微提到的 DNS 功能是什N?玻 就是M行主C名Qc IP 的《 resolv.conf 就是O定 DNS IP (名Q解析伺服器) 的n案, 常常有人提到『咦!我已可以 ping 到外部X的公共 IP 了,楹屋入W址so法B?』 通常l生的e`就是@n案e面的O定不正_啦!注意! 通常@n案可以入中A信的 DNS ( 168.95.1.1 )!
/etc/hosts
@n案可以X的 IP C的名Q或者主C的e名!特e留意的是, 在^域W路扔行┓招枰床 Client 的身份,此r就佑玫街C名Q IP 的Y料。 但是因^域W路仁褂盟接斜A IP ,然o法M行 Hostname
IP 的行椋 @r候服站舸舻牡却 30~60 秒~如果可以避^@反查,或者是直接告V主C Hostname c IP 的屈N就可以省@反查的rg了!所以,如此一硎∪シ床榈rg,就可以改善 LAN 鹊倪B速度了!@ hosts 就是用碓O定 Hostname
IP 的啦! 更多的Y查後m伺服器章 DNS 伺服器的介B。
/etc/services
@n案t是架在 TCP/IP 上面的f定,包括 http, ftp, ssh, telnet 等等服账x的 port number ,都是@n案所出淼摹H绻胍杂一新的f定c port 的偷靡倪@n案了;
/etc/protocols
@n案t是在定x出 IP 封包f定的相PY料,包括 ICMP/TCP/UDP @方面的封包f定的定x等。
大概知道上面@n案後,未硪薷木W路r,那就太瘟耍 至於W路方面的又噶畹脑,可以得蔚闹噶罴纯舌福
/etc/init.d/network restart
@ script 最重要!因榭梢砸豢庵匦诱W路的担 他拥娜プx取所有的W路O定n,所以可以很快的恢系yAO的抵怠
ifup eth0 (ifdown eth0)
踊蛘呤顷P]某W路介面。可以透^@蔚 script 硖磬福 @ script 拥 /etc/sysconfig/network-scripts/ 目下, x取m的O定n硖戆。 (例如 ifcfg-eth0)。
IDE\Jumper
Master Slave
IDE1(Primary) /dev/hda /dev/hdb
IDE2(Secondary) /dev/hdc /dev/hdd
password=xxxxx
/sbin/grub-md5-crypt
password --md5 xxxxxx(你得到的那串数字)
timeout=10
passwd=123456
splashimage=......
title......
root......
kernel......
initrd(AS5此处有点不同)/initrd......
password=123456
(解压源安装):
tar.gz tar zxvf
tar.bz2 tar jxvf
cd 解压目录
make install
RPM(Red Hat Package Manager)
1、查询、检查软件包
rpm {-q|--query} [select-options] [query-options]
rpm {-V|--verify} [select-options] [verify-options]
2、安装、升级、删除软件包
rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-F|--freshen} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]
[--notriggers] [--repackage] [--test] PACKAGE_NAME ...
rpm {--initdb|--rebuilddb}
rpm {--addsign|--resign} PACKAGE_FILE ...
rpm {--querytags|--showrc}
rpm {--setperms|--setugids} PACKAGE_NAME ...
RPM(Red Hat Package Manager)
select-options
[PACKAGE_NAME] [-a,--all] [-f,--file FILE]
[-g,--group GROUP] {-p,--package PACKAGE_FILE]
[--fileid MD5] [--hdrid SHA1] [--pkgid MD5] [--tid TID]
[--querybynumber HDRNUM] [--triggeredby PACKAGE_NAME]
[--whatprovides CAPABILITY] [--whatrequires CAPABILITY]
query-options
[--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]
[--filesbypkg] [-i,--info] [--last] [-l,--list]
[--provides] [--qf,--queryformat QUERYFMT]
[-R,--requires] [--scripts] [-s,--state]
[--triggers,--triggerscripts]
verify-options
[--nodeps] [--nofiles] [--noscripts]
[--nodigest] [--nosignature]
[--nolinkto] [--nomd5] [--nosize] [--nouser]
[--nogroup] [--nomtime] [--nomode] [--nordev]
RPM(Red Hat Package Manager)
install-options
[--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]
[--excludedocs] [--force] [-h,--hash]
[--ignoresize] [--ignorearch] [--ignoreos]
[--includedocs] [--justdb] [--nodeps]
[--nodigest] [--nosignature] [--nosuggest]
[--noorder] [--noscripts] [--notriggers]
[--oldpackage] [--percent] [--prefix NEWPATH]
[--relocate OLDPATH=NEWPATH]
[--repackage] [--replacefiles] [--replacepkgs]
显示rpm程序的详细信息
rpm --version
显示rpm的版本号
显示系统中安装的所有软件包
rpm -q gcc
查询指定软件包是否已安装
rpm -qi gcc
显示指定软件包的详细信息
RPM(Red Hat Package Manager)
rpm -ql gcc
显示指定软件包所包含的文件列表
rpm -qf /usr/lib/bash
查看指定文件所属的软件包
rpm -qp /tmp/webmin.rpm
查询RPM包文件中的文件信息
rpm -i webmin-1.290-1.noarch.rpm
安装指定的RPM包
rpm -ivh webmin-1.290-1.noarch.rpm 安装并显示详信息
rpm -ivh --test webmin-1.290-1.noarch.rpm 对安装进行测试,并不是安装
rpm -ivh --replacepkgs webmin-1.290-1.noarch.rpm
软件包重复安装将会失败,若仍需要安装必须加--replacepkgs
rpm -ivh --replacefiles webmin-1.290-1.noarch.rpm
软件包的某个文件已在安装其他软件包时安装过,则安装将会失败,若仍需要安装必须加--replacefiles
rpm -ivh --nodeps webmin-1.290-1.noarch.rpm
软件包所依赖的软件包未安装,则安装将会失败,若仍需要安装必须加―nodeps
rpm -ivh --force webmin-1.290-1.noarch.rpm 强制安装指定软件包
(忽略软件包依赖性和文件冲突,不建议)
RPM(Red Hat Package Manager)
rpm CU webmin-1.29
升级指定的软件包
rpm CUvh webmin-1.29
升级指定的软件包(显示详细信息)
rpm -e webmin-1.29
删除指定的软件包
rpm -V webmin
验证软件包webmin
rpm -Vf /bin/vi
验证包含指定文件的软件包是否正确
验证所有已经安装的软件包
rpm -Vp webmin.rpm
利用RPM文件验证软件包
注:如校验正确将没有任何输出(.表示验证通过)
S 文件尺寸
L 符号链接
T 文件修改日期
M 模式(包括权限和文件类型)
webmin 安装
rpm -ivh /mnt/Server/ perl-5.8.8-10.i386.rpm
tar zxvf openssl-0.9.8e.tar.gz
cd openssl-0.9.8e
make install
tar zxvf Net_SSLeay.pm-1.30.tar.gz
cd Net_SSLeay.pm-1.30
perl Makefile.PL
make install
(如果64系统下 怎么都不行 那么 使用 yum -y install perl-Net-SSLeay 来安装)
rpm -ivh webmin-1.350-1.noarch.rpm
(tar包 解压后 进入目录后使用./setup.sh 来安装 一路回车 后默认ADMIN)
问https://Linux服务器的IP或域名:10000/
DHCP的配置:(无主配置文件!需要COPY)
ifconfig eth0
(查看Eth0的IP)
rpm -qa | grep dhcp
df(看光盘是否挂载)
mount /dev/cdrom /mnt
rpm -ivh dhcp-.....
rpm -ql dhcp
/etc/rc.d/init.d/dhcpd(启动脚本)
cp /usr/share/doc/dhcp-3.01/dhcpd.conf.sample(模板文件) etc/dhcpd.config (生成配置文件)
man dhcpd.conf(说明)
service dhcpd restart(重启)
service dhcpd status(查看状态)
租约文件dhcpd.leases中记录了DHCP服务器向DHCP客户机提供租用的每个IP地址的信息
# tail -7 /var/lib/dhcp/dhcpd.leases
具体配置:
# cat /etc/dhcpd.conf
ddns-update-style ad-(全局设置中一定要包括ddns-update-style设置项,dhcpd才能够正常启动)
default-lease-time 21600;(缺省租约时间使用default-lease-time参数设置,参数值的单位是秒)
max-lease-time 43200;(最大租约时间使用max-lease-time参数设置,参数值的单位是秒 )
option domain-name
"abc.com";(主机所在域的名称使用domain-name选项进行设置)
option domain-name-servers
192.168.1.1;(DNS服务器的IP地址使用domain-name-servers选项进行设置)
subnet 192.168.1.0 netmask 255.255.255.0 {(subnet关键字后面设置子网的网络地址,netmask关键字后面设置子网的掩码)
192.168.1.100 192.168.1.200;(subnet中可供动态分配的IP地址范围使用range配置参数设置)
option subnet-mask
255.255.255.0;(subnet-mask选项设置子网内分配IP地址的子网掩码)
option routers
192.168.1.1;(routers选项设置给DHCP客户端分配的IP地址所使用的缺省网关地址)
host Server01 { (host关键字后面需要为DHCP客户端主机设置主机名称)
hardware ethernet b0:c0:c3:22:46:81;(hardware参数在host声明中用于指定客户端主机的物理地址)
fixed-address 192.168.1.11;(fixed-address参数在host声明中用于指定为客户端分配的固定使用的IP地址)
主机拥有多个网络接口时需要在文件中指定提供dhcp服务的网络接口
在/etc/sysconfig/dhcpd文件中设置
DHCPDARGS=
DHCPDARGS=eth0
eth0是提供dhcp服务的网络接口名称
设置网络接口文件
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
rpm -ivh ypserv-。。。。。。
NIS服务器的运行需要time和time-upd服务的支持
vi /etc/sysconfig/network(改域名
NISDOMAIN=XXX
rpm -ivh xinetd-...
service xined start
rpm -ivh portmap-......
service portmap start
chkconfig time on
chkconfig time-udp on
service xinetd restart
vi /etc/ypserv.conf(改配置文件)
127.0.0.0/255.255.255.0 : * : * : none
192.168.1.0/255.255.255.0 : * : * :none
*:*:*:deny
vi /var/yp/securenets(安全配置文件只写允许)
host 127.0.0.1
255.255.255.0 192.168.1.0
service portmap status
/etc/rc.d/init.d/ypserv restart
/etc/rc.d/init.d/yppasswdd restart
建在客机器的登陆
user baizx
passwd baizx
构建数据库
/usr/lib/yp/ypinit -m
rpm -qa ypbind
nisdomainname xxx
vi /etc/yp.conf
domain bai server 192.168.1.1
vi /etc/nsswich.conf
33 nis 34 nis 35 38 nis
service ypbind restart
login baizx
vi /etc/exports
/home 192.168.1.0/24(rw)
mount -t nfs 192.168.1.1:/home /home
安装VSFTPD-XXX-XXX
touch/var/fto/111
chmod 777 111
ifconfig eth0 192.168.1.1
eth0 192.168.1.2
ftp 192.168.1.1
匿名登陆 anonymous ftp
useradd baizx
passwd baizx
vi /etc/vsftpd/vsftpd.conf
chroot_local_user=YES
service vsftpd restart
~(家目录)
客户机登陆
FTP 192.168.1.1
/etc/vsftpd.ftpuser(不允许登陆)(优先级别大)
/etc/vsftpd.user_list(默认不允许登陆FTP/只让这里的登陆
vi /etc/vsftpd.user_list
useradd bzx
passwd bzx
vi /etc/vsftpd.config
chroot_lock_user
userlist_enable=YES
userlist_deny=NO
service vsftpd restart
su -l root
FTP 192.168.1.1
530(不能登陆)
230(没问题)
touch /home/baizx/222
cd /home/baizx
chmod 777 222
su -l root
chmod 777 333
ftp 192.168.1.1
ftp>get 222
ftp>put 333
建口令文件
abcde(用户名)
123(密码)
db_load -T -t hash -f abc /etc/vsftpd/abc.db(把口令生成数据库文件)
建PAM配置文件vi /etc/pam.d/vsftpd.vu
auth required /lib/security/pam.userdb.so db=/etc/vsftpd/abc
account required /lib/security/pam.userdb.so db=/etc/vsftpd/abc
建普通用户
useradd vu
修改配置文件 优于单独建虚拟目录
vi /etc/vsftpd/vsftpd.conf
guest_enable=YES(开启虚拟用户功能)
guest_username=vu(假借)
pam_service_name=vsftpd.vu(指定认证文件)
单独虚拟用户
vi /etc/vsftpd/vsftpd.conf
user_config_dir=/etc/ftp(目录)
mkdir /etc/ftp
cd /etc/ftp
vi abcde(给权限)
max_clients=100(用户有100)
max_per_ip=5(多线程,每IP有5)
local_max_rate=500000(本地传输)
anon_max_rate=200000(匿名传输)
anon_word_readable_only=NO(用户可以上传下载)
anon_upload_enable_=YES(上传)
安装samba-XXX
查看smb.conf有效配置的命令
# grep -v "^#" /etc/samba/smb.conf |grep -v "^;"
vi /etc/samba/smb.conf
path=/tmp/
guest ok=yes
writable=yes
service smb restart
useradd text
useradd abc
smbpasswd -a text
smbpasswd -a abc
vi /etc/samba/smb.conf
path=/tmp2
valid user=abc.text
Read list=text
write list=abc
service smb restart
网页配置samba-swat
chkconfig swat on
service xinetd restart
http ://serverIP:901
smbclient //192.168.1.123/share -U osmond
作者: baizx&发布日期:
[i=s] 本帖最后由 baizx 于
09:28 编辑
Linux系统中使用GCC CPU参数优化代码编译
16:46 作者: wangyu1314
wangyu1314 更新于
使用特定的GCC参数可以使编译出的程序执行效率有较大提升。具体如下:
1、优化原理:
在编译程序时,借助参数传递的方法,使用与系统CPU相匹配的gcc参数,编译出的程序就是为系统CPU而进行特定优化过的,因而执行速度和效率都会是最好。
2、注意事项
(1) 经过大量测试发现,在RedHat, CentOS系统中通常只能通过参数传递的方法进行编译优化,当然,如果愿意并且能够修改程序的MakeFile也可以达到这一效果,只不过比较复杂,工 作量较大。其他在网上广为流传的方法(例如:直接通过.bashrc, /etc/profile声明参数系统变量、写入/etc/make.conf等)经过测试均没有效果。
(2) 对于Gentoo Linux或FreeBSD可以通过修改/etc/make.conf添加参数的方法来实现,而不必使用参数传递法。
3、优化步骤:
(1)确定系统CPU类型:
# cat /proc/cpuinfo | grep "model name"
执行后会看到系统中CPU的具体型号,记下CPU型号。
(2)使用参数传递方法进行编译:(以Pentium4 CPU为例)
此处以编译Apache为例说明如何使用参数传递:
# tar xzvf httpd-2.0.55.tar.gz
# cd httpd-2.0.55
CHOST="i686-pc-linux-gnu" \
CFLAGS="-O3 \
-mfpmath=sse \
-mcpu=pentium4 \
-march=pentium4 \
-fomit-frame-pointer" \
CXXFLAGS="-O3 \
-mfpmath=sse \
-funroll-loops \
-mcpu=pentium4 \
-march=pentium4 \
-fomit-frame-pointer" \
./configure ......
# make install
这样就通过函数传递方法实现了编译优化。下面对其中的一些参数进行具体说明:
-O3:相对于-O、-O1、-O2,-O3开启了所有GCC支持的优化特性;
-msse2:开启CPU所支持的sse2指令集;
-mmmx:参考-msse2
-mfpmath=sse:为指定指令集生成浮点运算特性(优化浮点运算功能);
-mcpu:指定CPU型号;
-march:指定CPU型号,基本同-mcpu,GCC根据-march设定的CPU型号决定在生成代码时可以使用哪些种类的指令。(注意!-march参数在某些CPU型号中不可用!)
-pipe:使用管道(pipe)方法替代临时文件方法在编译的不同阶段之间进行通讯。
附:常见CPU优化参数
CHOST="i386-pc-linux-gnu"
CFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=i386 -O3 -pipe -fomit-frame-pointer"
CHOST="i486-pc-linux-gnu"
CFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=i486 -O3 -pipe -fomit-frame-pointer"
Pentium (Intel):
CHOST="i586-pc-linux-gnu"
CFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium -O3 -pipe -fomit-frame-pointer"
Pentium MMX (Intel):
CHOST="i586-pc-linux-gnu"
CFLAGS="-march=pentium-mmx -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium-mmx -O3 -pipe -fomit-frame-pointer"
Pentium PRO (Intel):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentiumpro -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentiumpro -O3 -pipe -fomit-frame-pointer"
Pentium II (Intel):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
Celeron (Intel):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium2 -O3 -pipe -fomit-frame-pointer"
Pentium III (Intel):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
Celeron2 (Intel):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium3 -O3 -pipe -fomit-frame-pointer"
Celeron (Willamette-Intel):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
Pentium 4 (Intel):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=pentium4 -O3 -pipe -fomit-frame-pointer"
K6 (AMD):
CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6 -O3 -pipe -fomit-frame-pointer"
K6-2 (AMD):
CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6-2 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6-2 -O3 -pipe -fomit-frame-pointer"
K6-3 (AMD):
CHOST="i586-pc-linux-gnu"
CFLAGS="-march=k6-3 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=k6-3 -O3 -pipe -fomit-frame-pointer"
Athlon (AMD):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon -O3 -pipe -fomit-frame-pointer"
Athlon-tbird, aka K7 (AMD):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-tbird -O3 -pipe -fomit-frame-pointer"
Athlon-tbird XP (AMD):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
Athlon 4(AMD):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-4 -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-4 -O3 -pipe -fomit-frame-pointer"
Athlon XP (AMD):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-xp -O3 -pipe -fomit-frame-pointer"
Athlon MP (AMD):
CHOST="i686-pc-linux-gnu"
CFLAGS="-march=athlon-mp -O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-march=athlon-mp -O3 -pipe -fomit-frame-pointer"
603 (PowerPC):
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
603e (PowerPC):
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
604 (PowerPC):
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
604e (PowerPC):
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
750 aka as G3 (PowerPC):
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=750 -O3 -pipe -fomit-frame-pointer -fsigned-char"
CXXFLAGS="-mcpu=750 -O3 -pipe -fomit-frame-pointer -fsigned-char"
7400, aka G4 (PowerPC):
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=7400 -O3 -pipe -fomit-frame-pointer -fsigned-char -maltivec"
CXXFLAGS="-mcpu=7400 -O3 -pipe -fomit-frame-pointer -fsigned-char -maltivec"
7450, aka G4 second generation (PowerPC):
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-mcpu=7450 -O3 -pipe -fomit-frame-pointer -fsigned-char -maltivec"
CXXFLAGS="-mcpu=7450 -O3 -pipe -fomit-frame-pointer -fsigned-char -maltivec"
PowerPC (If you don't know which one):
CHOST="powerpc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer -fsigned-char"
CHOST="sparc-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer"
Sparc 64:
CHOST="sparc64-unknown-linux-gnu"
CFLAGS="-O3 -pipe -fomit-frame-pointer"
CXXFLAGS="-O3 -pipe -fomit-frame-pointer"
一、端口和服务的关系
端口号与相应服务的对应关系存放在/etc/services文件中,这个文件中可以找到大部分端口。使用netstat命令
显示的服务名称也是从这个文件中找的。有人说将这个文件中的相应端口号注释掉,就可以禁用该端口。
我试了却不起作用,这种方法应该是没有用的,是误传!将相应端口号注释掉,唯一的作用就是使用netsat
命令时,将不显示服务名(比如ftp)而是显示端口号(比如21)。原理也很简单:netstat无法在/etc/services
文件中找到端口号对应的服务名,自然就无法显示了。所以/etc/services文件只是起到端口号与相应服务的
映射关系,与端口的启动和关闭没有关系!
二、查看本机开放的端口
1、netstat
查看端口和连接
列出目前已经连接的服务名
netstat -a
列出目前已经连接的和正在监听的服务名
netstat -an
列出目前已经连接的和正在监听的端口号(与上面的命令功能一样,只是不解释端口号对应的服务名)
netstat -ap
在上面命令的基础上列出连接的PID(进程号),用这个PID,可以使用KILL 来杀死连接
例如:某个连接的PID=111,想踢出去就使用 KILL -9 111。ok!
netstat -rn
输出路由表
查看本机开放的端口,会扫描所有端口
-p ? 127.0.0.1
扫描指定端口范围
nmap -PT 192.168.1.1-111? 扫描一组范围的电脑
三、关闭和开启端口(服务)
关闭端口的方法:
1、因为每个端口都有对应的服务,因此要关闭端口只要关闭相应的服务就可以了。
2、用IPTABLE对端口进行限制,这样也能使端口不被访问,但端口本身并没有关闭。
在这儿只介绍关闭服务的方法,IPTABLE的应用以后再讨论。
linux中开机自动启动的服务一般都存放在两个地方:
/etc/init.d/文件夹下的服务:
这个文件夹下的服务都可以通过运行相应的SCRIPT来启动或关闭。
例如:启动sendmail服务
./sendmail start (打开了TCP 25端口)
关闭sendmail服务
./sendmail stop (关闭TCP 25 端口)
查看sendmail服务当前状态
./sendmail? status (查看服务是否运行)
/etc/xinetd.d/文件夹下的服务:
这个文件夹下的服务需要通过更改服务的配置文件,并重新启动xinetd才可以。
例如:要启动其中的auth服务,打开/etc/xinetd.d/auth配置文件,更改“disable=no”,保存退出。运行/etc/rc.d/init.d/xinetd restart
要停止其中的auth服务,打开/etc/xinetd.d/auth配置文件,更改“disable=yes”,保存退出。运行/etc/rc.d/init.d/xinetd restart
四、控制开机自动启动的服务
上面说的控制服务开关方法是在启动linux之后进行操作的,如果我想在linux启动时控制哪些服务启动、哪些服务关闭怎么做
控制服务自动启动的方法有3个:
1、更改/etc/rc.d下的对应文件夹:
如果你登陆的默认界面是字符界面,那么修改rc.3文件夹,如果登陆界面默认是图形界面,那么修改rc.5。
在文件夹中,每个服务的名字前都带有“K”或“S”,S就代表这个服务开机自动运行了,把它删了或前缀改为“K”下次就不会启动了。
2、使用ntsysv命令:
输入ntsysv命令,将会出现一个服务列表,需要启动的打“*”,简单。
3、使用chkconfig命令:
让某个服务不自动启动:例如httpd:chkconfig --level 35
httpd? off
;35指的是运行级别
让某个服务自动启动:例如httpd:chkconfig --level 35
httpd? on ;
查看所有服务的启动状态:chkconfig --list
查看某个服务的启动状态:chkconfig --list |grep httpd
Linux下如果我们须要知道2809号端口的情况的话,我们可以这样,如下命令:
  $netstat -pangrep 2809
  tcp    0   0 0.0.0.0:2809   0.0.0.0:*   LISTEN   9493/java
  下面是常用参数的解释:
  NETSTAT [-a] [-b] [-e] [-n] [-o] [-p proto] [-r] [-s] [-v] [interval]
  -a            显示所有连接和监听端口。
  -b            显示包含于建立每个连接或监听端口的可执行组件。在某些情况下已知可执行组件
   拥有多个独立组件,并且在这些情况下
   包含于建立连接或监听端口的组件序列被显示。这种情况下,可执行组件名
   在底部的 [] 中,顶部是其调用的组件,等等,直到 TCP/IP 部分。留心此选项
   可能须要很长时间,如果没有足够权限可能失败。
  -e            显示以太网统计信息。此选项可以与 -s选项组合运用。
  -n            以数字形式显示地址和端口号。
  -o            显示与每个连接有关的所属进程 ID。
  -p proto      显示 proto 指定的协议的连接;proto 可以是
   下列协议之一: TCP、UDP、TCPv6 或 UDPv6。
   如果与 -s 选项一起运用以显示按协议统计信息,proto 可以是下列协议之一:
   IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 或 UDPv6。
  -r            显示路由表。
  -s            显示按协议统计信息。默认地,显示 IP、
   IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP 和 UDPv6 的统计信息;
   -p 选项用于指定默认情况的子集。
  -v            与 -b 选项一起运用时将显示包含于
   为所有可执行组件建立连接或监听端口的组件。
  interval      重新显示选定统计信息,每次显示之间
   暂停时间间隔(以秒计)。按 CTRL+C 停止重新
   显示统计信息。如果省略,netstat 显示当前
   配置信息(只显示一次)
内容来自: 脚本之家
[root@test proc]# netstat -an
[root@test proc]# /usr/sbin/lsof -i |grep 21
proftpd 1408 root 0u IPv4
root 0u IPv4 8.0.1:3631 (ESTABLISHED)
proftpd 1471 root 1u IPv4 28.0.1:3631 (ESTABLISHED)
netstat -lp 查看端口使用
netstat -nap | grep 21 看看什么程序运行在21端口
安装CentOS 5.3是做服务器
安装、配置Apache+php+Mysql
Centos 里的 yum 在线安装很慢.以下是替换为中国CentOS镜像服务器!
中国官方镜像网站:
/* 使用说明 */
cd /etc/yum.repos.d[进入yum.repos.d目录]
mv CentOS-Base.repo
CentOS-Base.repo.save[修改源文件名称备份]
wget [下载]
mv CentOS-Base.repo.5 CentOS-Base.repo[下载后的文件更名]
1. 更新系统内核到最新.
yum -y update
系统更新后,如果yum安装时提示错误信息,请执行以下命令修复.
rpm Cimport
/etc/pki/rpm-gpg/RPM-GPG-KEY*
2. 安装Apahce, PHP, Mysql, 以及php连接mysql库组件
yum -y install httpd php mysql mysql-server php-mysql
//安装mysql扩展
yum -y install mysql-connector-odbc mysql-devel libdbi-dbd-mysql
//安装php的扩展
yum -y install php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc
//安装apache扩展
yum -y install httpd-manual mod_ssl mod_perl mod_auth_mysql
一次性粘贴安装:
yum -y install httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-mcrypt php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc mysql-connector-odbc mysql-devel libdbi-dbd-mysql
3. 启动服务配置
/sbin/chkconfig httpd on [设置apache为自启动]
/sbin/chkconfig C-add mysqld [mysql服务]
/sbin/chkconfig mysqld on [mysqld服务]
/sbin/service httpd start [自启动 httpd 服务]
/sbin/service mysqld start [自启动mysqld服务]
4.设置mysql数据库root帐号密码。
mysqladmin -u root password ‘新密码’ [引号内填密码]
5.让mysql数据库更安全
mysql -u root -p [此时会要求你输入刚刚设置的密码,输入后回车即可
mysql> DROP DATABASE [删除test数据库]
mysql> DELETE FROM mysql.user WHERE user = ”; [删除匿名帐户]
mysql> FLUSH PRIVILEGES; [重载权限]
按照以上的安装方式, 配置出来的默认站点目录为/var/www/html/新建一个php脚本:
phpinfo();
6. 防火墙配置
a.添加.允许访问端口{21: ftp, 80: http}.
iptables -I RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
iptables -I RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
service iptables save
c.重置加载防火墙
service iptables restart
7. 安装phpMyAdmin进入phpMyAdmin官方下载最新版本后,上传到你的网站目录下,然后进行配置。只需几步即可搞定。
a. config.sample.inc.php更名为config.inc.
b. 打开config.inc.php文件,进行以下修改;
// $cfg['Servers'][$i]['controluser'] = ‘pma’;
// $cfg['Servers'][$i]['controlpass'] = ‘pmapass’;
// $cfg['Servers'][$i]['pmadb'] = ‘phpmyadmin’;
// $cfg['Servers'][$i]['bookmarktable'] = ‘pma_bookmark’;
// $cfg['Servers'][$i]['relation'] = ‘pma_relation’;
// $cfg['Servers'][$i]['table_info'] = ‘pma_table_info’;
// $cfg['Servers'][$i]['table_coords'] = ‘pma_table_coords’;
// $cfg['Servers'][$i]['pdf_pages'] = ‘pma_pdf_pages’;
// $cfg['Servers'][$i]['column_info'] = ‘pma_column_info’;
// $cfg['Servers'][$i]['history'] = ‘pma_history’;
// $cfg['Servers'][$i]['designer_coords'] = ‘pma_designer_coords’;
去掉每行前面的//;
c.$cfg['blowfish_secret'] = ”; |修改为|
$cfg['blowfish_secret'] = ‘http’;
d.$cfg['Servers'][$i]['controluser'] = ‘pma’; |把’pma’修改为你的帐号|
e.$cfg['Servers'][$i]['controlpass'] = ‘pmapass’;
|把’pmapass设置为你的mysql登录密码|
f. $cfg['blowfish_secret'] = ”; | 添加短语密码例如:$cfg['blowfish_secret'] = ‘onohot’|
(转)phpMyAdmin安装、设置教程
1、先下载一份最新版的phpMyAdmin MYSQL管理器,可以到天空软件站去下载,我刚下载的是2.8.2.1的版本
  2、解压后得到一个phpMyAdmin的目录(你可以改名)
  找到目录里的config.inc.php文件(最新版的在解压得到的文件夹中找不到了,其实你可以把phpMyAdmin/libraries下的 config.default.php复制到phpmyadmin跟目录,然后把config.default.php改名为 config.inc.php)
  3、打开config.inc.php(可以用记事本等文字编辑工具)
  4、找到 $cfg['PmaAbsoluteUri'] (呵呵,按Ctrl+F就可以调出查找框了)
  修改你将上传到空间的phpMyAdmin的网址
  如:$cfg['PmaAbsoluteUri'] = 'http://www.taoliyuan.com.cn/phpmyadmin/';
  5、还有下面的
  $cfg['Servers'][$i]['host'] = 'localhost';(通常用默认,也有例外,可以不用修改)
  6、$cfg['Servers'][$i]['auth_type'] = 'config'; // Authentication method (config, http or cookie based)?
  在自己的机子里调试用config;如果在网络上的空间用cookie,这里我们既然在前面已经添加了网址,就修改成cookie ,这里建议使用cookie
  7、$cfg['Servers'][$i]['user'] = 'root'; // MySQL user(用户名,自己机里用root;在网上一般为你的ftp用户名,虚拟主机提供商会告诉你的;一般不要修改)
  8、$cfg['Servers'][$i]['password'] = ''; // MySQL password (only needed
  自己机里不用设,留空就可以了
  9、$cfg['Servers'][$i]['only_db'] = ''; // If set to a db-name, only(你只有一个数据就设置一下;如果你在本机或想架设服务器,那么建议留空)
  10、还有$cfg['DefaultLang'] = 'zh'; (这里是选择语言,zh代表简体中文的意思)
  设置完毕可以上传到网络上的空间了。
  浏览http://host/phpmyadmin/ 就可以了。
  当然你设置不同就用那个网址,这里知识举例说明。
  11、补充说明:
  其实如果你是购买的虚拟主机,那么这些工作根本不需要你来作
  之所以要设置phpmyadmin估计大家都是要架设服务器的
  如果出现“配置文件现在需要绝密的短语密码(blowfish_secret)”
  那么请在$cfg['blowfish_secret'] = ' ';的等号里面设置你网站的cookie,例如:$cfg['blowfish_secret'] = 'www.taoliyuan.com.cn';
  这是因为你的“$cfg['Servers'][$i]['auth_type'] = 'cookie'的原因。
下面我们来看看,如何使用yum命令安装phpMyAdmin预编译包。
由于CentOS软件安装源中没有phpMyAdmin软件包,我们需要为CentOS启用RPMforge源:
x86_64系统中使用, wget
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.x86_64.rpm
复制代码i386系统中使用, wget
rpm -Uvh rpmforge-release-0.3.6-1.el5.rf.i386.rpm
复制代码rpmforge源安装成功后,我们就可以安装phpMyAdmin了: yum install phpmyadmin
复制代码现在我们来对phpMyAdmin进行一些简单的配置。由于phpMyAdmin安装后,默认是只能从本地服务器上访问的,我们需要修改 phpMyAdmin配置文件,使得远程主机或客户端也能访问它。修改/etc/httpd/conf.d/phpmyadmin.conf,把
这个节点的配置注释掉: vi /etc/httpd/conf.d/phpmyadmin.conf
Web application to manage MySQL
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Alias /phpmyadmin /usr/share/phpmyadmin
Alias /phpMyAdmin /usr/share/phpmyadmin
Alias /mysqladmin /usr/share/phpmyadmin
复制代码然后,把phpMyAdmin的验证方式从默认的cookie方式改成http: vi /usr/share/phpmyadmin/config.inc.php
/* Authentication type */
$cfg['Servers'][$i]['auth_type'] = 'http';
复制代码好了,所有的安装配置都完成了,打开
尽情享用吧
四、所需工具下载
通过FlashFxp里的Sftp连接,直接连接到服务器上管理所有文件夹。
PuTTY 是一套免费的 SSH / Telnet 程序,它可以连接上支持 SSH Telnet 联机的站台,并且可自动取得对方的系统指纹码 (Fingerprint)。建立联机以后,所有的通讯内容都是以加密的方式传输,因此你再也不用害怕使用 Telnet 在 Internet 或公司的内部网络传输资料时被他人获知内容了!
SecureCRT是一款支持SSH(SSH1和SSH2)的终端仿真程序,同时支持Telnet和rlogin协议。SecureCRT是一款用于连接运行包括Windows、UNIX和VMS的远程系统的理想工具。通过使用内含的VCP命令行程序可以进行加密文件的传输。
作者: baizx&发布日期:
限制连往本机的telnet单个IP并发连接为2个,超过的连接被拒绝:
  iptables -I INPUT -p tcp --dport 23 -m iplimit --iplimit-above 2 -j REJECT
  2 限制连往本机的web服务,1个C段的IP的并发连接不超过100个,超过的被拒绝:
  iptables -I INPUT -p tcp --dport 80 -m iplimit --iplimit-above 100 --iplimit-mask 24 -j REJECT
作者: baizx&发布日期:
CentOS 5 全功能WWW服务器搭建全教程 V3.0
一、基本系统安装
1、下载CentOS 5
我是下载的DVD版本,大家也可以下载服务器CD安装版本,其实都差不多。大家可以到这儿下载,速度很快的。
建议在windows下用BT或迅雷下载,速度会快很多。
下载后刻录成光盘。我建议你刻录DVD啦,如果是菜鸟,把图形界面也装上,可以在图形界面进行学习,当然强烈不建议在服务器上装桌面。
Centos 5系列任何一个版本就行了,安装后可以通过yum upgrade直接更新为最新版本。
2、安装CentOS 5
作为服务器,不安装不需要的组件,所以在选择组件的时候,除了选择FTP SERVER外取消所有组件的选择。也不要选web服务器。因为我们后面要手动编译安装。
系统约定RPM包和源码包存放位置
RPM包和源码包存放位置 /usr/local/src
源码包编译安装位置(prefix) /usr/local/xxx
脚本以及维护程序存放位置 /usr/local/sbin
MySQL 数据库位置 /var/lib/mysql
Apache 网站根目录 /usr/local/apache2/htdocs
Apache 虚拟主机日志根目录 /data/logs/www
yum RPM包信息文件 /etc/yum.list
3、系统环境部署及调整
(1)检查系统是否正常
# more /var/log/messages //检查有无系统内核级错误信息
# dmesg //检查硬件设备是否有错误信息
# ifconfig //检查网卡设置是否正确
// 检查网络是否正常
(2)关闭不需要的服务
# export LANG='en_US' //设置语言
# setup //选择启动的服务
进入system service 选项。
以space 键选定所需服务。
以下仅列出需要启动的服务,未列出的服务一律关闭:
irqbalance 仅当服务器CPU为S.M.P架构或支持双核心、HT技术时,才需开启,否则关闭。
microcode_ctl
yum-updatesd
(3)修改/etc/yum.repos.d/CentOS-Base.repo,将镜象站点地址改为在中国的镜象站点地址。不然我们通过yum安装软件速度会极慢。修改如下:
# CentOS-Base.repo
# This file uses a new mirrorlist system developed by Lance Davis for CentOS.
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client. You should use this for CentOS updates
# unless you are manually picking other mirrors.
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
name=CentOS-$releasever - Base
baseurl=http://mirrors.shlug.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
#released updates
name=CentOS-$releasever - Updates
baseurl=http://mirrors.shlug.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
#packages used/produced in the build but not released
name=CentOS-$releasever - Addons
baseurl=http://mirrors.shlug.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
#additional packages that may be useful
name=CentOS-$releasever - Extras
baseurl=http://mirrors.shlug.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://mirrors.shlug.org/centos/$releasever/centosplus/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
#contrib - packages by Centos Users
name=CentOS-$releasever - Contrib
baseurl=http://mirrors.shlug.org/centos/$releasever/contrib/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
保存文件。
(4)更新系统,我们使用yum,
# yum upgrade
建议更新所有列出的程序,包括内核,rhel 5.X的稳定性还要继续努力呢。
(5)定时校正服务器时间
# yum install Cy ntp
# crontab -e
0 23 * * * /usr/sbin/ntpdate 210.72.145.44
以上命令设置好后存盘。
# /sbin/service crond reload
重载计划任务配置
您的机器将在每天的23:00根据中国国家授时中心的NTP服务器时间自动校准时间。
(6)FTP服务器的配置
vi /etc/vsftpd/vsftpd.conf
把anonymous_enable=YES
修改为anonymous_enable=No不允许匿名登录。
chroot_local_user=yes
listen_port=2121
将用户锁定在主目录,并将FTP监听端口修改为2121
把ftpd_banner=*前的注释去掉。后面改成你的欢迎信息(这样设置可以避免显示ftp服务器的版本信息)
然后保存,service vsftpd start就可以了。
这时应当添加用户,因为root默认不能通过FTP方式登录,也不安全。
groupadd upload
useradd upload -g upload -d /usr/local/apache2/htdocs/ -M
如果FTP登录时出现
ftp服务器连接失败,错误提示:
500 OOPS: cannot change directory:/home/*******
500 OOPS: child died
# setsebool ftpd_disable_trans 1
# service vsftpd restart
这样对于我们上传一些文件到系统中很方便。
大家有兴趣的可以看下这篇文章对vsftpd进行一个比较详细的了解
4、重新启动系统
此时系统启动成功,可以删除老的内核
二、安装mysql, apache, php, Zend Optimizer等基本环境
5. 使用 yum 程序安装所需开发包(以下为标准的rpm包名称)
# yum install gcc gcc-c++ gcc-g77 flex bison autoconf automake bzip2-devel zlib-devel ncurses-devel libjpeg-devel libpng-devel libtiff-devel freetype-devel pam-devel openssl-devel libxml2-devel gettext-devel pcre-devel
#这里我们将编译GD所必须的一些小软件比如libpng,libtiff,freetype,libjpeg,gettext-devel等先用RPM 的方式一并安装好,避免手动编译浪费时间,同时也能避免很多错误,这几个小软件的编译很麻烦。这几个小软件编译错误了,GD当然安装不了,php5的编译当然也没戏了。所以我们抓大放小,对这些小牛鬼蛇神采取快速简洁的方式进行安装。并且对服务器的性能也不能产生什么影响。
另外libxml2系统已经默认安装了,所以我们不需要手工编译了,直接安装它的开发包就行了。
6. 源码编译安装所需包 (Source)
# cd /usr/local/src
# tar xzvf gd-2.0.35.tar.gz
# cd gd-2.0.35
# yum install libtool libtool-ltdl
# CHOST="i686-pc-linux-gnu" CFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -mcpu=pentium4 -march=pentium4 -pipe -fomit-frame-pointer" CXXFLAGS="-O3 -msse2 -mmmx -Wall -W -mfpmath=sse -funroll-loops -mcpu=pentium4 -march=pentium4 -pipe -felide-constructors -fno-exceptions -fno-rtti -fomit-frame-pointer" ./configure --pref

我要回帖

更多关于 select data 的文章

 

随机推荐