标签 linux 下的文章

linux swap命令

一般来说可以按照如下规则设置swap大小:
4G以内的物理内存,SWAP 设置为内存的2倍。
4-8G的物理内存,SWAP 等于内存大小。
8-64G 的物理内存,SWAP 设置为8G。
64-256G物理内存,SWAP 设置为16G。
系统中交换分区的大小并不取决于物理内存的量,而是取决于系统中内存的负荷,所以在安装系统时要根据具体的业务来设置SWAP的值。
查看swap使用的情况:

swapon -s
free -m
cat /proc/sys/vm/swappiness

该值默认值是60.
swappiness=0的时候表示最大限度使用物理内存,然后才是 swap空间,
swappiness=100的时候表示积极的使用swap分区,并且把内存上的数据及时的搬运到swap空间里面。

Linux配置IP

Linux配置IP
先执行命令:

ifconfig

如果没有ip,则通过配置文件进行ip配置。
执行命令:

cd /etc/sysconfig/network-scripts
vi ifcfg-eth0

将其修改为如下所示结果:

DEVICE="eth0"
NM_CONTROLLED="yes"
ONBOOT="yes"
IPADDR=172.21.34.1
NETMASK=255.255.252.0
GATEWAY=172.21.32.1

然后保存,重启网卡(service network restart)。
如果重启网卡报eth0 failed。
则执行以下操作:

ifconfig -a

如果显示的结果中有eth1,则接着执行:

cd /etc/sysconfig/network-scripts/
mv ifcfg-eth0 ifcfg-eth1
vi ifcfg-eth1

将其内容改为:

DEVICE="eth1"
NM_CONTROLLED="yes"
ONBOOT="yes"
IPADDR=172.21.34.1
NETMASK=255.255.252.0
GATEWAY=172.21.32.1

然后保存,接着重启网卡。

curl命令

发现个好东东:curl。curl是利用URL语法在命令行方式下工作的文件传输工具。
它支持很多协议:FTP, FTPS, HTTP, HTTPS, GOPHER, TELNET, DICT, FILE 以及 LDAP。
curl同样支持HTTPS认证,HTTP POST方法, HTTP PUT方法, FTP上传, kerberos认证,HTTP上传,代理服务器, cookies, 用户名/密码认证, 下载文件断点续传,上载文件断点续传,,http代理服务器管道( proxy tunneling), 甚至它还支持IPv6, socks5代理服务器,,通过http代理服务器上传文件到FTP服务器等等,功能十分强大。
Windows操作系统下的网络蚂蚁,网际快车(FlashGet)的功能它都可以做到。准确的说,curl支持文件的上传和下载,所以是一个综合传输工具,但是按照传统,用户习惯称curl为下载工具。
获得页面
使用命令:curl http://curl.haxx. se
这是最简单的使用方法。用这个命令获得了http://curl.haxx. se指向的页面,同样,如果这里的URL指向的是一个文件或者一幅图都可以直接下载到本地。如果下载的是HTML文档,那么缺省的将不显示文件头部,即HTML文档的header。要全部显示,请加参数 -i,要只显示头部,用参数 -I。任何时候,可以使用 -v 命令看curl是怎样工作的,它向服务器发送的所有命令都会显示出来。为了断点续传,可以使用-r参数来指定传输范围。
获取表单
在WEB页面设计中,form是很重要的元素。Form通常用来收集并向网站提交信息。提交信息的方法有两种,GET方法和POST方法。先讨论GET方法,例如在页面中有这样一段:

<form method=”GET” action=”junk.cgi”>
<input type=text name=”birthyear”>
<input type=submit name=press value=”OK”>
</form>

那么浏览器上会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单就用GET方法向服务器提交文本框的数据。
例如原始页面是在 www.hotmail. com/when/birth.html看到的,然后您在文本框中输入1905,然后按OK按钮,那么浏览器的URL现在应该是:“www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK”
对于这种网页,curl可以直接处理,例如想获取上面的网页,只要输入:
curl “www.hotmail. com/when/junk.cgi?birthyear=1905&press=OK”
就可以了。
表单用来提交信息的第二种方法叫做POST方法,POST方法和GET方法的区别在于GET方法使用的时候,浏览器中会产生目标URL,而POST不会。类似GET,这里有一个网页:

<form method=”POST” action=”junk.cgi”>
<input type=text name=”birthyear”>
<input type=submit name=press value=”OK”>
</form>

浏览器上也会出现一个文本框和一个标为“OK”的按钮。按下这个按钮,表单用POST方法向服务器提交数据。
这时的URL是看不到的,因此需要使用特殊的方法来抓取这个页面:
curl -d “birthyear=1905&press=OK” www.hotmail. com/when/junk.cgi
这个命令就可以做到。
1995年年末,RFC 1867定义了一种新的POST方法,用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的:

<form method=”POST” enctype=’multipart/form-data’ action=”upload.cgi”>
<input type=file name=upload>
<input type=submit name=press value=”OK”>
</form>

对于这种页面,curl的用法不同:
curl -F upload=@localfilename -F press=OK URL
这个命令的实质是将本地的文件用POST上传到服务器。
有关POST还有不少用法,用户可以自己摸索。
使用PUT
HTTP协议文件上传的标准方法是使用PUT,此时curl命令使用-T参数:
curl -T uploadfile www.uploadhttp. com/receive.cgi
有关认证
curl可以处理各种情况的认证页面,例如下载用户名/密码认证方式的页面(在IE中通常是出现一个输入用户名和密码的输入框):
curl -u name:password www.secrets. com
如果网络是通过http代理服务器出去的,而代理服务器需要用户名和密码,那么输入:
curl -U proxyuser:proxypassword http://curl.haxx. se
任何需要输入用户名和密码的时候,只在参数中指定用户名而空着密码,curl可以交互式的让用户输入密码。
引用
有些网络资源访问的时候必须经过另外一个网络地址跳转过去,这用术语来说是:referer,引用。
对于这种地址的资源,curl也可以下载:
curl -e http://curl.haxx. se daniel.haxx. se
指定用户端
有些网络资源首先需要判断用户使用的是什么浏览器,符合标准了才能够下载或者浏览。
此时curl可以把自己“伪装”成任何其他浏览器:
curl -A “Mozilla/4.0 (compatible; MSIE 5.01; Windows NT 5.0)” URL
这个指令表示curl伪装成了IE5.0,用户平台是Windows 2000。(对方服务器是根据这个字串来判断客户端的类型的,所以即使使用AIX也无所谓)。
使用:
curl -A “Mozilla/4.73 [en] (X11; U; Linux 2.2.15 i686)” URL
此时curl变成了Netscape,运行在PIII平台的Linux上了。
COOKIES
Cookie是服务器经常使用的一种记忆客户信息的方法。如果cookie被记录在了文件中,那么使用命令:
curl -b stored_cookies_in_file www.cookiesite. com
curl可以根据旧的cookie写出新cookie并发送到网站:
curl -b cookies.txt -c newcookies.txt www.cookiesite. com
加密HTTP
如果是通过OpenSSL加密的https协议传输的网页,curl可以直接访问:
curl https://that.secure.server. com
http认证
如果是采用证书认证的http地址,证书在本地,那么curl这样使用:
curl -E mycert.pem https://that.secure.server. com

Linux操作系统目录的作用

了解linux下操作系统目录的作用对学习linux操作系统会有很大帮助。
Linux各个目录其实就是文件,
以下是根目录低下的个个目录的作用总结:
1. 根文件系统(/ )
根文件系统中包含了几乎所有的文件目录。相当于中央系统。进入的最简单方法是:cd /
2. /usr文件系统
/usr文件系统中包含了命令库文件和在通常操作中不会修改的文件。安装程序默认就是安装在此文件内部某个子文件夹内。输入命令后系统默认执行/usr/bin下的程序。
3. /var文件系统
/var文件系统中包含一些经常改变的文件。例如假脱机(spool)目录文件日志目录?锁文件?临时文件和格式化后的手册文件。
4. /home文件系统
/home文件系统中保存了用户文件(用户自己的配置文件,定制文件,文档,数据等),root用户除外。
5. /proc文件系统
/proc文件系统中包含了全部虚拟文件。它们并不保存在磁盘中,也不占据磁盘空间(尽管命令ls -c会显示它们的大小)。当您查看它们时,您实际上看到的是内存里的信息,这些文件有助于我们了解系统内部信息。
根文件系统中主要包括以下目录:
/bin:普通用户可以使用的命令文件。
/sbin:一般为非普通用户使用的命令。有时普通用户也可能会用到。
/etc:系统的配置文件。
/root:系统管理员(root或超级用户)的主目录。
/dev:设备文件。在Linux中设备以文件形式出现,从而可以按照写文件的方式简便地对设备进行写操作。
/mnt:文件系统安装点。一般用于安装移动介质?其它文件系统(如DOS)的分区、网络共享文件系统或任何可安装文件系统。
/lib:根目录下的所有程序的共享库。
/boot:LILO使用的文件。Linux内核一般放在该目录下。当然您也可以设置LILO的配置文件,向LILO指明加载内核的其它路径。
/opt:可选择安装的大型应用程序。
/tmp:临时文件,该目录中的文件被系统自动清空。
/lost+found:在系统修复过程中恢复的文件,一般为空。
/usr文件系统中主要包括以下目录:
/usr/x11R6:X Window系统。
/usr/X11:等同于/usr/X11R6 (是到/usr/X11R6的符号链接)。
/usr/X11R6/bin:保存有大量的X Window小程序,或者是指向一些大应用程序的符号链接。
/usr/bin和/usr/sbin:相当于根文件系统下的对应目录,但在基本的系统自举过程中是不需要的(例如在紧急维护中)。
/usr/local:安装本地用户应用程序,例如,Netscape(每一个用户在一个单独的目录中)。
/usr/local/bin:可能是一些小的用户应用程序,也可能是一些指向/usr/local子目录中大应用程序的符号链接。

Linux 3.6:更优秀的虚拟化平台

Linux 3.6的重大改进包括:
1. Btrfs:子卷配额、配额组、快照差别、跨子卷复制。
1.1. 子卷配额和配额组
每个子卷都可以设置相应的大小限制。一旦子卷大小达到限制配额将无法继续写入数据。该功能可用来代替配额,通过分配每个用户home一个子卷,并设置大小限制。
然而单独设置子卷配额是非常困难的,Btrfs支持配额组概念,可以通过创建一个配额组,并将多个子卷加入该组:该组中的所有子卷将会自动应用相同的配额限制。该功能命令是:
btrfs qgroup create/destroy assign/remove show/limit
1.2. 快照差别(或者说“send/receive”)
Btrfs可以计算两个快照间的区别,并在文件中存储其不同之处。该存储文件可以用在之后重建sent子卷/快照。send/receive的主要用处在于备份。
1.3. 跨子卷复制
Btrfs写时复制设计支持很多文件同时共享相同的底层数据,这使得不需要增倍使用空间就可以复制(使用 cp –reflink)文件或者路径。它有一个限制,尽管:不可以跨子卷进行复制,但这一限制现在已经没有了(但仍然不可以跨vfsmount复制文件,例如:文件系统上分开挂载的两个子卷)
2. 同时挂载到磁盘和内存
在便携式设备上,将休眠的镜像写入磁盘并挂起设备非常有用。如果电池用光了甚至丢失。计算机将会立刻关机,在重新启动后会从休眠镜像中恢复系统。否则会从内存中恢复,而休眠的镜像则会被忽略。
如果你希望将休眠镜像保存到swap并挂起到RAM,你可以使用“echo suspend > /sys/power/disk; echo disk > /sys/power/state”命令
3. 对SMBv2协议的支持
cifs网络文件系统增加了对SMB协议第二版的支持。SMB2协议是流行的CIFS和SMB网络文件共享协议的继承者,并且在2006年引入Vista后,一直是Windows操作系统的本体文件分享原理。SMB2的实现最终会给用户带来更好的性能、安全和更多的特性。
4. TCP Fast Open(客户端)
“Fast Open”是建立TCP链接的最优选择,相比于一般TCP会话能够减少一个RTT(round time trip),在访问流行网站时可以提速4%-41%。但这一版本仅加入了客户端的TFO支持。
5. Bufferbloat fight:TCP small queues
TCP small queues是另一个减少网络拥堵的机制,它的目标在于减少xmit queues (qdisc & device queues)中TCP包的数量,来减少RTT和cwnd bias,以此解决部分网络拥堵情况。我们可以在不降低名义带宽的情况下,减少每一个批量发送者的缓冲区:每Gbit< 1ms (相比于50ms with TSO)以及每100Mbit < 8ms (相比于132 ms) 6. 基于NFS/NBD的安全交换 Linux Terminal Server项目推荐使用Network Block Device(NBD)交换,在其手册上还有在某些地方。如何通过NBD设置交换的指南。即使如此,频繁使用NBD交换的机器还是会在几分钟内死锁。该版本允许使用NBD交换,但也增加了对通过NFS交换的支持。 7. ext4:更好的配额支持 ext4增加了对配额的支持,并视其为一类元素,这也就是说,不再是一单独的可见文在文件系统目录层,配额文件将会作为文件系统元数据存储在隐藏的索引节点中,将可以直接有e2fsprogs管理,配额哦将在文件系统被挂载的瞬间自动应用。而repquota程序则不会首先启动,除非实现了一个QUOTASCAN_OPEN接口。详细信息:https://ext4.wiki.kernel.org/index.php/Design_For_1st_Class_Quota_in_Ext4 8. PCIe D3cold电源状态支持 新版本增加了对PCI Express运行时D3cold电源状态的支持。D3cold是PCIe设备最底层省电模式。 9. VFIO:userspace driver裸机安全访问设备 VFIO驱动是一个IOMMU/设备不可知框架,在一个受IOMMU保护的安全的环境中向向userspace直接暴露设备访问。换句话说,它保证了安全的、无特权的userspace driver。为什么Linux需要它?虚拟机经常为了最高I/O性能使用直接设备访问(“设备分配”)。从设备和主机透视图来看,它只是简单地将虚拟机转变成一个用户驱动,因此能够显著降低延迟、更高的带宽、并可以直接使用裸机驱动。某些应用,特别是在高性能计算领域,也能从低开销、命名空间直接设备访问中收益,例如:网络适配器(通常基于非TCP/IP)和计算加速器。

linux下用rpm安装mysql

下载地址:http://dev.mysql.com/downloads/mysql/5.1.html,打开网址,找到linux generic项,里面找到5.5.25_x86_64版本下载,需下载两个文件:
MySQL-client-5.5.25a-1.linux2.6.x86_64
MySQL-server-5.5.25a-1.linux2.6.x86_64
1、安装server端:
[root@host127 mysql_5.5.25]# rpm -ivh MySQL-server-5.5.25a-1.linux2.6.x86_64.rpm
Preparing… ########################################### [100%]
ls: cannot access /var/lib/mysql/*.err: No such file or directory
ls: cannot access /var/lib/mysql/*.err: No such file or directory
1:MySQL-server ########################################### [100%]
有以上信息显示为数据库安装成功。
测试是否成功可运行netstat看Mysql端口是否打开,如打开表示服务已经启动,安装成功。Mysql默认的端口是3306。
[root@host127 mysql]# netstat -nat
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:55982 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:5672 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
tcp 0 248 172.21.48.127:22 172.21.35.203:1930 ESTABLISHED
tcp 0 0 172.21.48.127:22 172.21.35.203:2163 ESTABLISHED
tcp 0 0 :::111 :::* LISTEN
tcp 0 0 :::35056 :::* LISTEN
tcp 0 0 :::22 :::* LISTEN
tcp 0 0 ::1:631 :::* LISTEN
tcp 0 0 :::12865 :::* LISTEN
2、安装client端
[root@host127 mysql_5.5.25]# rpm -ivh MySQL-client-5.5.25a-1.linux2.6.x86_64.rpm
Preparing… ########################################### [100%]
package MySQL-client-5.5.25a-1.linux2.6.x86_64 is already installed
有以上信息,也表示数据库client端安装成功。
3、登陆Mysql
用下面的命令连接mysql,测试是否成功。
登陆Mysql的命令是mysql,mysql的初始管理账号是root,没有密码。
[root@host127 mysql_5.5.25]# mysql
Enter password:
Welcome to the MySQL monitor. Commands end with ; or g.
Your MySQL connection id is 3
Server version: 5.5.25a MySQL Community Server (GPL)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type ‘help;’ or ‘h’ for help. Type ‘c’ to clear the current input statement.
mysql>

linux下安装JDK

1、通过官网下载软件
版本:jdk-6u31-linux-x64-rpm.bin
2、在cd /usr下生成jdk1.6.0_31文件夹,并将软件上传到此文件夹
给jdk-6u31-linux-x64-rpm.bin添加执行权限:chmod +x jdk-6u31-linux-x64-rpm.bin
执行文件:./jdk-6u31-linux-x64-rpm.bin
生成文件:jdk-6u31-linux-amd64.rpm
给jdk-6u31-linux-amd64.rpm添加执行权限:chmod +x jdk-6u31-linux-amd64.rpm
安装jdk-6u31-linux-amd64.rpm,提示安装成功。(默认的安装位置,在/usr/java/下,即/usr/java/jdk1.6.0_31)
3、设置环境变量
#vi /etc/profile
在最后面加入:
JAVA_HOME=/usr/java/jdk1.6.0_31
PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
export JAVA_HOME PATH
保存后退出。
4、重启
reboot后,通过java -version查看版本
[root@host127 ~]# java -version
java version “1.6.0_31”
Java(TM) SE Runtime Environment (build 1.6.0_31-b04)
Java HotSpot(TM) 64-Bit Server VM (build 20.6-b01, mixed mode)
表明JDK安装成功。
5、卸载JDK
找到JDK安装目录的_uninst子目录;
在shell终端执行./uninstall.sh即可卸载JDK。

Linux下安装tomcat

Linux下安装tomcat
先从官网下载安装包:apache-tomcat-6.0.32.tar
1、在usr下建文件夹为tomcat6.0.23,将tar文件放入文件夹中。然后进行解压缩:
tar -zxvf apache-tomcat-6.0.32.tar
解压后生成文件夹tomcat-6.0.23
2、设置环境变量
设置两个环境变量CATALINA_HOME和CATALINA_BASE。
vi ~/.bashrc,加入export CATALINA_BASE=/usr/tomcat6.0.23/tomcat-6.0.23
export CATALINA_HOME=/usr/tomcat6.0.23/tomcat-6.0.23
3、保存后重启
查看下是否设置成功:
[root@127]# echo $CATALINA_HOME
/usr/tomcat6.0.23/tomcat-6.0.23
[root@127]# echo $CATALINA_BASE
/usr/tomcat6.0.23/tomcat-6.0.23
4、运行tomcat
[root@127]# cd /usr/tomcat6.0.23/tomcat-6.0.23/bin
在此目录下,执行startup.sh文件
[root@host127 bin]# ./startup.sh
Using CATALINA_BASE: /usr/tomcat6.0.23/tomecat-6.0.32
Using CATALINA_HOME: /usr/tomcat6.0.23/tomecat-6.0.32
Using CATALINA_TMPDIR: /usr/tomcat6.0.23/tomecat-6.0.32/temp
Using JRE_HOME: /usr/java/jdk1.6.0_31
Using CLASSPATH: /usr/tomcat6.0.23/tomecat-6.0.32/bin/bootstrap.jar
5、验证tomcat
登陆http://localhost:8080查看是否可以登陆tomcat的web界面。

构建本地yum源进行软件包安装管理

因为企业版Redhat是收费的,不能免费使用yum源,导致yum命令不可用。可在本地构建yum repository解决该问题,步骤如下:
第一步:加载安装CD或ISO。
第二步:挂载CDROM至/mnt,命令如下:
# mount /dev/cdrom /mnt
注意事项:
通过DVD挂载ISO,如下:
# mount -o loop -t iso9660 /*/*.iso /mnt
第三步:创建或修改repo文件/etc/yum.repos.d/rhel6.repo,增加或修改内容如下:
[rhel]
name=rhel6
baseurl=file:///mnt
enabled=1
gpgcheck=0
第四步:安装软件。例如:yum install xxx。
第五步:卸载CDROM,命令如下:
# cd ~# umount /mnt

RedHat使用免费的yum源在线进行软件包管理

由于RedHat的yum源是收费的,在没有注册的情况下是无法使用该yum源。
针对这种情况,通过进行相关的设置,可以使用CentOS yum源进行软件包管理,具体设置步骤如下:
•删除原有yum源
$ rpm -aq |grep yum |xargs rpm -e –nodeps
•下载新yum源安装包(以32位,V6.0的RedHat为例)
$ wget http://mirror.centos.org/centos/6/os/i386/Packages/python-iniparse-0.3.1-2.1.el6.noarch.rpm
$ wget http://mirror.centos.org/centos/6/os/i386/Packages/yum-metadata-parser-1.1.2-14.1.el6.i686.rpm
$ wget http://mirror.centos.org/centos/6/os/i386/Packages/yum-3.2.27-14.el6.centos.noarch.rpm
$ wget http://mirror.centos.org/centos/6/os/i386/Packages/yum-plugin-fastestmirror-1.1.26-1.el6.noarch.rpm
•安装新yum源安装包
$ rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
$ rpm -ivh yum-metadata-parser-1.1.2-14.1.el6.i686.rpm
$ rpm -ivh yum-3.2.27-14.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.26-11.el6.noarch.rpm
注意:后两个安装包需要放在一起安装。
•更新yum源(以网易的CentOS镜像源为例)
$ cd /etc/yum.repos.d/
$ wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
$ vi CentOS6-Base-163.repo // 把$releasever替换成操作系统版本号,例如:6,而不是6.1,vi命令为:g/p1/s//p2/g
•清理yum缓存
$ yum clean all
$ yum makecache
$ yum install vim*
至此,RedHat可以通过免费的yum源进行安装、更新软件等操作了。