<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>CMSPHP官方博客</title>
	<atom:link href="http://blog.cmsphp.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://blog.cmsphp.com</link>
	<description>CMSPHP官方博客</description>
	<lastBuildDate>Sun, 30 Oct 2011 08:45:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.1.4</generator>
		<item>
		<title>怎样用DNSPod做负载均衡?</title>
		<link>http://blog.cmsphp.com/?p=313</link>
		<comments>http://blog.cmsphp.com/?p=313#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:45:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=313</guid>
		<description><![CDATA[1、什么是负载均衡？ 在大型的网络应用中，使用多台服务器提供同一个服务是常有的事。平均分配每台服务器上的压力、将压力分散的方法就叫做负载均衡。 ［利用DNSPod来实现服务器流量的负载均衡，原理是“给网站访问者随机分配不同ip”］ 2、什么情况下会用到负载均衡？ 如果你有多台服务器，需要将流量分摊到各个服务器，那就可以利用DNSPod来做负载均衡。 3、怎样设置和使用负载均衡？ 下图的例子是：有3台联通服务器、3台电信服务器，要实现“联通用户流量分摊到3台联通服务器、其他用户流量分摊到电信服务器”这个效果的设置 4、负载均衡的常见问题 （1）我只有多台电信服务器（或者网通服务器），该如何填写？ 添加记录的时候，选择线路类型为默认即可。 （2）DNS轮询的时候，IP是如何给出的？流量是完全平均的么？ IP是随机给出的。由于访问者访问的资源不同，流量是不可能做到完全平均的。]]></description>
			<content:encoded><![CDATA[<p>1、什么是负载均衡？<br />
在大型的网络应用中，使用多台服务器提供同一个服务是常有的事。平均分配每台服务器上的压力、将压力分散的方法就叫做负载均衡。<br />
［利用DNSPod来实现服务器流量的负载均衡，原理是“<a>给网站访问者随机分配不同ip</a>”］</p>
<p>2、什么情况下会用到负载均衡？<br />
如果你有<a>多台</a>服务器，需要将流量分摊到各个服务器，那就可以利用DNSPod来做负载均衡。</p>
<p>3、怎样设置和使用负载均衡？<br />
下图的例子是：有3台联通服务器、3台电信服务器，要实现“<a>联通用户流量分摊到3台联通服务器、其他用户流量分摊到电信服务器</a>”这个效果的设置<br />
<img src="https://statics.dnspod.cn/zhanjiang/images/about/support/2021.png" alt="" /></p>
<p>4、负载均衡的常见问题<br />
（1）我只有多台电信服务器（或者网通服务器），该如何填写？<br />
添加记录的时候，选择线路类型为默认即可。<br />
（2）DNS轮询的时候，IP是如何给出的？流量是完全平均的么？<br />
IP是随机给出的。由于访问者访问的资源不同，流量是不可能做到完全平均的。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=313</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux MySQL主主复制(Replication)(MySQL数据双向同步)配置</title>
		<link>http://blog.cmsphp.com/?p=311</link>
		<comments>http://blog.cmsphp.com/?p=311#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:44:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=311</guid>
		<description><![CDATA[当你的MySQL数据库需要在多台服务器读写数据时，比如论坛，你就需要配置主-主复制。它可以将近实时地把数据从其中的一台复制到其它的服务器，每个服务器既是主服务器又是从服务器。 这种系统不适合当备份用，因为当其中的一台发生故障，比如删除所有数据表，那其它的服务器也会执行同样的指令，那就悲剧了。 为了配置主-主复制，第一件事需要配置主-从复制。 一旦你创建好主从复制，我们开始配置主主复制。 配置当前从服务器 1、编辑配置文件my.cnf vi /etc/my.cnf 在[mysqld]下面增加 log-bin=mysql-bin binlog-ignore-db="mysql" binlog-ignore-db为指定忽略同步的数据库。 2、为原始主服务器建立一个slave帐号。 # mysql -u root -p mysql&#62; GRANT REPLICATION SLAVE ON *.* TO repl@"%" IDENTIFIED BY '[repl-password]'; mysql&#62; quit 确保repl-password替换成你实际需要的密码，确保防火墙已经对3306:tcp开放。 3、重启MySQL服务器并获取数据二进制的位置。 #service mysqld restart # mysql -u root -p mysql&#62; SHOW MASTER STATUS; 输出类似下面的： +——————+————————–+——————+ &#124; File &#124; Position &#124; Binlog_Do_DB &#124; Binlog_Ignore_DB [...]]]></description>
			<content:encoded><![CDATA[<p>当你的<a title="MySQL" href="http://www.centos.bz/tag/mysql/">MySQL</a>数据库需要在多台服务器读写数据时，比如论坛，你就需要配置主-主复制。它可以将近实时地把数据从其中的一台复制到其它的服务器，每个服务器既是主服务器又是从服务器。<br />
这种系统不适合当备份用，因为当其中的一台发生故障，比如删除所有数据表，那其它的服务器也会执行同样的指令，那就悲剧了。</p>
<p>为了配置主-主复制，第一件事需要配置<a href="http://www.centos.bz/2011/07/linux-mysql-replication-sync-configure/">主-从复制</a>。</p>
<p>一旦你创建好主从复制，我们开始配置主主复制。</p>
<h3 id="配置当前从服务器">配置当前从服务器</h3>
<p>1、编辑配置文件my.cnf</p>
<div>
<ol title="Double click to hide line number.">
<li>vi /etc/my.cnf</li>
</ol>
</div>
<p>在[mysqld]下面增加</p>
<div>
<ol title="Double click to hide line number.">
<li>log-bin=mysql-bin</li>
<li>binlog-ignore-db="mysql"</li>
</ol>
</div>
<p>binlog-ignore-db为指定忽略同步的数据库。<br />
2、为原始主服务器建立一个slave帐号。</p>
<div>
<ol title="Double click to hide line number.">
<li># mysql -u root -p</li>
<li>mysql&gt; GRANT REPLICATION SLAVE ON *.* TO repl@"%" IDENTIFIED BY '[repl-password]';</li>
<li>mysql&gt; quit</li>
</ol>
</div>
<p>确保repl-password替换成你实际需要的密码，确保防火墙已经对3306:tcp开放。<br />
3、重启MySQL服务器并获取数据二进制的位置。</p>
<div>
<ol title="Double click to hide line number.">
<li>#service mysqld restart</li>
<li># mysql -u root -p</li>
<li>mysql&gt; SHOW MASTER STATUS;</li>
</ol>
</div>
<p>输出类似下面的：<br />
+——————+————————–+——————+<br />
| File             | Position  | Binlog_Do_DB | Binlog_Ignore_DB |<br />
+——————+————————–+——————+<br />
| mysql-bin.000001 |      3400 |              | mysql            |<br />
+——————+————————–+——————+<br />
1 row in set (0.00 sec)</p>
<h3 id="配置原始主服务器">配置原始主服务器</h3>
<p>1、现在返回原始主服务器，也配置为从服务器。编辑my.cnf并在[mysqld]下面加入：</p>
<div>
<ol title="Double click to hide line number.">
<li>master-host = [IP of Slave Server]</li>
<li>master-user = repl</li>
<li>master-password = [repl password]</li>
<li>master-port = 3306</li>
</ol>
</div>
<p>2、重启MySQL服务，然后登录MySQL配置Master文件设置。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql -u root -p</li>
<li>mysql&gt; CHANGE MASTER TO MASTER_LOG_FILE='[File written down]', MASTER_LOG_POS=[position];</li>
<li>mysql&gt; START SLAVE;</li>
<li>mysql&gt; SHOW SLAVE STATUS\G</li>
</ol>
</div>
<p>Slave_IO_State状态信息应该是“Waiting for master to send event”，如果在“Connecting to Master”停止了，请检查日志，默认路径是/var/log/mysqld.log。</p>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=311</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>MySQL常用命令大全</title>
		<link>http://blog.cmsphp.com/?p=308</link>
		<comments>http://blog.cmsphp.com/?p=308#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:40:14 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=308</guid>
		<description><![CDATA[下面是我们经常会用到且非常有用的MySQL命令。下面你看到#表示在Unix命令行下执行命令，看到mysql&#62;表示当前已经登录MySQL服务器，是在mysql客户端执行mysql命令。 登录MySQL,如果连接远程数据库，需要用-h指定hostname。 # [mysql dir]/bin/mysql -h hostname -u root -p 创建一个数据库。 mysql&#62; create database [databasename]; 列出所有数据库。 mysql&#62; show databases; 切换到一个数据库。 mysql&#62; use [db name]; 显示一个数据库的所有表。 mysql&#62; show tables; 查看数据表的字段格式。 mysql&#62; describe [table name]; 删除一个数据库。 mysql&#62; drop database [database name]; 删除一个数据表。 mysql&#62; drop table [table name]; 显示一个数据表的所有数据。 mysql&#62; SELECT * FROM [table name]; 返回指定数据表的各列信息。 mysql&#62; show [...]]]></description>
			<content:encoded><![CDATA[<p>下面是我们经常会用到且非常有用的MySQL命令。下面你看到#表示在Unix命令行下执行命令，看到mysql&gt;表示当前已经登录<a title="MySQL" href="http://www.centos.bz/tag/mysql/">MySQL</a>服务器，是在mysql客户端执行mysql命令。<br />
登录MySQL,如果连接远程数据库，需要用-h指定hostname。</p>
<div>
<ol title="Double click to hide line number.">
<li># [mysql dir]/bin/mysql -h hostname -u root -p</li>
</ol>
</div>
<p>创建一个数据库。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; create database [databasename];</li>
</ol>
</div>
<p>列出所有数据库。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; show databases;</li>
</ol>
</div>
<p>切换到一个数据库。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; use [db name];</li>
</ol>
</div>
<p>显示一个数据库的所有表。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; show tables;</li>
</ol>
</div>
<p>查看数据表的字段格式。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; describe [table name];</li>
</ol>
</div>
<p>删除一个数据库。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; drop database [database name];</li>
</ol>
</div>
<p>删除一个数据表。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; drop table [table name];</li>
</ol>
</div>
<p>显示一个数据表的所有数据。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT * FROM [table name];</li>
</ol>
</div>
<p>返回指定数据表的各列信息。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; show columns from [table name];</li>
</ol>
</div>
<p>使用值“whatever”过滤显示选定的某些行。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT * FROM [table name] WHERE [field name] = "whatever";</li>
</ol>
</div>
<p>显示所有包含name为”Bob”和phone number为“3444444”的记录。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT * FROM [table name] WHERE name = "Bob" AND phone_number = '3444444';</li>
</ol>
</div>
<p>显示所有不包含name为”Bob”和phone number为“3444444”的记录，并以phone_number字段排序。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT * FROM [table name] WHERE name != "Bob" AND phone_number = '3444444' order by phone_number;</li>
</ol>
</div>
<p>显示所有的name以字母“bob”开头和phone number为“3444444”的记录。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444';</li>
</ol>
</div>
<p>显示name以字母“bob”开头和phone number为“3444444”的第1至第5条记录。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT * FROM [table name] WHERE name like "Bob%" AND phone_number = '3444444' limit 1,5;</li>
</ol>
</div>
<p>使用正则表达式查找记录。使用“正则表达式二进制”强制区分大小写。此命令查找以a开头的任何记录。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT * FROM [table name] WHERE rec RLIKE "^a";</li>
</ol>
</div>
<p>返回唯一不同的记录。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT DISTINCT [column name] FROM [table name];</li>
</ol>
</div>
<p>以升序或降序显示选定的记录。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT [col1],[col2] FROM [table name] ORDER BY [col2] DESC;</li>
</ol>
</div>
<p>返回行数。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT COUNT(*) FROM [table name];</li>
</ol>
</div>
<p>统计指定列值的总和。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; SELECT SUM(*) FROM [table name];</li>
</ol>
</div>
<p>联结表。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt;  select lookup.illustrationid, lookup.personid,person.birthday from  lookup left join person on lookup.personid=person.personid=statement to  join birthday in person table with primary illustration id;</li>
</ol>
</div>
<p>新建一个用户。以root登录。切换到mysql数据库，创建用户，刷新权限。</p>
<div>
<ol title="Double click to hide line number.">
<li># mysql -u root -p</li>
<li>mysql&gt; use mysql;</li>
<li>mysql&gt; INSERT INTO user (Host,User,Password) VALUES('%','username',PASSWORD('password'));</li>
<li>mysql&gt; flush privileges;</li>
</ol>
</div>
<p>从unix命令行更改用户密码。</p>
<div>
<ol title="Double click to hide line number.">
<li># [mysql dir]/bin/mysqladmin -u username -h hostname.blah.org -p password 'new-password'</li>
</ol>
</div>
<p>从mysql命令行更改用户密码。以root登录，设置密码，更新权限。</p>
<div>
<ol title="Double click to hide line number.">
<li># /etc/init.d/mysql stop</li>
<li># mysqld_safe --skip-grant-tables &amp;</li>
<li># mysql -u root</li>
<li>mysql&gt; use mysql;</li>
<li>mysql&gt; update user set password=PASSWORD("newrootpassword") where User='root';</li>
<li>mysql&gt; flush privileges;</li>
<li>mysql&gt; quit</li>
<li># /etc/init.d/mysql stop</li>
<li># /etc/init.d/mysql start</li>
</ol>
</div>
<p>root密码为空时，设置root密码。</p>
<div>
<ol title="Double click to hide line number.">
<li># mysqladmin -u root password newpassword</li>
</ol>
</div>
<p>更新root密码。</p>
<div>
<ol title="Double click to hide line number.">
<li># mysqladmin -u root -p oldpassword newpassword</li>
</ol>
</div>
<p>允许用户“bob”从localhost以密码“passwd”连接服务器。以root登录，切换mysql数据库。设置权限，更新权限。</p>
<div>
<ol title="Double click to hide line number.">
<li># mysql -u root -p</li>
<li>mysql&gt; use mysql;</li>
<li>mysql&gt; grant usage on *.* to bob@localhost identified by 'passwd';</li>
<li>mysql&gt; flush privileges;</li>
</ol>
</div>
<p>为数据库db设置权限。以root登录，切换到mysql数据库，授予权限，更新权限。</p>
<div>
<ol title="Double click to hide line number.">
<li># mysql -u root -p</li>
<li>mysql&gt; use mysql;</li>
<li>mysql&gt; INSERT INTO db  (Host,Db,User,Select_priv,Insert_priv,Update_priv,Delete_priv,Create_priv,Drop_priv)  VALUES ('%','databasename','username','Y','Y','Y','Y','Y','N');</li>
<li>mysql&gt; flush privileges;</li>
</ol>
</div>
<p>或者</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; grant all privileges on databasename.* to username@localhost;</li>
<li>mysql&gt; flush privileges;</li>
</ol>
</div>
<p>更新已存在表的数据。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; UPDATE [table name] SET Select_priv = 'Y',Insert_priv = 'Y',Update_priv = 'Y' where [field name] = 'user';</li>
</ol>
</div>
<p>删除表中[field name] = ‘whatever’的行。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; DELETE from [table name] where [field name] = 'whatever';</li>
</ol>
</div>
<p>更新数据库的权限/特权。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; flush privileges;</li>
</ol>
</div>
<p>删除列。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; alter table [table name] drop column [column name];</li>
</ol>
</div>
<p>新增列到db。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; alter table [table name] add column [new column name] varchar (20);</li>
</ol>
</div>
<p>更改列名。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; alter table [table name] change [old column name] [new column name] varchar (50);</li>
</ol>
</div>
<p>增加唯一的列。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; alter table [table name] add unique ([column name]);</li>
</ol>
</div>
<p>设置列值大点。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; alter table [table name] modify [column name] VARCHAR(3);</li>
</ol>
</div>
<p>删除唯一列。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt; alter table [table name] drop index [colmn name];</li>
</ol>
</div>
<p>导入一个CSV文件到表。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt;  LOAD DATA INFILE '/tmp/filename.csv' replace INTO TABLE [table name]  FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'  (field1,field2,field3);</li>
</ol>
</div>
<p>导出所有数据库到sql文件。</p>
<div>
<ol title="Double click to hide line number.">
<li># [mysql dir]/bin/mysqldump -u root -ppassword --opt &gt;/tmp/alldatabases.sql</li>
</ol>
</div>
<p>导出一个数据库。</p>
<div>
<ol title="Double click to hide line number.">
<li># [mysql dir]/bin/mysqldump -u username -ppassword --databases databasename &gt;/tmp/databasename.sql</li>
</ol>
</div>
<p>从一个数据库导出一个表。</p>
<div>
<ol title="Double click to hide line number.">
<li># [mysql dir]/bin/mysqldump -c -u username -ppassword databasename tablename &gt; /tmp/databasename.tablename.sql</li>
</ol>
</div>
<p>从sql文件还原数据库（数据表）。</p>
<div>
<ol title="Double click to hide line number.">
<li># [mysql dir]/bin/mysql -u username -ppassword databasename &lt; /tmp/databasename.sql</li>
</ol>
</div>
<p>创建数据表例1。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt;  CREATE TABLE [table name] (firstname VARCHAR(20), middleinitial  VARCHAR(3), lastname VARCHAR(35),suffix VARCHAR(3),officeid  VARCHAR(10),userid VARCHAR(15),username VARCHAR(8),email  VARCHAR(35),phone VARCHAR(25), groups VARCHAR(15),datestamp  DATE,timestamp time,pgpemail VARCHAR(255));</li>
</ol>
</div>
<p>创建数据表例2。</p>
<div>
<ol title="Double click to hide line number.">
<li>mysql&gt;  create table [table name] (personid int(50) not null auto_increment  primary key,firstname varchar(35),middlename  varchar(50),lastnamevarchar(50) default 'bato');</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=308</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下su与su -命令的本质区别</title>
		<link>http://blog.cmsphp.com/?p=305</link>
		<comments>http://blog.cmsphp.com/?p=305#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:36:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=305</guid>
		<description><![CDATA[本人以前一直习惯直接使用root，很少使用su，前几天才发现su与su -命令是有着本质区别的！ 大部分Linux发行版的默认账户是普通用户，而更改系统文件或者执行某些命令，需要root身份才能进行，这就需要从当前用户切换到root用户。Linux中切换用户的命令是su或su -。前天我在使用useradd这个命令时，才体会到这两者的本质区别。如图： 我首先是用su命令切换到root身份的，但是运行useradd时，出现错误：bash: useradd: command not found。google了一下，原因是在这个用su命令切换过来的root用户上。 su命令和su -命令最大的本质区别就是：前者只是切换了root身份，但Shell环境仍然是普通用户的Shell； 而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后，pwd 一下，发现工作目录仍然是普通用户的工作目录；而用su -命令切换以后，工作目录变成root的工作目录了。用echo $PATH命令看一下su和su -以后的环境变量有何不同。以此类推，要从当前用户切换到其它用户也一样，应该使用su -命令。如图： Linux就是这样，有时候配置文件多了或者少了一个空格，服务就运行不了。细节问题一定要注意，这样才能少走弯路！]]></description>
			<content:encoded><![CDATA[<div>
<p>本人以前一直习惯直接使用<a title="root" href="http://www.ha97.com/tag/root">root</a>，很少使用su，前几天才发现su与su -命令是有着本质区别的！</p>
<p>大部分<a title="Linux" href="http://www.ha97.com/category/linux">Linux</a>发行版的默认账户是普通用户，而更改系统文件或者执行某些命令，需要root身份才能进行，这就需要从当前用户切换到root用户。<a title="Linux" href="http://www.ha97.com/tag/linux">Linux</a>中切换用户的命令是su或su -。前天我在使用useradd这个命令时，才体会到这两者的本质区别。如图：</p>
<p><a href="http://www.ha97.com/wp-content/uploads/2011/04/su.jpg"><img title="su" src="http://www.ha97.com/wp-content/uploads/2011/04/su.jpg" alt="" width="356" height="220" /></a></p>
<p>我首先是用su命令切换到root身份的，但是运行useradd时，出现错误：bash: useradd: command not found。<a title="google" href="http://www.ha97.com/category/google">google</a>了一下，原因是在这个用su命令切换过来的root用户上。</p>
<p>su命令和su -命令最大的本质区别就是：前者只是切换了root身份，但<a title="Shell" href="http://www.ha97.com/category/shell">Shell</a>环境仍然是普通用户的<a title="Shell" href="http://www.ha97.com/tag/shell">Shell</a>； 而后者连用户和Shell环境一起切换成root身份了。只有切换了Shell环境才不会出现PATH环境变量错误。su切换成root用户以后，pwd 一下，发现工作目录仍然是普通用户的工作目录；而用su -命令切换以后，工作目录变成root的工作目录了。用echo  $PATH命令看一下su和su -以后的环境变量有何不同。以此类推，要从当前用户切换到其它用户也一样，应该使用su -命令。如图：</p>
<p><a href="http://www.ha97.com/wp-content/uploads/2011/04/su-.jpg"><img title="su -" src="http://www.ha97.com/wp-content/uploads/2011/04/su-.jpg" alt="" width="654" height="304" /></a></p>
<p><strong>Linux就是这样，有时候配置文件多了或者少了一个空格，服务就运行不了。细节问题一定要注意，这样才能少走弯路！</strong></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=305</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux下定时备份MySQL数据库的Shell脚本</title>
		<link>http://blog.cmsphp.com/?p=303</link>
		<comments>http://blog.cmsphp.com/?p=303#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:34:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=303</guid>
		<description><![CDATA[对任何一个已经上线的网站站点来说，数据备份都是必须的。无论版本更新还是服务器迁移，备份数据的重要性不言而喻。人工备份数据的方式不单耗费大量时间和精力，还灰常不专业的说。于是，有了下面这段脚本的出现。参考了网上的很多教程，外加自己的测试，以下脚本经测试可用。 #!/bin/bash #Shell Command For Backup MySQL Database Everyday Automatically By Crontab #Author : Carlos Wong #Date : 2010-08-24 #配置参数 USER=root #数据库用户名 PASSWORD=××××× #数据库用户密码 DATABASE=TIENIUZAI #数据库名称 WEBMASTER=tieniuzai@qq.com #管理员邮箱地址，用以发送备份失败消息提醒 BACKUP_DIR=/var/www/Data_Backup/topons/ #备份文件存储路径 LOGFILE=/var/www/Data_Backup/topons/data_backup.log #日记文件路径 DATE=`date ‘+%Y%m%d-%H%M’` #日期格式（作为文件名） DUMPFILE=$DATE.sql #备份文件名 ARCHIVE=$DATE.sql.tgz #压缩文件名 OPTIONS=”-u$USER -p$PASSWORD –opt –extended-insert=false –triggers=false -R –hex-blob –flush-logs –delete-master-logs -B $DATABASE” #mysqldump 参数 详情见帮助 mysqldump －help [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>对任何一个已经上线的网站站点来说，数据备份都是必须的。无论版本更新还是服务器迁移，备份数据的重要性不言而喻。人工备份数据的方式不单耗费大量时间和精力，还灰常不专业的说。于是，有了下面这段脚本的出现。参考了网上的很多教程，外加自己的测试，以下脚本经测试可用。<br />
<code><br />
#!/bin/bash<br />
#<a title="Shell" href="http://www.ha97.com/category/shell">Shell</a> Command For Backup <a title="MySQL" href="http://www.ha97.com/category/database/mysql-database">MySQL</a> <a title="Database" href="http://www.ha97.com/category/database">Database</a> Everyday Automatically By <a title="Crontab" href="http://www.ha97.com/tag/crontab">Crontab</a><br />
#Author : Carlos Wong<br />
#Date : 2010-08-24</code></p>
<p><code>#配置参数<br />
USER=root #数据库用户名<br />
PASSWORD=××××× #数据库用户密码<br />
DATABASE=TIENIUZAI #数据库名称<br />
WEBMASTER=tieniuzai@qq.com #管理员邮箱地址，用以发送备份失败消息提醒<br />
BACKUP_DIR=/var/www/Data_Backup/topons/ #备份文件存储路径<br />
LOGFILE=/var/www/Data_Backup/topons/data_backup.log #日记文件路径<br />
DATE=`date ‘+%Y%m%d-%H%M’` #日期格式（作为文件名）<br />
DUMPFILE=$DATE.sql #备份文件名<br />
ARCHIVE=$DATE.sql.tgz #压缩文件名<br />
OPTIONS=”-u$USER  -p$PASSWORD –opt –extended-insert=false  –triggers=false -R –hex-blob  –flush-logs –delete-master-logs -B  $DATABASE” #mysqldump 参数 详情见帮助  mysqldump －help</code></p>
<p><code> </code>#判断备份文件存储目录是否存在，否则创建该目录<br />
if [ ! -d $BACKUP_DIR ] ;<br />
then<br />
mkdir -p “$BACKUP_DIR”<br />
fi</p>
<p>#开始备份之前，将备份信息头写入日记文件<br />
echo ” ” &gt;&gt; $LOGFILE<br />
echo ” ” &gt;&gt; $LOGFILE<br />
echo “———————————————–” &gt;&gt; $LOGFILE<br />
echo “BACKUP DATE:” $(date +”%y-%m-%d %H:%M:%S”) &gt;&gt; $LOGFILE<br />
echo “———————————————– ” &gt;&gt; $LOGFILE</p>
<p>#切换至备份目录<br />
cd $BACKUP_DIR<br />
#使用mysqldump 命令备份制定数据库，并以格式化的时间戳命名备份文件<br />
mysqldump $OPTIONS &gt; $DUMPFILE<br />
#判断数据库备份是否成功<br />
if [[ $? == 0 ]]; then<br />
#创建备份文件的压缩包<br />
tar czvf $ARCHIVE $DUMPFILE &gt;&gt; $LOGFILE 2&gt;&amp;1<br />
#输入备份成功的消息到日记文件<br />
echo “[$ARCHIVE] Backup Successful!” &gt;&gt; $LOGFILE<br />
#删除原始备份文件，只需保 留数据库备份文件的压缩包即可<br />
rm -f $DUMPFILE<br />
else<br />
echo “Database Backup Fail!” &gt;&gt; $LOGFILE</p>
<p>&nbsp;</p>
<p><code>#备份失败后向网站管理者发送邮件提醒，需要mailutils或者类似终端下发送邮件工具的支持<br />
#mail -s “Database:$DATABASE Daily Backup Fail” $WEBMASTER<br />
fi<br />
#输出备份过程结束的提醒消息<br />
echo “Backup Process Done”<br />
</code></p>
<p>使用：</p>
<ol>
<li>将以上代码保存到： /usr/sbin/DataBackup （文件名随意,只要不跟系统原有的命令同名即可；代码可以放到任何地方，放在sbin目录下只是为了方便执行，sbin目录下的文件/目录可在终端直接调用，类似于<a title="windows" href="http://www.ha97.com/category/microsoft/windows">windows</a>下PATH变量指定的目录）</li>
<li>为脚本添加可执行权限： sudo chmod ＋x /usr/sbin/DataBackup</li>
<li>执行脚本： sudo DataBackup</li>
<li>如果需要定时执行备份命令的，只需将下面这段代码放到crontab 文件（sudo vim /etc/crontab)中去就可以了：</li>
</ol>
<p><code>01 3 * * * root /usr/sbin/DataBackup #它代表着将于每天3点执行DataBackup脚本</code><br />
注意：</p>
<ol>
<li><a title="linux" href="http://www.ha97.com/category/linux">linux</a> 下的<a title="shell" href="http://www.ha97.com/tag/shell">shell</a>脚本定义变量的格式为: key=value ，注意他们两者之间的” = “前后不能出现空格，否则系统无法确认该变量。</li>
<li>用红色标注的那行，第一个类似单引号的字符”`”其实不是单引号,它的输入键在键盘ESC键下方。</li>
<li>这个脚本只适合用于一些小站点的备份，因为它是对数据库进行全部备份而不是增量备份，不适合大容量的数据库备份。</li>
</ol>
<p><a title="Update" href="http://www.ha97.com/tag/update">Update</a>:</p>
<p>2010-08-24 :由于服务器上的MySQL配置文件里 的socket项值为 “/tmp/mysql.sock”,  而mysqldump在链接mysql  <a title="server" href="http://www.ha97.com/tag/server">server</a>的时候会去查找位于/var/lib/mysql/目录下的mysql.sock文件。如果没有则会报错：<br />
<code>mysqldump: Got error: 2002: Can’t connect to local MySQL server through socket ‘/var/lib/mysql/mysql.sock’</code><br />
解决方法是：</p>
<p>一是，修改mysql配置文件里的socket项的值为 ’/var/lib/mysql/mysql.sock’，不过这种方法需要重启mysql服务，很不厚道。</p>
<p>二是，为/tmp/mysql.sock创建一个软链接到/var/lib/mysql/mysql.sock：<br />
<code>ln  -s  /tmp/mysql.sock /var/lib/mysql/mysql.sock</code></p>
<p>来源：http://tieniuzai.com/blog/view/backup-mysql-by-shell</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=303</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux运维的一些常见问题及解决方法</title>
		<link>http://blog.cmsphp.com/?p=300</link>
		<comments>http://blog.cmsphp.com/?p=300#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:32:25 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=300</guid>
		<description><![CDATA[今晚有空把最近运维中遇到的一些问题及解决方法总结下，写的比较匆忙，可能有些问题和错误，请各位看官指正。 —————————————————————————————————————————— 1.shell脚本死活不执行 问题：某天研发某同事找我说帮他看看他写的shell脚本，死活不执行，报错。我看了下，脚本很简单，也没有常规性的错误，报“: bad interpreter: No such file or directory”错。一 看这错，我就问他是不是在windows下编写的脚本，然后在上传到linux服务器的……果然。 原因：在DOS/Windows里，文本文件的换行符为rn，而在*nix系统里则为n，所以DOS/Windows里编辑过的文本文件到了*nix里，每一行都多了个^M。 解决：1）重新在linux下编写脚本；2）vi :% s/r//g :% s/^M//g （^M输入用Ctrl+v, Ctrl+m） —————————————————————————————————————————— 2.crontab输出 问题：/var/spool/clientmqueue目录占用空间超过100G 原因：cron中执行的程序有输出内容，输出内容会以邮件形式发给cron的用户，而sendmail没有启动所以就产生了/var/spool/clientmqueue目录下的那些文件，日积月累可能撑破磁盘。 解决：1）直接手动删除：ls &#124;xargs rm -f ； 2）彻底解决：在cron的自动执行语句后加上 &#62;/dev/null 2&#62;&#38;1 —————————————————————————————————————————— &#160; 3.telnet很慢 问题：某天研发某同事说10.50访问10.52memcached服务异 常，让我们检查下看网络/服务/系统是否有异常。检查发现系统正常，服务正常，10.50ping10.52也正常，但10.50telnet10.52 很慢。同时发现该机器的namesever是不起作用的。 原因：because your PC doesn’t do a reverse DNS lookup on your IP then… when you telnet/ftp into [...]]]></description>
			<content:encoded><![CDATA[<div>
<div id="_mcePaste">今晚有空把最近运维中遇到的一些问题及解决方法总结下，写的比较匆忙，可能有些问题和错误，请各位看官指正。</div>
<div>——————————————————————————————————————————</div>
<div id="_mcePaste">1.<a title="shell" href="http://www.ha97.com/category/shell">shell</a>脚本死活不执行</div>
<div id="_mcePaste"><strong>问题：</strong>某天研发某同事找我说帮他看看他写的shell脚本，死活不执行，报错。我看了下，脚本很简单，也没有常规性的错误，报“: bad interpreter: No such file or  directory”错。一</div>
<div id="_mcePaste">看这错，我就问他是不是在<a title="windows" href="http://www.ha97.com/category/microsoft/windows">windows</a>下编写的脚本，然后在上传到<a title="linux" href="http://www.ha97.com/category/linux">linux</a>服务器的……果然。</div>
<div id="_mcePaste"><strong>原因：</strong>在DOS/<a title="Windows" href="http://www.ha97.com/tag/windows">Windows</a>里，文本文件的换行符为rn，而在*nix系统里则为n，所以DOS/Windows里编辑过的文本文件到了*nix里，每一行都多了个^M。</div>
<div id="_mcePaste"><strong>解决：</strong>1）重新在linux下编写脚本；2）vi :% s/r//g  :%  s/^M//g （^M输入用Ctrl+v, Ctrl+m）</div>
<div>——————————————————————————————————————————</div>
<div id="_mcePaste">2.<a title="crontab" href="http://www.ha97.com/tag/crontab">crontab</a>输出</div>
<div id="_mcePaste"><strong>问题：</strong>/var/spool/clientmqueue目录占用空间超过100G</div>
<div id="_mcePaste"><strong>原因：</strong>cron中执行的程序有输出内容，输出内容会以邮件形式发给cron的用户，而sendmail没有启动所以就产生了/var/spool/clientmqueue目录下的那些文件，日积月累可能撑破磁盘。</div>
<div id="_mcePaste"><strong>解决：</strong>1）直接手动删除：ls |xargs rm -f  ；  2）彻底解决：在cron的自动执行语句后加上 &gt;/dev/null 2&gt;&amp;1</div>
<div>——————————————————————————————————————————</div>
<p>&nbsp;</p>
<div id="_mcePaste">3.telnet很慢</div>
<div id="_mcePaste"><strong>问题：</strong>某天研发某同事说10.50访问10.52memcached服务异 常，让我们检查下看网络/服务/系统是否有异常。检查发现系统正常，服务正常，10.50ping10.52也正常，但10.50telnet10.52 很慢。同时发现该机器的namesever是不起作用的。</div>
<div id="_mcePaste"><strong>原因：</strong>because your PC doesn’t do a  reverse DNS  lookup on your IP then… when you telnet/ftp into your linux  box, it’ll do a dns  lookup on you。</div>
<div id="_mcePaste"><strong>解决：</strong>1)修改/etc/hosts使hostname和ip对应；  2）在/etc/resolv.conf注释掉nameserver或者找一个“活的”nameserver。</div>
<div>——————————————————————————————————————————</div>
<div id="_mcePaste">4.Read-only file system</div>
<div id="_mcePaste"><strong>问题：</strong>同事在<a title="mysql" href="http://www.ha97.com/category/database/mysql-database">mysql</a>里建表建不成功，提示如下：</div>
<div id="_mcePaste">mysql&gt;create table wosontest (colddname1 char(1));</div>
<div id="_mcePaste">ERROR 1005 (HY000): Can’t create table ‘wosontest’ (errno:  30）</div>
<div id="_mcePaste">经检查mysql用户权限以及相关目录权限没问题；用perror 30提示信息为：OS error code  30:   Read-only file system</div>
<div id="_mcePaste"><strong>可能原因：</strong>1）文件系统损坏；2）磁盘又坏道；3）fstab文件配置错误，如分区格式错误错误(将ntfs写成了fat)、配置指令拼写错误等。</div>
<div id="_mcePaste"><strong>解决：</strong>1）由于是测试机，重启机器后恢复；2）网上说用mount可解决。</div>
<div>——————————————————————————————————————————</div>
<div id="_mcePaste">5.文件删了磁盘空间没释放</div>
<div id="_mcePaste"><strong>问题：</strong>某天发现某台机器df -h已用磁盘空间为90G，而du -sh  /*显示所有使用空间加起来才30G，囧。</div>
<div id="_mcePaste"><strong>原因：</strong>可能某人直接用rm删除某个正在写的文件，导致文件删了但磁盘空间没释放的问题</div>
<div id="_mcePaste"><strong>解决：</strong></div>
<div id="_mcePaste">1）最简单重启系统或者重启相关服务。</div>
<div id="_mcePaste">2）干掉进程</div>
<div>/usr/sbin/lsof|grep deleted</div>
<div id="_mcePaste">ora    25575 data   33u      REG              65,65   4294983680  /oradata/DATAPRE/UNDOTBS009.dbf (deleted)</div>
<div id="_mcePaste">从lsof的输出中，我们可以发现pid为25575的进程持有着以文件描述号（fd）为   33打开的文件/oradata/DATAPRE/UNDOTBS009.dbf。在我们找到了这个文件之后可以通过结束进程的方式来释放被占用的空 间：echo  &gt; /proc/25575/fd/33</div>
<div id="_mcePaste">3）删除正在写的文件一般用 cat /dev/null &gt; file</div>
<div>——————————————————————————————————————————</div>
<div>
<div>6.find文件</div>
<div><strong>问题：</strong>在tmp目录下有大量包含picture_*的临时文件，每天晚上2:30对一天前的文件进行清理。之前在crontab下跑如下脚本，但是发现脚本效率很低，每次执行时负载猛涨，影响到其他服务。</div>
<div>#!/bin/sh</div>
<div>find /tmp -name “picture_*” -mtime +1 -exec rm -f {} ;</div>
<div><strong>原因：</strong>目录下有大量文件，用find很耗资源。</div>
<div><strong>解决：</strong></div>
<div>#!/bin/sh</div>
<div>cd /tmp</div>
<div>time=`date -d “2 day ago” “+%b %d”`</div>
<div>ls -l|grep “picture” |grep “$time”|awk ‘{print $NF}’|xargs rm -rf</div>
<div>——————————————————————————————————————————</div>
</div>
<div id="_mcePaste">7.获取不了网关mac地址</div>
<div id="_mcePaste"><strong>问题：</strong>从2.14到3.65（映射地址2.141）网络不通，但是从3端的其他机器到3.65网络OK。</div>
<div id="_mcePaste"><strong>原因：</strong></div>
<div id="_mcePaste"># arp</div>
<div id="_mcePaste">Address                  HWtype  HWaddress           Flags  Mask            Iface</div>
<div id="_mcePaste">192.168.3.254            ether   incomplet             CM                     bond0</div>
<div id="_mcePaste">表面现象是机器自动获取不了网关MAC地址，网络工程师说是网络设备的问题，具体不清。</div>
<div id="_mcePaste"><strong>解决：</strong>arp绑定，arp -i bond0 -s 192.168.3.254  00:00:5e:00:01:64</div>
<div>——————————————————————————————————————————</div>
<div id="_mcePaste">
<div id="_mcePaste">8.问题：某天研发某同事说网站前端+1环境http无法启动，我上去看了下。报如下错：</div>
<div id="_mcePaste">/etc/init.d/httpd start</div>
<div id="_mcePaste">Starting httpd: [Sat Jan 29 17:49:00 2011] [warn] module  antibot_module is already loaded, skipping</div>
<div id="_mcePaste">Use proxy forward as remote ip : true.</div>
<div id="_mcePaste">Antibot exclude pattern : .*.[(js|css|jpg|gif|png)]</div>
<div id="_mcePaste">Antibot seed check pattern : login</div>
<div id="_mcePaste">(98)Address already in use: make_sock: could not bind to  address [::]:7080</div>
<div id="_mcePaste">(98)Address already in use: make_sock: could not bind to  address 0.0.0.0:7080</div>
<div id="_mcePaste">no listening sockets available, shutting down</div>
<div id="_mcePaste">Unable to open log                                                       [FAILED]</div>
<div id="_mcePaste">原因：</div>
<div id="_mcePaste">1）端口被占用：表面看是7080端口被占用，于是netstat -npl|grep  7080看了下发现7080没有占用；</div>
<div id="_mcePaste">2）在配置文件中重复写了端口，如果在以下两个文件同时写了Listen 7080</div>
<div id="_mcePaste">/etc/httpd/conf/http.conf</div>
<div id="_mcePaste">/etc/httpd/conf.d/t.10086.cn.conf</div>
<div id="_mcePaste">解决：注释掉/etc/httpd/conf.d/t.10086.cn.conf的Listen  7080，重启，OK。</div>
<div>——————————————————————————————————————————</div>
<div>9.too many open file终极解决方案</div>
<div>
<div>echo “” &gt;&gt; /etc/<a title="security" href="http://www.ha97.com/category/security">security</a>/limits.conf</div>
<div>echo “*                soft   nproc          65535″ &gt;&gt;  /etc/security/limits.conf</div>
<div>echo “*                hard   nproc          65535″ &gt;&gt;  /etc/security/limits.conf</div>
<div>echo “*                soft   nofile         65535″ &gt;&gt;  /etc/security/limits.conf</div>
<div>echo “*                hard   nofile         65535″ &gt;&gt;  /etc/security/limits.conf</div>
<div>echo “” &gt;&gt; /root/.bash_profile</div>
<div>echo “<a title="ulimit" href="http://www.ha97.com/tag/ulimit">ulimit</a> -n   65535″ &gt;&gt; /root/.bash_profile</div>
<div>echo “ulimit  -u   65535″ &gt;&gt; /root/.bash_profile</div>
</div>
<div>最后重启机器 或者执行 ulimit -u 655345 &amp;&amp; ulimit -n 65535</div>
<div>——————————————————————————————————————————</div>
<div id="_mcePaste">10.ibdata1和mysql-bin</div>
<div id="_mcePaste">问题：2.51磁盘空间报警，经查发现ibdata1和mysql-bin日志占用空间太多（其中ibdata1超过120G，mysql-bin超过80G）</div>
<div id="_mcePaste">原因：ibdata1是存储格式，在<a title="INNODB" href="http://www.ha97.com/tag/innodb">INNODB</a>类型数据状态下，ibdata1用来存储文件的数据和索引，而库名的文件夹里的那些表文件只是结构而已。</div>
<div id="_mcePaste">innodb存储引擎有两种表空间的管理方式，分别是：</div>
<div id="_mcePaste">1）共享表空间（可拆分为多个小的表空间文件），这个是我们目前多数数据库使用的方法；</div>
<div id="_mcePaste">2）独立表空间，每一个表有一个独立的表空间（磁盘文件）</div>
<div id="_mcePaste">对于两种管理方式，各有优劣，具体如下：</div>
<div id="_mcePaste">①共享表空间：</div>
<div id="_mcePaste">优点：可以将表空间分成多个文件存放到不同的磁盘上（表空间文件大小不受表大小的限制，一个表可以分布在不同步的文件上）。</div>
<div id="_mcePaste">缺点：所有数据和索引存放在一个文件中，则随着数据的增加，将会有一个很大的文件，虽然可以把一个大文件分成多 个小文件，但是多个表及索引在表空间中混合存储，这样如果对于一个表做了大量删除操作后表空间中将有大量空隙。对于共享表空间管理的方式下，一旦表空间被 分配，就不能再回缩了。当出现临时建索引或是创建一个临时表的操作表空间扩大后，就是删除相关的表也没办法回缩那部分空间了。</div>
<div id="_mcePaste">②独立表空间：在配置文件（my.cnf）中设置： innodb_file_per_table</div>
<div id="_mcePaste">特点：每个表都有自已独立的表空间；每个表的数据和索引都会存在自已的表空间中。</div>
<div id="_mcePaste">优点：表空间对应的磁盘空间可以被收回（Drop table操作自动回收表空间，如果对于删除大量数据后的表可以通过:alter  table tbl_name engine=innodb;回缩不用的空间。</div>
<div id="_mcePaste">缺点：如果单表增加过大，如超过100G，性能也会受到影响。在这种情况下，如果使用共享表空间可以把文件分 开，但有同样有一个问题，如果访问的范围过大同样会访问多个文件，一样会比较慢。如果使用独立表空间，可以考虑使用分区表的方法，在一定程度上缓解问题。 此外，当启用独立表空间模式时，需要合理调整innodb_open_files参数的设置。</div>
<div id="_mcePaste">解决:</div>
<div id="_mcePaste">1）ibdata1数据太大：只能通过dump，导出建库的sql语句，再重建的方法。</div>
<div id="_mcePaste">2）mysql-bin Log太大：</div>
<div id="_mcePaste">①手动删除：</div>
<div id="_mcePaste">删除某个日志：mysql&gt;PURGE MASTER LOGS TO ‘mysql-bin.010′;</div>
<div id="_mcePaste">删除某天前的日志：mysql&gt;PURGE MASTER LOGS BEFORE ’2010-12-22  13:00:00′;</div>
<div id="_mcePaste">②在/etc/my.cnf里设置只保存N天的bin-log日志</div>
<div id="_mcePaste">expire_logs_days = 30  //Binary Log自动删除的天数</div>
</div>
<p>作者：孤风颠影<br />
转自：http://yunhaozou.org/arch-ops/277.html</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=300</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux常用的系统监控shell脚本</title>
		<link>http://blog.cmsphp.com/?p=296</link>
		<comments>http://blog.cmsphp.com/?p=296#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:28:57 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=296</guid>
		<description><![CDATA[下面是我常用的几个Linux系统监控的脚本，大家可以根据自己的情况在进行修改，希望能给大家一点帮助。 1、查看主机网卡流量 #!/bin/bash #network #Mike.Xu while : ; do time=’date +%m”-”%d” “%k”:”%M’ day=’date +%m”-”%d’ rx_before=’ifconfig eth0&#124;sed -n “8″p&#124;awk ‘{print $2}’&#124;cut -c7-’ tx_before=’ifconfig eth0&#124;sed -n “8″p&#124;awk ‘{print $6}’&#124;cut -c7-’ sleep 2 rx_after=’ifconfig eth0&#124;sed -n “8″p&#124;awk ‘{print $2}’&#124;cut -c7-’ tx_after=’ifconfig eth0&#124;sed -n “8″p&#124;awk ‘{print $6}’&#124;cut -c7-’ rx_result=$[(rx_after-rx_before)/256] tx_result=$[(tx_after-tx_before)/256] echo “$time Now_In_Speed: “$rx_result”kbps Now_OUt_Speed: “$tx_result”kbps” sleep 2 done [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>下面是我常用的几个<a title="Linux" href="http://www.ha97.com/category/linux">Linux</a>系统监控的脚本，大家可以根据自己的情况在进行修改，希望能给大家一点帮助。</p>
<p>1、查看主机网卡流量</p>
<blockquote dir="ltr"><p>#!/bin/bash</p>
<p>#network</p>
<p>#Mike.Xu</p>
<p>while : ; do</p>
<p>time=’date +%m”-”%d” “%k”:”%M’</p>
<p>day=’date +%m”-”%d’</p>
<p>rx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’</p>
<p>tx_before=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’</p>
<p>sleep 2</p>
<p>rx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $2}’|cut -c7-’</p>
<p>tx_after=’ifconfig eth0|sed -n “8″p|awk ‘{print $6}’|cut -c7-’</p>
<p>rx_result=$[(rx_after-rx_before)/256]</p>
<p>tx_result=$[(tx_after-tx_before)/256]</p>
<p>echo “$time Now_In_Speed: “$rx_result”kbps Now_OUt_Speed: “$tx_result”kbps”</p>
<p>sleep 2</p>
<p>done</p></blockquote>
<p>&nbsp;</p>
<p>2、系统状况监控</p>
<blockquote dir="ltr"><p>#!/bin/sh</p>
<p>#systemstat.sh</p>
<p>#Mike.Xu</p>
<p>IP=192.168.1.227</p>
<p>top -n 2| grep “Cpu” &gt;&gt;./temp/cpu.txt</p>
<p>free -m | grep “Mem” &gt;&gt; ./temp/mem.txt</p>
<p>df -k | grep “sda1″ &gt;&gt; ./temp/drive_sda1.txt</p>
<p>#df -k | grep sda2 &gt;&gt; ./temp/drive_sda2.txt</p>
<p>df -k | grep “/mnt/storage_0″ &gt;&gt; ./temp/mnt_storage_0.txt</p>
<p>df -k | grep “/mnt/storage_pic” &gt;&gt; ./temp/mnt_storage_pic.txt</p>
<p>time=`date +%m”.”%d” “%k”:”%M`</p>
<p>connect=`netstat -na | grep “219.238.148.30:80″ | wc -l`</p>
<p>echo “$time  $connect” &gt;&gt; ./temp/connect_count.txt</p></blockquote>
<p>3、监控主机的磁盘空间,当使用空间超过90％就通过发mail来发警告</p>
<blockquote dir="ltr"><p>#!/bin/bash</p>
<p lang="en-US">#monitor available disk space</p>
<p lang="en-US">SPACE=’df | sed -n ‘/  / $ / p’ | gawk ‘{print $5}’ | sed  ’s/%//’</p>
<p lang="en-US">if [ $SPACE -ge 90 ]</p>
<p lang="en-US">then</p>
<p lang="en-US">fty89@163<a title=".com" href="http://www.ha97.com/tag/com">.com</a></p>
<p lang="en-US">fi</p>
<p lang="en-US">&nbsp;</p>
</blockquote>
<p lang="en-US">4、 监控CPU和内存的使用情况</p>
<blockquote dir="ltr"><p>#!/bin/bash</p>
<p lang="en-US">#script  to capture <a title="system" href="http://www.ha97.com/tag/system">system</a> statistics</p>
<p lang="en-US">OUTFILE=/home/xu/capstats.csv</p>
<p lang="en-US">DATE=’date +%m/%d/%Y’</p>
<p lang="en-US">TIME=’date +%k:%m:%s’</p>
<p lang="en-US">TIMEOUT=’uptime’</p>
<p lang="en-US">VMOUT=’vmstat 1 2′</p>
<p lang="en-US">USERS=’echo $TIMEOUT | gawk ‘{print $4}’ ‘</p>
<p lang="en-US">LOAD=’echo $TIMEOUT | gawk ‘{print $9}’ | sed “s/,//’ ‘</p>
<p lang="en-US">FREE=’echo $VMOUT | sed -n ‘/[0-9]/p’ | sed -n ‘2p’ | gawk ‘{print $4} ‘ ‘</p>
<p lang="en-US">IDLE=’echo  $VMOUT | sed -n ‘/[0-9]/p’ | sed -n ‘2p’ |gawk ‘{print $15}’ ‘</p>
<p lang="en-US">echo “$DATE,$TIME,$USERS,$LOAD,$FREE,$IDLE” &gt;&gt; $OUTFILE</p>
<p lang="en-US">&nbsp;</p>
</blockquote>
<p lang="en-US">&nbsp;</p>
<p lang="en-US">5、全方位监控主机</p>
<p lang="en-US">&nbsp;</p>
<blockquote dir="ltr"><p>#!/bin/bash</p>
<p># check_xu.sh</p>
<p># 0 * * * * /home/check_xu.sh</p>
<p>DAT=”`date +%Y%m%d`”</p>
<p>HOUR=”`date +%H`”</p>
<p>DIR=”/home/oslog/host_${DAT}/${HOUR}”</p>
<p>DELAY=60</p>
<p>COUNT=60</p>
<p># whether the responsible directory exist</p>
<p>if ! test -d ${DIR}</p>
<p>then</p>
<p lang="en-US">/bin/mkdir -p ${DIR}</p>
<p>fi</p>
<p># general check</p>
<p>export TERM=<a title="linux" href="http://www.ha97.com/tag/linux">linux</a></p>
<p>/usr/bin/top -b -d ${DELAY} -n ${COUNT} &gt; ${DIR}/top_${DAT}.log 2&gt;&amp;1 &amp;</p>
<p># cpu check</p>
<p>/usr/bin/sar -u ${DELAY} ${COUNT} &gt; ${DIR}/cpu_${DAT}.log 2&gt;&amp;1 &amp;</p>
<p>#/usr/bin/mpstat -P 0 ${DELAY} ${COUNT} &gt; ${DIR}/cpu_0_${DAT}.log 2&gt;&amp;1 &amp;</p>
<p>#/usr/bin/mpstat -P 1 ${DELAY} ${COUNT} &gt; ${DIR}/cpu_1_${DAT}.log 2&gt;&amp;1 &amp;</p>
<p># <a title="memory" href="http://www.ha97.com/tag/memory">memory</a> check</p>
<p>/usr/bin/vmstat ${DELAY} ${COUNT} &gt; ${DIR}/vmstat_${DAT}.log 2&gt;&amp;1 &amp;</p>
<p># I/O check</p>
<p>/usr/bin/iostat ${DELAY} ${COUNT} &gt; ${DIR}/iostat_${DAT}.log 2&gt;&amp;1 &amp;</p>
<p># network check</p>
<p>/usr/bin/sar -n DEV ${DELAY} ${COUNT} &gt; ${DIR}/net_${DAT}.log 2&gt;&amp;1 &amp;</p>
<p>#/usr/bin/sar -n EDEV ${DELAY} ${COUNT} &gt; ${DIR}/net_edev_${DAT}.log 2&gt;&amp;1 &amp;</p></blockquote>
<p>放在<a title="crontab" href="http://www.ha97.com/tag/crontab">crontab</a>里每小时自动执行：</p>
<blockquote dir="ltr"><p>0 * * * * /home/check_xu.sh</p></blockquote>
<p>这样会在/home/oslog/host_yyyymmdd/hh目录下生成各小时cpu、内存、网络，IO的统计数据。</p>
<p>如果某个时间段产生问题了，就可以去看对应的日志信息，看看当时的主机性能如何。</p>
<p>作者：Mike.Xu<br />
来源：<a title="http" href="http://www.ha97.com/tag/http">http</a>://www.dbasky<a title=".net" href="http://www.ha97.com/category/%e7%bc%96%e7%a8%8b%e5%bc%80%e5%8f%91/net">.net</a>/archives/2009/10/<a title="shell" href="http://www.ha97.com/category/shell">shell</a>.html</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=296</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux的经典shell命令整理</title>
		<link>http://blog.cmsphp.com/?p=294</link>
		<comments>http://blog.cmsphp.com/?p=294#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:26:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=294</guid>
		<description><![CDATA[1.删除0字节文件 find -type f -size 0 -exec rm -rf {} ; 2.查看进程 按内存从大到小排列 ps -e -o “%C : %p : %z : %a”&#124;sort -k5 -nr 3.按cpu利用率从大到小排列 ps -e -o “%C : %p : %z : %a”&#124;sort -nr 4.打印说cache里的URL grep -r -a jpg /data/cache/* &#124; strings &#124; grep “http:” &#124; awk -F’http:’ ‘{print “http:”$2;}’ 5.查看http的并发请求数及其TCP连接状态： netstat [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>1.删除0字节文件<br />
find -type f -size 0 -exec rm -rf {} ;</p>
<p>2.查看进程<br />
按内存从大到小排列<br />
ps -e  -o “%C  : %p : %z : %a”|sort -k5 -nr</p>
<p>3.按cpu利用率从大到小排列<br />
ps -e  -o “%C  : %p : %z : %a”|sort  -nr</p>
<p>4.打印说cache里的URL<br />
grep -r -a  jpg /data/cache/* | strings | grep “http:” | awk -F’http:’ ‘{print “http:”$2;}’</p>
<p>5.查看http的并发请求数及其TCP连接状态：<br />
netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}’</p>
<p>6.<br />
sed -i ‘/Root/s/no/yes/’ /etc/ssh/sshd_config  sed在这个文里Root的一行，匹配Root一行，将no替换成yes.</p>
<p>7.1.如何杀掉<a title="mysql" href="http://www.ha97.com/category/database/mysql-database">mysql</a>进程：<br />
ps aux|grep mysql|grep -v grep|awk ‘{print $2}’|xargs kill -9</p>
<p>(从中了解到awk的用途)<br />
pgrep mysql |xargs kill -9</p>
<p>killall -TERM mysqld</p>
<p>kill -9 `cat /usr/local/apache2/logs/httpd.pid`</p>
<p>试试查杀进程PID</p>
<p>8.显示运行3级别开启的服务:<br />
ls /etc/rc3.d/S* |cut -c 15-</p>
<p>(从中了解到cut的用途，截取数据)</p>
<p>9.如何在编写<a title="SHELL" href="http://www.ha97.com/category/shell">SHELL</a>显示多个信息，用EOF<br />
cat &lt;&lt; EOF<br />
+--------------------------------------------------------------+<br />
|         === Welcome to Tunoff services ===                   |<br />
+--------------------------------------------------------------+<br />
EOF</p>
<p>10. for 的巧用(如给mysql建软链接)<br />
cd /usr/local/mysql/bin<br />
for i in *<br />
do ln /usr/local/mysql/bin/$i /usr/bin/$i<br />
done</p>
<p>11. 取IP地址：<br />
ifconfig eth0|sed -n '2p'|awk '{print $2}'|cut -c 6-30</p>
<p>或者:<br />
ifconfig eth0 |grep "inet addr:" |awk '{print $2}'|cut -c 6-</p>
<p>或者<br />
ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'</p>
<p>或者：<br />
ifconfig eth0 | sed -n '/inet /{s/.*addr://;s/ .*//;p}'</p>
<p>Perl实现获取IP的方法:<br />
ifconfig -a | perl -ne 'if ( m/^s*inet (?:addr:)?([d.]+).*?cast/ ) { print qq($1n); exit 0; }'</p>
<p>12.内存的大小:<br />
free -m |grep "Mem" | awk '{print $2}'</p>
<p>13.<br />
netstat -an -t | grep ":80" | grep ESTABLISHED | awk '{printf "%s %sn",$5,$6}' | sort</p>
<p>14.查看<a title="Apache" href="http://www.ha97.com/category/web-server/apache">Apache</a>的并发请求数及其TCP连接状态：<br />
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'</p>
<p>15.因为同事要统计一下服务器下面所有的jpg的文件的大小,写了个shell给他来统计.原来用xargs实现,但他一次处理一部分,搞的有多个总和....,下面的命令就能解决啦.<br />
find / -name *.jpg -exec wc -c {} ;|awk '{print $1}'|awk '{a+=$1}END{print a}'</p>
<p>CPU的数量（多核算多个CPU，<br />
cat /proc/cpuinfo |grep -c processor</p>
<p>）越多，系统负载越低，每秒能处理的请求数也越多。</p>
<p>--------------------------------------------------------------------------------------------------------------------<br />
16  CPU负载  # cat /proc/loadavg<br />
检查前三个输出值是否超过了系统逻辑CPU的4倍。</p>
<p>18  CPU负载  #mpstat 1 1<br />
检查%idle是否过低(比如小于5%)</p>
<p>19  内存空间  # free<br />
检查free值是否过低  也可以用 # cat /proc/meminfo</p>
<p>20  swap空间  # free<br />
检查swap used值是否过高  如果swap used值过高，进一步检查swap动作是否频繁：<br />
# vmstat 1 5<br />
观察si和so值是否较大</p>
<p>21  磁盘空间  # df -h<br />
检查是否有分区使用率(Use%)过高(比如超过90%)  如发现某个分区空间接近用尽，可以进入该分区的挂载点，用以下命令找出占用空间最多的文件或目录：<br />
# du -cks * | sort -rn | head -n 10</p>
<p>22  磁盘I/O负载  # iostat -x 1 2<br />
检查I/O使用率(%util)是否超过100%</p>
<p>23  网络负载  # sar -n DEV<br />
检查网络流量(rxbyt/s, txbyt/s)是否过高</p>
<p>24  网络错误  # netstat -i<br />
检查是否有网络错误(drop fifo colls carrier)  也可以用命令：# cat /proc/net/dev</p>
<p>25 网络连接数目  # netstat -an | grep -E “^(tcp)” | cut -c 68- | sort | uniq -c | sort -n</p>
<p>26  进程总数  # ps aux | wc -l<br />
检查进程个数是否正常 (比如超过250)</p>
<p>27  可运行进程数目  # vmwtat 1 5<br />
列给出的是可运行进程的数目，检查其是否超过系统逻辑CPU的4倍</p>
<p>28  进程  # top -id 1<br />
观察是否有异常进程出现</p>
<p>29  网络状态  检查DNS, 网关等是否可以正常连通</p>
<p>30  用户  # who | wc -l<br />
检查登录用户是否过多 (比如超过50个)  也可以用命令：# uptime</p>
<p>31  系统日志  # cat /var/log/rflogview/*errors<br />
检查是否有异常错误记录  也可以搜寻一些异常关键字，例如：<br />
# grep -i error /var/log/messages<br />
# grep -i fail /var/log/messages<br />
# egrep -i 'error|warn' /var/log/messages 查看系统异常<br />
32  核心日志  # dmesg<br />
检查是否有异常错误记录</p>
<p>33  系统时间  # date<br />
检查系统时间是否正确</p>
<p>34  打开文件数目  # lsof | wc -l<br />
检查打开文件总数是否过多</p>
<p>35  日志  # logwatch ?print  配置/etc/log.d/logwatch.conf，将 Mailto 设置为自己的email 地址，启动mail服务 (sendmail或者postfix)，这样就可以每天收到日志报告了。<br />
缺省logwatch只报告昨天的日志，可以用# logwatch ?print ?range all 获得所有的日志分析结果。<br />
可以用# logwatch ?print ?detail high 获得更具体的日志分析结果(而不仅仅是出错日志)。</p>
<p>36.杀掉80端口相关的进程<br />
lsof -i :80|grep -v "PID"|awk '{print "kill -9",$2}'|sh</p>
<p>37.清除僵死进程。<br />
ps -eal | awk '{ if ($2 == "Z") {print $4}}' | kill -9</p>
<p>38.tcpdump 抓包 ，用来防止80端口被人攻击时可以分析数据<br />
# tcpdump -c 10000 -i eth0 -n dst port 80 &gt; /root/pkts</p>
<p>39.然后检查IP的重复数 并从小到大排序 注意 “-t +0″  中间是两个空格<br />
# less pkts | awk {‘printf $3″n”‘} | cut -d. -f 1-4 | sort | uniq -c | awk {‘printf $1″ “$2″n”‘} | sort -n -t +0</p>
<p>40.查看有多少个活动的php-cgi进程<br />
netstat -anp | grep php-cgi | grep ^tcp | wc -l</p>
<p>41.利用<a title="iptables" href="http://www.ha97.com/tag/iptables">iptables</a>对应简单攻击<br />
netstat -an | grep -v LISTEN | awk ‘{print $5}’ |grep -v 127.0.0.1|grep  -v 本机ip|sed  “s/::ffff://g”|awk ‘BEGIN { FS=”:” } { Num[$1]++ } END {  for(i in Num) if(Num&gt;8) { print i} }’ |grep  ‘[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}’|  xargs -i[] iptables -I  INPUT -s [] -j DROP</p>
<p>Num&gt;8部分设定值为阀值，这条句子会自动将netstat -an 中查到的来自同一ＩＰ的超过一定量的连接的列入禁止范围。   基中本机ip改成你的服务器的ip地址</p>
<p>42. 怎样知道某个进程在哪个CPU上运行？<br />
# ps -eo pid,args,psr</p>
<p>43. 查看硬件制造商<br />
<a title="dmidecode" href="http://www.ha97.com/tag/dmidecode">dmidecode</a> -s system-product-name</p>
<p>44.perl如何编译成字节码，这样在处理复杂项目的时候会更快一点？<br />
perlcc -B -o webseek webseek.pl</p>
<p>45. 统计var目录下文件以M为大小,以列表形式列出来。<br />
find /var -type f | xargs ls -s | sort -rn | awk ‘{size=$1/1024; printf(“%dMb %sn”, size,$2);}’ | head<br />
查找var目录下文件大于100M的文件，并统计文件的个数<br />
find /var -size +100M -type f | tee file_list | wc -l</p>
<p>46. sed 查找并替换内容<br />
sed -i “s/varnish/LTCache/g”   `grep “Via” -rl /usr/local/src/varnish-2.0.4`</p>
<p>sed -i “s/X-Varnish/X-LTCache/g”     `grep “X-Varnish” -rl /usr/local/src/varnish-2.0.4`</p>
<p>47. 查看服务器制造商<br />
dmidecode -s system-product-name</p>
<p>48. wget 模拟user-agent抓取网页<br />
wget -m -e robots=off -U “Mozilla/5.0 (<a title="Windows" href="http://www.ha97.com/category/microsoft/windows">Windows</a>; U; <a title="Windows" href="http://www.ha97.com/tag/windows">Windows</a> NT 5.1; zh-CN; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6″ http://www.example.com/</p>
<p>50. 统计目录下文件的大小（按M打印显示）<br />
du $1 –max-depth=1 | sort -n|awk ‘{printf “%7.2fM —-&gt; %sn”,$1/1024,$2}’|sed ’s:/.*/([^/]{1,})$:1:g’</p>
<p>51.关于CND实施几个相关的统计<br />
统计一个目录中的目录个数<br />
ls -l | awk ‘/^d/’ | wc -l</p>
<p>统计一个目录中的文件个数<br />
ls -l | awk ‘/^-/’ | wc -l</p>
<p>统计一个目录中的全部文件数<br />
find ./ -type f -print | wc -l</p>
<p>统计一个目录中的全部子目录数<br />
find ./ -type d -print | wc -l</p>
<p>统计某类文件的大小:<br />
find ./ -name “*.jpg” -exec wc -c {} ;|awk ‘{print $1}’|awk ‘{a+=$1}END{print a}’</p>
<p>53. 查找占用磁盘IO最多的进程<br />
wget -c http://<a title="linux" href="http://www.ha97.com/category/linux">linux</a>.web.psi.ch/dist/<a title="scientific" href="http://www.ha97.com/tag/scientific">scientific</a>/5/gfa/all/dstat-0.6.7-1.rf.noarch.rpm<br />
dstat -M topio -d -M topbio</p>
<p>54. 去掉第一列（如行号代码）<br />
awk ‘{for(i=2;i&lt;=NF;i++) if(i!=NF){printf $i” “}else{print $i} }’ list</p>
<p>55.输出256中色彩<br />
for<br />
i in {0..255}; do echo -e “e[38;05;${i}m${i}”; done | column -c 80 -s ‘<br />
‘; echo -e “e[m”</p>
<p>56.查看机器支持内存<br />
机器插内存情况：<br />
dmidecode |grep -P “Maximums+Capacity”</p>
<p>机器最大支持内存：<br />
dmidecode |grep -P “Maximums+Capacity”</p>
<p>57.查看PHP-CGI占用的内存总数：<br />
total=0; for i in `ps -C php-cgi -o rss=`; do total=$(($total+$i)); done; echo “PHP-CGI Memory usage: $total kb”</p>
<p>作者：NetSeek<br />
来源：http://bbs.linuxtone.org/thread-16-1-1.html</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=294</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RHEL/CentOS使用yum update更新时不升级内核的方法</title>
		<link>http://blog.cmsphp.com/?p=291</link>
		<comments>http://blog.cmsphp.com/?p=291#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:17:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[LAMP]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=291</guid>
		<description><![CDATA[RHEL/CentOS/Fedora使用yum update更新时，默认会升级内核。但有些服务器硬件（特别是组装的机器）在升级内核后，新的内核可能会认不出某些硬件，要重新安装驱动，很麻烦。所以在生产环境中不要轻易的升级内核，除非你确定升级内核后不会出现麻烦的问题。 如果不想升级内核而只更新其他软件包，有两种方法： 1、修改yum的配置文件 vim /etc/yum.conf，在[main]的最后添加exclude=kernel* 2、直接在yum的命令后面加上如下的参数： yum --exclude=kernel* update]]></description>
			<content:encoded><![CDATA[<div>
<p><strong><a title="RHEL/CentOS/Fedora" href="http://www.ha97.com/category/linux/rhelcentosfedora">RHEL/CentOS/Fedora</a>使用yum <a title="update" href="http://www.ha97.com/tag/update">update</a>更新时，默认会升级内核。但有些服务器硬件（特别是组装的机器）在升级内核后，新的内核可能会认不出某些硬件，要重新安装驱动，很麻烦。所以在生产环境中不要轻易的升级内核，除非你确定升级内核后不会出现麻烦的问题。</strong></p>
<p>如果不想升级内核而只更新其他软件包，有两种方法：</p>
<blockquote><p>1、修改yum的配置文件 vim /etc/yum.conf，在[main]的最后添加exclude=kernel*<br />
2、直接在yum的命令后面加上如下的参数：<br />
<code>yum --exclude=kernel* update</code></p></blockquote>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=291</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>RHEL/CentOS/Fedora设置修改系统时区</title>
		<link>http://blog.cmsphp.com/?p=288</link>
		<comments>http://blog.cmsphp.com/?p=288#comments</comments>
		<pubDate>Sun, 30 Oct 2011 08:15:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.cmsphp.com/?p=288</guid>
		<description><![CDATA[在我们使用CentOS系统的时候，也许时区经常会出现问题，有时候改完之后还是会出错，下面分享一种方法来改变这个状况。 如果没有安装ntp时间同步组件，可以使用命令 yum install ntp 安装 然后：ntpdate us.pool.ntp.org 。 因为CentOS系统是用rhel的源码再编译的，绝大部分是完全一样的。 rhas5的时区是以文件形式存在的，当前的时区文件是在/etc/localtime 那么其他时区的文件存放在哪里呢？ 在/usr/share/zoneinfo下 我们用东八区，北京，上海的时间 #cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #reboot 重启之后，date查看时间、查看当前时区   date -R、查看/修改Linux时区和时间 一、时区 1. 查看当前时区 date -R &#160; 2. 修改设置时区 方法(1) tzselect 方法(2) 仅限于RedHat Linux 和 CentOS系统 timeconfig 方法(3) 适用于Debian dpkg-reconfigure tzdata 3. 复制相应的时区文件，替换CentOS系统时区文件；或者创建链接文件 cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime 在中国可以使用： cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime 二、时间 1、查看时间和日期 date 2、设置时间和日期 [...]]]></description>
			<content:encoded><![CDATA[<div>
<p>在我们使用<a title="CentOS" href="http://www.ha97.com/tag/centos">CentOS</a>系统的时候，也许时区经常会出现问题，有时候改完之后还是会出错，下面分享一种方法来改变这个状况。</p>
<p>如果没有安装ntp时间同步组件，可以使用命令 yum install ntp 安装</p>
<p>然后：ntpdate us.pool.ntp.org 。</p>
<p>因为CentOS系统是用<a title="rhel" href="http://www.ha97.com/tag/rhel">rhel</a>的源码再编译的，绝大部分是完全一样的。</p>
<p>rhas5的时区是以文件形式存在的，当前的时区文件是在/etc/localtime</p>
<p>那么其他时区的文件存放在哪里呢？</p>
<p>在/usr/share/zoneinfo下</p>
<p>我们用东八区，北京，上海的时间</p>
<p>#cp -f /usr/share/zoneinfo/Asia/Shanghai /etc/localtime<br />
#reboot</p>
<p>重启之后，date查看时间、查看当前时区   date -R、查看/修改<a title="Linux" href="http://www.ha97.com/category/linux">Linux</a>时区和时间</p>
<p><strong>一、时区</strong></p>
<p>1. 查看当前时区<br />
date -R</p>
<p>&nbsp;</p>
<p>2. 修改设置时区<br />
方法(1)<br />
tzselect<br />
方法(2) 仅限于<a title="RedHat" href="http://www.ha97.com/tag/redhat">RedHat</a> <a title="Linux" href="http://www.ha97.com/tag/linux">Linux</a> 和 CentOS系统<br />
timeconfig<br />
方法(3) 适用于<a title="Debian" href="http://www.ha97.com/tag/debian">Debian</a><br />
dpkg-reconfigure tzdata</p>
<p>3. 复制相应的时区文件，替换CentOS系统时区文件；或者创建链接文件<br />
cp /usr/share/zoneinfo/$主时区/$次时区 /etc/localtime<br />
在中国可以使用：<br />
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime</p>
<p><strong>二、时间</strong></p>
<p>1、查看时间和日期<br />
date</p>
<p>2、设置时间和日期<br />
将CentOS系统日期设定成2011年5月16日的命令<br />
date -s 05/16/11<br />
将CentOS系统时间设定成下午3点33分0秒的命令<br />
date -s 15:33:00</p>
<p>3. 将当前时间和日期写入BIOS，避免重启后失效<br />
hwclock -w</p>
<p><strong>三、定时同步时间</strong><br />
# /usr/sbin/ntpdate 210.72.145.44 &gt; /dev/null 2&gt;&amp;1</p>
<p>这样就完成了关于设置修改CentOS系统时区的问题了。</p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://blog.cmsphp.com/?feed=rss2&#038;p=288</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

