<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://www.jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://www.jackxiang.com/post//</link>
<title><![CDATA[[实践OK]linux重定向及nohup不输出/无输出的方法，用strace调试程序的输出输入文件的方法涉及到linux 重定向 标准错误与标准输出到同一文件 。使用nohup执行多个命令。]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[Unix/LinuxC技术]]></category>
<pubDate>Wed, 22 Oct 2014 15:26:39 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	使用nohup执行多个命令：<br/><textarea name="code" class="php" rows="15" cols="100">
这样会更简单：
nohup sh -c &quot;wget $url &amp;&amp; wget $url2&quot; &gt; /dev/null 2&gt;&amp;1 &amp;
但是，如果URL包含特殊字符，则可能会导致问题，因此，为了使用更安全的选项，可以使用：
nohup sh -c &quot;wget &#92;&quot;$url&#92;&quot; &amp;&amp; wget &#92;&quot;$url2&#92;&quot;&quot; &gt; /dev/null 2&gt;&amp;1 &amp;
</textarea><br/><br/>背景：也就是如ssh登录后发邮件，用nohup可以快速推到后台，更快进入终端，不用直到发完邮件才进入#shell下。<br/>nohup /usr/local/lighttpd/sbin/lighttpd -f /usr/local/lighttpd/etc/lighttpd.conf &gt;/dev/null 2&gt;&amp;1 &gt;/dev/null &amp;<br/>nohup /usr/local/cronolog/sbin/cronolog /data/logs/lighttpd/img.bbs.cntv.cn-access_%Y%m%d.log &gt;/dev/null 2&gt;&amp;1 &gt;/dev/null &amp;<br/><textarea name="code" class="php" rows="15" cols="100">
cd /data/ishowrsync &amp;&amp; nohup /usr/local/java/bin/java -jar -Xms2048m -Xmx4096m -XX:MetaspaceSize=1024M -XX:MaxMetaspaceSize=4096m /data/iswrsync/aixiyou.jar &gt; /dev/null 2&gt;&amp;1 &amp; 
</textarea><br/>实践成功来自：https://blog.csdn.net/qq_27870421/article/details/90753948<br/><br/><br/><textarea name="code" class="php" rows="15" cols="100">
$ nohup /bin/bash backupfiles.sh &amp;&gt;/dev/null &amp;&nbsp;&nbsp;#注意按老武说的&amp;&gt;/dev/null要连着不要有空格，下面有 cman bash的摘录
Besides having both standard output and standard error redirected to /dev/null, standard input is redirected from /dev/null while nohup makes the executed command immune to any hangup signals. If output is not redirected, nohup will write any output to the file nohup.out, which may be desirable to audit the outcome of your backup script.
</textarea><br/>From:http://www.tuxradar.com/answers/215<br/><br/><textarea name="code" class="php" rows="15" cols="100">
nohup php Server.php&nbsp;&nbsp;&gt;/dev/null 2&gt;&amp;1 &gt;/dev/null &amp;
nohup php Client.php&nbsp;&nbsp;&gt;/dev/null 2&gt;&amp;1 &gt;/dev/null &amp;
nohup php WebSocketServer.php &gt;/dev/null 2&gt;&amp;1 &gt;/dev/null &amp;
</textarea><br/><br/><br/><textarea name="code" class="php" rows="15" cols="100">
nohup&nbsp;&nbsp;/usr/local/php//bin/php /data/htdocs/sendmail.xdxp.cn/sendmail.php&nbsp;&nbsp;&gt; /data/logs/mail/sendmail.log &gt;/dev/null 2&gt;&amp;1 &amp;&nbsp;&nbsp;
</textarea><br/>发邮件链接：<br/>https://jackxiang.com/post/7579/<br/><br/>linux 重定向 标准错误与标准输出到同一文件 ：<br/><textarea name="code" class="php" rows="15" cols="100">
strace -f -p 29729 &gt; /dev/null 2&gt;&amp;1
strace -f -p 29729 &amp;&gt;/dev/null
</textarea><br/><br/>特别是那个错误输出啥的，这块strace就是一例：<br/>strace php include.php &gt; abcdef.txt&nbsp;&nbsp;//这样显然是没法实现把输出导入到abcdef.txt文件的啦。<br/><br/>重定向标准错误到标准输出<br/>cat foo 2&gt;&amp;1 得出：strace php include.php &gt; abcdef.txt&nbsp;&nbsp;2&gt;&amp;1 ，还有别的写法参考来自：<br/>http://blog.chinaunix.net/uid-21142030-id-3211182.html<br/><br/><br/><br/>------------------------------------------------------------------------------------------------------------------------<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;这种方式的输出重定向使得以&nbsp;&nbsp;&nbsp;&nbsp; word&nbsp;&nbsp;&nbsp;&nbsp; 扩展结果为名的文件被打开并通过文件描述符&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;&nbsp;&nbsp;从尾部添加。如果没有指定&nbsp;&nbsp;&nbsp;&nbsp;n&nbsp;&nbsp;&nbsp;&nbsp;就使用标准输出&nbsp;&nbsp;&nbsp;&nbsp;(文件描述符<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 1)。如果文件不存在，它将被创建。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 重定向的一般形式是：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;[n]&gt;&gt;word<br/><br/>&nbsp;&nbsp; Redirecting Standard Output and Standard Error<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Bash 允许使用这种结构将标准输出和标准错误 (文件描述符 1 和 2) 重定向到以 word 扩展结果为名的文件中。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 有两种重定向标准输出/标准错误的形式：<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;&gt;word<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 还有<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;&amp;word<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 两种形式中，推荐使用第一种。它与<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&gt;word 2&gt;&amp;1<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 在语义上等价。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp; 下列描述中，重定向操作符之后的词如果没有特殊说明，都要经过 brace expansion, tilde expansion,&nbsp;&nbsp;parameter&nbsp;&nbsp;expansion,&nbsp;&nbsp;command&nbsp;&nbsp;substitution,&nbsp;&nbsp;arithmetic<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; expansion, quote removal, pathname expansion, 还有 word splitting。如果扩展为多于一个词， bash 将报错。<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 注意重定向的顺序非常重要。例如，命令<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls &gt; dirlist 2&gt;&amp;1<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 将标准输出和标准错误重定向到文件 dirlist, 而命令<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ls 2&gt;&amp;1 &gt; dirlist<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 只会将标准输出重定向到文件 dirlist, 因为在标准输出被重定向到文件 dirlist 中之前，标准错误被复制为标准输出。<br/>————————————————————————————————————————————————<br/>先说一下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/>如果想要正常输出和错误信息都不显示，则要把标准输出和标准错误都重定向到/dev/null， 例如：<br/><br/># ls 1&gt;/dev/null 2&gt;/dev/null<br/><br/>还有一种做法是将错误重定向到标准输出，然后再重定向到 /dev/null，例如：<br/><br/># ls &gt;/dev/null 2&gt;&amp;1<br/><br/>注意：此处的顺序不能更改，否则达不到想要的效果，此时先将标准输出重定向到 /dev/null，然后将标准错误重定向到标准输出，由于标准输出已经重定向到了/dev/null，因此标准错误也会重定向到/dev/null，于是一切静悄悄:-)<br/><br/>由于使用nohup时，会自动将输出写入nohup.out文件中，如果文件很大的话，nohup.out就会不停的增大，这是我们不希望看到的，因此，可以利用/dev/null来解决这个问题。<br/><br/>（1）舍弃标准输出，将错误输出到log文件中<br/><br/>nohup ./program &gt;/dev/null 2&gt;log &amp;<br/><br/>（2）如果错误信息也不想要的话：<br/><br/>nohup ./program &gt;/dev/null 2&gt;&amp;1 &amp;<br/><br/> <br/><br/>+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br/><br/>关于重定向，参考文章：http://bbs.chinaunix.net/forum.php?mod=viewthread&amp;tid=484163<br/><br/> 1. 基本概念<br/><br/>&nbsp;&nbsp;a、I/O重定向通常与 FD有关，shell的FD通常为10个，即 0～9；（FD：file descripter，文件描述符）<br/>&nbsp;&nbsp;b、常用FD有3个，为: 0（stdin，标准输入）、1（stdout，标准输出）、2（stderr，标准错误输出），默认与keyboard、monitor、monitor有关；<br/>&nbsp;&nbsp;c、用 &lt; 来改变读进的数据信道(stdin)，使之从指定的档案读进；<br/>&nbsp;&nbsp;d、用 &gt; 来改变送出的数据信道(stdout, stderr)，使之输出到指定的档案；<br/>&nbsp;&nbsp;e、0 是 &lt; 的默认值，因此 &lt; 与 0&lt;是一样的；同理，&gt; 与 1&gt; 是一样的；<br/>&nbsp;&nbsp;f、在IO重定向 中，stdout 与 stderr 的管道会先准备好，才会从 stdin 读进资料；<br/>&nbsp;&nbsp;g、管道“&#124;”(pipe line):上一个命令的 stdout 接到下一个命令的 stdin;<br/>&nbsp;&nbsp;h、tee 命令是在不影响原本 I/O 的情况下，将 stdout 复制一份到档案去;<br/>&nbsp;&nbsp;i、bash（ksh）执行命令的过程：分析命令－变量求值－命令替代（``和$( )）－重定向－通配符展开－确定路径－执行命令；<br/>&nbsp;&nbsp;j、( )&nbsp;&nbsp;将 command group 置于 sub-shell 去执行，也称 nested sub-shell，它有一点非常重要的特性是：继承父shell的Standard input, output, and error plus any other open file descriptors。<br/>&nbsp;&nbsp;k、exec 命令：常用来替代当前 shell 并重新启动一个 shell，换句话说，并没有启动子 shell。使用这一命令时任何现有环境都将会被清除，。exec 在对文件描述符进行操作的时候，也只有在这时，exec 不会覆盖你当前的 shell 环境。<br/><br/>2. 基本IO<br/><br/>&nbsp;&nbsp;cmd &gt; file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把 stdout 重定向到 file 文件中<br/>&nbsp;&nbsp;cmd &gt;&gt; file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把 stdout 重定向到 file 文件中(追加)<br/>&nbsp;&nbsp;cmd 1&gt; fiel&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把 stdout 重定向到 file 文件中<br/>&nbsp;&nbsp;cmd &gt; file 2&gt;&amp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把 stdout 和 stderr 一起重定向到 file 文件中<br/>&nbsp;&nbsp;cmd 2&gt; file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把 stderr 重定向到 file 文件中<br/>&nbsp;&nbsp;cmd 2&gt;&gt; file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把 stderr 重定向到 file 文件中(追加)<br/>&nbsp;&nbsp;cmd &gt;&gt; file 2&gt;&amp;1&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;把 stderr 和 stderr 一起重定向到 file 文件中<br/>&nbsp;&nbsp;cmd &lt; file &gt;file2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd 命令以 file 文件作为 stdin，以 file2 文件作为 stdout<br/>&nbsp;&nbsp;cat &lt;&gt;file&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; 以读写的方式打开 file<br/>&nbsp;&nbsp;cmd &lt; file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;cmd 命令以 file 文件作为 stdin<br/>&nbsp;&nbsp;cmd &lt;&lt; delimiter&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Here document，从 stdin 中读入，直至遇到delimiter 分界符<br/><br/>来自：http://ezplayer.diandian.com/post/2011-06-10/40040502293
]]>
</description>
</item><item>
<link>http://www.jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] [实践OK]linux重定向及nohup不输出/无输出的方法，用strace调试程序的输出输入文件的方法涉及到linux 重定向 标准错误与标准输出到同一文件 。使用nohup执行多个命令。]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://www.jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>