﻿<?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++博客-Error-文章分类-linux</title><link>http://www.cppblog.com/Error/category/20240.html</link><description /><language>zh-cn</language><lastBuildDate>Sun, 24 Feb 2013 08:01:29 GMT</lastBuildDate><pubDate>Sun, 24 Feb 2013 08:01:29 GMT</pubDate><ttl>60</ttl><item><title>linux坑爹  ftp坑爹</title><link>http://www.cppblog.com/Error/articles/197995.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Fri, 22 Feb 2013 03:33:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/197995.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/197995.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/197995.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/197995.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/197995.html</trackback:ping><description><![CDATA[两个问题：<br />1.程序通过ftp命令从一台机器发送到另外一台机器上以后一直出现：Segmentation fault<br /><div>经过查证，可执行文件通过ftp命令传送以后字节数发生了变化，，，坑爹的ftp，，，不知道他们用的什么软件，坑爹就对了，，，<br /><br />2.程序依赖一个库（libcurl.so.4），然后启动的时候一直报错：error while loading shared libraries: libcurl.so.4: ELF file OS ABI invalid</div>解决：据说linux二进制兼容性很差，我们是两个不同版本的linux。通过readelf -h [executable file name]查看elf文件头发现：<br /><div>centos 6：OS/ABI: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UNIX - System V<br /><div>redhat 5：OS/ABI: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;UNIX - Linux<br />API标准不一样，重新编译指定ABI可以解决，，，<br /><br /><br />///////////////////////////////////////////////////////////////////<br /><span style="color: #222222; font-family: arial, sans-serif; line-height: 16px; background-color: #ffffff; font-size: small; ">VC6里有depend和dumpbin,</span><em style="color: #dd4b39; font-style: normal; font-family: arial, sans-serif; line-height: 16px; background-color: #ffffff; font-size: small; ">Linux</em><span style="color: #222222; font-family: arial, sans-serif; line-height: 16px; background-color: #ffffff; font-size: small; ">下是ldd和objdump</span>&nbsp;<br /><br /><br /><br /></div></div><img src ="http://www.cppblog.com/Error/aggbug/197995.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2013-02-22 11:33 <a href="http://www.cppblog.com/Error/articles/197995.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>转 centos 6网络配置</title><link>http://www.cppblog.com/Error/articles/197863.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Sat, 16 Feb 2013 08:14:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/197863.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/197863.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/197863.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/197863.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/197863.html</trackback:ping><description><![CDATA[<div><div style="width: 320px; float: left"></div> <p style="margin-left: 40px">http://www.kaifajie.cn/os2/6223.html<br /><br /><span style="font-size: 12px">1，修改静态网络配置<br />Java代码 <br />[root@davidserver ~]# vim  /etc/sysconfig/network-scripts/ifcfg-eth0  <br />DEVICE="eth0" <br />BOOTPROTO="static" <br />HWADDR="00:0C:29:99:5A:3C" <br />NM_CONTROLLED="yes" <br />ONBOOT="yes" <br />TYPE="Ethernet" <br />UUID="1cb095a6-b832-4dc1-92e1-1a1a7a58abc8" <br />IPADDR="8.0.0.10" <br />BROADCAST="8.0.0.255" <br />NETMASK="255.255.255.0" <br />NETWORK="8.0.0.0" <br />GATEWAY="8.0.0.1" <br />IPV6INIT="no" <br />IPV6_AUTOCONF="no" </span></p> <p style="margin-left: 40px"><span style="font-size: 12px">[root@davidserver ~]#  vim  /etc/sysconfig/network-scripts/ifcfg-eth0<br />DEVICE="eth0"<br />BOOTPROTO="static"<br />HWADDR="00:0C:29:99:5A:3C"<br />NM_CONTROLLED="yes"<br />ONBOOT="yes"<br />TYPE="Ethernet"<br />UUID="1cb095a6-b832-4dc1-92e1-1a1a7a58abc8"<br />IPADDR="8.0.0.10"<br />BROADCAST="8.0.0.255"<br />NETMASK="255.255.255.0"<br />NETWORK="8.0.0.0"<br />GATEWAY="8.0.0.1"<br />IPV6INIT="no"<br />IPV6_AUTOCONF="no"</span></p> <p style="margin-left: 40px"> </p> <p style="margin-left: 40px"><span style="font-size: 12px">2，修改DNS服务<br />Java代码 <br />[root@davidserver ~]#  vim/etc/resolv.conf   <br />nameserver 8.0.0.1 </span></p> <p style="margin-left: 40px"><span style="font-size: 12px">[root@davidserver ~]#  vim/etc/resolv.conf<br />nameserver 8.0.0.1</span></p> <p style="margin-left: 40px"> </p> <p style="margin-left: 40px"><span style="font-size: 12px">3，重启网卡<br />Java代码 <br />[root@davidserver ~]# service  network restart  <br />Shutting down interface eth0:                               [  OK  ]  <br />Shutting down loopback interface:                          [  OK   ]  <br />Bringing up loopback interface:                            [  OK   ]  <br />Bringing up interface eth0:                                [  OK   ] </span></p> <p style="margin-left: 40px"><span style="font-size: 12px">[root@davidserver ~]#  service network restart<br />Shutting down interface  eth0:                              [  OK  ]<br />Shutting down loopback  interface:                          [  OK  ]<br />Bringing up loopback  interface:                            [  OK  ]<br />Bringing up interface  eth0:                                [  OK  ]</span></p> <p style="margin-left: 40px"> </p> <p style="margin-left: 40px"><span style="font-size: 12px">输出以上信息，代表成功了</span></p> <p style="margin-left: 40px"><span style="font-size: 12px">or</span></p> <p style="margin-left: 40px"><span style="font-size: 12px">Java代码 <br />[root@davidserver ~]# ifdown eth0; ifup  eth0 </span><br /><br /><br /><br /><br />///////////////////////////<br /><span class="Apple-style-span" style="font-size: 12px; ">vim /etc/sysconfig/network-scripts/ifcfg-eth0&nbsp;</span></p></div><img src ="http://www.cppblog.com/Error/aggbug/197863.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2013-02-16 16:14 <a href="http://www.cppblog.com/Error/articles/197863.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>ssh后台运行   linux重定向及nohup不输出的方法 </title><link>http://www.cppblog.com/Error/articles/195997.html</link><dc:creator>Enic</dc:creator><author>Enic</author><pubDate>Wed, 05 Dec 2012 01:49:00 GMT</pubDate><guid>http://www.cppblog.com/Error/articles/195997.html</guid><wfw:comment>http://www.cppblog.com/Error/comments/195997.html</wfw:comment><comments>http://www.cppblog.com/Error/articles/195997.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/Error/comments/commentRss/195997.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/Error/services/trackbacks/195997.html</trackback:ping><description><![CDATA[<h2 class="title content-title">linux重定向及nohup不输出的方法</h2>
<div id="content" class="content mod-cs-content text-content clearfix">先说一下linux重定向：<br />0、1和2分别表示标准输入、标准输出和标准错误信息输出，可以用来指定需要重定向的标准输入或输出。<br />在一般使用时，默认的是标准输出，既1.当我们需要特殊用途时，可以使用其他标号。例如，将某个程序的错误信息输出到log文件中：./program 2&gt;log。这样标准输出还是在屏幕上，但是错误信息会输出到log文件中。<br />另外，也可以实现0，1，2之间的重定向。2&gt;&amp;1：将错误信息重定向到标准输出。<br />Linux下还有一个特殊的文件/dev/null，它就像一个无底洞，所有重定向到它的信息都会消失得无影无踪。这一点非常有用，当我们不需要回显程序的所有信息时，就可以将输出重定向到/dev/null。<br />
<p>如果想要正常输出和错误信息都不显示，则要把标准输出和标准错误都重定向到/dev/null， 例如：</p>
<p># ls 1&gt;/dev/null 2&gt;/dev/null</p>
<p>还有一种做法是将错误重定向到标准输出，然后再重定向到 /dev/null，例如：</p>
<p># ls &gt;/dev/null 2&gt;&amp;1</p>
<p>注意：此处的顺序不能更改，否则达不到想要的效果，此时先将标准输出重定向到 /dev/null，然后将标准错误重定向到标准输出，由于标准输出已经重定向到了/dev/null，因此标准错误也会重定向到/dev/null，于是一切静悄悄:-)</p>
<p>&nbsp;</p>
<p>由于使用nohup时，会自动将输出写入nohup.out文件中，如果文件很大的话，nohup.out就会不停的增大，这是我们不希望看到的，因此，可以利用/dev/null来解决这个问题。</p>
<p>nohup ./program &gt;/dev/null 2&gt;log &amp;</p>
<p>如果错误信息也不想要的话：</p>
<p>nohup ./program &gt;/dev/null 2&gt;&amp;1 &amp;<br /><br /><br /><br /><br /><br /><br />要实现守护进程，一种方法是按守护进程的规则去编程（本站有文章介绍过），比较麻烦；另一种方法是仍然用普通方法编程，然后用nohup命令启动程序： <br /><font color="#ff0000"><font size="4">nohup &lt;程序名&gt; &amp;</font> <br /></font>则控制台logout后，进程仍然继续运行，起到守护进程的作用（虽然它不是严格意义上的守护进程）。<br />使用nohup命令后，原程序的的标准输出被自动改向到当前目录下的nohup.out文件，起到了log的作用，实现了完整的守护进程功能。 </p>
<div class="posted">ygwu @ 2005年04月18日 上午10:03 <br /><br />For example：<br /><span class="h2b"><a name="_Toc98401903"></a><a name="_Toc98337383"><font color="#ff0000" size="4">如何远程启动WebLogic</font></a><font color="#ff0000" size="4">服务?</font></span> 
<p>用telnet远程控制服务器，远程启动WEBLOGIC服务，启动后关闭telnet，WebLogic服务也跟着停止，这是因为使用telnet启动的进程会随着telnet进程的关闭而关闭。所以我们可以使用一些UNIX下的命令来做到不关闭。</p>
<p>使用如下命令：</p>
<p><font color="#ff0000" size="4">nohup startWeblogic.sh&amp;</font></p>
<p>如果想要监控标准输出可以使用：</p>
<p><font color="#ff0000" size="4">tail -f nohup.out<br /></font><br /><br /></p></div>
<div class="comments-head"><a name="comments"></a>访客留言</div>
<div class="comments-body">
<p>FreeBSD可以同时运行多个进程，在shell下直接输入命令后，shell将进程放到前台执行。如果要将进程放到后台执行，需要在命令行的结尾加上一个 &#8220;&amp;&#8221; 符号。下面的命令从后台执行，从ftp.isc.org下载文件。</p>
<p>$ fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &amp;</p>
<p>当程序已经在前台执行的时候，可以使用^Z将这个程序挂起，暂停执行。然后可以使用bg命令将这个挂起的程序放到后台执行，或者使用fg将某个在后台或挂起的进程放到前台执行。</p>
<p><font color="#ff0000" size="4">当在后台运行了程序的时候，可以用jobs命令来查看后台作业的状态。在有多个后台程序时，要使用来参数的fg命令将不同序号的后台作业切换到前台上运行。</font></p>
<p>$ jobs</p>
<p>[1]+ Running fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz &amp; </p>
<p>$ fg %1</p>
<p>fetch ftp://ftp.isc.org/pub/inn/inn-1.7.2.tar.gz</p>
<p>在启动了多个程序之后，可以使用ps命令来查看这些进程及其状态。</p>
<p><font color="#ff0000" size="4">$ ps</font></p>
<p>PID TT STAT TIME COMMAND</p>
<p>501 p2 Ss 0:00.24 -bash (bash)</p>
<p>988 p2 R+ 0:00.00 ps</p>
<p>765 p3 Is+ 0:00.28 -bash (bash)</p>
<p>230 v0 Is+ 0:00.14 -bash (bash)</p>
<p>显示的结果包括进程的标识号PID，控制终端TT（p0表示控制终端为ttyp0），进程的状态STAT，进程使用的处理器时间TIME和具体的命令。</p>
<p>可以给ps命令加上参数，来获得更多的输出内容，以下命令将输出系统中所有的进程：</p>
<p>$ ps waux</p>
<p>USER PID %CPU %MEM VSZ RSS TT STAT STARTED TIME COMMAND</p>
<p>wb 989 0.0 0.4 400 236 p2 R+ 5:48PM 0:00.00 ps -aux</p>
<p>root 1 0.0 0.1 496 72 ?? Is 10:12PM 0:00.02 /sbin/init --</p>
<p>root 2 0.0 0.0 0 0 ?? DL 10:12PM 0:07.05 (pagedaemon)</p>
<p>root 3 0.0 0.0 0 0 ?? DL 10:12PM 0:00.20 (vmdaemon)</p>
<p>root 4 0.0 0.0 0 0 ?? DL 10:12PM 0:04.27 (syncer)</p>
<p>root 27 0.0 0.0 204 0 ?? IWs - 0:00.00 (adjkerntz)</p>
<p>root 91 0.0 0.5 820 328 ?? Is 2:12PM 0:00.82 syslogd</p>
<p>daemon 100 0.0 0.0 792 0 ?? IWs - 0:00.00 (portmap)</p>
<p>root 131 0.0 0.3 864 164 ?? Is 2:12PM 0:00.06 inetd</p>
<p>root 134 0.0 0.3 980 192 ?? Is 2:12PM 0:00.11 cron</p>
<p>root 138 0.0 0.6 1252 380 ?? Is 2:12PM 0:00.11 sendmail: accepti</p>
<p>wb 230 0.0 1.1 1540 668 v0 Is+ 2:12PM 0:00.14 -bash (bash)</p>
<p>root 231 0.0 0.0 824 0 v1 IWs+ - 0:00.00 (getty)</p>
<p>root 232 0.0 0.0 824 0 v2 IWs+ - 0:00.00 (getty)</p>
<p>root 500 0.0 0.9 876 524 ?? Ss 4:19PM 0:01.78 telnetd</p>
<p>wb 501 0.0 1.4 1540 888 p2 Ss 4:19PM 0:00.24 -bash (bash)</p>
<p>root 698 0.0 1.5 1644 900 ?? Is 4:49PM 0:00.02 /usr/local/sbin/s</p>
<p>root 700 0.0 1.2 1308 748 ?? Ss 4:49PM 0:00.22 /usr/local/sbin/n</p>
<p>root 702 0.0 3.4 2900 2112 ?? S 4:49PM 0:00.32 /usr/local/sbin/s</p>
<p>root 764 0.0 0.9 880 540 ?? Is 5:10PM 0:00.22 telnetd</p>
<p>wb 765 0.0 1.7 1536 1052 p3 Is+ 5:10PM 0:00.28 -bash (bash)</p>
<p>root 0 0.0 0.0 0 0 ?? DLs 10:12PM 0:00.02 (swapper)</p>
<p>当用户启动一个进程的时候，这个进程是运行在前台，使用与相应控制终端相联系的标准输入、输出进行输入和输出。即使将进程的输入输出重定向，并将进程放在后台执行，进程仍然和当前终端设备有关系。正因为如此，在当前的登录会话结束时，控制终端设备将和登录进程相脱离，那么系统就向所有与这个终端相联系的进程发送SIGHUP的信号，通知进程线路已经挂起了，如果程序没有接管这个信号的处理，那么缺省的反应是进程结束。<font color="#ff0000" size="4">因此普通的程序并不能真正脱离登录会话而运行进程，为了使得在系统登录后还可以正常执行，只有使用命令nohup来启动相应程序。</font></p>
<p>从上面的ps的输出结果可以看出，有些程序没有控制终端，这些程序通常是一些后台进程。使用命令nohup当然可以启动这样的程序，<font color="#ff0000" size="4">但nohup启动的程序在进程执行完毕就退出，而常见的一些服务进程通常永久的运行在后台，不向屏幕输出结果。在Unix中这些永久的后台进程称为守护进程（daemon）。守护进程通常从系统启动时自动开始执行，系统关闭时才停止。</font>如果偶然某个守护进程消失了，那么它提供的服务将不再能被使用。</p>
<p>在守护进程中，最重要的一个是超级守护进程<font color="#ff0000" size="4">inetd</font>，这个进程接管了大部分网络服务，但并不是对每个服务都自己进行处理，而是依据连接请求，启动不同的服务程序与客户机打交道。inetd支持网络服务种类在它的设置文件/etc/inet.conf中定义。inet.conf文件中的每一行就对应一个端口地址，当inetd接受到连接这个端口的连接请求时，就启动相应的进程进行处理。使用inetd的好处是系统不必启动很多守护进程，从而节约了系统资源，<font color="#ff0000" size="4">然而使用inetd启动守护进程相应反应会迟缓一些，不适合用于被密集访问的服务进程<br /></font></p></div>
<p>&nbsp;</p></div><img src ="http://www.cppblog.com/Error/aggbug/195997.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/Error/" target="_blank">Enic</a> 2012-12-05 09:49 <a href="http://www.cppblog.com/Error/articles/195997.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>