﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-Only C/C++-随笔分类-UNIX</title><link>http://www.cppblog.com/cc/category/8221.html</link><description>半亩方塘 天光云影</description><language>zh-cn</language><lastBuildDate>Fri, 18 Sep 2009 11:34:09 GMT</lastBuildDate><pubDate>Fri, 18 Sep 2009 11:34:09 GMT</pubDate><ttl>60</ttl><item><title>UNIX下编译SQLite3.3.6 </title><link>http://www.cppblog.com/cc/archive/2009/09/18/96655.html</link><dc:creator>JetSun</dc:creator><author>JetSun</author><pubDate>Fri, 18 Sep 2009 09:41:00 GMT</pubDate><guid>http://www.cppblog.com/cc/archive/2009/09/18/96655.html</guid><wfw:comment>http://www.cppblog.com/cc/comments/96655.html</wfw:comment><comments>http://www.cppblog.com/cc/archive/2009/09/18/96655.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cc/comments/commentRss/96655.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cc/services/trackbacks/96655.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 14pt">&nbsp; 虽然现在最新的版本已经新了不少，不过这个功能也可以了，刚好需要在HPUX，AIX以及Solaris都使用它，Redhat下面自带，所以在UNIX下面要编译了一下，这里把Makefile文件做了一些调整，编译通过了。<br><br>解压缩之后不需要再执行 Configure命令了，直接make就可以了，最后会在当前目录下的<strong style="COLOR: #3366ff">.libs</strong>中生成相关的库，连接程序的时候加上这些库就可以了。<br><br>&nbsp;&nbsp;&nbsp;<u>&nbsp;</u><a href="http://www.cppblog.com/Files/cc/sqlite-3.3.6_aix.tar.gz.zip"><u>SQLite3.3.6 下载</u>&nbsp;</a> （<strong style="COLOR: #ff0000">AIX 5.2</strong> &nbsp;XLC++V7测试通过）<br>&nbsp;&nbsp;&nbsp; <a href="http://www.cppblog.com/Files/cc/sqlite-3.3.6_HPUX.tar.gz.zip"><u>SQLite3.3.6 下载</u>&nbsp;</a> （<strong style="COLOR: #ff0000">HPUX 11.23</strong>&nbsp; aCC测试通过）</span><img src ="http://www.cppblog.com/cc/aggbug/96655.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cc/" target="_blank">JetSun</a> 2009-09-18 17:41 <a href="http://www.cppblog.com/cc/archive/2009/09/18/96655.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>*.bff文件的安装</title><link>http://www.cppblog.com/cc/archive/2009/09/17/96509.html</link><dc:creator>JetSun</dc:creator><author>JetSun</author><pubDate>Thu, 17 Sep 2009 03:51:00 GMT</pubDate><guid>http://www.cppblog.com/cc/archive/2009/09/17/96509.html</guid><wfw:comment>http://www.cppblog.com/cc/comments/96509.html</wfw:comment><comments>http://www.cppblog.com/cc/archive/2009/09/17/96509.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cc/comments/commentRss/96509.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cc/services/trackbacks/96509.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 14pt">&nbsp;&nbsp;&nbsp; 今天装了一台AIX5.2的环境，还要装编译器，不过手里只有XLC++.V7版本的，以前在AIX5.2跟5.3的系统上都装过很多遍了，直接使用simt工具，选好程序路径就可以了，基本上以为不会有什么问题，但是今天在装的过程中却遇到了一些意想不到的问题。<br>&nbsp;&nbsp; <br>&nbsp;&nbsp; 系统装好之后，先打了补丁，然后开始装编译器，但是在装的过程中，提示xlmass.lib 4.3.0.0找不到，安装程序目录下面只有xlmass.lib 4.1.0.0的版本，由此造成后面几个关键包也安装不成功，最终导致安装失败。我不停的在光盘里面找啊找，希望能找到4.3.0.0版本的，可是还是没有找到，问题好像进入了死胡同了。<br><br>安装过程实际需要的是下面的版本<br>
<div align=center src_cetemp="/images/cppblog_com/cc/2009_9/xlmass.jpg"><img height=132 alt="" src="http://www.cppblog.com/images/cppblog_com/cc/2009_9/xlmass.jpg" width=676 border=0><br></div>
<br>怎么搞呢，有事情问baidu，google，查了半天，终于找到了IBM的XLC++的网页<br><a href="http://www-01.ibm.com/support/docview.wss?rs=0&amp;uid=swg24019560">http://www-01.ibm.com/support/docview.wss?rs=0&amp;uid=swg24019560</a>，是XLC++V7在AIX5.2上面的运行库，里面就有xlmass相关的包，而且是4.4.0.0版本的，比要求的要高了，不知道行不行，不管了，下来再说。tar.Z文件，先用uncompress解压缩，然后再tar xvf就可以了，出来一堆*.bff文件，还真没有用过这个东西，继续baidu，原来在smit工具里面打开就可以了。<br>超级用户模式下，smit installp-&gt;安装软件，选择bff文件所在的路径即可，然后就是安装了，安装过程中提示有错误，但是我要的这几个包好像提交成功了，所以也不管了，装过之后再正常安装XLC++，装完运行xlc命令，大功告成阿。</span><img src ="http://www.cppblog.com/cc/aggbug/96509.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cc/" target="_blank">JetSun</a> 2009-09-17 11:51 <a href="http://www.cppblog.com/cc/archive/2009/09/17/96509.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Solaris环境下编译头文件的注意事项</title><link>http://www.cppblog.com/cc/archive/2009/07/29/91597.html</link><dc:creator>JetSun</dc:creator><author>JetSun</author><pubDate>Wed, 29 Jul 2009 07:45:00 GMT</pubDate><guid>http://www.cppblog.com/cc/archive/2009/07/29/91597.html</guid><wfw:comment>http://www.cppblog.com/cc/comments/91597.html</wfw:comment><comments>http://www.cppblog.com/cc/archive/2009/07/29/91597.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cc/comments/commentRss/91597.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cc/services/trackbacks/91597.html</trackback:ping><description><![CDATA[<span style="FONT-SIZE: 18pt">&nbsp;&nbsp;&nbsp;最近在Solaris上编译程序的时候，发现它的编译器有个奇怪的习惯，就是头文件的最后一行要加上一行回车行，不知道是什么回事，否则就会产生警告，在Solaris上装的就是sun公司自己的sunstudio开发工具，在HPUX跟AIX上都没有这个问题，应该是编译器的事情吧。<br>下面截个图给大家看看，<br></span><br>
<div align=center src_cetemp="/images/cppblog_com/cc/2009_7/error.jpg"><img height=111 alt="" src="http://www.cppblog.com/images/cppblog_com/cc/2009_7/error.jpg" width=906 border=0></div><img src ="http://www.cppblog.com/cc/aggbug/91597.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cc/" target="_blank">JetSun</a> 2009-07-29 15:45 <a href="http://www.cppblog.com/cc/archive/2009/07/29/91597.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>主流UNIX命令对比表</title><link>http://www.cppblog.com/cc/archive/2009/04/18/80396.html</link><dc:creator>JetSun</dc:creator><author>JetSun</author><pubDate>Sat, 18 Apr 2009 13:43:00 GMT</pubDate><guid>http://www.cppblog.com/cc/archive/2009/04/18/80396.html</guid><wfw:comment>http://www.cppblog.com/cc/comments/80396.html</wfw:comment><comments>http://www.cppblog.com/cc/archive/2009/04/18/80396.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cc/comments/commentRss/80396.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cc/services/trackbacks/80396.html</trackback:ping><description><![CDATA[<p style="FONT-SIZE: 18pt" align=center><br><br><a href="http://www.cppblog.com/Files/cc/unix_os.rar"><u>主流UNIX命令对比表下载</u></a></p><img src ="http://www.cppblog.com/cc/aggbug/80396.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cc/" target="_blank">JetSun</a> 2009-04-18 21:43 <a href="http://www.cppblog.com/cc/archive/2009/04/18/80396.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>XMananger不能登录AIX的问题分析</title><link>http://www.cppblog.com/cc/archive/2009/04/13/79538.html</link><dc:creator>JetSun</dc:creator><author>JetSun</author><pubDate>Mon, 13 Apr 2009 13:33:00 GMT</pubDate><guid>http://www.cppblog.com/cc/archive/2009/04/13/79538.html</guid><wfw:comment>http://www.cppblog.com/cc/comments/79538.html</wfw:comment><comments>http://www.cppblog.com/cc/archive/2009/04/13/79538.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cc/comments/commentRss/79538.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cc/services/trackbacks/79538.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 我在使用AIX的过程中，有时候会遇到机器在正常运转，能ping通，telnet也可以上去，但是使用XMananger的时候却上不去，下面总结了我遇到的几种情况，附带一些解决方法，仅供参考。<br>&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;第一种：磁盘满<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;我们在写程序的时候，经常会出现一些程序死掉的问题，在Windows系统中，程序死掉就死掉了，重启一下就行了，但是在UNIX环境下，默认情况下程序死掉了都会产生一个core文件，core文件中是程序的内存映射部分，该文件的主要作用是用来帮我们查找问题的故障原因，调试用的。&nbsp;&nbsp;&nbsp;具体的调试需要使用dbx工具，这里不作介绍。在这种情况下，可以设定系统只生成一个core文件，后来生成的core文件会覆盖前面的，这里就需要修改.cshrc文件中的参数，这里使用的是cshell，&nbsp;&nbsp;打开.cshrc文件之后，我们找到如下几行，如果没有的话，自己可以手工填入。<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#setenv CORE_NAMING true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setenv CORE_COMPRESS true<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;setenv CORE_PATH true<br>&nbsp;前面加一个<span style="COLOR: #0000ff">#</span>号代表是注释掉，所以这一行就不起作用了，生成的core文件都叫core，而不再带有日期标记，所以默认就会只生成一个core文件了，但是这种情况下以前的core文件会被覆盖，所以调试以前的程序就不方便了，可能也不知道以前有哪些程序死掉了。<br><br>&nbsp;&nbsp; &nbsp;第二种：hosts文件缺少内容 <br>一般来说，/etc/hosts文件中会有本地主机的IP信息，就算少，也应该有<span style="COLOR: #0000ff"> 127.0.0.1 localhost</span>这样的条目信息，如果没有的话，远程登录上来的时候，可能会进入登录界面，但是输入用户名密码登录之后，界面就会停止，或者问题对话框，点击确定之后就退出系统了，这种情况下要检查hosts文件是否有对应的 IP 与主机名信息，如果没有，需要手工加入。<br><br>&nbsp;&nbsp; 第三种：CDE桌面进程未启动<br>&nbsp; 在系统运行过程中，CDE桌面进程可能死机会宕掉，或者由于其他原因没有启动，所以需要telnet上主机，然后手工启动。<br>启动命令如下：<br><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; # /etc/rc.dt<br>&nbsp;</strong><img src ="http://www.cppblog.com/cc/aggbug/79538.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cc/" target="_blank">JetSun</a> 2009-04-13 21:33 <a href="http://www.cppblog.com/cc/archive/2009/04/13/79538.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AIX中的inittab 文件（转）</title><link>http://www.cppblog.com/cc/archive/2008/09/08/61305.html</link><dc:creator>JetSun</dc:creator><author>JetSun</author><pubDate>Mon, 08 Sep 2008 06:32:00 GMT</pubDate><guid>http://www.cppblog.com/cc/archive/2008/09/08/61305.html</guid><wfw:comment>http://www.cppblog.com/cc/comments/61305.html</wfw:comment><comments>http://www.cppblog.com/cc/archive/2008/09/08/61305.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cc/comments/commentRss/61305.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cc/services/trackbacks/61305.html</trackback:ping><description><![CDATA[<div id=art style="MARGIN: 15px" width="100%">
<div><font color=#ff0000 size=3><strong>AIX中的inittab 文件（转）原文地址<a href="http://blog.chinaunix.net/u/20198/showart_437679.html">http://blog.chinaunix.net/u/20198/showart_437679.html</a></strong></font></div>
<div><strong><font color=#ff0000 size=3></font></strong></div>
<div><font size=2>/etc/inittab 文件控制着初始化过程。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>/etc/inittab 文件为 init 命令提供脚本作为一个普通进程调度程序。构成 init 命令进程调度活动的主要（多数）进程是 /etc/getty 线进程（line process），发起（启动）专用线进程。被 init 命令特别调度的其他进程为后台进程（Daemon）和shell。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>/etc/inittab 文件由 位置相关［position-dependent ］的条目组成，格式如下：</font></div>
<div style="FONT-SIZE: 12pt"><font size=2></font>&nbsp;</div>
<div style="FONT-SIZE: 12pt"><font color=#0000ff size=2>Identifier:RunLevel:Action:Command</font></div>
<div style="FONT-SIZE: 12pt">&nbsp;</div>
<div style="FONT-SIZE: 12pt"><font size=2>每一个条目都被一个换行字符分隔。一个换行字符前面一个反斜杠 (\) 表示一个条目的延续。/etc/inittab 文件中的条目数目没有限制（而不是指条目的最大长度）。条目的最大长度是 1024 个字符。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>条目字段有：<br><strong>Identifier</strong>： 标识唯一对象的一个 1-4 位字符的字段。<br><strong>RunLevel</strong>： 该条目运行的级别。<br>运行级别有下列属性：<br>&nbsp;&nbsp; - 运行级别有效地符合系统进程的配置。<br>&nbsp;&nbsp; - 由 init 命令启动的每一个进程都被分配一个或多个该进程可存在于之的运行级别。<br>&nbsp;&nbsp; - 运行级别由 0-9 的数字来表示。例如，如果系统运行于级别 1，只有在运行级别字段有 1 的那些条目被启动。<br>&nbsp;&nbsp; - 请求 init 命令改变运行级别时，条目中运行级别字段与目标运行级别不匹配的所有进程都会收到一条警告信号 (SIGTERM)，在进程被删除符号［kill signal (SIGKILL)］强行终止前，有20秒的宽限期。<br>&nbsp;&nbsp; -&nbsp;运行级别字段可为一个进程定义多个运行级别，可以0-9的任意组合。如果没有指定运行级别，进程假定在所有的运行级别有效。<br>&nbsp;&nbsp; - 还有其他四个值会出现在运行级别字段，即使他们并不是真正的运行级别：a, b, c 和 h。在运行级别字段有这些字符的条目仅仅在telinit 命令请求时才运行（与当前的系统运行级别无关）。他们不同于init命令的运行级别，init命令永远不能进入a, b, c, h 运行级别。并且，所有这些进程的运行请求都不改变当前的运行级别。此外，init 命令改变级别时，由a, b, c 命令启动的进程并不断开（killed）。只有当 /etc/inittab 文件中他们的行在action字段标记为 off，他们的行从 /etc/inittab 文件中完全删除，或者init 命令进入单用户模式，这些进程才会被中断（killed）。<br><strong>Action</strong>: 告知 init 命令如何处理在 process 字段指定的进程。init 命令可识别的 actions 如下：<br>&nbsp; <strong>respawn</strong>： 如果进程不存在，则启动进程。却不等待进程终止（继续扫描 /etc/inittab 文件）。如进程死掉，则重启该进程。如进程存在，继续扫描 /etc/inittab 文件。<br>&nbsp; <strong>wait</strong>： 当 init 命令进入匹配某条目的运行级别时，启动该进程并等待该进程的终止。当init命令处于同样的运行级别时，所有对 /etc/inittab 文件随后的读取都会导致 init 命令忽略该条目。<br>&nbsp; <strong>once</strong>： 当 init 命令进入匹配某条目的运行级别时，启动该进程，并且不等待终止。当进程死掉时，也不重启该进程。当系统进入一个新的运行级别时，该进程仍然从之前运行级别的变化运行，程序也不重启。<br>&nbsp; <strong>boot</strong>： 只在系统引导过程中运行的条目，这些进程是系统启动过程中，init 命令从 /etc/inittab 文件中读取的。启动该进程，不等待进程终止，并且进程死掉时，也不重启进程。有意义的指导依次为，运行级别应为默认，或者必须与系统引导时 init 命令的运行级别匹配。此 action 对于系统硬件重启后的初始化功能非常有用。<br>&nbsp;<strong> bootwait</strong>： 系统引导后，init 命令从单用户到多用户状态，第一次运行的条目。启动该进程，并等其终止，进程死时，不重启该进程。如果 initdefault为 2 ，则系统引导后直接运行该进程。<br>&nbsp; <strong>powerfail</strong>： 只有当 init 命令收到一个电源故障信号(SIGPWR)的时候，才执行与此条目相关的进程。<br>&nbsp; <strong>powerwait</strong>： 只有当 init 命令收到一个电源故障信号(SIGPWR)的时候，才执行与此条目相关的进程。并等该进程终止，才继续处理 /etc/inittab 文件。<br>&nbsp; <strong>off</strong>： 如果与该条目相关的进程当前正在运行，发送一个警告信号(SIGTERM)，然后等待 20 秒才用 kill 信号（SIGKILL）终止该进程。如果进程不在运行，忽略该条目。<br>&nbsp; <strong>ondemand</strong>： 功能上与 respawn 相同，不过，此 action 应用 a, b, 或 c 值，而不用运行级别。<br>&nbsp; <strong>initdefault</strong>： init 命令只在 最初调用时才扫描与此 action 相关的条目。如果存在，init 命令使用该条目来决定初始进入的运行级别。一般情况下，使用run-level 字段中指定的最高运行级别来作为初始状态。如果运行级别字段为空，则认作0123456789；因此，init 命令进入运行级别 9 。另外，如果 init 命令在 /etc/inittab 文件中找不到initdefault 条目，则在引导时向用户请求一个初始的运行级别。<br>&nbsp;&nbsp;<strong>sysinit</strong>： 此类型的条目在登录前 init 命令正要访问控制台之前被执行。该条目只被用来初始化设备，init 命令可能会针对这些设备询问运行级别。这些条目被执行，并等待完成后才继续。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2><br><strong>Command</strong>： 可执行的壳（shell）命令。整个 command 字段以 exec 为前缀，并传给一个 forked sh成为 sh -c exec 命令。任何合法的 sh 命令语法都可出现在该字段。并可用 # 插入注释。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>&nbsp;</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>getty 命令覆写 /etc/inittab 文件中出现在它之前所有命令的输出。要在引导日志中记录这些命令的输出，可输送这些输出到 alog -tboot 命令。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>当 init 命令正在处理 inittab 条目时，stdin, stdout, 和 stderr 这些文件描述符（file descriptors）可能是不可用的。所有写入 stdout 或 stderr 的条目不起作用，除非把输出重定向到一个文件或者到 /dev/console。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2></font>&nbsp;</div>
<div style="FONT-SIZE: 12pt"><font color=#0000ff size=2>下列命令是唯一支持在 /etc/inittab 文件中修改记录的方法：<br>mkitab： 把记录添加到 /etc/inittab 文件。<br>lsitab： 列出 /etc/inittab 文件中的记录。<br>chitab： 修改 /etc/inittab 文件中的记录。<br>rmitab： 从 /etc/inittab 文件中删除记录。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2></font>&nbsp;</div>
<div style="FONT-SIZE: 12pt"><font size=2>例如，想在 /etc/inittab 文件中添加一条记录，以运行级别2（run level 2）运行 find 命令并使之一旦完成就再次启动。<br>1. 运行 ps 命令，只显示包含 find 的进程：<br># ps -ef | grep find<br>root 19750 13964 0 10:47:23 pts/0 0:00 grep find<br>#<br>2. 使用 mkitab 命令，在 /etc/inittab 文件中添加一个名为 xcmd 的记录：<br># mkitab "xcmd:2:respawn:find / -type f &gt; /dev/null 2&gt;&amp;1"<br>3. 使用 lsitab 命令显示新记录：<br># lsitab xcmd<br>xcmd:2:respawn:find / -type f &gt; /dev/null 2&gt;&amp;1<br>#<br>4. 查看进程：<br># ps -ef | grep find<br>root 25462 1 6 10:56:58 - 0:00 find / -type f<br>root 28002 13964 0 10:57:00 pts/0 0:00 grep find<br>#<br>5. 取消 find 命令进程：<br># kill 25462<br>6. 查看进程：<br># ps -ef | grep find<br>root 23538 13964 0 10:58:24 pts/0 0:00 grep find<br>root 28966 1 4 10:58:21 - 0:00 find / -type f<br>#</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>本例中，由于 action 字段被配置 respawn，故而每一次该命令一完成，一个新进程就会启动。</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>该进程将继续再生 （re-spawning），除非修改 action 字段，例如：<br>1. 把记录 xcmd 的 action 字段由 respawn 修改为 once：<br># chitab "xcmd:2:once:find / -type f &gt; /dev/null 2&gt;&amp;1"<br>2. 查看进程：<br># ps -ef | grep find<br>root 20378 13964 0 11:07:20 pts/0 0:00 grep find<br>root 28970 1 4 11:05:46 - 0:03 find / -type f<br>3. 取消 find 命令进程：<br># kill 28970<br>4. 查看进程：<br># ps -ef | grep find<br>root 28972 13964 0 11:07:33 pts/0 0:00 grep find<br>#</font></div>
<div style="FONT-SIZE: 12pt"><font size=2>要从 /etc/inittab 文件中删除该记录，可使用 rmitab 命令。例如：<br># rmitab xcmd<br># lsitab xcmd<br>#</font></div>
<div style="FONT-SIZE: 12pt"><font color=#0000ff size=2>/etc/inittab 条目的次序</font></div>
<div style="FONT-SIZE: 12pt"><font color=#0000ff size=2>/etc/inittab 文件中的基本进程条目次序安装如下：<br>1. initdefault<br>2. sysinit<br>3. Powerfailure Detection (powerfail)<br>4. Multiuser check (rc)<br>5. /etc/firstboot (fbcheck)<br>6. System Resource Controller (srcmstr)<br>7. Start TCP/IP daemons (rctcpip)<br>8. Start NFS daemons (rcnfs)<br>9. cron<br>10.pb cleanup (piobe)<br>11.getty for the console (cons)</font></div>
<div style="FONT-SIZE: 12pt"><font color=#0000ff size=2></font>&nbsp;</div>
<div style="FONT-SIZE: 12pt"><font size=2>系统资源控制器 (SRC)必须在 /etc/inittab 文件的开头附近就被启动，因为启动其他的进程需要SRC进程（Daemon）。<br>由于NFS需要TCP/IP进程（Daemon）才能正常运行，所以TCP/IP进程必须在NFS进程之前被启动。<br>/etc/inittab 文件中的条目按相互依赖性排序，就是说，如果一个进程（process2）需要另外一个进程（process1）存在才能正常运行，那么在 /etc/inittab文件中，process1的条目应该在process2的条目之前。</font></div>
</div><img src ="http://www.cppblog.com/cc/aggbug/61305.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cc/" target="_blank">JetSun</a> 2008-09-08 14:32 <a href="http://www.cppblog.com/cc/archive/2008/09/08/61305.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>crontab命令详解（转帖）</title><link>http://www.cppblog.com/cc/archive/2008/09/08/61304.html</link><dc:creator>JetSun</dc:creator><author>JetSun</author><pubDate>Mon, 08 Sep 2008 06:18:00 GMT</pubDate><guid>http://www.cppblog.com/cc/archive/2008/09/08/61304.html</guid><wfw:comment>http://www.cppblog.com/cc/comments/61304.html</wfw:comment><comments>http://www.cppblog.com/cc/archive/2008/09/08/61304.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cc/comments/commentRss/61304.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cc/services/trackbacks/61304.html</trackback:ping><description><![CDATA[crontab命令的功能是在一定的时间间隔调度一些命令的执行。在/etc目录下有一个crontab文件，这里存放有系统运行的一些调度程序。每个用户可以建立自己的调度crontab。 <br><br>crontab命令有三种形式的命令行结构： <br><br>crontab&nbsp;[-u&nbsp;user]&nbsp;[file] <br><br>crontab&nbsp;[-u&nbsp;user]&nbsp;[-e|-l|-r] <br><br>crontab&nbsp;-l&nbsp;-u&nbsp;[-e|-l|-r]&nbsp;第一个命令行中，file是命令文件的名字。如果在命令行中指定了这个文件，那么执行crontab命令，则将这个文件拷贝到crontabs目录下；如果在命令行中没有制定这个文件，crontab命令将接受标准输入（键盘）上键入的命令，并将他们也存放在crontab目录下。 <br><br>命令行中-r选项的作用是从/usr/spool/cron/crontabs目录下删除用户定义的文件crontab； <br><br>命令行中-l选项的作用是显示用户crontab文件的内容。 <br><br>使用命令crontab&nbsp;-u&nbsp;user&nbsp;-e命令编辑用户user的cron(c)作业。用户通过编辑文件来增加或修改任何作业请求。 <br><br>执行命令crontab&nbsp;-u&nbsp;user&nbsp;-r即可删除当前用户的所有的cron作业。 <br><br>作业与它们预定的时间储存在文件/usr/spool/cron/crontabs/username里。username使用户名，在相应的文件中存放着该用户所要运行的命令。命令执行的结果，无论是标准输出还是错误输出，都将以邮件形式发给用户。文件里的每一个请求必须包含以spaces和tabs分割的六个域。前五个字段可以取整数值，指定何时开始工作，第六个域是字符串，称为命令字段，其中包括了crontab调度执行的命令。 <br><br>第一道第五个字段的整数取值范围及意义是： <br><br>0～59&nbsp;表示分 <br><br>1～23&nbsp;表示小时 <br><br>1～31&nbsp;表示日 <br><br>1～12&nbsp;表示月份 <br><br>0～6&nbsp;表示星期（其中0表示星期日） <br><br>/usr/lib/cron/cron.allow表示谁能使用crontab命令。如果它是一个空文件表明没有一个用户能安排作业。如果这个文件不存在，而有另外一个文件/usr/lib/cron/cron.deny,则只有不包括在这个文件中的用户才可以使用crontab命令。如果它是一个空文件表明任何用户都可安排作业。两个文件同时存在时cron.allow优先，如果都不存在，只有超级用户可以安排作业。<br><img src ="http://www.cppblog.com/cc/aggbug/61304.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cc/" target="_blank">JetSun</a> 2008-09-08 14:18 <a href="http://www.cppblog.com/cc/archive/2008/09/08/61304.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>Unix平台下的常用命令技巧之 tar包、压缩与解压缩 </title><link>http://www.cppblog.com/cc/archive/2007/11/12/36430.html</link><dc:creator>JetSun</dc:creator><author>JetSun</author><pubDate>Mon, 12 Nov 2007 03:41:00 GMT</pubDate><guid>http://www.cppblog.com/cc/archive/2007/11/12/36430.html</guid><wfw:comment>http://www.cppblog.com/cc/comments/36430.html</wfw:comment><comments>http://www.cppblog.com/cc/archive/2007/11/12/36430.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/cc/comments/commentRss/36430.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/cc/services/trackbacks/36430.html</trackback:ping><description><![CDATA[在Unix下常遇到一些解包、压包的问题。一般情况下将若干文件或文件夹打成tar包，是为了便于文件的传输和管理。例如，通过FTP从Unix平台下载目录结构较多的文件夹到Windows平台或另外一Unix平台，虽然文件夹不是太大，但由于每个文件很小，且非常多，每个文件都要进行文件头、尾检查校验。下载速度会非常慢。如果打成tar包，传输就会快很多。存档的文件夹打成tar包也容易管理。<br>值得注意的是：tar文件只是将文件或文件夹打包，并没有进行压缩。如果文本文件较多，对其压缩会节省很大的磁盘空间，传输将更快。压缩和解压缩方法可以参考下文给出的示例。<br>下面我以Sun Solaris 5.8（其他unix如linux、aix大体相同）为例，就常见的一些问题向各位同仁作一下介绍，供大家在工作中参考。因水平有限，仅做抛砖引玉，欢迎大家积极补充。<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>&nbsp;<br>1、如何解开.tgz或.tar.gz文件？<br>2、如何解开.z或.Z文件？<br>3、如何解开.tar.Z文件？<br>4、如何安装、卸载、列出rpm包信息？（linux常用）<br>5、如何使用tar命令测试、展开、生成tgz包？<br>6、如何解开和生成tar文件？<br>7、如何象在PC上的ARJ那样的分解打包软件?<br>8、在Unix下如何压缩文件？<br>9、如何解开和生成其他包如.jar文件？<br>10、抛砖引玉，待同仁补充<br>&nbsp;<br>============================================================<br>1、如何才能解开.tgz或.tar.gz文件？<br>&nbsp;<br>1）方法一：<br>gzip -d filename.tar.gz&nbsp;&nbsp; 或 gzip -d filename.tgz<br>tar -xvf filename.tar<br>2）方法二：<br>解压并列表：<br>gzip -dc filename.tgz | tar xvf -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #解.tgz文件<br>gzip -dc filename.tar.gz | tar xvf -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #.tar.gz 同 .tgz文件<br>只列表不生成文件：<br>gzip -dc filename.tgz | tar tvf -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #解.tgz文件<br>gzip -dc filename.tar.gz | tar tvf -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #.tar.gz 同 .tgz文件<br>gzip的其他使用方法参见gzip -h<br>============================================================<br>2、如何才能解开.z或.Z文件？<br>&nbsp;<br>1）解.z 文件: gzcat filename.z<br>2）解.Z 文件：uncompress -c filename.Z<br>============================================================<br>3、如何解.tar.Z文件？<br>&nbsp;<br>1）解压并列表：<br>zcat filename.tar.Z | tar xvf -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #解.tar.Z文件<br>uncompress -c tast.tar.Z | xvf -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #uncompress -c 同 zcat<br>2）只列表不生成文件：<br>zcat filename.tar.Z | tar tvf -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #解.tar.Z文件<br>uncompress -c filename.tar.Z | tvf -&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #uncompress -c 同 zcat<br>============================================================<br>4、如何安装、卸载、列出rpm包信息？（linux常用）<br>&nbsp;<br>1)安装rpm包时显示进度<br>&nbsp;&nbsp;&nbsp;&nbsp; 例如：用-vh参数，如rpm -ivh ipchains-1.3.6-1.i386.rpm<br>2)直接通过ftp来安装rpm包<br>&nbsp;&nbsp;&nbsp;&nbsp; 例如：rpm -i <a href="ftp://ftp.xxx.xxx/">ftp://ftp.xxx.xxx</a><br>3)校验所有的rpm包，查找丢失的文件<br>例如：rpm &#8211;Va<br>4)查找一个文件属于哪个rpm包<br>&nbsp;&nbsp;&nbsp;&nbsp; 例如：rpm -qf /usr/bin/who<br>5)列出一个rpm包的描述信息<br>&nbsp;&nbsp;&nbsp;&nbsp; 例如：rpm -qpi mon-0.37j-1.i386.rpm<br>6)列出一个rpm包的文件信息<br>例如：rpm -qpl mon-0.37j-1.i386.rpm<br>7)列出并过滤已经安装的包<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：rpm &#8211;q |grep IBM<br>8)删除已安装的包<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 例如：rpm &#8211;e 包名<br>9)其他rpm操作参见#rpm --help<br>============================================================<br>5、如何使用tar命令测试、展开、生成tgz包？<br>&nbsp;<br>tar zvfx filename.tgz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #在当前目录下展开这个包<br>tar zvft filename.tgz&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #只测试不展开<br>tar zvfx filename.tgz -C /new-dir&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #展开后放到/new-dir目录下<br>tar zvfc filename.tgz /filename&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #把/filename目录下所有的文件及子目录打包成filename.tgz<br>============================================================<br>6、如何解开和生成tar文件？<br>&nbsp;<br>tar xvf filename.tar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #当先目录解包<br>tar tvf filename.tar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #只显示不生成文件<br>tar cvf filename.tar &lt;file or dir list&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #生成包<br>tar的参数很多，要仔细学习参见#tar -h <br>============================================================<br>7、如何象在PC上的ARJ那样的分解打包软件?<br>&nbsp;<br># split -b 100k big.file<br>&nbsp;&nbsp; 将big.file分解成若干500K的小文件 (名为xa, xb, xc, ...)<br># split -l 500 big.file<br>&nbsp;&nbsp; 将big.file分解成每个500 lines的小文件<br>其它使用方法参见split &#8211;h<br>&nbsp;<br>============================================================<br>8、在Unix下如何压缩文件？<br>&nbsp;<br>在unix下压缩方法有多种，可以参见gzip、gunzip、zcat、compress等工具文档，也可以参见上面所述的一些方法。下面仅以compress命令示例：<br>&nbsp;<br>例如：需要将/filename的文件打包并压缩，需要做以下步骤：<br>1）打包<br>tar cvf filename.tar ./dir<br>2）压缩<br>compress filename.tar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #生成filename.tar.Z文件<br>如果还原回原来的目录结构<br>1）解压缩<br>uncompress filename.tar.Z<br>3）解tar包<br>tar xvf filename.tar<br>&nbsp;<br>如果unix命令参数不熟悉，一般也可以通过ftp将压缩或打包文件传到PC上，利用Windows下的Winzip或rar等压缩工具解开。<br>&nbsp;<br>==========================================================<br>9、如何解开和生成其他包如.jar文件？<br>&nbsp;<br>在unix上生成和解开jar包和对tar包的操作差不多。<br>例如：<br>jar cvf filename.jar /dirname&nbsp;&nbsp;&nbsp; #将/dirname 打成jar包<br>jar xvf filename.jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #解开jar包<br>jar tvf&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; filename.jar&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; #只列表不解开jar包<br>&nbsp;<br>&nbsp;<br><img src ="http://www.cppblog.com/cc/aggbug/36430.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/cc/" target="_blank">JetSun</a> 2007-11-12 11:41 <a href="http://www.cppblog.com/cc/archive/2007/11/12/36430.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>