<?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>Java &#38; Game &#187; linux</title>
	<atom:link href="http://www.javagg.com/archives/category/linux/feed" rel="self" type="application/rss+xml" />
	<link>http://www.javagg.com</link>
	<description>java&#38;j2me</description>
	<lastBuildDate>Sat, 02 Jul 2011 08:59:18 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>在linux上安装redmine</title>
		<link>http://www.javagg.com/archives/751</link>
		<comments>http://www.javagg.com/archives/751#comments</comments>
		<pubDate>Tue, 04 May 2010 03:24:31 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>
		<category><![CDATA[redmine]]></category>
		<category><![CDATA[ruby]]></category>
		<category><![CDATA[项目管理]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=751</guid>
		<description><![CDATA[Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案，它提供集成的项目管理功能，问题跟踪，并为多个版本控制选项的支持。虽说像IBM Rational Team Concert的商业项目调查工具已经很强大了，但想坚持一个自由和开放源码的解决方案，可能会发现Redmine是一个有用的Scrum和敏捷的选择。 由于Redmine的设计受到Rrac的较大影响，所以它们的软件包有很多相似的特征。Redmine建立在Ruby on Rails的框架之上，他可以夸平台和数据库。Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案，它提供集成的项目管理功能，问题跟踪，并为多个版本控制选项的支持。虽说像IBM Rational Team Concert的商业项目调查工具已经很强大了，但想坚持一个自由和开放源码的解决方案，可能会发现Redmine是一个有用的Scrum和敏捷的选择。 由于Redmine的设计受到Rrac的较大影响，所以它们的软件包有很多相似的特征。Redmine建立在Ruby on Rails的框架之上，他可以夸平台和数据库。
 
在安装之前，应该确认Linux操作系统已经安装好gcc编译器，否则请用Linux安装光盘先行安装gcc编译器：
gcc –v
如能返回gcc版本号，则gcc正确安装。
 
一、安装 Ruby 解析器 
 
一些Linux发行版本，都自带Ruby解析器，大家都用ruby -v查看是什么版本，0.9.4的redmine不支持ruby 1.9.x的，如果你系统的ruby是1.8.x就够了
 
ruby的源代码可以从Ruby官方网站下载：这里最好用ruby 1.8.7版本
http://www.ruby-lang.org/en/downloads/
 
下载源代码包到本地Linux主机，然后解压缩，进入该目录，进行配置，编译和安装：
tar xzvf ruby-1.8.7.tar.gz
cd ruby-1.8.7
./configure –prefix=/usr/local/ruby
make &#38;&#38; make install
如果想浏览所有的configure参数，可以：
./configure –help &#124;more
如果不定制安装的目录，默认将安装到/usr/local目录下面。然而我建议自行定制一个ruby的安装目录，例如/usr/local/ruby，这样便于以后的升级，不会和操作系统其他软件混在一起。
 
安装好以后，修改操作系统PATH路径，加入/usr/local/ruby/bin：
export PATH=/usr/local/ruby/bin:$PATH
将我们自己安装的ruby放在系统PATH前面，避免操作系统自带的ruby造成的干扰。在Linux上，一般将设置放在/etc/profile中，便于对全局生效。
 
二、安装 ruby on rails 
 
在安装rails之前，要先安装rubygems。rubygems是ruby的在线包管理工具，可以从rubyforge下载rubygems：
http://rubyforge.org/projects/rubygems/
注意，ruby 1.8.7对应的rubygems版本是1.3.5   1.3.6是要1.8.7的ruby版本的
下载好源代码包，解压缩，安装：
tar xzvf  rubygems-1.3.5.tgz
cd rubygems-1.3.5/
ruby setup.rb
 
然后就可以安装rails了，在确认服务器已经连接互联网的情况下执行：
gem install rails  -v=2.3.5
即通过gem从rubyforge网站下载rails所有依赖包安装。
这里通常都会报找不到服务器，是因为你的linux dns服务器没有配置
打开  vi /etc/sysconfig/networking/profiles/default/resolv.conf
添加上你运营商对应的dns服务器ip即可


nameserver  202.96.128.68
nameserver  202.96.128.166

nameserver  8.8.8.8

 
安装好rails以后，可以执行：
rails –v
确认一下rails的版本。
Rake安装 
# gem [...]]]></description>
			<content:encoded><![CDATA[<div>Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案，它提供集成的项目管理功能，问题跟踪，并为多个版本控制选项的支持。虽说像IBM Rational Team Concert的商业项目调查工具已经很强大了，但想坚持一个自由和开放源码的解决方案，可能会发现Redmine是一个有用的Scrum和敏捷的选择。 由于Redmine的设计受到Rrac的较大影响，所以它们的软件包有很多相似的特征。Redmine建立在Ruby on Rails的框架之上，他可以夸平台和数据库。Redmine 是一个开源的、基于Web的项目管理和缺陷跟踪工具。它用日历和甘特图辅助项目及进度可视化显示。同时它又支持多项目管理。Redmine是一个自由开放 源码软件解决方案，它提供集成的项目管理功能，问题跟踪，并为多个版本控制选项的支持。虽说像IBM Rational Team Concert的商业项目调查工具已经很强大了，但想坚持一个自由和开放源码的解决方案，可能会发现Redmine是一个有用的Scrum和敏捷的选择。 由于Redmine的设计受到Rrac的较大影响，所以它们的软件包有很多相似的特征。Redmine建立在Ruby on Rails的框架之上，他可以夸平台和数据库。<span id="more-751"></span></div>
<div> </div>
<div>在安装之前，应该确认Linux操作系统已经安装好gcc编译器，否则请用Linux安装光盘先行安装gcc编译器：</div>
<div>gcc –v</div>
<div>如能返回gcc版本号，则gcc正确安装。</div>
<div> </div>
<div><strong>一、安装 </strong><strong>Ruby </strong><strong>解析器 </strong></div>
<div> </div>
<div>一些Linux发行版本，都自带Ruby解析器，大家都用ruby -v查看是什么版本，0.9.4的redmine不支持ruby 1.9.x的，如果你系统的ruby是1.8.x就够了</div>
<div> </div>
<div>ruby的源代码可以从Ruby官方网站下载：这里最好用ruby 1.8.7版本</div>
<div><a href="http://www.ruby-lang.org/en/downloads/">http://www.ruby-lang.org/en/downloads/</a></div>
<div> </div>
<div>下载源代码包到本地Linux主机，然后解压缩，进入该目录，进行配置，编译和安装：</div>
<div>tar xzvf ruby-1.8.7.tar.gz</div>
<div>cd ruby-1.8.7</div>
<div>./configure –prefix=/usr/local/ruby</div>
<div>make &amp;&amp; make install</div>
<div>如果想浏览所有的configure参数，可以：</div>
<div>./configure –help |more</div>
<div>如果不定制安装的目录，默认将安装到/usr/local目录下面。然而我建议自行定制一个ruby的安装目录，例如/usr/local/ruby，这样便于以后的升级，不会和操作系统其他软件混在一起。</div>
<div> </div>
<div>安装好以后，修改操作系统PATH路径，加入/usr/local/ruby/bin：</div>
<div>export PATH=/usr/local/ruby/bin:$PATH</div>
<div>将我们自己安装的ruby放在系统PATH前面，避免操作系统自带的ruby造成的干扰。在Linux上，一般将设置放在/etc/profile中，便于对全局生效。</div>
<div> </div>
<div><strong>二、安装 </strong><strong>ruby on rails </strong></div>
<div> </div>
<div>在安装rails之前，要先安装rubygems。rubygems是ruby的在线包管理工具，可以从rubyforge下载rubygems：</div>
<div><a href="http://rubyforge.org/projects/rubygems/">http://rubyforge.org/projects/rubygems/</a></div>
<div>注意，ruby 1.8.7对应的rubygems版本是1.3.5   1.3.6是要1.8.7的ruby版本的</div>
<div>下载好源代码包，解压缩，安装：</div>
<div>tar xzvf  rubygems-1.3.5.tgz</div>
<div>cd rubygems-1.3.5/</div>
<div>ruby setup.rb</div>
<div> </div>
<div>然后就可以安装rails了，在确认服务器已经连接互联网的情况下执行：</div>
<div>gem install rails  -v=2.3.5</div>
<div>即通过gem从rubyforge网站下载rails所有依赖包安装。</div>
<div>这里通常都会报找不到服务器，是因为你的linux dns服务器没有配置</div>
<div>打开  vi /etc/sysconfig/networking/profiles/default/resolv.conf<br />
添加上你运营商对应的dns服务器ip即可</div>
<div>
<div>
<div>nameserver  202.96.128.68</div>
<p>nameserver  202.96.128.166</p>
</div>
<p>nameserver  8.8.8.8</p>
</div>
<div> </div>
<div>安装好rails以后，可以执行：</div>
<div>rails –v</div>
<div>确认一下rails的版本。</div>
<div><strong>Rake安装 </strong></div>
<div><span style="font-family: KaiTi_GB2312;"># gem install rake   //直接使用gem命令安装rake.</span></div>
<div>下载redmine （搞了半天，终于到正事了~~~）</div>
<div><a href="http://rubyforge.org/frs/?group_id=1850&amp;release_id=43474">http://rubyforge.org/frs/?group_id=1850&amp;release_id=43474</a></div>
<div>这里要下载你redmine对应支持的版本</div>
<div>大家如果不清楚关系，可以到官网查看 <a href="http://www.redmine.org/wiki/redmine/RedmineInstall">http://www.redmine.org/wiki/redmine/RedmineInstall</a></div>
<div><strong>Redmine</strong><strong>安装</strong><strong> </strong> # wget <a href="http://rubyforge.org/frs/download.php/56909/redmine-0.9.4.tar.gz">http://rubyforge.org/frs/download.php/56909/redmine-0.9.4.tar.gz</a></div>
<h3># tar zxvf redmine-0.9.4.tar.gz</h3>
<h3># mv redmine-0.9.4 /usr/local/redmine</h3>
<h3># cd /usr/local/redmine/config</h3>
<h3>设置数据库参数</h3>
<div># cp database.yml.example database.yml</div>
<div># vi database.yml</div>
<div>production:   adapter: mysql  </div>
<div>database:redmine  </div>
<div>host: localhost  </div>
<div>username: redmineuser  </div>
<div>password: redminepw  </div>
<div>encoding: utf8</div>
<div>保存退出:wq</div>
<div><strong>Remine设定<br />
</strong>（注意此时的目录一定要在redmine/config里，不然会出错)<br />
# rake db:migrate RAILS_ENV=&#8221;production&#8221;         //创建表</div>
<div>如果这里运行报</div>
<div>A secret is required to generate an integrity hash for cookie session data.<br />
Use config.action_controller.session = { :session_key =&gt; &#8220;_myapp_session&#8221;,</div>
<div>先执行 #rake config/initializers/session_store.rb</div>
<div>如果提示没有mysql驱动，那请先执行#gem install ruby-mysql</div>
<div>再# rake db:migrate RAILS_ENV=&#8221;production&#8221;     <br />
# rake redmine:load_default_data RAILS_ENV=&#8221;production&#8221;        //加载默认配置<br />
这里会要求选择默认语言，我选的中文zh：<br />
Select language: bg, ca, cs, da, de, en, es, fi, fr, he, hu, it, ja, ko, lt, nl, no, pl, pt, pt-br, ro, ru, sk, sr, sv, th, tr, uk, vn, zh, zh-tw [en] zh<br />
这个默认设置只是在未登录时的界面语言，当用户登录后，默认语言还是英语，在My account里可以修改成其它语言。<br />
启动WEB服务<br />
# ruby script/server webrick -e production<br />
或# ruby /usr/local/redmine/script/server webrick -e production<br />
停止web服务方法：在当前启动窗口按ctrl+C<br />
访问<a href="http://ip:3000/">http://ip:3000/</a><br />
初始用户名/密码：admin/admin<br />
这样启动后，启动窗口是不能关闭的，所以要使Redmine作为服务启动，需添加-d参数：<br />
# ruby script/server webrick -e production -d<br />
或# ruby /usr/local/redmine/script/server webrick -e production –d<br />
停止服务方法：（ps命令查出此进程的pid号，再杀掉，目前好像只能这样，我看了&#8211;help里面，还没有停止的参数。）<br />
# ps aux | grep ruby<br />
# kill -9 [PID]</div>
<div>
<p>apache 与 redmine 整合</p>
<p>    通过 <a href="http://ip:3000/">http://ip:3000/</a> 这样访问 redmine 貌似很慢 , 要把 apache 与 redmine 整合效果就好很多了。不过 Apache 上面沒有 mod_rails ，我们需要安装后才能进行。方法也很简单。由于我们之前安装有 Ruby ，那麼安裝方式就是：</p>
<p>    view plaincopy to clipboardprint?<br />
#gem i passenger  <br />
#passenger-install-apache2-module  <br />
#gem i passenger<br />
#passenger-install-apache2-module <br />
 </p>
<p>（就这个东西，搞的我浪费很多时间。。。之前没有装。。。死也运行不了。）</p>
<p>    下边就是从官方文档找到的方法。英文好的朋友就可以直接看下边的文章了。</p>
<p>官方文档 URL ： <a href="http://www.redmine.org/wiki/1/HowTo_configure_Apache_to_run_Redmine">http://www.redmine.org/wiki/1/HowTo_configure_Apache_to_run_Redmine</a></p>
<p>1 、 首先要让 Apache 支持 cgi</p>
<p>      view plaincopy to clipboardprint?<br />
#vi /etc/httpd/conf/httpd.conf  <br />
 Options Indexes FollowSymLinks 　 ( 找到这一行，删除“ Indexes ”，并添加“ Includes ”、“ ExecCGI ” )  <br />
 Options Includes ExecCGI FollowSymLinks 　 ( 允许服务器执行 CGI 及 SSI)  <br />
 #AddHandler cgi-script .cgi 　 ( 找到这一行，去掉行首的“ # ”，并在行尾添加“ .pl ” )  <br />
 AddHandler cgi-script .cgi .pl 　 ( 允许扩展名为 .pl 的 CGI 脚本运行 )  <br />
 #vi /etc/httpd/conf/httpd.conf<br />
  Options Indexes FollowSymLinks 　 ( 找到这一行，删除“ Indexes ”，并添加“ Includes ”、“ ExecCGI ” )<br />
  Options Includes ExecCGI FollowSymLinks 　 ( 允许服务器执行 CGI 及 SSI)<br />
  #AddHandler cgi-script .cgi 　 ( 找到这一行，去掉行首的“ # ”，并在行尾添加“ .pl ” )<br />
  AddHandler cgi-script .cgi .pl 　 ( 允许扩展名为 .pl 的 CGI 脚本运行 ) </p>
<p>2 、 配置 redmine 源码目录下的 public/dispath.cgi 脚本</p>
<p>      view plaincopy to clipboardprint?<br />
cd /var/www/redmine  <br />
cp public/dispatch.cgi.example public/dispatch.cgi  <br />
cd /var/www/redmine<br />
cp public/dispatch.cgi.example public/dispatch.cgi </p>
<p>3 、 编辑 Apache 主配置文件</p>
<p>      view plaincopy to clipboardprint?<br />
#vi /etc/httpd/conf/httpd.conf ( 这里假定 redmine 源码的目录放在 /var/html/redmine 下 )  <br />
&lt;VirtualHost *:80&gt; <br />
    ServerName redmine.xxxxxx.com  <br />
    ServerAdmin <a href="mailto:webmaster@xxxxxx.com">webmaster@xxxxxx.com</a>  <br />
    DocumentRoot /var/html/redmine/public/  你安装的 redmine 下的 public 目录  <br />
    ErrorLog logs/redmine_error_log  <br />
  &lt;Directory &#8220;/var/html/redmine/public/&#8221;&gt; <br />
    Options Indexes ExecCGI FollowSymLinks  <br />
    Order allow,deny  <br />
    Allow from all  <br />
    AllowOverride all  <br />
  &lt;/Directory&gt; <br />
&lt;/VirtualHost&gt;  </p>
<p>本文来自CSDN博客，转载请标明出处：<a href="http://blog.csdn.net/nightload/archive/2010/02/03/5284002.aspx">http://blog.csdn.net/nightload/archive/2010/02/03/5284002.aspx</a></p>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/751/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>TOMCAT 6.0 安装 APR for linux x86_64</title>
		<link>http://www.javagg.com/archives/574</link>
		<comments>http://www.javagg.com/archives/574#comments</comments>
		<pubDate>Thu, 18 Feb 2010 15:48:20 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">eric_DIARY_104495338</guid>
		<description><![CDATA[TOMCAT 6.0 安装 APR for linux x86_64
Requirements: APR 1.2+ development headers (libapr1-dev package) OpenSSL 0.9.7+ development headers (libssl-dev package) JNI headers from Java compatible JDK 1.4+ GNU development environment (gcc, make) The wrapper library sources are located in the Tomcat binary bundle, in the bin/tomcat-native.tar.gz archive. Once the build environment is installed and the source [...]]]></description>
			<content:encoded><![CDATA[<p>TOMCAT 6.0 安装 APR for linux x86_64</p>
<p>Requirements: <br /><span style="color: #ff0000;">APR 1.2+ development headers (libapr1-dev package) </span><br /><span style="color: #ff0000;">OpenSSL 0.9.7+ development headers (libssl-dev package) </span><br /><span style="color: #ff0000;">JNI headers from Java compatible JDK 1.4+ </span><br /><span style="color: #ff0000;">GNU development environment (gcc, make)</span> <br />The wrapper library sources are located in the Tomcat binary bundle, in the bin/tomcat-native.tar.gz archive. Once the build environment is installed and the source archive is extracted, the wrapper library can be compiled using (from the folder containing the configure script): <br />./configure &amp;&amp; make &amp;&amp; make install<span id="more-574"></span></p>
<p>#apr-1.3.8.tar.gz<br />#tar zxvf apr-1.3.8.tar.gz<br />#cd apr-1.3.8<br />#./configure<br />#make<br />#make install<br />安装在/usr/local/apr</p>
<p>#apr-util-1.3.9.tar.gz<br />#tar zxvf apr-util-1.3.9.tar.gz<br />#cd apr-util-1.3.9&nbsp; &nbsp;<br />#./configure &#8211;with-apr=/usr/local/apr&nbsp; &nbsp;<br />#make&nbsp;&nbsp;<br />#make install&nbsp;&nbsp;<br />安装在/usr/local/apr/lib</p>
<p>安装 tomcat-native<br />#cd /usr/local/tomcat-6.0.20/bin&nbsp; &nbsp;<br />#tar zxvf tomcat-native.tar.gz&nbsp; &nbsp;<br />#cd tomcat-native-src/jni/native&nbsp; &nbsp;<br />#./configure &#8211;with-apr=/usr/local/apr &#8211;with-<span class="t_tag" onclick="tagshow(event)">java</span>-home=/usr/java/jdk1.6.0_16&nbsp; &nbsp;<br />#make&nbsp;&nbsp;<br />#make install&nbsp;&nbsp;</p>
<p>#cd /usr/local/tomcat-6.0.20/bin<br />#tar zxvf tomcat-native.tar.gz<br />#cd tomcat-native-src/jni/native<br />#./configure &#8211;with-apr=/usr/local/apr &#8211;with-java-home=/usr/java/jdk1.6.0_11<br />#make<br />#make install</p>
<p>设置 apr 的环境变量：<br />#vi /etc/profile&nbsp; &nbsp;<br />#export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/apr/lib&nbsp; &nbsp;<br />#source /etc/profile&nbsp;&nbsp;</p>
<p>启动 tomcat 后， 看日志：<br />bin/startup.sh&nbsp; &nbsp;<br />head logs/catalina.out </p>
<p><span style="color: #e58712;">apache<span class="t_tag" onclick="tagshow(event)">下载</span>APR</span></p>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/574/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>(转)启动linux远程图形界面登录，vnc!!</title>
		<link>http://www.javagg.com/archives/10</link>
		<comments>http://www.javagg.com/archives/10#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:24:48 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=10</guid>
		<description><![CDATA[以下转自
kaiser 博客
Linux Red Hat 在安装的时候勾选了 VNC ，将来对远程使用X windows 很有用。
用SSH 的 PUTTY 联入服务器，然后输入命令：
[root@server1 ~]# vncserver
即可激活VNC远程控制。
然后在本地安装VNC的客户端，链接上去就可以了。
修改VNC默认的终端显示为 Gnome
# cd .vnc
# vi xstartup
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;文件内容改为&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-
# Uncomment the following two lines for normal desktop:
# unset SESSION_MANAGER
# exec /etc/X11/xinit/xinitrc
[ -x /etc/vnc/xstartup ] &#38;&#38; exec /etc/vnc/xstartup
[ -r $HOME/.Xresources ] &#38;&#38; xrdb $HOME/.Xresources
xsetroot -solid grey
gnome-session&#38;
xterm
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-:wq 保存退出&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;
修改VNC密码：
VNC 在头一次运行的时候能提示你创建密码。创建后的密码日后需要修改，输入以下命令即可：
[root@server1 httpd]# vncpasswd
Password:******
Verify:******
我们在使用vnc远程控制服务器的时候又想开启iptables，，只要在iptables中开放vncserver的端口就可以了。
举个例子
vnc访问:192.168.1.203:1 那么他访问服务器的真正端口是5900+1=5901 （5900是vnc的默认端口）
接下来
编辑vi /etc/sysconfig/iptables
在里边加入
-A RH-Firewall-1-INPUT -m state [...]]]></description>
			<content:encoded><![CDATA[<p>以下转自<br />
<a href="http://blog.gznow.cn/article.php?type=blog&amp;itemid=14" target="_blank">kaiser 博客</a></p>
<p>Linux Red Hat 在安装的时候勾选了 VNC ，将来对远程使用X windows 很有用。</p>
<p>用SSH 的 PUTTY 联入服务器，然后输入命令：</p>
<p>[root@server1 ~]# vncserver<span id="more-10"></span></p>
<p>即可激活VNC远程控制。</p>
<p>然后在本地安装VNC的客户端，链接上去就可以了。<br />
修改VNC默认的终端显示为 Gnome<br />
# cd .vnc</p>
<p># vi xstartup</p>
<p>&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;文件内容改为&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-</p>
<p># Uncomment the following two lines for normal desktop:<br />
# unset SESSION_MANAGER<br />
# exec /etc/X11/xinit/xinitrc</p>
<p>[ -x /etc/vnc/xstartup ] &amp;&amp; exec /etc/vnc/xstartup<br />
[ -r $HOME/.Xresources ] &amp;&amp; xrdb $HOME/.Xresources<br />
xsetroot -solid grey<br />
gnome-session&amp;<br />
xterm<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;-:wq 保存退出&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
修改VNC密码：</p>
<p>VNC 在头一次运行的时候能提示你创建密码。创建后的密码日后需要修改，输入以下命令即可：</p>
<p>[root@server1 httpd]# vncpasswd<br />
Password:******<br />
Verify:******</p>
<p>我们在使用vnc远程控制服务器的时候又想开启iptables，，只要在iptables中开放vncserver的端口就可以了。</p>
<p>举个例子<br />
vnc访问:192.168.1.203:1 那么他访问服务器的真正端口是5900+1=5901 （5900是vnc的默认端口）<br />
接下来<br />
编辑vi /etc/sysconfig/iptables<br />
在里边加入<br />
-A RH-Firewall-1-INPUT -m state &#8211;state NEW -m tcp -p tcp &#8211;dport 5901 -j ACCEPT<br />
-A RH-Firewall-1-INPUT -m state &#8211;state NEW -m tcp -p tcp &#8211;dport 5902 -j ACCEPT<br />
.<br />
.</p>
<p>-A RH-Firewall-1-INPUT -m state &#8211;state NEW -m tcp -p tcp &#8211;dport 590(*) -j ACCEPT</p>
<p>PS：根据你开vnc的客户端数来开启端口，，建议不要开太多，</p>
<p>再键入service iptables restart 重启服务即可，，</p>
<p>大家现在可以用vnc客户端连接  192.168.1.203:1 就ok了..</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/10/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>转:Redhat AS4下架设MYSQL-MAX5.0.27集群</title>
		<link>http://www.javagg.com/archives/279</link>
		<comments>http://www.javagg.com/archives/279#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:24:48 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=279</guid>
		<description><![CDATA[Redhat AS4下架设MYSQL-MAX5.0.27集群
一、介绍
========
这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。
注意！
虽然这是基于2台服务器的MySQL集群，但也必须有额外的第三台服务器作为管理节点，但这台服务器可以在集群启动完成后关闭。同 时需要注意的是并不推荐在集群启动完成后关闭作为管理节点的服务器。尽管理论上可以建立基于只有2台服务器的MySQL集群，但是这样的架构，一旦一台服 务器宕机之后集群就无法继续正常工作了，这样也就失去了集群的意义了。出于这个原因，就需要有第三台服务器作为管理节点运行。
另外，可能很多朋友都没有3台服务器的实际环境，可以考虑在VMWare或其他虚拟机中进行实验。
下面假设这3台服务的情况：
Server1: mysql1.vmtest.net 192.168.0.1
Server2: mysql2.vmtest.net 192.168.0.2
Server3: mysql3.vmtest.net 192.168.0.3
Servers1 和Server2作为实际配置MySQL集群的服务器。对于作为管理节点的Server3则要求较低，只需对Server3的系统进行很小的调整并且无需 安装MySQL，Server3可以使用一台配置较低的计算机并且可以在Server3同时运行其他服务。
二、在Server1和Server2上安装MySQL
=================================
从http://www.mysql.com上下载mysql-max-5.0.27-linux-i686.tar.gz
注意：必须是max版本的MySQL，Standard版本不支持集群部署！
以下步骤需要在Server1和Server2上各做一次
# mv mysql-max-5.0.27-linux-i686.tar.gz /usr/local/
# cd /usr/local/
# groupadd mysql
# useradd -g mysql mysql
# tar -zxvf mysql-max-5.0.27-linux-i686.tar.gz
# rm -f mysql-max-5.0.27-linux-i686.tar.gz
# mv mysql-max-5.0.27-linux-i686 mysql
# cd mysql
# scripts/mysql_install_db &#8211;user=mysql
# chown -R root .
# chown -R mysql data
# chgrp -R mysql .
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld
# chmod +x /etc/rc.d/init.d/mysqld
# cp [...]]]></description>
			<content:encoded><![CDATA[<p>Redhat AS4下架设MYSQL-MAX5.0.27集群</p>
<p>一、介绍<br />
========<br />
这篇文档旨在介绍如何安装配置基于2台服务器的MySQL集群。并且实现任意一台服务器出现问题或宕机时MySQL依然能够继续运行。</p>
<p>注意！<br />
虽然这是基于2台服务器的MySQL集群，但也必须有额外的第三台服务器作为管理节点，但这台服务器可以在集群启动完成后关闭。同 时需要注意的是并不推荐在集群启动完成后关闭作为管理节点的服务器。尽管理论上可以建立基于只有2台服务器的MySQL集群，但是这样的架构，一旦一台服 务器宕机之后集群就无法继续正常工作了，这样也就失去了集群的意义了。出于这个原因，就需要有第三台服务器作为管理节点运行。<span id="more-279"></span></p>
<p>另外，可能很多朋友都没有3台服务器的实际环境，可以考虑在VMWare或其他虚拟机中进行实验。</p>
<p>下面假设这3台服务的情况：</p>
<p>Server1: mysql1.vmtest.net 192.168.0.1<br />
Server2: mysql2.vmtest.net 192.168.0.2<br />
Server3: mysql3.vmtest.net 192.168.0.3</p>
<p>Servers1 和Server2作为实际配置MySQL集群的服务器。对于作为管理节点的Server3则要求较低，只需对Server3的系统进行很小的调整并且无需 安装MySQL，Server3可以使用一台配置较低的计算机并且可以在Server3同时运行其他服务。<br />
二、在Server1和Server2上安装MySQL<br />
=================================<br />
从<a href="http://www.mysql.com/">http://www.mysql.com</a>上下载mysql-max-5.0.27-linux-i686.tar.gz<br />
注意：必须是max版本的MySQL，Standard版本不支持集群部署！</p>
<p>以下步骤需要在Server1和Server2上各做一次<br />
# mv mysql-max-5.0.27-linux-i686.tar.gz /usr/local/<br />
# cd /usr/local/<br />
# groupadd mysql<br />
# useradd -g mysql mysql<br />
# tar -zxvf mysql-max-5.0.27-linux-i686.tar.gz<br />
# rm -f mysql-max-5.0.27-linux-i686.tar.gz<br />
# mv mysql-max-5.0.27-linux-i686 mysql<br />
# cd mysql<br />
# scripts/mysql_install_db &#8211;user=mysql<br />
# chown -R root .<br />
# chown -R mysql data<br />
# chgrp -R mysql .<br />
# cp support-files/mysql.server /etc/rc.d/init.d/mysqld<br />
# chmod +x /etc/rc.d/init.d/mysqld<br />
# cp support-files/my-large.cnf /etc/my.cnf<br />
# chkconfig &#8211;add mysqld</p>
<p>此时不要启动MySQL！</p>
<p>三、安装并配置管理节点服务器(Server3)<br />
=====================================<br />
作为管理节点服务器，Server3需要ndb_mgm和ndb_mgmd两个文件：</p>
<p>从<a href="http://www.mysql.com/">http://www.mysql.com</a>上下载mysql-max-5.0.27-linux-i686.tar.gz</p>
<p># mkdir /usr/src/mysql-mgm<br />
# cd /usr/src/mysql-mgm<br />
# tar -zxvf mysql-max-5.0.27-linux-i686.tar.gz<br />
# rm mysql-max-5.0.27-linux-i686.tar.gz<br />
# cd mysql-max-5.0.27-linux-i686<br />
# mv bin/ndb_mgm .<br />
# mv bin/ndb_mgmd .<br />
# chmod +x ndb_mg*<br />
# mv ndb_mg* /usr/bin/<br />
# cd<br />
# rm -rf /usr/src/mysql-mgm</p>
<p>现在开始为这台管理节点服务器建立配置文件：</p>
<p># mkdir /var/lib/mysql-cluster<br />
# cd /var/lib/mysql-cluster<br />
# vi config.ini</p>
<p>在config.ini中添加如下内容：</p>
<p>[NDBD DEFAULT]<br />
NoOfReplicas=2<br />
[MYSQLD DEFAULT]<br />
[NDB_MGMD DEFAULT]<br />
[TCP DEFAULT]<br />
# Managment Server<br />
[NDB_MGMD]<br />
HostName=192.168.0.3 #管理节点服务器Server3的IP地址<br />
# Storage Engines<br />
[NDBD]<br />
HostName=192.168.0.1 #MySQL集群Server1的IP地址<br />
DataDir= /var/lib/mysql-cluster<br />
[NDBD]<br />
HostName=192.168.0.2 #MySQL集群Server2的IP地址<br />
DataDir=/var/lib/mysql-cluster<br />
# 以下2个[MYSQLD]可以填写Server1和Server2的主机名。<br />
# 但为了能够更快的更换集群中的服务器，推荐留空，否则更换服务器后必须对这个配置进行更改。<br />
[MYSQLD]<br />
[MYSQLD]</p>
<p>保存退出后，启动管理节点服务器Server3：<br />
# ndb_mgmd</p>
<p>启动管理节点后应该注意，这只是管理节点服务，并不是管理终端。因而你看不到任何关于启动后的输出信息。</p>
<p>四、配置集群服务器并启动MySQL<br />
=============================<br />
在Server1和Server2中都需要进行如下改动：</p>
<p># vi /etc/my.cnf</p>
<p>[mysqld]<br />
ndbcluster<br />
ndb-connectstring=192.168.0.3 #Server3的IP地址<br />
[mysql_cluster]<br />
ndb-connectstring=192.168.0.3 #Server3的IP地址</p>
<p>保存退出后，建立数据目录并启动MySQL：</p>
<p># mkdir /var/lib/mysql-cluster<br />
# cd /var/lib/mysql-cluster<br />
# /usr/local/mysql/bin/ndbd &#8211;initial -f /var/lib/mysql-cluster/config.ini<br />
# /etc/rc.d/init.d/mysqld start</p>
<p>可以把/usr/local/mysql/bin/ndbd加到/etc/rc.local中实现开机启动。<br />
注意：只有在第一次启动ndbd时或者对Server3的config.ini进行改动后才需要使用&#8211;initial参数！<br />
五、检查工作状态<br />
================<br />
回到管理节点服务器Server3上，并启动管理终端：</p>
<p># /usr/bin/ndb_mgm<br />
键入show命令查看当前工作状态：（下面是一个状态输出示例）</p>
<p>[root@mysql3 root]# /usr/bin/ndb_mgm<br />
&#8211; NDB Cluster &#8212; Management Client &#8211;<br />
ndb_mgm&gt; show<br />
Connected to Management Server at: localhost:1186<br />
Cluster Configuration<br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;<br />
[ndbd(NDB)] 2 node(s)<br />
id=2 @192.168.0.1 (Version: 4.1.9, Nodegroup: 0, Master)<br />
id=3 @192.168.0.2 (Version: 4.1.9, Nodegroup: 0)</p>
<p>[ndb_mgmd(MGM)] 1 node(s)<br />
id=1 @192.168.0.3 (Version: 4.1.9)</p>
<p>[mysqld(API)] 2 node(s)<br />
id=4 (Version: 4.1.9)<br />
id=5 (Version: 4.1.9)</p>
<p>ndb_mgm&gt;</p>
<p>如果上面没有问题，现在开始测试MySQL：<br />
注意，这篇文档对于MySQL并没有设置root密码，推荐你自己设置Server1和Server2的MySQL root密码。</p>
<p>在Server1中：</p>
<p># /usr/local/mysql/bin/mysql -u root -p<br />
&gt; use test;<br />
&gt; CREATE TABLE ctest (i INT) ENGINE=NDBCLUSTER;<br />
&gt; INSERT INTO ctest () valueS (1);<br />
&gt; SELECT * FROM ctest;</p>
<p>应该可以看到1 row returned信息（返回数值1）。</p>
<p>如果上述正常，则换到Server2上重复上面的测试，观察效果。如果成功，则在Server2中执行INSERT再换回到Server1观察是否工作正常。<br />
如果都没有问题，那么恭喜成功！<br />
六、破坏性测试<br />
==============<br />
将Server1或Server2的网线拔掉，观察另外一台集群服务器工作是否正常（可以使用SELECT查询测试）。测试完毕后，重新插入网线即可。</p>
<p>如果你接触不到物理服务器，也就是说不能拔掉网线，那也可以这样测试：<br />
在Server1或Server2上：</p>
<p># ps aux | grep ndbd<br />
将会看到所有ndbd进程信息：</p>
<p>root 5578 0.0 0.3 6220 1964 ? S 03:14 0:00 ndbd<br />
root 5579 0.0 20.4 492072 102828 ? R 03:14 0:04 ndbd<br />
root 23532 0.0 0.1 3680 684 pts/1 S 07:59 0:00 grep ndbd</p>
<p>然后杀掉一个ndbd进程以达到破坏MySQL集群服务器的目的：</p>
<p># kill -9 5578 5579</p>
<p>之后在另一台集群服务器上使用SELECT查询测试。并且在管理节点服务器的管理终端中执行show命令会看到被破坏的那台服务器的状态。<br />
测试完成后，只需要重新启动被破坏服务器的ndbd进程即可：</p>
<p># ndbd<br />
注意！前面说过了，此时是不用加&#8211;inital参数的！</p>
<p>至此，MySQL集群就配置完成了！</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/279/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>mrtg安装日志</title>
		<link>http://www.javagg.com/archives/250</link>
		<comments>http://www.javagg.com/archives/250#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:24:48 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=250</guid>
		<description><![CDATA[(1):修改snmp的配置文件：
#vi /etc/snmp/snmpd.conf
把第90行前面的注释符号去掉
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc
在62行先去掉#然后再进行修改：
Access notConfigGroup &#8220;&#8221; any noauth exact systemview none none
改为
access notConfigGroup &#8220;&#8221; any noauth exact mib2 none none
修改第41行(注意这不是必需)
com2sec notConfigUser  default      public
改成 com2sec notConfigUser  default      mrtg
(2)下面要启动你的snmp服务：
#/etc/rc.d/init.d/snmpd start
(3):开始安装mrtg
#tar zvxf mrtg-2.9.29.tar.gz
#cd mrtg-2.9.29
#./configure &#8211;prefix=/usr/local/mrtg &#8211;with-gd=/usr/include &#8211;with-gd-lib=/usr/lib &#8211;with-gd-inc=/usr/include &#8211;with-png=/usr/include &#8211;with-zlib=/usr/include
#make
#make install
如果上面某一步出现错误的话，可能是某个软件包没有正确安装，或者是其他原因，请仔细分析
倘若OK的话，我们就可以进行mrtg的配置了
(4):安装后配置
首先为mrtg的主页建立一个目录，常用的路径就是/data/www/html/
所以我们可以：
#mkdir /data/www/html/mrtg
#mkdir /data/www/html/mrtg/images
进入mrtg的安装目录后
#cp ./images/* /data/www/html/mrtg/images/
然后需要创建一个配置文件：
#/usr/local/mrtg/bin/cfgmaker &#8211;output=/data/www/html/mrtg/mrtg.cfg mrtg@192.168.1.100
修改配置文件：
#vi /data/www/html/mrtg/mrtg.cfg
将
# for UNIX
#WorkDir: /home/http/mrtg
改为
# for [...]]]></description>
			<content:encoded><![CDATA[<p>(1):修改snmp的配置文件：<br />
#vi /etc/snmp/snmpd.conf<br />
把第90行前面的注释符号去掉<br />
view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc<br />
在62行先去掉#然后再进行修改：<br />
Access notConfigGroup &#8220;&#8221; any noauth exact systemview none none<br />
改为<br />
access notConfigGroup &#8220;&#8221; any noauth exact mib2 none none<span id="more-250"></span></p>
<p>修改第41行(注意这不是必需)<br />
com2sec notConfigUser  default      public<br />
改成 com2sec notConfigUser  default      mrtg</p>
<p>(2)下面要启动你的snmp服务：<br />
#/etc/rc.d/init.d/snmpd start<br />
(3):开始安装mrtg<br />
#tar zvxf mrtg-2.9.29.tar.gz<br />
#cd mrtg-2.9.29<br />
#./configure &#8211;prefix=/usr/local/mrtg &#8211;with-gd=/usr/include &#8211;with-gd-lib=/usr/lib &#8211;with-gd-inc=/usr/include &#8211;with-png=/usr/include &#8211;with-zlib=/usr/include<br />
#make<br />
#make install<br />
如果上面某一步出现错误的话，可能是某个软件包没有正确安装，或者是其他原因，请仔细分析<br />
倘若OK的话，我们就可以进行mrtg的配置了<br />
(4):安装后配置<br />
首先为mrtg的主页建立一个目录，常用的路径就是/data/www/html/<br />
所以我们可以：<br />
#mkdir /data/www/html/mrtg<br />
#mkdir /data/www/html/mrtg/images<br />
进入mrtg的安装目录后<br />
#cp ./images/* /data/www/html/mrtg/images/<br />
然后需要创建一个配置文件：<br />
#/usr/local/mrtg/bin/cfgmaker &#8211;output=/data/www/html/mrtg/mrtg.cfg mrtg@192.168.1.100<br />
修改配置文件：<br />
#vi /data/www/html/mrtg/mrtg.cfg<br />
将<br />
# for UNIX<br />
#WorkDir: /home/http/mrtg<br />
改为<br />
# for UNIX<br />
WorkDir: /data/www/html/mrtg<br />
将<br />
#Options[_]: growright, bits前面的#也去掉，靠左对齐<br />
Options[_]: growright, bits</p>
<p>下来运行程序<br />
如果没有在profile里面加入语言设置的话，可以直接<br />
#/usr/local/mrtg/bin/mrtg /var/www/html/mrtg/mrtg/cfg<br />
会有警告错，连着运行3次，警告错就没有了<br />
，但是我在profilel里面进行了设置，所以，按照如下方式运行<br />
#env LANG=C /usr/local/mrtg/bin/mrtg /var/www/html/mrtg/mrtg.cfg<br />
一次，而且没有警告错误。<br />
制作首页：<br />
#/usr/local/mrtg/bin/indexmaker &#8211;output=/data/www/html/mrtg/index.html &#8211;title=&#8221;server tranffic statistic&#8221; /data/www/html/mrtg/mrtg.cfg<br />
设定5分钟运行一次：<br />
如果你当前是root身份登录的话：<br />
#crontab -e 编辑模式输入<br />
*/5 * * * * root /usr/local/mrtg/bin/mrtg /data/www/html/mrtg/mrtg.cfg<br />
保存<br />
重启httpd<br />
<a href="http://192.168.1.100/mrtg" target="_blank">http://192.168.1.100/mrtg</a> 你应该就可以看到网络使用情况的曲线了<br />
如果这里出现404错误，那么就是因为你的apache url映射路径没有配好，<br />
分二种情况<br />
一:没有配置jk<br />
#vi /usr/local/apache2.2.6/conf/httpd.conf<br />
Alias /mrtg &#8220;/data/www/html/mrtg&#8221;</p>
<p>    Options Indexes MultiViews<br />
    AllowOverride None<br />
    Order allow,deny<br />
    Allow from all</p>
<p>重启apache再访问就可以了<br />
二：如果配置了jk<br />
这时就烦点了，要配置你的uriworkermap.properties<br />
首先你也要把没有配置JK的情况也配上<br />
因为一般都是把所有请求都转到JK的tomcat处理的<br />
所以这时你就要把/mrtg不分发到jk<br />
# vi /usr/local/apache2.2.6/conf/uriworkermap.properties<br />
内容如下<br />
/*=app<br />
/jkstatus=status<br />
我把所有的请求都分发到app这个群集上了，这时你就要增加一句<br />
!/mrtg/*=app<br />
呵呵，大家也看明白是什么意思了吧<br />
这时再打开<a href="http://192.168.1.100/mrtg" target="_blank">http://192.168.1.100/mrtg</a>  OK!!!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/250/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Linux操作系统平台Vi指令大全</title>
		<link>http://www.javagg.com/archives/256</link>
		<comments>http://www.javagg.com/archives/256#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:24:48 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=256</guid>
		<description><![CDATA[/根目录下的文件夹输入”/”,回车里面有很多文件夹,如:etc,home,lib,mnt等等etc:存放用户名和密码home:每个用户有个文件夹,存放在这里lib:操作系统文件等mnt:挂扣用的opt:java工具bea:web编程的一些东西sbin,bin,usr:这三个文件夹都是存放unix的命令的tmp:临时文件夹常用的操作:查看当前目录:pwd修改密码:passwd更换模式:csh,bash远程登陆:telnet 服务器ip回到上级目录:cd ..查看该目录下的文件夹:ls打开文件:vi /文件夹/文件文件显示的格式:root:x:0:root…:/root;/bin/bash 用户名,加密,序号,组,默认路径退出:esc shift+: q! quit exit清空:clear显示当前目录所有文件:ls –a显示当前目录所有文件和详细信息:ls –al新建文件:vi 文件名文件的权限:chmod g –(+)r w x    u g o s 新建文件(不能编辑)更新文件的访问时间,如果存在文件,更新,不存在,建立:touch 文件名创建目录:mkdir 目录名/目录名创建多个目录:mkdir 目录名 目录名…..在主目录创建下目录:mkdir ~/目录名创建多级目录:mkdir –p 目录名/目录名在覆盖文件前做个提示:cp –I文件和文件内容间的拷贝：cp复制目录：cp –r 目录　目录复制文件：cp 文件　文件移动文件：mv 要移动的文件　要移动到的目录移动目录：mv -fi要移动的目录　要移动到的目录修改文件或目录的名字：mv 文件　名字删除文件：rm rm –I提示删除目录中的所有内容包括目录：rm –r 要删除的文件夹连接：软连接：相当于创建快捷方式，作用：修改linux内核会用到他 in硬连接：如果删除源文件，被连接的文件内容还存在帮助：man 命令补全名字：table显示日历：cal输入：＞输出：＜查看文件内容：cat 例子：cat&#60;文件&#62;文件分屏显示：ls –l/目录｜more合并到一个新的文件：cat a.txt b.txt设置环境变量：csh中　.cshrc source cshrcbash中　.profile 执行..profile或者source .profile本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等，其中，使用最为广泛的是vi，而vi命令繁多，论坛里好像这方面的总结不多，以下稍做总结，以资共享！渴望更正和补充！
进入vi的命令
vi filename :打开或新建文件，并将光标置于第一行首
vi +n filename ：打开文件，并将光标置于第n行首
vi [...]]]></description>
			<content:encoded><![CDATA[<p><strong>/</strong><strong>根目录下的文件夹</strong>输入”/”,回车里面有很多文件夹,如:etc,home,lib,mnt等等etc:存放用户名和密码home:每个用户有个文件夹,存放在这里lib:操作系统文件等mnt:挂扣用的opt:java工具bea:web编程的一些东西sbin,bin,usr:这三个文件夹都是存放unix的命令的tmp:临时文件夹<strong></strong><strong>常用的操作:</strong>查看当前目录:pwd修改密码:passwd更换模式:csh,bash远程登陆:telnet 服务器ip回到上级目录:cd ..查看该目录下的文件夹:ls打开文件:vi /文件夹/文件文件显示的格式:root:x:0:root…:/root;/bin/bash 用户名,加密,序号,组,默认路径退出:esc shift+: q! quit exit清空:clear显示当前目录所有文件:ls –a显示当前目录所有文件和详细信息:ls –al新建文件:vi 文件名文件的权限:chmod g –(+)r w x    u g o s 新建文件(不能编辑)更新文件的访问时间,如果存在文件,更新,不存在,建立:touch 文件名创建目录:mkdir 目录名/目录名创建多个目录:mkdir 目录名 目录名…..在主目录创建下目录:mkdir ~/目录名创建多级目录:mkdir –p 目录名/目录名在覆盖文件前做个提示:cp –I文件和文件内容间的拷贝：cp复制目录：cp –r 目录　目录复制文件：cp 文件　文件移动文件：mv 要移动的文件　要移动到的目录移动目录：mv -fi要移动的目录　要移动到的目录修改文件或目录的名字：mv 文件　名字删除文件：rm rm –I提示删除目录中的所有内容包括目录：rm –r 要删除的文件夹连接：软连接：相当于创建快捷方式，作用：修改linux内核会用到他 in硬连接：如果删除源文件，被连接的文件内容还存在帮助：man 命令补全名字：table显示日历：cal输入：＞输出：＜查看文件内容：cat 例子：cat&lt;文件&gt;文件分屏显示：ls –l/目录｜more合并到一个新的文件：cat a.txt b.txt设置环境变量：csh中　.cshrc source cshrcbash中　.profile 执行..profile或者source .profile本编辑器是所有计算机系统中最常用的一种工具。UNIX下的编辑器有ex,sed和vi等，其中，使用最为广泛的是vi，而vi命令繁多，论坛里好像这方面的总结不多，以下稍做总结，以资共享！渴望更正和补充！<span id="more-256"></span></p>
<p>进入vi的命令<br />
vi filename :打开或新建文件，并将光标置于第一行首<br />
vi +n filename ：打开文件，并将光标置于第n行首<br />
vi + filename ：打开文件，并将光标置于最后一行首<br />
vi +/pattern filename：打开文件，并将光标置于第一个与pattern匹配的串处<br />
vi -r filename ：在上次正用vi编辑时发生系统崩溃，恢复filename<br />
vi filename&#8230;.filename ：打开多个文件，依次进行编辑</p>
<p>移动光标类命令<br />
h ：光标左移一个字符<br />
l ：光标右移一个字符<br />
space：光标右移一个字符<br />
Backspace：光标左移一个字符<br />
k或Ctrl+p：光标上移一行<br />
j或Ctrl+n ：光标下移一行<br />
Enter ：光标下移一行<br />
w或W ：光标右移一个字至字首<br />
b或B ：光标左移一个字至字首<br />
e或E ：光标右移一个字至字尾<br />
) ：光标移至句尾<br />
( ：光标移至句首<br />
}：光标移至段落开头<br />
{：光标移至段落结尾<br />
nG：光标移至第n行首<br />
n+：光标下移n行<br />
n-：光标上移n行<br />
n$：光标移至第n行尾<br />
H ：光标移至屏幕顶行<br />
M ：光标移至屏幕中间行<br />
L ：光标移至屏幕最后行<br />
0：（注意是数字零）光标移至当前行首<br />
$：光标移至当前行尾</p>
<p>屏幕翻滚类命令<br />
Ctrl+u：向文件首翻半屏<br />
Ctrl+d：向文件尾翻半屏<br />
Ctrl+f：向文件尾翻一屏<br />
Ctrl＋b；向文件首翻一屏<br />
nz：将第n行滚至屏幕顶部，不指定n时将当前行滚至屏幕顶部。</p>
<p>插入文本类命令<br />
i ：在光标前<br />
I ：在当前行首<br />
a：光标后<br />
A：在当前行尾<br />
o：在当前行之下新开一行<br />
O：在当前行之上新开一行<br />
r：替换当前字符<br />
R：替换当前字符及其后的字符，直至按ESC键<br />
s：从当前光标位置处开始，以输入的文本替代指定数目的字符<br />
S：删除指定数目的行，并以所输入文本代替之<br />
ncw或nCW：修改指定数目的字<br />
nCC：修改指定数目的行</p>
<p>删除命令<br />
ndw或ndW：删除光标处开始及其后的n-1个字<br />
do：删至行首<br />
d$：删至行尾<br />
ndd：删除当前行及其后n-1行<br />
x或X：删除一个字符，x删除光标后的，而X删除光标前的<br />
Ctrl+u：删除输入方式下所输入的文本</p>
<p>搜索及替换命令<br />
/pattern：从光标开始处向文件尾搜索pattern<br />
?pattern：从光标开始处向文件首搜索pattern<br />
n：在同一方向重复上一次搜索命令<br />
N：在反方向上重复上一次搜索命令<br />
：s/p1/p2/g：将当前行中所有p1均用p2替代<br />
：n1,n2s/p1/p2/g：将第n1至n2行中所有p1均用p2替代<br />
：g/p1/s//p2/g：将文件中所有p1均用p2替换</p>
<p>选项设置<br />
all：列出所有选项设置情况<br />
term：设置终端类型<br />
ignorance：在搜索中忽略大小写<br />
list：显示制表位(Ctrl+I)和行尾标志（$)<br />
number：显示行号<br />
report：显示由面向行的命令修改过的数目<br />
terse：显示简短的警告信息<br />
warn：在转到别的文件时若没保存当前文件则显示NO write信息<br />
nomagic：允许在搜索模式中，使用前面不带“\”的特殊字符<br />
nowrapscan：禁止vi在搜索到达文件两端时，又从另一端开始<br />
mesg：允许vi显示其他用户用write写到自己终端上的信息</p>
<p>最后行方式命令<br />
：n1,n2 co n3：将n1行到n2行之间的内容拷贝到第n3行下<br />
：n1,n2 m n3：将n1行到n2行之间的内容移至到第n3行下<br />
：n1,n2 d ：将n1行到n2行之间的内容删除<br />
：w ：保存当前文件<br />
：e filename：打开文件filename进行编辑<br />
：x：保存当前文件并退出<br />
：q：退出vi<br />
：q!：不保存文件并退出vi<br />
：!command：执行shell命令command<br />
：n1,n2 w!command：将文件中n1行至n2行的内容作为command的输入并执行之，若不指定n1，n2，则表示将整个文件内容作为command的输入<br />
：r!command：将命令command的输出结果放到当前行</p>
<p>寄存器操作<br />
&#8220;?nyy：将当前行及其下n行的内容保存到寄存器？中，其中?为一个字母，n为一个数字<br />
&#8220;?nyw：将当前行及其下n个字保存到寄存器？中，其中?为一个字母，n为一个数字<br />
&#8220;?nyl：将当前行及其下n个字符保存到寄存器？中，其中?为一个字母，n为一个数字<br />
&#8220;?p：取出寄存器？中的内容并将其放到光标位置处。这里？可以是一个字母，也可以是一个数字<br />
ndd：将当前行及其下共n行文本删除，并将所删内容放到1号删除寄存器中。<br />
——————————————————————————————————————————————————————————————————————————————————————————</p>
<p><strong>VI的使用</strong><br />
&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8212;&#8211;</p>
<p>一、插入文本<br />
┌──┬────────────┐<br />
│命令│描述│<br />
├──┼────────────┤<br />
│i │在当前字符前插入文本│<br />
├──┼────────────┤<br />
│I │在行首插入文本 │<br />
├──┼────────────┤<br />
│a │在当前字符后添加文本│<br />
├──┼────────────┤<br />
│A │在行末添加文本│<br />
├──┼────────────┤<br />
│o │在当前行后面插入一空行│<br />
├──┼────────────┤<br />
│O │在当前行前面插入一空行│<br />
├──┼────────────┤<br />
│R │以改写方式输入文本│<br />
└──┴────────────┘<br />
二、移动光标<br />
┌─────┬───────────┐<br />
│命令│描述│<br />
├─────┼───────────┤<br />
│j或下箭头 │向下移动一行│<br />
├─────┼───────────┤<br />
│k或上箭头 │向上移动一行│<br />
├─────┼───────────┤<br />
│h或左箭头 │左移一个字符│<br />
├─────┼───────────┤<br />
│l或右箭头 │右移一个字符│<br />
├─────┼───────────┤<br />
│w │右移一个词│<br />
├─────┼───────────┤<br />
│W │右移一个以空格分隔的词│<br />
├─────┼───────────┤<br />
│b │左移一个词│<br />
├─────┼───────────┤<br />
│B │左移一个以空格分隔的词│<br />
├─────┼───────────┤<br />
│0 │移到行首│<br />
│Ctrl-F│向前翻页│<br />
├─────┼───────────┤<br />
│Ctrl-B│向后翻页│<br />
├─────┼───────────┤<br />
│nG│到第n行 │<br />
├─────┼───────────┤<br />
│G │到最后一行│<br />
└─────┴───────────┘<br />
三、替换文本<br />
┌─────┬──────┐<br />
│命令│描述│<br />
├─────┼──────┤<br />
│$ │到行尾│<br />
├─────┼──────┤<br />
│( │到句子的开头│<br />
├─────┼──────┤<br />
│) │到句子的末尾│<br />
├─────┼──────┤<br />
│{ │到段落的开头│<br />
├─────┼──────┤<br />
│} │到段落的末尾│<br />
└─────┴──────┘</p>
<p>四、删除文本<br />
┌───┬───────────┐<br />
│命令│描述 │<br />
├───┼───────────┤<br />
│r │替换一个字符 │<br />
├───┼───────────┤<br />
│c │修改文本直到按下Esc健 │<br />
├───┼───────────┤<br />
│cw│修改下一个词 │<br />
├───┼───────────┤<br />
│cnw │修改接下来的n个词 │<br />
└───┴───────────┘<br />
五、文本编辑<br />
┌──┬──────────────────────┐<br />
│命寺│描述│<br />
├──┼──────────────────────┤<br />
│yy│将一行文本移到缺省缓冲区中 │<br />
├──┼──────────────────────┤<br />
│yn│将下一个词移到缺省缓冲区中 │<br />
├──┼──────────────────────┤<br />
│ynw │将后面的n个词移到缺省缓冲区中 │<br />
├──┼──────────────────────┤<br />
│p │如果缺省缓冲区中包含一行文本，则在当前│<br />
││行后面插入一个空行井将缺省缓冲区中的声│<br />
││容粘贴到这一行中；如果缺省缓冲区中包含│<br />
││多个词，把这些词粘贴到光标的右边．│<br />
├──┼──────────────────────┤<br />
│P │如果缺省缓冲区中包含一行文本，则正当前 │<br />
│ │行前面插入一个空行井将缺省缓冲区中的内 │<br />
││容粘贴到这一行中；如果缺省缓冲区中包含 │<br />
│ │多个词，把这些词粘贴到光标的左边 │<br />
└──┴──────────────────────┘<br />
六、保存退出<br />
┌───────────┬───────────────┐<br />
│命令│描述│<br />
├───────────┼───────────────┤<br />
│zz│保存并退出│<br />
├───────────┼───────────────┤<br />
│:w filename │写入文件 │<br />
├───────────┼───────────────┤<br />
│:W│写入文件│<br />
├───────────┼───────────────┤<br />
│:x│保存(如果当前文件修改过)并退出│<br />
├───────────┼───────────────┤<br />
│:q! │不保存文件，直接退出 │<br />
├───────────┼───────────────┤<br />
│:q│退出vi│<br />
└───────────┴───────────────┘</p>
<p>VI常用技巧</p>
<p>ideal(2002-01-29 11:24)</p>
<p>〖返回〗〖转发〗</p>
<p>VI命令可以说是Unix/Linux世界里最常用的编辑文件的命令了，但是因为它的命令集众多，很多人都不习惯使用它，其实您只需要掌握基本命令，然后加以灵活运用，就会发现它的优势，并会逐渐喜欢使用这种方法。本文旨在介绍VI的一些最常用命令和高级应用技巧。</p>
<p>一、基本命令介绍</p>
<p>&#8212;- 1．光标命令</p>
<p>k、j、h、l——上、下、左、右光标移动命令。虽然您可以在Linux中使用键盘右边的4个光标键，但是记住这4个命令还是非常有用的。这4个键正是右手在键盘上放置的基本位置。<br />
nG——跳转命令。n为行数，该命令立即使光标跳到指定行。<br />
Ctrl+G——光标所在位置的行数和列数报告。<br />
w、b——使光标向前或向后跳过一个单词。<br />
&#8212;- 2．编辑命令<br />
i、a、r——在光标的前、后以及所在处插入字符命令(i=insert、a=append、r=replace)。<br />
cw、dw——改变(置换)/删除光标所在处的单词的命令 (c=change、d=delete)。<br />
x、d$、dd——删除一个字符、删除光标所在处到行尾的所有字符以及删除整行的命令。<br />
&#8212;- 3．查找命令<br />
&#8212;- /string、?string——从光标所在处向后或向前查找相应的字符串的命令。<br />
&#8212;- 4．拷贝复制命令<br />
&#8212;- yy、p——拷贝一行到剪贴板或取出剪贴板中内容的命令。</p>
<p>二、常见问题及应用技巧</p>
<p>&#8212;- 1．在一个新文件中读/etc/passwd中的内容，取出用户名部分。<br />
&#8212;- vi file<br />
&#8212;- :r /etc/passwd 在打开的文件file中光标所在处读入/etc/passwd<br />
&#8212;- :%s/:.*//g 删除/etc/passwd中用户名后面的从冒号开始直到行尾的所有部分。<br />
&#8212;- 您也可以在指定的行号后读入文件内容，例如使用命令“:3r /etc/passwd”从新文件的第3行开始读入 /etc/passwd的所有内容。<br />
&#8212;- 我们还可以使用以下方法删掉文件中所有的空行及以#开始的注释行。<br />
&#8212;- #cat squid.conf.default | grep -v ^$ | grep -v ^#</p>
<p>&#8212;- 2．在打开一个文件编辑后才知道登录的用户对该文件没有写的权限，不能存盘，需要将所做修改存入临时文件。<br />
&#8212;- vi file<br />
&#8212;- :w /tmp/1 保存所做的所有修改，也可以将其中的某一部分修改保存到临时文件，例如仅仅把第20～59行之间的内容存盘成文件/tmp/1，我们可以键入如下命令。<br />
&#8212;- vi file<br />
&#8212;- :20,59w /tmp/1</p>
<p>&#8212;- 3．用VI编辑一个文件，但需要删除大段的内容。<br />
&#8212;- 首先利用编辑命令“vi file”打开文件，然后将光标移到需要删除的行处按Ctrl+G显示行号，再到结尾处再按Ctrl+G，显示文件结尾的行号。<br />
&#8212;- :23,1045d 假定2次得到的行号为23和1045，则把这期间的内容全删除，也可以在要删除的开始行和结束行中用ma、mb命令标记，然后利用“:a,bd”命令删除。</p>
<p>&#8212;- 4．在整个文件的各行或某几行的行首或行尾加一些字符串。<br />
&#8212;- vi file<br />
&#8212;- :3,$s/^/some string / 在文件的第一行至最后一行的行首插入“some string”。<br />
&#8212;- :%s/$/some string/g 在整个文件每一行的行尾添加“some string”。<br />
&#8212;- :%s/string1/string2/g 在整个文件中替换“string1”成“string2”。<br />
&#8212;- :3,7s/string1/string2/ 仅替换文件中的第3行到第7行中的“string1”成“string2”。<br />
&#8212;- 注意: 其中s为substitute，%表示所有行，g表示global。</p>
<p>&#8212;- 5．同时编辑2个文件，拷贝一个文件中的文本并粘贴到另一个文件中。<br />
&#8212;- vi file1 file2<br />
&#8212;- yy 在文件1的光标处拷贝所在行<br />
&#8212;- :n 切换到文件2 (n=next)<br />
&#8212;- p 在文件2的光标所在处粘贴所拷贝的行<br />
&#8212;- :n 切换回文件1</p>
<p>&#8212;- 6．替换文件中的路径。<br />
&#8212;- 使用命令“:%s#/usr/bin#/bin#g”可以把文件中所有路径/usr/bin换成/bin。也可以使用命令“:%s//usr/bin//bin/g”实现，其中“”是转义字符，表明其后的“/”字符是具有实际意义的字符，不是分隔符。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/256/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>memcahced安装日志</title>
		<link>http://www.javagg.com/archives/259</link>
		<comments>http://www.javagg.com/archives/259#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:24:48 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=259</guid>
		<description><![CDATA[step1)
下载 libevent-1.3b.tar.gz, memcached-1.2.1.tar.gz
step2)安装libevent
tar -xzvf libevent-1.3b.tar.gzcd libevent-1.3b./configure &#8211;prefix=/usr/local/weip/libevent-1.3bmake &#38;&#38; make install
step2)安装memcached
tar -xzvf memcached-1.2.1.tar.gzcd memcached-1.2.1./configure &#8211;prefix=/usr/local/weip/memcached-1.2.1这一步发生错误： If it&#8217;s already installed, specify its path using &#8211;with-libevent=/dir/于是使用下一个命令：./configure &#8211;prefix=/usr/local/weip/memcached-1.2.1  &#8212; with-libevent=/usr/local/weip/libevent-1.3bmake &#38;&#38; make install
step3)启动
/usr/local/weip/memcached-1.2.1/bin/memcached -d -m 128 -l 192.168.100.231 -u root
又发生错误：
error while loading shared libraries: libevent-1.3b.so.1: cannot open shared object file: No such file or directory
于是：
cp /usr/local/weip/libevent-1.3b/lib/* /usr/lib
然后再启动，ok
可以通过
　ps -efww&#124;grep memcached
看到：
root  [...]]]></description>
			<content:encoded><![CDATA[<p>step1)<br />
下载 libevent-1.3b.tar.gz, memcached-1.2.1.tar.gz</p>
<p>step2)安装libevent</p>
<p>tar -xzvf libevent-1.3b.tar.gzcd libevent-1.3b./configure &#8211;prefix=/usr/local/weip/libevent-1.3bmake &amp;&amp; make install<br />
step2)安装memcached</p>
<p>tar -xzvf memcached-1.2.1.tar.gzcd memcached-1.2.1./configure &#8211;prefix=/usr/local/weip/memcached-1.2.1这一步发生错误： If it&#8217;s already installed, specify its path using &#8211;with-libevent=/dir/于是使用下一个命令：./configure &#8211;prefix=/usr/local/weip/memcached-1.2.1  &#8212; with-libevent=/usr/local/weip/libevent-1.3bmake &amp;&amp; make install<br />
step3)启动<span id="more-259"></span></p>
<p>/usr/local/weip/memcached-1.2.1/bin/memcached -d -m 128 -l 192.168.100.231 -u root<br />
又发生错误：<br />
error while loading shared libraries: libevent-1.3b.so.1: cannot open shared object file: No such file or directory</p>
<p>于是：</p>
<p>cp /usr/local/weip/libevent-1.3b/lib/* /usr/lib<br />
然后再启动，ok</p>
<p>可以通过</p>
<p>　ps -efww|grep memcached<br />
看到：</p>
<p>root    18018    1  0 15:21 ?        00:00:00/usr/local/weip/memcached-1.2.1/bin/memcached -d -m 128 -l192.168.100.231 -u rootroot    18020 15155  0 15:22 pts/2    00:00:00 grep memcached</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/259/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>linux下利用crontab命令大全</title>
		<link>http://www.javagg.com/archives/263</link>
		<comments>http://www.javagg.com/archives/263#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:24:48 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=263</guid>
		<description><![CDATA[linux下利用crontab命令大全

crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序
使用cron服务，用 service crond status 查看 cron服务状态，如果没有启动则 service crond start启动它，
cron服务是一个定时执行的服务，可以通过crontab 命令添加或者编辑需要定时执行的任务：
crontab -u //设定某个用户的cron服务，一般root用户在执行这个命令的时候需要此参数
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除没个用户的cron服务
crontab -e //编辑某个用户的cron服务
比如说root查看自己的cron设置：crontab -u root -l
再例如，root想删除fred的cron设置：crontab -u fred -r
在编辑cron服务时，编辑的内容有一些格式和约定，输入：crontab -u root -e
进入vi编辑模式，编辑的内容一定要符合下面的格式：*/1 * * * * ls &#62;&#62; /tmp/ls.txt
编辑/etc/crontab文件，在末尾加上一行： 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。
需要将crond设置为系统启动后自动启动的服务，可以在/etc/rc.d/rc.local 中，在末尾加上
service crond start
如果还需要在系统启动十加载其他服务，可以继续加上其他服务的启动命令。
比如： service mysqld start
基本用法:
1. crontab -l
     列出当前的crontab任务
2. crontab -d
     删除当前的crontab任务
3. [...]]]></description>
			<content:encoded><![CDATA[<p>linux下利用crontab命令大全</p>
<div>
<p>crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序</p>
<p>使用cron服务，用 service crond status 查看 cron服务状态，如果没有启动则 service crond start启动它，</p>
<p>cron服务是一个定时执行的服务，可以通过crontab 命令添加或者编辑需要定时执行的任务：<span id="more-263"></span></p>
<p>crontab -u //设定某个用户的cron服务，一般root用户在执行这个命令的时候需要此参数</p>
<p>crontab -l //列出某个用户cron服务的详细内容</p>
<p>crontab -r //删除没个用户的cron服务</p>
<p>crontab -e //编辑某个用户的cron服务</p>
<p>比如说root查看自己的cron设置：crontab -u root -l</p>
<p>再例如，root想删除fred的cron设置：crontab -u fred -r</p>
<p>在编辑cron服务时，编辑的内容有一些格式和约定，输入：crontab -u root -e</p>
<p>进入vi编辑模式，编辑的内容一定要符合下面的格式：*/1 * * * * ls &gt;&gt; /tmp/ls.txt</p>
<p><strong>编辑/etc/crontab文件，在末尾加上一行： 30 5 * * * root init 6 这样就将系统配置为了每天早上5点30自动重新启动。</strong></p>
<p><strong>需要将crond设置为系统启动后自动启动的服务，可以在/etc/rc.d/rc.local 中，在末尾加上</strong></p>
<p><strong>service crond start</strong></p>
<p>如果还需要在系统启动十加载其他服务，可以继续加上其他服务的启动命令。</p>
<p>比如： service mysqld start</p>
<p>基本用法:<br />
1. crontab -l<br />
     列出当前的crontab任务<br />
2. crontab -d<br />
     删除当前的crontab任务<br />
3. crontab -e (solaris5.8上面是 crontab -r)<br />
     编辑一个crontab任务,ctrl_D结束<br />
4. crontab filename<br />
     以filename做为crontab的任务列表文件并载入</p>
<p>crontab file的格式:<br />
    crontab 文件中的行由 6 个字段组成，不同字段间用空格或 tab 键分隔。前 5 个字段指定命令要运行的时间<br />
       分钟 (0-59)<br />
       小时 (0-23)<br />
       日期 (1-31)<br />
       月份 (1-12)<br />
       星期几（0-6，其中 0 代表星期日）<br />
       第 6 个字段是一个要在适当时间执行的字符串</p>
<p>例子:<br />
      #MIN HOUR DAY MONTH DAYOFWEEK COMMAND<br />
      #每天早上6点10分<br />
      10 6 * * * date<br />
      #每两个小时<br />
      0 */2 * * * date    (solaris 5.8似乎不支持此种写法)<br />
      #晚上11点到早上8点之间每两个小时，早上8点<br />
      0 23-7/2，8 * * * date<br />
      #每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点<br />
      0 11 4 * mon-wed date<br />
      #1月份日早上4点<br />
      0 4 1 jan * date<br />
补充：在使用crontab的时候，要特别注意的是运行脚本中能够访问到的环境变量和当前测试环境中的环境变量未必一致，一个比较保险的做法是在运行的脚本程序中自行设置环境变量(export)</p>
<p>（1）先建一个文件crond.txt如下， 每天早上5点36分重新启动</p>
<div>36 5 * * * reboot</p>
<p>（2）上传到/opt目录</p>
<p>（3）运行命令<br />
crontab /opt/crond.txt<br />
crontab -l</p></div>
<p><strong>让配置文件生效：</strong>如果让配置文件生效，还得重新启动cron，切记，既然每个用户下的cron配置文件修改后。也要重新启动cron服务器。</p>
<p><strong>在Fedora 和Redhat中，我们应该用；</strong></p>
<div>[root@localhost ~]# /etc/init.d/crond restart</div>
<p> </p>
<p>如果让crond 在开机时运行，应该改变其运行级别；</p>
<div>[root@localhost ~]# chkconfig &#8211;levels 35 crond on</div>
<p> </p>
<p>service crond status 查看 cron服务状态，如果没有启动则 service crond start启动它， cron服务是一个定时执行的服务，可以通过crontab 命令添加或者编辑需要定时执行的任务</p>
<table border="0" cellspacing="0" cellpadding="10" align="left">
<tbody>
<tr>
<td valign="top"> </td>
</tr>
</tbody>
</table>
<p> </p>
<p>命令简介</p>
<p>crontab-操作每个用户的守护程序和该执行的时间表。</p>
<p>部分参数说明<br />
crontab file [-u user]-用指定的文件替代目前的crontab。<br />
crontab-[-u user]-用标准输入替代目前的crontab.<br />
crontab-1[user]-列出用户目前的crontab.<br />
crontab-e[user]-编辑用户目前的crontab.<br />
crontab-d[user]-删除用户目前的crontab.<br />
crontab-c dir- 指定crontab的目录。<br />
crontab文件的格式：M H D m d cmd.<br />
M: 分钟（0-59）。<br />
H：小时（0-23）。<br />
D：天（1-31）。<br />
m: 月（1-12）。<br />
d: 一星期内的天（0~6，0为星期天）。<br />
cmd要运行的程序，程序被送入sh执行，这个shell只有USER,HOME,SHELL这三个环境变量。<br />
下面是一个例子文件：<br />
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND<br />
#每天早上6点<br />
106* * * date</p>
<p>#每两个小时<br />
0*/2* * * date</p>
<p>#晚上11点到早上8点之间每两个小时，早上部点<br />
0 23-7/2，8* * * date</p>
<p>#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点<br />
0 11 4* mon-wed date</p>
<p>#1月份日早上4点<br />
0 4 1 jan* date<br />
范例<br />
lark:~&gt;crontab-1 列出用户目前的crontab.<br />
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND<br />
10 6* * * date<br />
0*/2* * * date<br />
0 23-7/2,8 * * * date<br />
lark:~&gt;</p>
<div>Crontab文件的每一行由六个域(minutes、hours、day of month、month、day of week、 command)组 成，域之间用空格或Tab分开，其中：<br />
minutes： 分钟域，值的范围是0到59<br />
hours： 小时域，值的范围是0到23<br />
day of month： 日期，值的范围是1到31<br />
month： 月份，值的范围是1到12<br />
day of week： 星期，值的范围是0到6，星期日值为0<br />
command： 所要运行的命令<br />
如果一个域是*，表明命令可以在该域所有可能的取值范围内执行。<br />
如果一个域是由连字符隔开的两个数字，表明命令可以在两个数字之间的范围内执行（包括两个数字 本身）。<br />
如果一个域是由逗号隔开的一系列值组成的，表明命令可以在这些值组成的范围内执行。<br />
如果日期域和星期域都有值，则这两个域都有效。<br />
编写一个文件，用以启动自动备份进程。</p>
<p>cd /opt<br />
touch reboot.txt<br />
在reboot.txt中添加一下内容:<br />
0 4 * * * reboot</p>
<p>crontab /opt/reboot.txt<br />
用crontab -e编辑定时操作，例如加入下行命令：<br />
用crontab －l命令来查看</p>
<p>注意:需要启动服务(添加在rc.local中)<br />
    2，重启crond任务</p>
<p>   /etc/init.d/cron restart   (ubuntu下)</p>
<p><strong>第一种 在Fedora或Redhat 等以RPM包管理的系统中；<br />
</strong> </p>
<div>[root@localhost ~]# /etc/init.d/crond start<br />
[root@localhost ~]# /etc/init.d/crond stop<br />
[root@localhost ~]# /etc/init.d/crond restart</div>
<p>   /etc/rc.d/init.d/crond restart</p></div>
</div>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/263/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>在linux中修改系统时间</title>
		<link>http://www.javagg.com/archives/266</link>
		<comments>http://www.javagg.com/archives/266#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:24:48 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=266</guid>
		<description><![CDATA[近日发现我的linux服务器的时间都设错了，安装时没有注意到。。。。可以使用date命令修改服务器时间
date命令

　　date命令的功能是显示和设置系统日期和时间。
 
　　该命令的一般格式为： date [选项] 显示时间格式（以+开头，后面接格式）

　　date 设置时间格式
 
　　命令中各选项的含义分别为：

　　-d datestr, &#8211;date datestr 显示由datestr描述的日期

　　-s datestr, &#8211;set datestr 设置datestr 描述的日期

　　-u, &#8211;universal 显示或设置通用时间
 
　　时间域

　　% H 小时（00..23）

　　% I 小时（01..12）

　　% k 小时（0..23）

　　% l 小时（1..12）

　　% M 分（00..59）

　　% p 显示出AM或PM

　　% r 时间（hh：mm：ss AM或PM），12小时

　　% s 从1970年1月1日00：00：00到目前经历的秒数

　　% S 秒（00..59）

　　% T 时间（24小时制）（hh:mm:ss）

　　% X 显示时间的格式（％H:％M:％S）

　　% Z 时区 日期域

　　% a 星期几的简称（ Sun..Sat）

　　% A 星期几的全称（ Sunday..Saturday）

　　% b 月的简称（Jan..Dec）

　　% B 月的全称（January..December）

　　% c 日期和时间（ Mon [...]]]></description>
			<content:encoded><![CDATA[<p>近日发现我的linux服务器的时间都设错了，安装时没有注意到。。。。可以使用date命令修改服务器时间</p>
<div>date命令</div>
<div>
　　date命令的功能是显示和设置系统日期和时间。</div>
<div> </div>
<div>　　该命令的一般格式为： date [选项] 显示时间格式（以+开头，后面接格式）<span id="more-266"></span></div>
<div>
　　date 设置时间格式</div>
<div> </div>
<div>　　命令中各选项的含义分别为：</div>
<div>
　　-d datestr, &#8211;date datestr 显示由datestr描述的日期</div>
<div>
　　-s datestr, &#8211;set datestr 设置datestr 描述的日期</div>
<div>
　　-u, &#8211;universal 显示或设置通用时间</div>
<div> </div>
<div>　　时间域</div>
<div>
　　% H 小时（00..23）</div>
<div>
　　% I 小时（01..12）</div>
<div>
　　% k 小时（0..23）</div>
<div>
　　% l 小时（1..12）</div>
<div>
　　% M 分（00..59）</div>
<div>
　　% p 显示出AM或PM</div>
<div>
　　% r 时间（hh：mm：ss AM或PM），12小时</div>
<div>
　　% s 从1970年1月1日00：00：00到目前经历的秒数</div>
<div>
　　% S 秒（00..59）</div>
<div>
　　% T 时间（24小时制）（hh:mm:ss）</div>
<div>
　　% X 显示时间的格式（％H:％M:％S）</div>
<div>
　　% Z 时区 日期域</div>
<div>
　　% a 星期几的简称（ Sun..Sat）</div>
<div>
　　% A 星期几的全称（ Sunday..Saturday）</div>
<div>
　　% b 月的简称（Jan..Dec）</div>
<div>
　　% B 月的全称（January..December）</div>
<div>
　　% c 日期和时间（ Mon Nov 8 14：12：46 CST 1999）</div>
<div>
　　% d 一个月的第几天（01..31）</div>
<div>
　　% D 日期（mm／dd／yy）</div>
<div>
　　% h 和%b选项相同</div>
<div>
　　% j 一年的第几天（001..366）</div>
<div>
　　% m 月（01..12）</div>
<div>
　　% w 一个星期的第几天（0代表星期天）</div>
<div>
　　% W 一年的第几个星期（00..53，星期一为第一天）</div>
<div>
　　% x 显示日期的格式（mm/dd/yy）</div>
<div>
　　% y 年的最后两个数字（ 1999则是99）</div>
<div>
　　% Y 年（例如：1970，1996等）</div>
<div> </div>
<div>　　需要特别说明的是，只有超级用户才能用date命令设置时间，一般用户只能用date命令显示时间。</div>
<div> </div>
<div>　　例1：用指定的格式显示时间。</div>
<div>
　　$ date ‘+This date now is =&gt;%x ，time is now =&gt;%X ，thank you !’</div>
<div>
　　This date now is =&gt;11/12/99 ，time is now =&gt;17:53:01 ，thank you !</div>
<div> </div>
<div>　　例2：用预定的格式显示当前的时间。</div>
<div>
　　# date</div>
<div>
　　Fri Nov 26 15：20：18 CST 1999</div>
<div> </div>
<div>　　例3：设置时间为下午14点36分。</div>
<div>
　　# date -s 14:36:00</div>
<div>
　　Fri Nov 26 14：15：00 CST 1999</div>
<div> </div>
<div>　　例4：设置时间为1999年11月28号。</div>
<div>
　　# date -s 991128</div>
<div>
　　Sun Nov 28 00：00：00 CST 1999</div>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/266/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>nginx 配置例子 (重定向和过滤)</title>
		<link>http://www.javagg.com/archives/267</link>
		<comments>http://www.javagg.com/archives/267#comments</comments>
		<pubDate>Fri, 09 Jan 2009 07:24:48 +0000</pubDate>
		<dc:creator>纯净水</dc:creator>
				<category><![CDATA[linux]]></category>

		<guid isPermaLink="false">http://www.javagg.com/?p=267</guid>
		<description><![CDATA[Nginx (&#8220;engine x&#8221;) 是一个高性能的 HTTP 和 反向代理 服务器，也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版，但是，Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。
大家可以在这里下载http://www.oschina.net/p/nginx
下面整理了一些nginx常用的请求过滤例子
以下为字符串匹配操作符
~  为区分大小写匹配
~* 为不区分大小写匹配
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配
1: 限制某些类型的客户端的访问
location / {if ($http_user_agent ~ MSIE) {
return 503;
}} #限制IE访问如果把MSIE改成 Mozilla 就基本上把IE和firefox这样pc浏览器限制了2和3主要是针对盗链做处理
2:针对不同的文件类型
location ~ .*\.(wma&#124;wmv&#124;asf&#124;mp3&#124;mmf&#124;zip&#124;rar&#124;jpg&#124;gif&#124;png&#124;swf&#124;flv)$ {
     if ($http_referer ~* javagg.com) {
     #rewrite ^/ http://www.javagg.com/403.html;
     return 403;
      }
}
3:针对不同的目录
location /img/ {
    root /data/img/;
   if ($http_referer ~* [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Nginx</strong> (&#8220;engine x&#8221;) 是一个高性能的 HTTP 和 反向代理 服务器，也是一个 IMAP/POP3/SMTP 代理服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点开发的，它已经在该站点运行超过两年半了。Igor 将源代码以类BSD许可证的形式发布。尽管还是测试版，但是，Nginx 已经因为它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名了。<span id="more-267"></span></p>
<p>大家可以在这里下载<a href="http://www.oschina.net/p/nginx">http://www.oschina.net/p/nginx</a></p>
<p>下面整理了一些nginx常用的请求过滤例子</p>
<p>以下为字符串匹配操作符</p>
<p>~  为区分大小写匹配<br />
~* 为不区分大小写匹配<br />
!~和!~*分别为区分大小写不匹配及不区分大小写不匹配</p>
<p>1: 限制某些类型的客户端的访问</p>
<p>location / {if ($http_user_agent ~ MSIE) {<br />
return 503;<br />
}} #限制IE访问如果把MSIE改成 Mozilla 就基本上把IE和firefox这样pc浏览器限制了2和3主要是针对盗链做处理</p>
<p>2:针对不同的文件类型<br />
location ~ .*\.(wma|wmv|asf|mp3|mmf|zip|rar|jpg|gif|png|swf|flv)$ {<br />
     if ($http_referer ~* javagg.com) {<br />
     #rewrite ^/ http://www.javagg.com/403.html;<br />
     return 403;<br />
      }<br />
}</p>
<p>3:针对不同的目录<br />
location /img/ {<br />
    root /data/img/;<br />
   if ($http_referer ~* javagg.com) {<br />
             rewrite  ^/  http://www.admin99.net/images/error.gif<br />
             #return   403;<br />
    }<br />
}</p>
<p>另外的一个nginx配置例子</p>
<p>worker_processes 2; #工作进程数，在网上看到说最优是cpu的二倍<br />
error_log   current_path/log/nginx.error.log debug;<br />
pid         shared_path/pids/nginx.pid;</p>
<p>events {<br />
  worker_connections 1024;#最大连接数<br />
}</p>
<p>http {<br />
  include           /usr/local/nginx/conf/mime.types;#content type 文件<br />
  default_type      application/octet-stream;</p>
<p>  log_format  main  &#8216;$remote_addr &#8211; $remote_user [$time_local] $status &#8216;<br />
                    &#8216;&#8221;$request&#8221; $body_bytes_sent &#8220;$http_referer&#8221; &#8216;<br />
                    &#8216;&#8221;$http_user_agent&#8221; &#8220;$http_x_forwarded_for&#8221;&#8216;;</p>
<p>  access_log  current_path/log/nginx.access.log main;#log文件存放地方</p>
<p>  sendfile          on;<br />
  tcp_nopush        on;<br />
  tcp_nodelay       on;<br />
  keepalive_timeout 70;</p>
<p>  gzip              on;<br />
  gzip_min_length   1000;<br />
  gzip_buffers      4 8k;<br />
  gzip_comp_level   9;<br />
  gzip_proxied      any;<br />
  gzip_types        application/xml application/javascript application/x-javascript application/atom+xml application/rss+xml;<br />
  gzip_types        text/css text/html text/javascript text/js text/plain text/xml;</p>
<p>  upstream mongrel {#proxy 负载均衡配置<br />
    server 127.0.0.1:8000;#服务器1<br />
    server 127.0.0.1:8001;#服务器2<br />
  }</p>
<p>  server {<br />
    listen 80;<br />
    server_name fucema.net www.fucema.net;<br />
    root current_path/public;<br />
    index index.html index.htm;</p>
<p>    location / {<br />
      proxy_set_header  X-Real-IP  $remote_addr;<br />
      proxy_set_header  X-Forwarded-For $proxy_add_x_forwarded_for;<br />
      proxy_set_header Host &#8220;www.fucema.net&#8221;;<br />
      proxy_redirect false;<br />
      proxy_max_temp_file_size 0;</p>
<p>      # rewrite &#8216;fucema.net&#8217; -&gt; &#8216;www.fucema.net&#8217;<br />
      if ($host = &#8216;fucema.net&#8217; ) {<br />
          rewrite  ^/(.*)$  http://www.fucema.net/$1  permanent;<br />
      }<br />
     #如果静态文件存在服务器，则跳过rewrite规则<br />
      if (-f $request_filename) {<br />
          expires max;<br />
          break;<br />
      }<br />
      # redirect feed requests to feedburner, unless its the feedburner agent<br />
      if ($http_user_agent !~ FeedBurner) {<br />
        rewrite ^/feed/atom.xml$ http://feeds.feedburner.com/fucema;<br />
      }<br />
      if (-f $request_filename/index.html) {<br />
        expires 7d;<br />
        rewrite (.*) $1/index.html break;<br />
      }<br />
      # support rails page caching<br />
      if (-f $request_filename.html) {<br />
        rewrite (.*) $1.html break;<br />
      }<br />
      # pass it onto upstream mongrel cluster<br />
      if (!-f $request_filename) {<br />
        proxy_pass http://mongrel;<br />
        break;<br />
      }<br />
    }</p>
<p>    location ~* ^.+\.(jpg|jpeg|gif|png|ico|css|zip|tgz|gz|rar|bz2|doc|xls|exe|pdf|ppt|txt|tar|mid|midi|wav|bmp|rtf|js|mov).*?$ {<br />
      root current_path/public;<br />
      if (!-f $request_filename) {<br />
        proxy_pass http://mongrel;<br />
        break;<br />
      }<br />
    }     </p>
<p>    error_page 500 502 503 504 /50x.html;<br />
    location = /50x.html {<br />
      root current_path/public;<br />
    }<br />
  }<br />
}</p>
]]></content:encoded>
			<wfw:commentRss>http://www.javagg.com/archives/267/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

