linux系统
笔
记
目 录
2.3 Linux+nginx+tomcat+JDK整合实现JAVA程序负载均衡... 9
5.1.1 linux操作系统由linux内核和各种外围程序组成... 19
5.2.2 命令行界面,查看系统信息及关机,重启... 20
5.10 Linux下修改IP和DNS和路由配置方法... 32
5.12 Linux+Tomcat建站笔记(JDK,Mysql,Vsftpd,Iptables等配置)34
5.12.4 由于系统中已经自带了Mysql,所以就不需要在安装了。... 37
6.2.2 调整连接器connector的并发处理能力... 43
8 oracle,sqlserver数据库在查询结果基础下创建新表... 52
8.1 SQL SERVER中使用SELECT… INTO语句... 52
8.2 Oracle中使用CREATETABLE … AS SELECT… 语句... 52
1 Oracle
1.1 Oracle重启命令
在linux下重启oracle数据库及监听器:
1.1.1 方法1:
用root以ssh登录到linux,打开终端输入以下命令:
cd $ORACLE_HOME #进入到oracle的安装目录
dbstart #重启服务器
lsnrctl start #重启监听器
cd $ORACLE_HOME #进入到oracle的安装目录
dbstart #重启服务器
lsnrctl start #重启监听器
-----------------------------------
1.1.2 方法2:
Sql代码
cd $ORACLE_HOME/bin #进入到oracle的安装目录
./dbstart #重启服务器
./lsnrctl start #重启监听器
-----------------------------------
1.1.3 方法3:
(1)以oracle身份登录数据库,命令:su – oracle
(2)进入Sqlplus控制台,命令:sqlplus /nolog
(3)以系统管理员登录,命令:connect / as sysdba
(4)启动数据库,命令:startup
(5)如果是关闭数据库,命令:shutdown immediate
(6)退出sqlplus控制台,命令:exit
(7)进入监听器控制台,命令:lsnrctl
(8)启动监听器,命令:start
(9)退出监听器控制台,命令:exit
(10)重启数据库结束
-----------------------------------
1.1.4 方法4:(自已写脚本)
1)启动脚本(dbstart.sh)
lsnrctl start
sqlplus /nolog <<EOF
connect / as sysdba
startup;
exit
EOF
$sh dbstart.sh 即可
----------
2)关闭脚本(dbstop.sh)
lsnrctl stop
sqlplus /nolog <<EOF
connect / as sysdba
shutdown immediate;
exit
EOF
$sh dbstop.sh 即可
===============================================
$ su - oracle
$ lsnrctl stop
$ sqlplus "/as sysdba"
SQL> shutdown immediate;
SQL> quit
$ lsnrctl start
$ sqlplus /nolog
SQL> connect / as sysdba
SQL> startup;
===============================================
1.2 拷贝一份oracle数据库(用户空间)
1.2.1 导出
$exp xkz/xkzserver file=/odb/xkz_20131211.dmp owner=xkz
1.2.2 创建数据库用户并且授权
SQL>create user xkz identified by xkzserver;
SQL>grant dba to xkz;
SQL>exit
1.2.3 导入
$imp xkzzz/xkzzzserver file=/home/oracle/xkz_20131211.dmp full=y
1.3 Plsql环境变量设置
Select userenv('language') from dual;
SIMPLIFIED CHINESE_CHINA.US7ASCII
SIMPLIFIED CHINESE_CHINA.ZHS16GBK
2 Linux--Mysql
2.1 Mysql命令行快速笔记
2.1.1 启动服务
#service mysqld start;
2.1.2 连接数据库
#mysql –u root-p;
再输入:#密码
2.1.3 查看数据库
#mysql> show databases;
2.1.4 导出数据库
mysql> show databases;
导出数据库:
命令行#mysqldump -u 用户名 -p 数据库名 > 导出的文件名
如我输入的命令行:mysqldump -u root -p news > news.sql (输入后会让你输入进入MySQL的密码)
2.1.5 连接U盘设备
控制台:
# fdisk -l #查看所有分区
# mount –t msdos/dev/sdc4 /mnt/usb #将/dev/sdc4分区挂载到/mnt/usb目录下(挂载U盘之类的存储设备)。
2.2 linux下导入、导出mysql数据库命令
一、导出数据库用mysqldump命令(注意mysql的安装路径,即此命令的路径):
1、导出数据和表结构:
mysqldump -u用户名 -p密码 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p abc > abc.sql
敲回车后会提示输入密码
2、只导出表结构
mysqldump -u用户名 -p密码 -d 数据库名 > 数据库名.sql
#/usr/local/mysql/bin/ mysqldump -uroot -p -d abc > abc.sql
注:/usr/local/mysql/bin/ ---> mysql的data目录
二、导入数据库
1、首先建空数据库
mysql>create database abc;
2、导入数据库
方法一:
(1)选择数据库
mysql>use abc;
(2)设置数据库编码
mysql>set names utf8;
(3)导入数据(注意sql文件的路径)
mysql>source /home/abc/abc.sql;
方法二:
mysql -u用户名 -p密码 数据库名 < 数据库名.sql
#mysql -uabc_f -p abc < abc.sql
建议使用第二种方法导入。
注意:有命令行模式,有sql命令
3 Nginx
3.1 快速笔记
3.1.1 平滑的重启(有时候会不起效)
#nginx-s reload;
3.1.2 非平滑的重启
先关:#nginx -s stop;
再启:#nginx
3.2 详细笔记
启动操作
命令:cd /usr/nginx/sbin // /usr/nginx是安装目录
/usr/nginx/sbin/nginx -c /usr/nginx/conf/nginx.conf
-c参数指定了要加载的nginx配置文件路径。
停止操作
停止操作是通过向nginx进程发送信号(什么是信号请参阅linux文章)来进行的
如果在nginx.conf配置文件中指定了pid文件存放的路径(例如:pid /usr/nginx/webserver/nginx/logs/nginx.pid)该文件存放的是NGINX的当前主进程号。如果没有指定pid文件的存放路径,nginx.pid文件默认存放在NGINX安装目录下的logs目录下。
步骤1:查询nginx主进程号
ps -ef | grep nginx
在进程列表里面找master进程,它的编号就是主进程号了。
步骤2:发送信号
从容停止Nginx:
kill -QUIT 主进程号
或者
kill -QUIT `/usr/nginx/logs/nginx.pid`
快速停止Nginx:
kill -TERM 主进程号
kill -INT 主进程号
或者
kill -TERM `/usr/nginx/logs/nginx.pid`
kill -INT `/usr/nginx/logs/nginx.pid`
强制停止Nginx:
pkill -9 nginx
另外,
若在nginx.conf配置了pid文件存放路径则该文件存放的就是Nginx主进程号,如果没指定则放在nginx的logs目录下。有了pid文
件,我们就不用先查询Nginx的主进程号,而直接向Nginx发送信号了,命令如下:
kill -信号类型
'/usr/nginx/logs/nginx.pid'
平滑重启
如果更改了配置就要重启Nginx,要先关闭Nginx再打开?不是的,可以向Nginx
发送信号,平滑重启。
平滑重启命令:
kill -HUP
住进称号或进程号文件路径
或者使用
/usr/nginx/sbin/nginx -s reload
注意,修改了配置文件后最好先检查一下修改过的配置文件是否正
确,以免重启后Nginx出现错误影响服务器稳定运行。判断Nginx配置是否正确命令如下:
nginx -t -c /usr/nginx/conf/nginx.conf
或者
/usr/nginx/sbin/nginx -t
平滑升级
如果服务器正在运行的Nginx要进行升级、添加或删除模块时,我们需
要停掉服务器并做相应修改,这样服务器就要在一段时间内停止服务,Nginx可以在不停机的情况下进行各种升级动作而不影响服务器运行。
步骤1:
如
果升级Nginx程序,先用新程序替换旧程序文件,编译安装的话新程序直接编译到Nginx安装目录中。
步骤2:执行命令
kill -USR2
旧版程序的主进程号或进程文件名
此时旧的Nginx主进程将会把自己的进程文件改名为.oldbin,然后执行新版
Nginx。新旧Nginx会同市运行,共同处理请求。
这时要逐步停止旧版
Nginx,输入命令:
kill -WINCH 旧版主进程号
慢慢旧的工作进程就都会随着任务执行完毕而退出,新版的Nginx的工作进程会逐渐取代旧版工作进程。
此时,我们可以决定使用新版还是恢复到旧版。
不重载配置启动新/旧工作进程
kill -HUP 旧/新版主进程号
从容关闭旧/新进程
kill -QUIT
旧/新主进程号
如果此时报错,提示还有进程没有结束就用下面命令先关闭旧/新工作进程,再关闭主进程号:
kill -TERM 旧/新工作进程号
这样下来,如果要恢复到旧版本,只需要上面的几个步
骤都是操作新版主进程号,如果要用新版本就上面的几个步骤都操作旧版主进程号就行了。
上面就是Nginx的一些基本的操作,希望以后Nginx能有更好的方法来处理这些操作,
最好是Nginx的命令而不是向Nginx进程发送系统信号。
3.3 Linux+nginx+tomcat+JDK整合实现JAVA程序负载均衡
本组合使用软件各个版本:
Centos 5 Nginx-0.7.60-linux.tar.gz tomcat5.5.27 for linux.zip jdk1_5_0_09-linux.bin pcre-7.8.tar.gz
操作系统安装不再详细说明,网上相关文档一大堆。
3.3.1 一.软件安装:
3.3.2 安装JDK
将jdk1_5_0_09-linux.bin文件cp到/usr/local目录下
添加权限:chmod u+x jdk1_5_0_09-linux.bin
执行安装:./ jdk1_5_0_09-linux.bin 按照提示输入yes即可完成安装
安装完成后会在/usr/local下有个名为jdk1.5.0_09的目录
3.3.3 由于我做负载均衡,所以安装了两个tomcat
解压tomcat到/usr/local/tomcat1和/usr/local/tomcat2
分别进入/usr/local/tomcat1/bin和/usr/local/tomcat2/bin目录执行命令:chmod u+x *.Sh 设置权限
Tomcat1保持不变,修改tomcat2下conf中server.xml
<Server port="8005" shutdown="SHUTDOWN">
<!-- Define a non-SSL HTTP/1.1 Connectoron port 8080 -->
<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150"minSpareThreads="25" maxSpareThreads="75"
enableLookups="false"redirectPort="8443" acceptCount="100"
connectionTimeout="20000"disableUploadTimeout="true" />
<!-- Define an AJP 1.3 Connector on port8009 -->
<Connector port="8009" enableLookups="false"redirectPort="8443" protocol="AJP/1.3" />
将红色字体的端口更改成其他不使用的端口,例如:8005更改为9005,8080更改为8081,8009更改为9009
修改tomcat2下bin中的startup.sh和shutdown.sh添加以下内容
export JAVA_HOME=/usr/local/java1.5.0_09
export PATH=$PATH:$JAVA_HOME/bin
export CLASSPATH=$JAVA_HOME/lib
export CATALINA_HOME=$CATALINA_2_HOME
export CATALINA_BASE=$CATALINA_2_BASE
vi /etc/profile 配置系统变量,打开后添加以下内容:
JAVA_HOME=/usr/local/java1.5.0_09
export JAVA_HOME
CATALINA_BASE=/usr/local/tomcat1
CATALINA_HOME=/usr/local/tomcat1
export CATALINA_BASE CATALINA_HOME
TOMCAT_HOME=/usr/local/tomcat1
export TOMCAT_HOME
CATALINA_2_BASE=/usr/local/tomcat2
CATALINA_2_HOME=/usr/local/tomcat2
export CATALINA_2_BASE CATALINA_2_HOME
TOMCAT_2_HOME=/usr/local/tomcat2
export TOMCAT_2_HOME
JRE_HOME=/usr/local/java1.5.0_09/jre
export JRE_HOME
CLASSPATH=/usr/local/java1.5.0_09/lib:/usr/local/java1.5.0_09/jre/lib
export CLASSPATH
PATH=$PATH:/usr/local/java1.5.0_09/bin:/usr/local/java1.5.0_09/jre/bin:/usr/local/tomcat1/bin:/usr/local/tomcat2/bin
export PATH
保存退出,logout 注销一下
测试JDK是否安装成功
Java –version
看是否显示为刚刚安装的jdk版本名称
分别进入/usr/local/tomcat1/bin和/usr/local/tomcat2/bin目录执行./startup.sh
访问http://local:8080/和http://localhost:8081/看是否可以看到tomcat的欢迎界面
设置tomcat随系统启动
vi /etc/rc.d/rc.local 添加以下内容
/usr/local/tomcat1/bin/startup.sh
/usr/local/tomcat2/bin/startup.sh
安装nginx,在安装nginx之前需要先安装所需的pcre库
解压我们下载的pcre-7.8.tar.gz
tar zxvf pcre-7.8.tar.gz
cd pcre-7.8
./configure
make
make install
安装完毕
解压nginx-0.7.60-linux.tar.gz
tar zxvf nginx-0.7.60-linux.tar.gz
./configure--user=www--group=www--prefix=/usr/local/nginx--with-http_stub_status_module--with-http_ssl_module
创建代理文件 vi /usr/local/nginx/conf/proxy.conf 输入以下内容
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
client_max_body_size10m;
client_body_buffer_size128k;
proxy_connect_timeout600;
proxy_read_timeout600;
proxy_send_timeout600;
proxy_buffer_size8k;
proxy_buffers 432k;
proxy_busy_buffers_size64k;
proxy_temp_file_write_size64k;
保存退出。
编辑nginx.conf文件vi /usr/local/nginx/conf/nginx.conf 修改如下
#运行用户
#user nobody;
#启用进程
worker_processes 2;
#全局错误日志和pid
error_log logs/error.log;
#error_log logs/error.log notice;
#error_log logs/error.log info;
pid logs/nginx.pid;
#工作模式及连接数上限
worker_rlimit_nofile51200;
events {
worker_connections 51200;
}
#配置http已经反向代理做负载均衡
http {
include mime.types;
default_type application/octet-stream;
include proxy.conf;
#log_format main '$remote_addr - $remote_user[$time_local] "$request" '
# '$status $body_bytes_sent"$http_referer" '
# '"$http_user_agent""$http_x_forwarded_for"';
#access_log logs/access.log main;
sendfile on;
#tcp_nopush on;
#keepalive_timeout 0;
keepalive_timeout 65;
#gzip on;
#配置负载均衡服务列表,weight参数表示权重值,值越大权重越高
upstream proxyserver {
#ip_hash;
server localhost:8080 weight=6;
server localhost:8081 weight=1;
}
server {
#端口以及域名配置
listen 80;
server_name www.xxxx.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ ^/NginxStatus/ {
stub_status on;
access_log off;
}
#设定默认首页
location / {
root /wwwroot/ROOT;
index index.html login.jsp;
}
#禁止访问WEB-INF
location ~ ^/(WEB-INF)/ {
deny all;
}
#设定浏览器访问时nginx直接处理和需缓存的文件后缀以及时间参数
location ~\.(gif|jpg|jpeg|png|bmp|ico|rar|css|zip|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)${
root /wwwroot/ROOT;
expires 24h;
}
location ~ \.(htm|html)$ {
root /wwwroot/ROOT;
}
#设定此后缀的文件利用反向代理转给负载均衡列表中的tomcat处理
location ~ \.jsp$ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ \.do$ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ \.js$ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ \.xml$ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ ^/dwr/ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ ^/html/fckeditor/ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
server {
listen 80;
server_name www.1234.com;
#charset koi8-r;
#access_log logs/host.access.log main;
location ~ ^/NginxStatus/ {
stub_status on;
access_log off;
}
location / {
root /wwwroot/ROOT;
index col.html login.jsp;
}
location ~ ^/(WEB-INF)/ {
deny all;
}
location ~\.(gif|jpg|jpeg|png|bmp|ico|rar|css|zip|txt|flv|swf|mid|doc|ppt|xls|pdf|txt|mp3|wma)${
root /wwwroot/ROOT;
expires 24h;
}
location ~ \.(htm|html)$ {
root /wwwroot/ROOT;
}
location ~ \.jsp$ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ \.do$ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ \.js$ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ \.xml$ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ ^/dwr/ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
location ~ ^/html/fckeditor/ {
proxy_pass http://proxyserver;
proxy_set_header X-Forwarded-For$proxy_add_x_forwarded_for;
}
}
}
Nginx启动命令:sbin/nginx
最后就是设置tomcat集群所需的session同步
分别打开tomcat1和tomcat2下conf中server.xml
找到<Enginename="Catalina" defaultHost="localhost">
Tomcat1下的修改为<Engine name="Catalina"defaultHost="localhost" jvmRoute="worker1">
Tomcat2下的修改为<Engine name="Catalina" defaultHost="localhost"jvmRoute="worker2">
找到
<ClusterclassName="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
managerClassName="org.apache.catalina.cluster.session.DeltaManager"
expireSessionsOnShutdown="false"
useDirtyFlag="true"
notifyListenersOnReplication="true">
<Membership
className="org.apache.catalina.cluster.mcast.McastService"
mcastAddr="228.0.0.4"
mcastPort="45564"
mcastFrequency="500"
mcastDropTime="3000"/>
<Receiver
className="org.apache.catalina.cluster.tcp.ReplicationListener"
tcpListenAddress="127.0.0.1"
tcpListenPort="4001"
tcpSelectorTimeout="100"
tcpThreadCount="6"/>
<Sender
className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
replicationMode="pooled"
ackTimeout="15000"
waitForAck="true"/>
<ValveclassName="org.apache.catalina.cluster.tcp.ReplicationValve"
filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
<Deployer className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
tempDir="/tmp/war-temp/"
deployDir="/tmp/war-deploy/"
watchDir="/tmp/war-listen/"
watchEnabled="false"/>
<ClusterListenerclassName="org.apache.catalina.cluster.session.ClusterSessionListener"/>
</Cluster>
将注释去掉启用此功能,注意两处修改
tcpListenAddress="127.0.0.1"
tcpListenPort="4001"
tcpListenAddress修改为此tomcat所在机器的IP地址,如果两个tomcat在同一台服务器上那么tcpListenPort的端口需要修改,如果不在同一台服务器上只需要修改IP即可。
Linux下默认没有开启组播功能,所以需要开下
route add-net 224.0.0.0 netmask 240.0.0.0 dev eth0
如果需要在服务器启动时即开通组播需要修改
Vi /etc/sysconfig/static-routes
添加以下内容
eht0 net224.0.0.0 netmask 240.0.0.0
还需要在程序的web.xml里面</web-app>前面加入以下这句话
<distributable/>
session同步到这里设置完毕
优化linux内核
vi /etc/sysctl.conf
在末尾添加以下内容
net.ipv4.tcp_fin_timeout = 30
net.ipv4.tcp_keepalive_time = 300
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_tw_recycle = 1
net.ipv4.ip_local_port_range = 5000 65000
使设置立即生效:/sbin/sysctl–p
ulimit –a 查看系统资源限制设定
ulimit -n 4096 修改open file 参数值为4096
用ulimit -n 修改open files 总是不能保持。所以用下面一个简单的办法更好些。
修改/etc/security/limits.conf添加如下一行:
* - nofile 1006154
修改/etc/pam.d/login添加如下一行
session required /lib/security/pam_limits.so
4 安装jdk和Tomcat
Red Hat Linux6.0下面安装jdk步骤:
4.1 第一步:首先检查操作系统是否安装jdk
命令 rpm –qa|grep–i jdk
如结果为jdk1.6.0.43
如果有安装jdk则删除操作系统上面的jdk 命令 rpm –ev –nodeps jdk1.6.0.43
然后检查系统jd万全删除了没有
4.2 第二部:安装jdk和Tomcat
4.2.1 安装JDK:
首先建立在usr下面建立文件夹 命令 cd /usr #切换到usr目录 mkdir java#在usr下面建立java文件夹
拷贝安装文件到/usr/java目录
命令cp/opt/jdk1.6.0.bin /usr/java
注:::可以用软件copy
修改文件执行权
命令 cd/usr/java
Chmod 774 jdk1.6.0.bin #修改文件权限
执行安装
命令:cd/usr/java
./jdk1.6.0.bin#执行安装文件
#如果是rpm文件
运行rpm –ivhjdk1.6.0.rpm
rpm –ivh jdk1.6.0-linux-i586.rpm
4.2.2 安装Tomcat:
1在新建目录/www/上传安装包如:apache-tomcat-6.0.35.tar.gz
2(1)解压:tar -xvzf 文件.tar.gz;
3重命名:mv apache-tomcat-6.0.35 Tomcat
4.3 第三步:配置环境变量
执行命令:
Vi /etc/profile
另外::::(好的)
# set jdk
export JAVA_HOME=/usr/java/jdk1.6.0_25
export PATH=/usr/java/jdk1.6.0_25/bin:$PATH
# set tomcat
export CATALINA_HOME=/www/Tomcat
使环境变量生效
source /etc/profile
4.4 第四步:检查jdk安装是否成功
Java –version
5 压缩解压
5.1 压缩
tar –cvf jpg.tar *.jpg //将目录里所有jpg文件打包成jpg.tar
tar –czf jpg.tar.gz *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用gzip压缩,生成一个gzip压缩过的包,命名为jpg.tar.gz
tar –cjf jpg.tar.bz2 *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用bzip2压缩,生成一个bzip2压缩过的包,命名为jpg.tar.bz2
tar –cZf jpg.tar.Z *.jpg //将目录里所有jpg文件打包成jpg.tar后,并且将其用compress压缩,生成一个umcompress压缩过的包,命名为jpg.tar.Z
rar a jpg.rar *.jpg //rar格式的压缩,需要先下载rar for linux
zip jpg.zip *.jpg //zip格式的压缩,需要先下载zip for linux
5.2 解压
tar –xvf file.tar //解压 tar包
tar -xzvf file.tar.gz //解压tar.gz
tar -xjvf file.tar.bz2 //解压tar.bz2
tar –xZvf file.tar.Z //解压tar.Z
unrar e file.rar //解压rar
unzip file.zip //解压zip
5.3 总结
1、*.tar 用tar –xvf 解压
2、*.gz 用gzip -d或者gunzip 解压
3、*.tar.gz和*.tgz 用 tar –xzf 解压
4、*.bz2 用bzip2 -d或者用bunzip2 解压
5、*.tar.bz2用tar –xjf 解压
6、*.Z 用uncompress 解压
7、*.tar.Z 用tar –xZf 解压
8、*.rar 用unrar e解压
9、*.zip 用unzip 解压
6 Linux
6.1 第一章:认识安装linux
6.1.1 linux操作系统由linux内核和各种外围程序组成
内核是一个特殊的软件程序,用于实现cpu和内存分配,进程调度,设备驱动等核心操作,以面向硬件为主;外围程序进行指令解析,搭建服务,图形化桌面程序等,面向用户为主.
内核版本号:2.6.38
外围程序
GPL协议:①软件必须以源代码的形式发布 ②若某软件使用受GPL协议保护的自由软件的一部分,则必须遵守GPL协议 ③不承担责任和承诺 ④不排除商业包装也不限制打包发行其他非自由软件
LGPL协议:允许使用GPL程序库,无需公开全部源代码。推动linux系统进一步发展。
开源软件具有自由性,但是开源软件不一定都是自由软件。(微软曾公开一小部分源代码,但是windows系统不是开源软件。
6.1.2 linux发行版本
1. redhat系列
redhat企业版
fedora社区版定位于个人桌面用户,更新周期短
centos社区版不属于红帽公司,相当于红帽rhel翻版。
2. suse系列
3. debian系列
6.1.3 linux中如何表示硬盘和分区
硬盘:IDE借口的硬盘设备表示为“hdX”;SCSI硬盘表示为“sdX”。其中“x”可以为a,b,c等
分区:1-4 主分区和扩展分区 5+表示逻辑分区
文件系统类型:EXT3,第三代文件扩展系统,存放文件和目录数据的分区,是RHEL5系统默认使用的文件系统。特点:保存有磁盘存取记录的日志数据,便于回复,在存取性能和稳定性方面更加出色。
Swap,交换文件系统,用于为linux系统建立交换分区。交换分区的作用相当于虚拟内存,在一定程度上缓解物理内存不足的问题(交换分区的大小设置为物理内存的1.5-2倍)。交换分区不用于直接存储用户的文件和目录等数据,无挂载点。
Linux系统还支持其他各种类型的文件系统,如:XFS、JFS、FAT16、FAT32、NTFS等。XFS和JFS文件系统多用于商业版本的unix操作系统,具有出色的性能表现。NTFS是微软公司的专有文件系统,所以linux系统默认只支持从NTFS分区读取文件,如需向其中写入数据,需结合其他辅助软件,如:NTFS-3G。
6.2 第二章:系统设置及基本操作
附加:破解登陆密码
重启,光标点入,在读秒时↑↓移动,按“e”,在第二行再按“e”→空格→S→回车→b passwd重设密码
6.2.1 linux系统的目录结构
/boot: 存放启动linux系统所必需的文件,包括内核文件,启动菜单配置文件等。出于安全考虑,/boot目录通常被划分为独立的分区,称为“/boot”分区。
/bin: 存放系统中最基本的用户命令,普通用户都有权限执行。
/sbin: 存放系统中最基本的管理命令,一般管理员用户才有权限执行。
/dev: 存放linux系统中的硬盘,键盘,鼠标,光驱等各种设备文件。
/etc: 存放linux系统及各种程序的配置文件,配置文件较多的程序会在“etc”下建立独立的子目录,用于存放各自的配置文件。
/home: 存放系统用户的默认工作文件夹
/root: linux系统管理员即超级用户root的宿主目录,所以root不在/home目录下。
/usr: 存放其他用户应用程序,通常被划分为很多子目录,存放不同类型的应用程序。
/var: 存放系统中经常需要变化的一些文件,日志,邮件等,通常也被划分为独立的分区。
/tmp:存放系统运行过程中使用的一些临时文件。
6.2.2 命令行界面,查看系统信息及关机,重启
1,查看内核版本 uname –r
2,查看CPU信息 cat/proc/cpuinfo
3,查看内存 cat /proc/meminfo
4,查看主机名 hostname
5,查看IP地址 ifconfig eth0
6,关机操作 shutdown –h now 或 poweroff 现在关机
7,重启操作 shutdown –r now 或者 reboot
8,延迟关机或者重启 shutdown –r +15 ‘woyaochongqi’
命令解释: cat 显示指定文件内容 info 英文:信息
Host:主人,主机
ifconfig:英文全称是network interfaces configuring。配置网卡的IP地址语法例:ifconfigeth0 192.168.0.1 netmask 255.255.255.0。network:网卡文件的一个参数,意思是:网段广播域的起点。通常与BROADCAST一起使用。Interfaces:接口。Configuring:设定。
Reboot:boot,引导 英语单词语法中re+单词指重新XX 所以reboot指重新引导,即重启。
Linux系统上的/proc目录是一种文件系统,即proc文件系统。与其它常见的文件系统不同的是,/proc是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,用户可以通过这些文件查看有关系统硬件及当前正在运行进程的信息,甚至可以通过更改其中某些文件来改变内核的运行状态。
6.3 第三章:目录和文件管理
6.3.1 linux命令的分类
Linux命令的执行必须依赖于shell命令解释器。Shell是在linux系统中运行的一种特殊程序,它位于操作系统内核与用户之间,负责接收用户输入的命令并进行解释,将需要执行的操作传递给系统内核执行,shell在用户和内核之间充当“翻译官”的角色。
Bash是linux系统中默认使用shell的程序,文件位于/bin/bash。
内核命令:集成于shell解释器程序内部的一些特殊指令。内部命令无需从硬盘中重新读取文件,因此执行效率更高。
外部命令: 脚本文件或者二进制程序,是属于shell解释器程序之外的命令。Linux系统必须知道外部命令的文件位置,才能够有shell加载执行。
6.3.2 linux命令行格式
格式:命令字 [选项] [参数]
命令字 对英文字符的处理时区分大小写的,操作时需要细心。
选项 使用单个字符选项使用“-”符号,使用多个字符选项使用“- -”符号。
参数 文件名,目录(路径)名或用户名
辅助操作
Tab键:自动补齐,能够唯一定位一个命令字或文件,目录名。否则按两次,系统将输出可用的名称列表。
反斜杠:\ 切换下一行继续执行命令
Ctrl+u: 删除当前光标之前的所有字符内容
Ctrl+k: 删除从当前光标处行尾的所有字符内容
Ctrl+l: 清空当前名目中显示内容
Ctrl+c: 取消当前命令行的编辑,并切换为新的一行命令提示符
6.3.3 获得命令帮助
help 是一个内建指令,查看各Shell内部命令的帮助信息。
Help ped 显示当前用户所在的工作目录。
--help对于大多数外部命令。
Ls --help显示文件或目录列表信息
Man 查看手册页信息
man file 用于判断文件类型。↑↓上下股滚动一行文本内容,pgon,pgup上下翻页,/针对手册内容进行查找。
Q和q退出阅读环境。
管道符: | 以前面命令结果为前提继续接下来的操作
重定向输出: > 将屏幕结果保存到 > 后边指定的文件中
6.3.4 目录和文件基本操作
pwd 查看当前的工作目录
cd 切换工作目录 cd /boot/grub 将工作目录更改为/boot/grub
cd ~切换至用户的宿主目录,cd – 返回原来的目录位置
绝对路径:以根目录 / 为起点
相对路径:一般以当前工作目录为起点,开头不使用 / 符号。“./”开头表示当前工作目录为起点,“../”开头表示以上一级目录作为起点。
ls命令 显示目录和文件内容
-l 以长格式显示文件和目录的详细信息,不加-l默认以短格式显示信息。
-a 显示所有文件,包括隐藏文件和目录(隐藏目录和文件以“.”开头)
-A 与-a相似,不显示隐藏目录和文件
-h 显示目录和文件大小
-d 显示目录属性
-R 以递归形式显示
- -color 在字符模式以颜色区分不同的文件。- -color=tty 使用终端预定义的颜色方案。深蓝色表示目录,白色表示一般文件,绿色表示可执行文件,黄色表示设备文件,红色表示压缩文件。
ls -ld 只显示当前目录的详细属性,不显示目录下的内容
ls –lh 以长格式显示文件的大小和其他详细信息
扩展: alias lzx=’ls–alh’ 设置别名 使得长命令简化
du 统计目录和文件的空间占用情况
-a 所有文件
-h 显示统计结果,显示以K,M等单位
-s 统计单个参数占用空间大小
使用一般为 –ah -sh
mkdir创建目录 -p 递归创建
touch创建空文件
ln 创建链接文件
分为软连接和硬链接,默认创建的硬链接,结合-s创建软连接。
软连接:适用于文件或目录 删除原文件,链接失效,可与原始文件不在同一文件系统。
硬链接:只是用于文件 删除原始文件仍有效,必须与原始文件在同一文件系统。
例如:ln -s /etc/httpd/conf/httpd.conf /etc
cp复制文件或目录
-f 覆盖原文件时不提醒,强制复制
-i覆盖原文件时提醒用户确认
-p复制保留源文件的属性不变
-r 递归复制目录时递归复制子目录
例如:cp –r /bin/touch ./mytouch
rm删除文件或目录
-f -i -r 同cp含义
10. mv 移动 例如: mv mytouch myfile
11. which 查找linux命令文件并显示所在位置
查找外部命令位置,内部命令不可查
12. find 查找文件或目录
格式: find [查找范围] [查找条件]
-name 按文件名称进行查找
-size 根据文件大小查找 +超过指定大小 -小于指定大小
-user 根据属主查询
-type 根据文件属性查找
f 普通文件
d 目录
b 块设备文件
c 字符设备文件
扩展:逻辑运算符 -a and 必须满足 -o or 可选择性“或”
例如: find /boot -size +50M -o -name “lzx*”
13.which vim 查找vim程序位置
6.3.5 查看和检索文件
Cat显示并连接文件的内容 cat 文件路径
分页查看文件内容
A.more enter键逐行向下滚动查看 空格向下翻一屏 b向上翻一屏 q键退出 查看完毕自动退出
B. less退出必须按q
head和tail查看文件开头或尾部部分内容 默认显示10行
例如:tail –f /etc/passwd -f 跟踪尾部内容动态更新,实现监控
Wc -c 统计文件内容的字节数
-l 统计文件内容中的行数
-w 统计文件中单词个数
grep grep [选项] 查找条件 目标文件
-i 查找内容忽略大小写
-v 反转查找 查找内容加””
6.3.6 备份与恢复文档
1. gzip 扩展名“gz”制作压缩文件使用“-9”高比率压缩,
gunzip 解压命令字 或者调用选项字符 gzip –d 解压
2. bzip2 扩展名为“bz2” 用法与gzip基本相同
bunzip2 解压
3.tar归档和释放工具
-c 创建 .tar格式的包文件
-C 解包时指定释放目标文件夹
-f 使用归档文件
-j 调用bzip2程序进行压缩或解压
-p 打包时保留文件及目录的权限
-P 打包时保留文件及目录的绝对路径
-t 列表查看包内文件
-v 输出详细信息
-x 解开.tar格式包文件
-z 调用gzip程序进行压缩或解压
格式:tar [选项] 归档或压缩文件名 需要归档的源文件或目录
举例: tar -zcvf sysfile.tar.gz /etc /boot 归档到当前目录下
Tar -jcvf /tmp/usershome.tar.gz2 /home /etc/passwd
6.3.7 vi文本编辑器
命令模式:字符串查找,删除,复制,粘贴
输入模式:修改编辑文件正文
末行模式:保存文件,退出编辑器
字符含义注释:
a:在当前光标后插入内容
A:在光标所在行的末尾插入内容
i:在当前光标位置前插入内容
l:光标所在行的行首插入内容
o:在光标所在行的后面插入一个新行
O:光标所在行的前面插入一个新行
#G 跳转到文件中的第#行
:set nu 显示行号
x或del删除光标处的单个字符
dd删除当前光标所在行#dd删除从光标开始的#行内容
d^删除光标到行首的内容
d$删除光标到行尾的内容
yy复制当前行整行内容 #yy复制从光标开始的#行内容
p复制到光标所在的位置
P复制到光标位置之前
/+字符 查找字符
ZZ保存并退出编辑
:w保存 w+路径 保存的位置
:q!强制不保存退出 :q不保存退出
:wq :x 保存并退出
:e ~/新文件 打开新文件
:r +路径 将复制内容写入新文件
:[替换范围] sub /旧内容/新内容[/g] 范围%整个文件 n,m指定行内查找替换
6.4 第四章:安装及管理程序
6.4.1 回顾加扩展:
linux命令的执行文件通常放置在/bin和/sbin目录中
应用程序的执行文件一般放在/usr/bin、/usr/sbin和/usr/local/bin、/usr/local/sbin目录下
应用程序组成:
普通程序文件保存在/usr/bin,普通用户可以执行
服务器程序、管理程序抱在在/usr/sbin,管理员可执行
配置文件保存在/etc下
日志文件保存在/var/log
应用程序的参考文档等数据保存在/usr/share/doc目录下
执行文件及配置文件的man手册保存在/usr/share/man目录下
#rpm -ql 软件包名称 (查看软件包安装的目录和文件清单)
挂在光盘:
mkdir /media/cdrom
mount /dev/cdrom /media/cdrom
6.4.2 RPM命令及安装RPM包:
Rpm +查看命令
-q:查询软件包是否安装
-qa:显示当前系统中以rpm方式安装的所有软件列表
-qi:查看指定的软件包名称,版本,许可协议等详细信息
-ql:显示指定的软件包在系统中的安装的所有目录
-qf:查看指定的文件或目录时由哪个软件包所安装的
-qpi:查看指定软件包的名称,版本等详细信息
-qpl:查看指定软件包准备要安装在所有的目标目录,文件列表
安装、升级、卸载软件包
-i:在当前系统中安装一个新的rpm软件包
-e:卸载指定名称的软件包
-U:检查并升级某个软件包,如果没有安装则等同于-i
-F:更新某个软件包,若没有安装就放弃安装
-h:在安装中显示安装进度
-v:显示安装的详细信息
--force:强制安装某个软件包
--nodeps:安装、升级、卸载无视其他软件包的依赖性
维护rpm数据库
重建rpm数据库
--rebuilddb或者- -initdb 对数据库进行重建
导入验证公钥
#rpm - -import /media/cdrom/RPM-GPG-KEY-redhat-release
6.4.3 源代码编译安装程序:
查看编译工具版本
gcc - -version make - -version
解包
配置
例如: cd /usr/src/zhcon-0.2.5
Patch -p1 < /cd /usr/src/zhcon-0.2.5-to-0.2.6.diff(打补丁)
./configure --prefix=/usr/local/zhcon(通过脚本文件进行配置工作)
(.diff为补丁文件,p1为1不是l)
编译 #make
安装 #make instail
使用 查看安装软件目录的子目录 ls /usr/local/zhcon
了解使用方法 /usr/local/zhcon/bin/zhcon - -help
6.5 第五章:账号和权限管理
6.5.1 用户和组账号概述:
用户账号:超级用户,普通用户,程序用户
组账号: 基本组(私有组) 附加组(公共组)
UID号:用户ID号 GID:组ID号
账号管理:
1,用户的账号的基本信息,保存在/etc/passwd和/etc/shadow中。
1)/etc/passwd 文件信息7个字段
举例:teacher:x:500:500:teacher:/home/teacher:/bin/bash
账户名:加密字串,密码占位符为“x”:用户ID:私有组ID:描述:宿主目录:登录使用的shell
6.5.2 添加,删除,修改用户账号
1)useradd 选项 用户名
-u 指定用户的UID号
-d 指定用户的宿主目录的位置
-e 指定失效时间
-g 指定基本组名或GID号
-G 指定用户附加组名或GID号
-s 指定用户的登录shell
2)passwd 用户名
-d 清空指定用户的密码(无需密码登录)
-l 锁定用户账户
-S 查看用户账户状态
-u 解锁用户账户
3)usermod
-u 修改用户UID号
-d 修改用户的宿主目录
-e 修改账户失效时间
-g 修改私有组
-G 修改公共组
-M 不为用户建立并初始化宿主目录
-s 指定用户登录的shell
-l 更改用户账号的登录名称
-L 解锁用户账户
-U 锁定用户账户
4)userdel -r 账户 删除账户并结合-r删除宿主目录
5)id root 查询root账户相关联的ID号
6) finger teacher 查询指定账户的登录属性
7)w 查询当前主机用户的登录情况信息
6.5.3 组账户管理
配置文件: /etc/group /etv/gshadow
1)groupadd 组名 添加组账号
2)gpasswd -a mike root 将mike用户加入到root组
3)G
4)groups mike 查询用户所属组
5)gpasswd -d mike root 将mike用户从root组删除
6)gpasswd -M root,adm,lzx adm 指定三个用户添加到adm到adm组
7)groupdel class 删除组
8)groups 查询所有组名称
6.5.4 管理目录和文件的属性
1)ls -ld 目录或文件 查询目录和文件的属性
drwxr-xr-x 100 root root 12288 05-12 04:03 /etc
第一个字符:d目录,b块设备文件,c字符设备文件,-普通文件,l链接文件
第2-4字符:属主用户对该文件的权限
第5-7字符:该文件的属组内成员对文件的访问权限
第8-10字符:其他用户对该文件的权限
2)设置目录和文件的权限
chmod [ugoa```] [+ - =] 文件或目录···
权限:读取r=4,写入w=2,执行x=1
u文件属主,g文件属组内的用户,o其他用户,a所有用户
例如:chmod u+x,o-r myfile
chmod -R 644 /var/ftp/pub/ 递归赋权限
3)设置文件和目录的归属
chown 属主:属组 文件或目录···
-R同样是递归设置
6.6 第六章:磁盘和文件系统管理
6.6.1 磁盘划分:
#fdisk -l
#fdisk /dev/sdb n p 1 +10G w
n为新建,d为删除,p显示分区,w保存并退出,q不保存退出,t变更分区类型,l查看文件系统类型,m查看选项信息
#partprobe /dev/sdb 刷新分区情况
6.6.2 管理文件系统
mkfs格式化分区类型 mkfs -t 文件系统类型 分区设备
mkswap格式化交换分区 mkswap /dev/sdb2
新增交换分区需要执行swapon 启用
83 exte系统 82 交换分区 5扩展分区 8eLVM
6.6.3 挂载、卸载文件系统
挂载:mount [-t 文件系统类型] 存储设备 挂载点
挂载.iso 镜像文件通常格式如下
mount-o loop ubun-10.10-dvd-i386.iso /media/mnt
卸载: umount /mailbox(挂载点目录) 或/dev/cdrom(设备文件)
设置自动挂载: vi /etc/fstab (mount 命令配置文件)
查看磁盘使用情况:
df -h(容量单位)T(文件系统类型显示)
6.6.4 LVM逻辑卷管理
注意:/boot分区不能给予LVM创建,必须独立
逻辑顺序:PG→VG→LV
LVM管理命令:
Scan 扫描,并输出信息
Create 创建
Display 显示卷的信息
Remove 删除卷
Extent 扩展卷
Reduce 减小卷的大小
举例:pvcreate /dev/sdb1 /dev/sdb2
vgcreate t219 /dev/sdb1 /dev/sdb2
lvcreate -L 10G -n lzx t219
lvextend -L +10G /dev/t219/lzx
mkfs.ext3 /dev/t219/lzx
6.6.5 设置磁盘配额步骤:
1)重新挂载文件系统
#mount -o remout,usrquota,grpquota /dev/t219/lzx /mailbox
#chmod 777 /mailbox
#vi /etc/fstab
2)检测磁盘配额并生成配额文件
#quotacheck -augcv
#ls -l /mailbox/aquota.*
3)编辑用户和组账号磁盘配额
#edquota -u zhangsan 或 -g users
#edquota -t 设置默认宽限时间
4)验证
5)查看磁盘配额使用情况
#quota -u zhangsan 或 -g users
#requota /mailbox 查看/mailebox 文件系统的配额使用情况
6.7 第七章:引导过程和服务控制
6.7.1 引导过程总览
1)开机自检,根据主板BIOS中设置对CPU,内存,显卡,键盘灯设备进行初步检测,检测成功交给本机硬盘。2)MBR引导,根据硬盘第一个扇区中的MBR的设置调用启动菜单。3)GRUB菜单加载内核文件,将系统控制权交给内核。4)加载linux内核,负责资源分配与调度。5)INIT进程初始化
6.7.2 系统初始化进程及文件
1)init进程 PID号总为1
2)Inittab配置文件 位置/etc/inittab
#vi /etc/inittab 打开程序或脚本编辑界面
#init q 激活配置
3)rc.sysinit脚步文件 位置/etc/rc.d/
完成包括设置网络、主机名、设置时钟、检测文件系统等一系列初始化工作。
4)rc脚本文件 位置/etc/rc.d/rc
5)rc.local脚本文件 位置/etc/rc.d/rc.local 由rc脚本最后进行加载
6.7.3 系统服务控制及优化
1)系统服务的控制脚本默认放在/etc/rc.d/init.d/目录下
service 服务名称 控制类型
或#/etc/rc.d/init.d/服务名称 控制类型
Start:运行
Stop:终止
Restart:重新启动运行
Reload:刷新配置(重载)
Status:查看运行状态
切换运行级别 #runlevel 查看运行级别
优化服务
①使用ntsysv工具 指定设置某运行级别的服务
#ntsysv - -level 35 图形化设置
②使用chkconfig 工具
#chkconfig - -list 查看所有服务在不同运行级别下的默认启动状态
#chkconfig - -list network 查询指定的服务名称
#chkconfig - -level 运行级别 服务名称 on|off
6.8 第八章:进程和计划任务管理
6.8.1 查看进程
1)ps查看静态的进程统计信息
-a显示当前终端下的所有进程信息
-u以用户为主的格式输出进程信息
-x所有进程信息
-e显示系统内的所有进程信息
-l以长格式显示
-f使用完整格式显示进程信息
STAT显示进程状态:S休眠、R运行、Z僵死、<高优先级、N低优先级、s父进程、+前台进程。对于僵死状态的进程应该予以手动终止
ps不加任何选项显示当前用户会话中打开的进程
2)top查看进程动态信息
P键CPU根据使用情况对进程列表进行排序,M根据内存占用情况进行排序,N根基启动时间进行排序,h获得在线帮助信息,q退出top程序的查看
3)pgrep 查询进程信息(相当于ps+grep使用)
举例:#pgrep -l "log" 不加-l只显示PID号
#pgrep -l -U(特点用户) teacher -t(查询特定终端运行的进程) tty1
4)pstree查看进程树
举例:#pstree -ap teacher 查询teacher用户打开的进程及子进程
-p 列出PID号 -u列出用户名 -a列出所有进程
6.8.2 控制进程
启动进程 执行命令或执行一切动态程序后台运行加&符号
改变进程运行方式
Ctrl+Z 将任务调入后台并暂停执行、
#jobs -l 查看后台运行的进程
#bg +进程序列号 继续在后台执行
#fg +进程序列号 调入前台执行执行
终止进程的执行
①kill 需要使用进程的PID号作为参考
#pgrep -l "network" 查看进程PID号
#kill 2869 杀死指定PID号的进程
②killall 需要使用通过进程名来杀死进程
③pkill genuine进程名称、用户、所在终端等多种属性终止特定的进程
#pkill -9 -U "lzx" 杀死用户lzx的进程
计划任务管理
①@一次性任务设置
#@ 指定一个时间点
at>输入执行命令 ctrl+d提交
#atq 查询未执行的任务(未到时间点的任务)
#atrm 2 删除指定序号未执行的任务
②crontab 周期性任务设置
/etc/crontab 系统任务配置文件
/var/spool/cron 用户cron任务的配置文件存放目录
#crontab -e 编辑计划任务列表
举例:#crontab -e -u lzx
#crontab -r 删除当且用户设置的计划任务
6.9 第九章:分析和排查系统故障
6.9.1 分析日志文件
1)主要日志文件 内核及系统日志,用户日志,程序日志
2)命令解析
#ls /var/log 列表查看默认的日志目录和文件
#grep -v "^$" /etc/syslog.conf 查看内核系统日志
#lastb 查询登录失败的用户记录
6.9.2 排除系统启动故障
1)MBR扇区故障
现象:黑屏
备份:#mount /dev/sdb1 /backup
#dd if=/dev/sda of=/backup/mbr.bak bs=512 count=1
恢复:光盘引导进入
#linux rescue 进入急救模式
#mkdir /tmpdir
#mount /dev/sdb1 /tmpdir
#dd if=/tmpdir/mbr.bak of=/dev/sda
#exit 退出自动重启
2)GRUB引导故障
编辑引导命令
grub >root (hd0,0)
grub>kernel /vmlinuz-2.6.18-194.e15 or root=/dev/VolGroup00/LogVol00 rhgb quiet
grub >initrd /initrd-2.6.18-194.e15.img
grub >boot 引导启动
或者
grub >root (hd0,0)
grub>kernel /vmlinuz-2.6.18-194.e15 or root=LABEL=/ rhgb quiet
grub >initrd /initrd-2.6.18-194.e15.img
grub >boot 引导启动
其他故障不做阐述,详见故障排查笔记
6.10 第十章:(网络)Linux下修改IP和DNS和路由配置方法
ifconfig eth0新ip然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip
6.10.1 修改IP地址
[aeolus@db1network-scripts]$ vi ifcfg-eth0 DEVICE=eth0 ONBOOT=yes BOOTPROTO=static IPADDR=219.136.241.211 NETMASK=255.255.255.128 GATEWAY=219.136.241.254
6.10.2 修改网关
vi /etc/sysconfig/networkNETWORKING=yesHOSTNAME=AaronGATEWAY=192.168.1.1
6.10.3 修改DNS
vi resolv.confnameserver202.96.128.68nameserver219.136.241.206
6.10.4 重新启动网络配置
/etc/init.d/networkre start
修改ip地址 即时生效:#ifconfig eth0 192.168.0.20 netmask 255.255.255.0
启动生效: 修改/etc/sysconfig/network-scripts/ifcfg-eth0
修改defaultgateway 即时生效:#route add defaul tgw 192.168.0.254
启动生效: 修改/etc/sysconfig/network-scripts/ifcfg-eth0
修改dns 修改/etc/resolv.conf 修改后可即时生效,启动同样有效
修改hostname 即时生效:#hostnamefc2
启动生效: 修改/etc/sysconfig/network
6.11 第十一章:Linux下的vsftp
1::关闭防火墙:
2::iptables-l //查看
3::serviceiptables stop
4::cd/etc/selinux/
5::vi config
SELINUX=disabled //将SELINUX禁用
6::启动和关闭Vsftpd
用命令行方式启动和停止
在Red HatEnterprise Linux 5中,通过命令行方式启动和停止Vsftpd服务可使用如下命令。
6-1::启动Vsftpd服务
其命令为:
# service vsftpd start
为vsftpd 启动vsftpd: [确定]
停止Vsftpd服务
6-2::停止Vsftpd服务的命令为:
# service vsftpd stop
关闭 vsft: [确定]
6-3::重新启动Vsftpd服务
重新启动Vsftpd服务的命令为:
# service vsftpd restart
关闭 vsft: [确定]
为 vsftpd 启动vsftp: [确定]
7::检查Vsftpd服务状态
可以采用以下命令检查Vsftpd服务的运行状态:
service vsftpd status
vsftpd (pid 3571) 正在运行...
6.12 第十二章:Linux+Tomcat建站笔记(JDK,Mysql,Vsftpd,Iptables等配置)
6.12.1 安装Linux
偶安装的是LinuxEnterprise As 4,不多说了,网上教程有很多.
注:偶在安装时防火墙级别选择“中”
安装后,需要设置下服务器使用的语言环境,这根据你的个人需要来调整。方法:
vi /etc/sysconfig/i18n
将 其中的zh_CN改为en_US
保存后 init 6重启
输入locale 查看系统当前语言,确认无误后再继续下面配置。
以下是偶修改过的例子:
#####################################################
LANG="en_US.UTF-8"
SUPPORTED="en_US.UTF-8:en_US:en"
SYSFONT="latarcyrheb-sun16"
####################################################
6.12.2 下面安装JDK
最新JDK版本为5.0可以从http://java.sun.com下载最新版本。
下载来的文件为:jdk-1_5_0_06-linux-i586-rpm.bin,放到/usr/locale/下
chmod a+x jdk-1_5_0_06-linux-i586-rpm.bin
./jdk-1_5_0_06-linux-i586-rpm.bin
敲几次空格就OK了。还有一个是否接受协议,输入YES就可以了。
得到jdk-1_5_0_06-linux-i586-rpm包
rpm -ivh jdk-1_5_0_06-linux-i586-rpm
安装JDK成功后,下面就要配置环境变量了。修改/etc/profile加入以下变量
exportJAVA_HOME=/usr/local/java/jdk-1_5_0_06
exportCLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.
export PATH=$JAVA_HOME/bin:$PATH
保存后重启系统。
输入java-version查看
java version "1.5.0_06"
Java(TM) 2 Runtime Environment, StandardEdition (build 1.5.0_06-b05)
Java HotSpot(TM) Client VM (build1.5.0_06-b05, mixed mode, sharing)表示JDK已成功安装。
注:我在配置JAVA环境变量的时候,运行java -version得到的却是
java version "1.4.2"
gcj (GCC) 3.4.3 20041212 (Red Hat3.4.3-9.EL4)
Copyright (C) 2004 Free SoftwareFoundation, Inc.
This is free software; see the source forcopying conditions. There is NO
warranty; not even for MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE.
这说明系统中的gcj所带的JAVA的环境变量优先获得执行权。解决方法就是像上面的设置
export PATH=$JAVA_HOME/bin:$PATH,注意将$PATH放到最后。(如果放到最前,则会出现上述问题)
6.12.3 安装TOMCAT
下载jakarta-tomcat-5.0.28.tar.gz到/opt
tar -zxvf jakarta-tomcat-5.0.28.tar.gz
ln -s jakarta-tomcat-5.0.28 tomcat (创建一个软链接tomcat使之指向jakarta-tomcat-5.0.28目录,这样访问tomcat就达到了访问jakarta-tomcat-5.0.28目录的目的,使用起来比较方便)
vi /etc/profile
添加:exportCATALINA_HOME=/opt/tomcat
重启机器后,/opt/tomcat/bin/startup.sh
提示:
Using CATALINA_BASE: /opt/tomcat
Using CATALINA_HOME: /opt/tomcat
Using CATALINA_TEMDIR: /opt/tomcat/temp
Using JAVA_HOME: /opt/jdk5.0
以下是偶在profile文件中最后添加的代码
##########################################################
#set env varaible
JAVA_HOME=/usr/java/jdk1.5.0_06
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
PATH=$HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
set USERNAME
export CATALINA_HOME=/opt/tomcat
export BASEDIR=/opt/tomcat
export JAVA_HOME CLASSPATH PATH
/opt/tomcat/bin/startup.sh #开机自动启动tomcat
####################################################
启动成功后打开浏览器:http://localhost:8080
可是此时期望中的小猫并没有出现,后来发现是系统的防火墙的问题,偶将tomcat的端口改为80就没有问题了。
下面说说 tomcat中虚拟主机的配置,tomcat中主机配置文件在tomcat/conf/server.xml
以下是创建www.test.com的主机,因为我想test.com也指向到同一个地址,所以作了个别名,当然如果域名多的话,可以以此类推。
<Engine defaultHost="localhost"name="Catalina">
<Host appBase="webapps"name="www.abc.com">
</Host>
<!-- 创建虚拟主机 -->
<Host appBase="webapps"autoDeploy="false" liveDeploy="false"name="www.test.com">
<Alias>test.com</Alias>
<LoggerclassName="org.apache.catalina.logger.FileLogger" prefix="test_log."suffix=".txt" timestamp="true"/>
</Host>
然后重启tomcat
cd /opt/tomcat/bin
./shutdown.sh
./statup.sh
上面仅仅是将在服务器上配置了域名主机,如果将域名解析到服务器后,访问www.test.com其实是访问tomcat的默认主目录,这个原因是我们没有
为www.tes.com 这个主机配置默认主目录的原因,下面说明一下:
在tomcat/conf/Catalina/找到目录www.test.com(如果没有就新建个)
vi ROOT.xml
<?xml version=’1.0’encoding=’utf-8’?>
<Context docBase="ROOT/test"path="" workDir="work/Catalina/www.test.com/_">
</Context>
:wq
这样在www.test.com目录下创建ROOT.xml文件,它是虚拟主机www.test.com的默认上下文配置文件。
当访问www.test.com时系统会自动访问tomcat/webapps/ROOT/test文件夹的内容了。
注:关于虚拟主机上下文件的设置,也可以在Server.xml中配置.这个可以根据个人习惯来定。
例:
<Host appBase="webapps"autoDeploy="false" liveDeploy="false"name="www.test.com">
<Alias>test.com</Alias>
<Context docBase="ROOT/test"path="" workDir="work/Catalina/www.test.com/_"></Context>
<LoggerclassName="org.apache.catalina.logger.FileLogger"prefix="test_log." suffix=".txt"timestamp="true"/>
</Host>
6.12.4 由于系统中已经自带了Mysql,所以就不需要在安装了。
默认用户是root 密码为空,下面我们将添加个新的管理用户,并为root设置密码。
添加新用户:
grant all privileges on *.* toabcd@localhost identified by ’123456’ with grant option;
flush privileges;
这样我们就成功添加了拥有所有权限用户名为:abcd密码为123456并且拥有创建新用户权力的用户了。
查看Mysql用户表:
use mysql
select * from user;
可以看到刚刚添加的abcd用户已经在数据库中了。
下面为root用户更改密码。方法有很多,下面使用一种比较简单的方法:
use mysql;
update user set Password =password(’1341234’)where User=’root’;
这样 root 的密码就已经更改了.
退出mysql重新登录试试:
mysql -u root -p
输入密码,OK!
现在我们只能在服务器上访问mysql,如果是这样那就太不方便了,下面我们就配置允许外部用户访问的账号
grant select,insert,update on *.* toabcde@’%’ identified by ’123456’;
flush privileges;
现在从外部还是不能访问,因为此时Linux的防火墙是不允许Mysql的端口3306开放的。
6.12.5 修改防火墙配置文件:
vi /etc/sysconfig/iptables
增加下面一行:
-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 3306 -j ACCEPT
如果想开通21等端口,只需要将3306换成21等要开放的端口就可以了。
附:iptables
==============================================
# Firewall configuration written bysystem-config-securitylevel
# Manual customization of this file is notrecommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-typeany -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353-d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp--dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --stateESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW-m tcp -p tcp --dport 3306 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT--reject-with icmp-host-prohibited
COMMIT
================================================
配置后,重新启动iptable
service iptables restart
这时就可以从外网访问Mysql了。
mysql -h 你服务器的IP地址,-u root -p
输入密码,OK!
注:Mysql默认的最大连接数是100,这一般是不够的,所以需要调整下。
如果仅想在本次有效,可以:
mysql> set GLOBAL max_connections=200
如果想一直有效:
vi /etc/my.cnf
在socket=/var/lib/mysql/mysql.sock下:增加下面一行
set-variable=max_connections=200
6.12.6 vsftpd的配置,
因为vsftpd使用系统的用户作为FTP用户,首先我们要添加系统用户。
useradd -d /opt/tomcat -s /sbin/nologinftpuser1
passwd ftpuser1
Changing password for user beinan.
New password:
Retype new password:
passwd: all authentication tokens updatedsuccessfully.
vsftpd的配置文件在/etc/vsftpd/vsftpd.conf中以下是摘要说明:
anonymous_enable=NO #匿名不能登录
local_enable=YES #本地用户可以登录
write_enable=YES #开通写的权限
anon_upload_enable=NO #匿名不能上传
为了将用户锁定在它的主目录中,需要以下设置:
chroot_list_enable=YES #将用户锁定在它的主目录中
# (default follows)
chroot_list_file=/etc/vsftpd.chroot_list #锁定用户名单的文件(即/etc/vsftpd.chroot_list中的用户将会被锁定在其主目录中)
vi /etc/vsftpd.chroot_list
testftp1
testftp2
:wq
重启vsftpd
service vsftpd restart
此时FTP已经可以连接了.
以上仅是关于服务器基本的设置,其中每一项(tomcat、iptables、vsftpd)配置都是复杂而漫长的过程,请查阅相关资料。
7 Tomcat内存优化
7.1 Tomcat内存优化
T omcat内存优化主要是对 tomcat 启动参数优化,我们可以在 tomcat 的启动脚本 catalina.sh 中设置JAVA_OPTS 参数。
7.1.1 JAVA_OPTS参数说明
Java代码
1.-server 启用jdk 的 server 版;
2.-Xms java虚拟机初始化时的最小内存;
3.-Xmx java虚拟机可使用的最大内存;
4.-XX:PermSize 内存永久保留区域
5.-XX:MaxPermSize 内存最大永久保留区域
服务器参数配置
现公司服务器内存一般都可以加到最大2G ,所以可以采取以下配置:
Java代码
1.JAVA_OPTS='-Xms1024m -Xmx2048m -XX:PermSize=256M -XX:MaxNewSize=256m -XX:MaxPermSize=256m'
配置完成后可重启Tomcat ,通过以下命令进行查看配置是否生效:
1. 首先查看Tomcat 进程号:
Xml代码
1.sudo lsof -i:9027
我们可以看到Tomcat 进程号是 12222 。
1. 查看是否配置生效:
Xml代码
1.sudo jmap – heap 12222
我们可以看到MaxHeapSize 等参数已经生效。、
7.2 Tomcat并发优化
7.2.1 Tomcat连接相关参数
在Tomcat 配置文件 server.xml 中的 <Connector ... /> 配置中
参数说明
minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为 10
maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为 75
acceptCount:允许的最大连接数,应大于等于 maxProcessors ,默认值为 100
enableLookups:是否反查域名,取值为: true 或 false 。为了提高处理能力,应设置为 false
connectionTimeout:网络连接超时,单位:毫秒。设置为 0 表示永不超时,这样设置有隐患的。通常可设置为30000 毫秒。
其中和最大连接数相关的参数为maxProcessors 和 acceptCount 。如果要加大并发连接数,应同时加大这两个参数。
web server允许的最大连接数还受制于操作系统的内核参数设置,通常 Windows 是 2000 个左右, Linux 是 1000个左右。
Tomcat中的配置示例
Xml代码
1.<Connector port="9027"
2.
3. protocol="HTTP/1.1"
4.
5. maxHttpHeaderSize="8192"
6.
7. minProcessors="100"
8.
9. maxProcessors="1000"
10.
11. acceptCount="1000"
12.
13. redirectPort="8443"
14.
15. disableUploadTimeout="true"/>
7.2.2 调整连接器connector的并发处理能力
参数说明
maxThreads 客户请求最大线程数
minSpareThreads Tomcat初始化时创建的 socket 线程数
maxSpareThreads Tomcat连接器的最大空闲 socket 线程数
enableLookups 若设为true, 则支持域名解析,可把 ip 地址解析为主机名
redirectPort 在需要基于安全通道的场合,把客户请求转发到基于SSL 的 redirectPort 端口
acceptAccount 监听端口队列最大数,满了之后客户请求会被拒绝(不能小于maxSpareThreads )
connectionTimeout 连接超时
minProcessors 服务器创建时的最小处理线程数
maxProcessors 服务器同时最大处理线程数
URIEncoding URL统一编码
Tomcat中的配置示例
Xml代码
1.<Connector port="9027"
2.
3. protocol="HTTP/1.1"
4.
5. maxHttpHeaderSize="8192"
6.
7. maxThreads="1000"
8.
9. minSpareThreads="100"
10.
11. maxSpareThreads="1000"
12.
13. minProcessors="100"
14.
15. maxProcessors="1000"
16.
17. enableLookups="false"
18.
19. URIEncoding="utf-8"
20.
21. acceptCount="1000"
22.
23. redirectPort="8443"
24.
25. disableUploadTimeout="true"/>
7.3 Tomcat缓存优化
7.3.1 参数说明
c ompression 打开压缩功能
compressionMinSize 启用压缩的输出内容大小,这里面默认为2KB
compressableMimeType 压缩类型
connectionTimeout 定义建立客户连接超时的时间. 如果为 -1, 表示不限制建立客户连接的时间
7.3.2 Tomcat中的配置示例
Xml代码
1.<Connector port="9027"
2.
3. protocol="HTTP/1.1"
4.
5. maxHttpHeaderSize="8192"
6.
7. maxThreads="1000"
8.
9. minSpareThreads="100"
10.
11. maxSpareThreads="1000"
12.
13. minProcessors="100"
14.
15. maxProcessors="1000"
16.
17. enableLookups="false"
18.
19. compression="on"
20.
21. compressionMinSize="2048"
22.
23. compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
24.
25. connectionTimeout="20000"
26.
27. URIEncoding="utf-8"
28.
29. acceptCount="1000"
30.
31. redirectPort="8443"
32.
33. disableUploadTimeout="true"/>
7.4 4.参考配置
7.4.1 旧有的配置
参考网络对服务器做过如下配置,拿出来分享下:
Xml代码
1.<Connector port="9027"
2.
3.protocol="HTTP/1.1"
4.
5. maxHttpHeaderSize="8192"
6.
7. maxThreads="1000"
8.
9. minSpareThreads="25"
10.
11. maxSpareThreads="75"
12.
13. enableLookups="false"
14.
15. compression="on"
16.
17. compressionMinSize="2048"
18.
19. compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
20.
21. connectionTimeout="20000"
22.
23. URIEncoding="utf-8"
24.
25. acceptCount="200"
26.
27. redirectPort="8443"
28.
29. disableUploadTimeout="true" />
后来发现在访问量达到3 百万多的时候出现性能瓶颈。
7.4.2 更改后的配置
Xml代码
1.<Connector port="9027"
2.
3. protocol="HTTP/1.1"
4.
5. maxHttpHeaderSize="8192"
6.
7. maxThreads="1000"
8.
9. minSpareThreads="100"
10.
11. maxSpareThreads="1000"
12.
13. minProcessors="100"
14.
15. maxProcessors="1000"
16.
17. enableLookups="false"
18.
19. compression="on"
20.
21. compressionMinSize="2048"
22.
23. compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"
24.
25. connectionTimeout="20000"
26.
27. URIEncoding="utf-8"
28.
29. acceptCount="1000"
30.
31. redirectPort="8443"
32.
33. disableUploadTimeout="true"/>
性能有待观察中 ……
8 Linux系统信息查看命令
8.1 系统
# uname -a #查看内核/操作系统/CPU信息
# head -n 1 /etc/issue #查看操作系统版本
# cat /proc/cpuinfo #查看CPU信息
# hostname #查看计算机名
# lspci -tv #列出所有PCI设备
# lsusb -tv #列出所有USB设备
# lsmod #列出加载的内核模块
# env #查看环境变量
8.2 资源
# free -m #查看内存使用量和交换区使用量
# df -h #查看各分区使用情况
# du -sh <目录名> #查看指定目录的大小
# grep MemTotal /proc/meminfo #查看内存总量
# grep MemFree /proc/meminfo #查看空闲内存量
# uptime #查看系统运行时间、用户数、负载
# cat /proc/loadavg #查看系统负载
8.3 磁盘和分区
# mount | column -t #查看挂接的分区状态
# fdisk -l #查看所有分区
# mount –t msdos /dev/sdc4 /mnt/usb #将/dev/sdc4分区挂载到/mnt/usb目录下(挂载U盘之类的存储设备)。
# swapon -s #查看所有交换分区
# hdparm -i /dev/hda #查看磁盘参数(仅适用于IDE设备)
# dmesg | grep IDE #查看启动时IDE设备检测状况
8.4 网络
# ifconfig #查看所有网络接口的属性
# iptables -L #查看防火墙设置
# route -n #查看路由表
# netstat -lntp #查看所有监听端口
# netstat -antp #查看所有已经建立的连接
# netstat -s #查看网络统计信息
8.5 进程
# ps -ef #查看所有进程
# ps –ef|grep Tomcat #查看指定(Tomcat)进程
# top #实时显示进程状态
8.6 用户
# w #查看活动用户
# id <用户名> #查看指定用户信息
# last #查看用户登录日志
# cut -d: -f1 /etc/passwd #查看系统所有用户
# cut -d: -f1 /etc/group #查看系统所有组
# crontab -l #查看当前用户的计划任务
8.7 服务
# chkconfig --list #列出所有系统服务
# chkconfig --list | grep on #列出所有启动的系统服务
8.8 程序
# rpm -qa #查看所有安装的软件包
9 oracle,sqlserver数据库在查询结果基础下创建新表
9.1 SQL SERVER中使用SELECT … INTO语句
按照使用场合可以分为以下几类:
1. 实现全表备份:如:SELECT * INOT t1 FROM titles
2. 备份表的一部分列(不写*而写出列的列表)或一部分行(加WHERE条件)
如: SELECT title_id,title,price INTO t2 FROM titles—部分列
SELECT * INTO t2 FROM titles WHREE price>10 –部分行
SELECT title_id,title,price INTO t2 FROM titles WHREEprice>10 –部分行和部分列
3. 只复制表的结构:如:SELECT * INOT t1 FROM titles WHERE 1=2
4. 查询结果来源于多个表:如:
SELECT title_id,title,pub_nameINTO t3
FROM titles t INNER JOINpublishers p
ON t.pub_id=p.pub_id
9.2 Oracle中使用CREATE TABLE … ASSELECT… 语句
实现的功能与SQL SERVER中基本相同,只是语法不同。例如:
CREATE TABLE dept_bak AS SELECT * FROM dept;
请注意:使用此种方法生成的新表中没有主键等约束,如果需要加,请另外创建。
此外,批量插入数据的语句在SQLSERVER 和Oracle中是相同的,都是INSERTINTO SELECT……,如:
INSERT INTO t1 SELECT * FROM titles
INSERT INTO dept_bak SELECT * FROM dept;