<?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/"
	>

<channel>
	<title>一个程序猿 &#187; shell</title>
	<atom:link href="http://www.sunboyu.cn/tag/shell/feed" rel="self" type="application/rss+xml" />
	<link>http://www.sunboyu.cn</link>
	<description>时光不会倒流,脚步总要前进</description>
	<pubDate>Tue, 31 Jan 2012 10:50:34 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>搭建C开发环境的一个小shell，自动，得找软件包和配置文件模板</title>
		<link>http://www.sunboyu.cn/2011/08/06/%e6%90%ad%e5%bb%bac%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e7%9a%84%e4%b8%80%e4%b8%aa%e5%b0%8fshell%ef%bc%8c%e8%87%aa%e5%8a%a8%ef%bc%8c%e5%be%97%e6%89%be%e8%bd%af%e4%bb%b6%e5%8c%85%e5%92%8c%e9%85%8d.shtml</link>
		<comments>http://www.sunboyu.cn/2011/08/06/%e6%90%ad%e5%bb%bac%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e7%9a%84%e4%b8%80%e4%b8%aa%e5%b0%8fshell%ef%bc%8c%e8%87%aa%e5%8a%a8%ef%bc%8c%e5%be%97%e6%89%be%e8%bd%af%e4%bb%b6%e5%8c%85%e5%92%8c%e9%85%8d.shtml#comments</comments>
		<pubDate>Sat, 06 Aug 2011 07:42:33 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=1426</guid>
		<description><![CDATA[develop
]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.sunboyu.cn/upfiles/2011/08/develop.sh">develop</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2011/08/06/%e6%90%ad%e5%bb%bac%e5%bc%80%e5%8f%91%e7%8e%af%e5%a2%83%e7%9a%84%e4%b8%80%e4%b8%aa%e5%b0%8fshell%ef%bc%8c%e8%87%aa%e5%8a%a8%ef%bc%8c%e5%be%97%e6%89%be%e8%bd%af%e4%bb%b6%e5%8c%85%e5%92%8c%e9%85%8d.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Linux提交命令至后台运行</title>
		<link>http://www.sunboyu.cn/2008/09/27/linux%e6%8f%90%e4%ba%a4%e5%91%bd%e4%bb%a4%e8%87%b3%e5%90%8e%e5%8f%b0%e8%bf%90%e8%a1%8c.shtml</link>
		<comments>http://www.sunboyu.cn/2008/09/27/linux%e6%8f%90%e4%ba%a4%e5%91%bd%e4%bb%a4%e8%87%b3%e5%90%8e%e5%8f%b0%e8%bf%90%e8%a1%8c.shtml#comments</comments>
		<pubDate>Sat, 27 Sep 2008 15:01:42 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[linux]]></category>

		<category><![CDATA[shell]]></category>

		<category><![CDATA[后台执行]]></category>

		<category><![CDATA[后台运行]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=330</guid>
		<description><![CDATA[我经常在putty里工作,有时候如果一个命令执行太长,不得已,我得开两个窗口,如果事情再多,可能开四个五个,不过有的ssh登陆工具可以开多个窗口,但难免会出点乱子.那么我们可以把命令隐藏再后台执行,使用linux下命令  &#8220;&#38;&#8221;  这个倒霉的符号.
比如我们要执行一个命令,(暂时没想到执行时间N长的命令,假设一个shell) test.sh , 现在提交并隐藏在后台
$./test.sh &#62;&#62; test.log &#38;
意思是,执行test.sh 反馈的结构输送至 test.log , &#38;表示这个命令提交至后台执行.
执行后,返回一个进程号,可以用ps来查看.
这样,我们可以连续在同一个终端窗口上运行多个持续的命令.
然后,问题又来.我们运行这些命令至后台后,如果想退出终端窗口,那么后台的命令也随之中断.我们得想办法让进程持续运行.这里得使用此命令 nohup
重新执行上边的操作,那么我们应该这样执行
$nohup ./test.sh &#62;&#62; test.log
然后敲logout,放心,再登陆试试ps,进程依然存在!
]]></description>
			<content:encoded><![CDATA[<p>我经常在putty里工作,有时候如果一个命令执行太长,不得已,我得开两个窗口,如果事情再多,可能开四个五个,不过有的ssh登陆工具可以开多个窗口,但难免会出点乱子.那么我们可以把命令隐藏再后台执行,使用linux下命令  &#8220;&amp;&#8221;  这个倒霉的符号.</p>
<p>比如我们要执行一个命令,(暂时没想到执行时间N长的命令,假设一个shell) test.sh , 现在提交并隐藏在后台</p>
<p>$./test.sh &gt;&gt; test.log &amp;</p>
<p>意思是,执行test.sh 反馈的结构输送至 test.log , &amp;表示这个命令提交至后台执行.</p>
<p>执行后,返回一个进程号,可以用ps来查看.</p>
<p>这样,我们可以连续在同一个终端窗口上运行多个持续的命令.</p>
<p>然后,问题又来.我们运行这些命令至后台后,如果想退出终端窗口,那么后台的命令也随之中断.我们得想办法让进程持续运行.这里得使用此命令 nohup</p>
<p>重新执行上边的操作,那么我们应该这样执行</p>
<p>$nohup ./test.sh &gt;&gt; test.log</p>
<p>然后敲logout,放心,再登陆试试ps,进程依然存在!</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/09/27/linux%e6%8f%90%e4%ba%a4%e5%91%bd%e4%bb%a4%e8%87%b3%e5%90%8e%e5%8f%b0%e8%bf%90%e8%a1%8c.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>amp自动安装脚本安装部分已经完成</title>
		<link>http://www.sunboyu.cn/2008/07/22/amp%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%e5%ae%89%e8%a3%85%e9%83%a8%e5%88%86%e5%b7%b2%e7%bb%8f%e5%ae%8c%e6%88%90.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/22/amp%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%e5%ae%89%e8%a3%85%e9%83%a8%e5%88%86%e5%b7%b2%e7%bb%8f%e5%ae%8c%e6%88%90.shtml#comments</comments>
		<pubDate>Tue, 22 Jul 2008 04:04:41 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[apm]]></category>

		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=207</guid>
		<description><![CDATA[做个版本存档
myshell_demo
]]></description>
			<content:encoded><![CDATA[<p>做个版本存档</p>
<p><a href="http://www.sunboyu.cn/upfiles/2008/07/myshell_demo1e5ae8ce7be8ee78988.rar">myshell_demo</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/22/amp%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac%e5%ae%89%e8%a3%85%e9%83%a8%e5%88%86%e5%b7%b2%e7%bb%8f%e5%ae%8c%e6%88%90.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>LAMP自动安装脚本</title>
		<link>http://www.sunboyu.cn/2008/07/15/lamp%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac.shtml</link>
		<comments>http://www.sunboyu.cn/2008/07/15/lamp%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac.shtml#comments</comments>
		<pubDate>Tue, 15 Jul 2008 15:08:39 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[APACHE]]></category>

		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[MYSQL]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[LAMP]]></category>

		<category><![CDATA[shell]]></category>

		<category><![CDATA[自动脚本]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=200</guid>
		<description><![CDATA[mysql，apache的基本搞定了，php的还有很多问题，先放出这些代码，方便自己操作。PHP部分正在调试。
#!/bin/sh
h_path = &#8220;/root/&#8221;
url=&#8221;http://www.sunboyu.cn/sourse/&#8221;
install_dir=&#8221;/opt/&#8221;
mkdir $install_dir
termcap_sourse_name=&#8221;termcap-1.3.1&#8243;
mysql_sourse_name=&#8221;mysql-5.0.22&#8243;
mysql_install_dir=$install_dir$mysql_sourse_name
openssl_sourse_name=&#8221;openssl-0.9.8g&#8221;
openssl_install_dir=$install_dir$openssl_sourse_name
httpd_sourse_name=&#8221;httpd-2.2.9&#8243;
httpd_install_dir=$install_dir$httpd_sourse_name
fastcgi_sourse_name=&#8221;mod_fastcgi-2.4.6&#8243;
fastcgi_install_dir=$install_dir$fastcgi_sourse_name
libxml2_sourse_name=&#8221;libxml2-2.6.30&#8243;
libxml2_install_dir=$install_dir$libxml2_sourse_name
zlib_sourse_name=&#8221;zlib-1.2.3&#8243;
zlib_install_dir=$install_dir$zlib_sourse_name
jpeg_sourse_name=&#8221;jpegsrc.v6b&#8221;
jpeg_install_dir=$install_dir$jpeg_sourse_name
libpng_sourse_name=&#8221;libpng-1.2.29&#8243;
libpng_install_dir=$install_dir$libpng_sourse_name
freetype_sourse_name=&#8221;freetype-2.3.7&#8243;
freetype_install_dir=$install_dir$freetype_sourse_name
php_sourse_name=&#8221;php-5.2.6&#8243;
php_install_dir=$install_dir$php_sourse_name
###MYSQL
wget ${url}${termcap_sourse_name}&#8221;.tar.gz&#8221;
tar -zxvf $termcap_sourse_name&#8221;.tar.gz&#8221;
cd $termcap_sourse_name
./configure
make &#38;&#38; make install
cd ..
rm -rf ${termcap_sourse_name}*
groupadd mysql
useradd -g mysql mysql
wget ${url}${mysql_sourse_name}&#8221;.tar.gz&#8221;
tar -zxvf $mysql_sourse_name&#8221;.tar.gz&#8221;
cd $mysql_sourse_name
./configure &#8211;prefix=$mysql_install_dir &#8211;enable-thread-safe-client &#8211;enable-local-infile &#8211;enable-largefile &#8211;with-charset=utf8 &#8211;with-uca &#8211;with-gnu-ld &#8211;with-pic &#8211;with-mysqld-libs &#8211;with-comment &#8211;with-query-cache &#8211;with-bench &#8211;with-big-tables &#8211;with-innodb &#8211;with-mysqld-use=mysql
make &#38;&#38; make install
cd ..
rm -rf ${mysql_sourse_name}*
###APACHE
wget ${url}${openssl_sourse_name}&#8221;.tar.gz&#8221;
tar -zxvf $openssl_sourse_name&#8221;.tar.gz&#8221;
cd $openssl_sourse_name
./configure &#8211;prefix=$openssl_install_dir
make &#38;&#38; make install
cd ..
rm -rf ${openssl_sourse_name}*
wget ${url}${httpd_sourse_name}&#8221;.tar.gz&#8221;
tar [...]]]></description>
			<content:encoded><![CDATA[<p>mysql，apache的基本搞定了，php的还有很多问题，先放出这些代码，方便自己操作。PHP部分正在调试。</p>
<p>#!/bin/sh<br />
h_path = &#8220;/root/&#8221;<br />
url=&#8221;http://www.sunboyu.cn/sourse/&#8221;<br />
install_dir=&#8221;/opt/&#8221;<br />
mkdir $install_dir</p>
<p>termcap_sourse_name=&#8221;termcap-1.3.1&#8243;</p>
<p>mysql_sourse_name=&#8221;mysql-5.0.22&#8243;<br />
mysql_install_dir=$install_dir$mysql_sourse_name</p>
<p>openssl_sourse_name=&#8221;openssl-0.9.8g&#8221;<br />
openssl_install_dir=$install_dir$openssl_sourse_name</p>
<p>httpd_sourse_name=&#8221;httpd-2.2.9&#8243;<br />
httpd_install_dir=$install_dir$httpd_sourse_name</p>
<p>fastcgi_sourse_name=&#8221;mod_fastcgi-2.4.6&#8243;<br />
fastcgi_install_dir=$install_dir$fastcgi_sourse_name</p>
<p>libxml2_sourse_name=&#8221;libxml2-2.6.30&#8243;<br />
libxml2_install_dir=$install_dir$libxml2_sourse_name</p>
<p>zlib_sourse_name=&#8221;zlib-1.2.3&#8243;<br />
zlib_install_dir=$install_dir$zlib_sourse_name</p>
<p>jpeg_sourse_name=&#8221;jpegsrc.v6b&#8221;<br />
jpeg_install_dir=$install_dir$jpeg_sourse_name</p>
<p>libpng_sourse_name=&#8221;libpng-1.2.29&#8243;<br />
libpng_install_dir=$install_dir$libpng_sourse_name</p>
<p>freetype_sourse_name=&#8221;freetype-2.3.7&#8243;<br />
freetype_install_dir=$install_dir$freetype_sourse_name</p>
<p>php_sourse_name=&#8221;php-5.2.6&#8243;<br />
php_install_dir=$install_dir$php_sourse_name</p>
<p>###MYSQL<br />
wget ${url}${termcap_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $termcap_sourse_name&#8221;.tar.gz&#8221;<br />
cd $termcap_sourse_name<br />
./configure<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${termcap_sourse_name}*</p>
<p>groupadd mysql<br />
useradd -g mysql mysql</p>
<p>wget ${url}${mysql_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $mysql_sourse_name&#8221;.tar.gz&#8221;<br />
cd $mysql_sourse_name<br />
./configure &#8211;prefix=$mysql_install_dir &#8211;enable-thread-safe-client &#8211;enable-local-infile &#8211;enable-largefile &#8211;with-charset=utf8 &#8211;with-uca &#8211;with-gnu-ld &#8211;with-pic &#8211;with-mysqld-libs &#8211;with-comment &#8211;with-query-cache &#8211;with-bench &#8211;with-big-tables &#8211;with-innodb &#8211;with-mysqld-use=mysql<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${mysql_sourse_name}*</p>
<p>###APACHE</p>
<p>wget ${url}${openssl_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $openssl_sourse_name&#8221;.tar.gz&#8221;<br />
cd $openssl_sourse_name<br />
./configure &#8211;prefix=$openssl_install_dir<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${openssl_sourse_name}*</p>
<p>wget ${url}${httpd_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $httpd_sourse_name&#8221;.tar.gz&#8221;<br />
cd $httpd_sourse_name<br />
./configure &#8211;prefix=$httpd_install_dir &#8211;enable-authz-dbm &#8211;enable-log-config &#8211;enable-headers &#8211;enable-setenvif &#8211;with-ssl=$openssl_install_dir &#8211;enable-static-ab &#8211;enable-http &#8211;enable-mime &#8211;enable-status &#8211;enable-suexec &#8211;enable-vhost-alias &#8211;enable-dir &#8211;enable-rewrite &#8211;with-mpm=worker<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${httpd_sourse_name}*</p>
<p>wget ${url}${fastcgi_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $fastcgi_sourse_name&#8221;.tar.gz&#8221;<br />
cd $fastcgi_sourse_name<br />
sed &#8217;s/\/usr\/local\/apache2/\/opt\/httpd-2.2.9\//g&#8217; Makefile.AP2 &gt; Makefile<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${fastcgi_sourse_name}*</p>
<p>###PHP<br />
wget ${url}${libxml2_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $libxml2_sourse_name&#8221;.tar.gz&#8221;<br />
cd $libxml2_sourse_name<br />
./configure &#8211;prefix=$libxml2_install_dir<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${libxml2_sourse_name}*</p>
<p>wget ${url}${zlib_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $zlib_sourse_name&#8221;.tar.gz&#8221;<br />
cd $zlib_sourse_name<br />
./configure &#8211;prefix=$zlib_install_dir<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${zlib_sourse_name}*</p>
<p>wget ${url}${jpeg_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $jpeg_sourse_name&#8221;.tar.gz&#8221;<br />
cd $jpeg_sourse_name<br />
cp makefile.unix Makefile<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${jpeg_sourse_name}*</p>
<p>wget ${url}${libpng_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $libpng_sourse_name&#8221;.tar.gz&#8221;<br />
cd $libpng_sourse_name<br />
./configure &#8211;prefix=$libpng_install_dir<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${libpng_sourse_name}*</p>
<p>wget ${url}${freetype_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $freetype_sourse_name&#8221;.tar.gz&#8221;<br />
cd $freetype_sourse_name<br />
./configure &#8211;prefix=$freetype_install_dir<br />
make &amp;&amp; make install<br />
cd ..<br />
rm -rf ${freetype_sourse_name}*</p>
<p>wget ${url}${php_sourse_name}&#8221;.tar.gz&#8221;<br />
tar -zxvf $php_sourse_name&#8221;.tar.gz&#8221;<br />
./php-5.2.6/configure &#8211;enable-cli &#8211;enable-cgi &#8211;enable-fastcgi &#8211;enable-force-cgi-redirect &#8211;enable-discard-path &#8211;enable-path-info-check &#8211;with-openssl &#8211;with-pcre-regex &#8211;enable-calendar &#8211;enable-dom &#8211;enable-ftp &#8211;with-openssl-dir=/usr/local/openssl &#8211;enable-gd-jis-conv &#8211;enable-hash &#8211;with-iconv &#8211;enable-json &#8211;enable-mbstring &#8211;enable-mbregex &#8211;enable-pdo &#8211;enable-posix &#8211;enable-libxml &#8211;enable-simplexml &#8211;with-sqlite &#8211;enable-tokenizer &#8211;enable-xmlreader &#8211;enable-xmlwriter &#8211;with-zlib=/usr/local/zlib &#8211;with-freetype-dir=/usr/local/freetype &#8211;with-gd &#8211;with-jpeg-dir=/usr/lib/libjpeg.so.62.0.0</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/07/15/lamp%e8%87%aa%e5%8a%a8%e5%ae%89%e8%a3%85%e8%84%9a%e6%9c%ac.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>Mysql备份SHELL v1.0demo版问世</title>
		<link>http://www.sunboyu.cn/2008/06/22/mysql%e5%a4%87%e4%bb%bdshell-v10demo%e7%89%88%e9%97%ae%e4%b8%96.shtml</link>
		<comments>http://www.sunboyu.cn/2008/06/22/mysql%e5%a4%87%e4%bb%bdshell-v10demo%e7%89%88%e9%97%ae%e4%b8%96.shtml#comments</comments>
		<pubDate>Sat, 21 Jun 2008 20:57:40 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[LINUX]]></category>

		<category><![CDATA[PHP]]></category>

		<category><![CDATA[cli.phpshell]]></category>

		<category><![CDATA[shell]]></category>

		<category><![CDATA[杜江]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=130</guid>
		<description><![CDATA[虽然功能不是很完善，应该很不完善，但还是放出来让大家批评一下。
感谢PHP开源支持者的鼓励，感谢杜江老师的鼓励。mysqldump v1.0 demo 下载 版权所有，欢迎盗版！
源代码

#!/usr/local/bin/php -q
# mysql cron manager system
# sunboyu@gmail.com
# v1.0
define(&#8217;SUN_FILE_NAME&#8217;,'bak.sh&#8217;);
define(&#8217;SUN_BAK_PATH&#8217;,&#8217;./&#8217;); #bak path
define(&#8217;SUN_CFG_PATH&#8217;,&#8217;./&#8217;); #config file path
define(&#8217;SUN_LOG_PATH&#8217;,&#8217;./&#8217;); #log file path
define(&#8217;SUN_DATABASE_CHARACTER&#8217;,'UTF-8&#8242;); #mysql character
define(&#8217;SUN_SHELL_EXEC&#8217;,&#8221;system&#8221;);
define(&#8217;SUN_IS_TAR&#8217;,0);
#save temp argv in session
session_start();
Main::mains();
class Main
{
//main()
public static function mains()
{
KernelInfo::version();
self::getUserInput();
}
//for user&#8217;s inpyt
public function getUserInput()
{
while(($u_char = KernelBase::cgetchar(&#8217;shell&#8217;))&#38;&#38;($u_char != &#8216;quit&#8217;))
{
switch($u_char)
{
case &#8220;&#8211;help&#8221;:
KernelInfo::help();
break;
case &#8220;&#8211;version&#8221;:
KernelInfo::version();
break;
case &#8220;&#8211;check&#8221;:
KernelInfo::checksystem();
break;
case &#8220;&#8211;mysqldump&#8221;:
Mysql::MysqlGuide();
break;
default:
print(&#8221;error input!\n&#8221;);
break;
}
}
}
}
class KernelBase
{
//get input string
public function cgetchar( $cue = false )
{
if( $cue )
{
print($cue.&#8221;:&#8221;);
}
$string = [...]]]></description>
			<content:encoded><![CDATA[<p>虽然功能不是很完善，应该很不完善，但还是放出来让大家批评一下。</p>
<p>感谢PHP开源支持者的鼓励，感谢杜江老师的鼓励。<a href="http://www.sunboyu.cn/upfiles/2008/06/mysqldump.sh">mysqldump v1.0 demo 下载</a> 版权所有，欢迎盗版！</p>
<p>源代码</p>
<p><span id="more-130"></span></p>
<p>#!/usr/local/bin/php -q<br />
<!--p<br--># mysql cron manager system<br />
# sunboyu@gmail.com<br />
# v1.0<br />
define(&#8217;SUN_FILE_NAME&#8217;,'bak.sh&#8217;);<br />
define(&#8217;SUN_BAK_PATH&#8217;,&#8217;./&#8217;); #bak path<br />
define(&#8217;SUN_CFG_PATH&#8217;,&#8217;./&#8217;); #config file path<br />
define(&#8217;SUN_LOG_PATH&#8217;,&#8217;./&#8217;); #log file path<br />
define(&#8217;SUN_DATABASE_CHARACTER&#8217;,'UTF-8&#8242;); #mysql character<br />
define(&#8217;SUN_SHELL_EXEC&#8217;,&#8221;system&#8221;);<br />
define(&#8217;SUN_IS_TAR&#8217;,0);<br />
#save temp argv in session<br />
session_start();</p>
<p>Main::mains();</p>
<p>class Main<br />
{<br />
//main()<br />
public static function mains()<br />
{<br />
KernelInfo::version();<br />
self::getUserInput();<br />
}<br />
//for user&#8217;s inpyt<br />
public function getUserInput()<br />
{<br />
while(($u_char = KernelBase::cgetchar(&#8217;shell&#8217;))&amp;&amp;($u_char != &#8216;quit&#8217;))<br />
{<br />
switch($u_char)<br />
{<br />
case &#8220;&#8211;help&#8221;:<br />
KernelInfo::help();<br />
break;<br />
case &#8220;&#8211;version&#8221;:<br />
KernelInfo::version();<br />
break;<br />
case &#8220;&#8211;check&#8221;:<br />
KernelInfo::checksystem();<br />
break;<br />
case &#8220;&#8211;mysqldump&#8221;:<br />
Mysql::MysqlGuide();<br />
break;<br />
default:<br />
print(&#8221;error input!\n&#8221;);<br />
break;<br />
}<br />
}<br />
}<br />
}</p>
<p>class KernelBase<br />
{<br />
//get input string<br />
public function cgetchar( $cue = false )<br />
{<br />
if( $cue )<br />
{<br />
print($cue.&#8221;:&#8221;);<br />
}<br />
$string = trim(fgets(STDIN));<br />
return $string;<br />
}<br />
//get argvs<br />
public function cgetargv( $string )<br />
{<br />
if(!empty($string))<br />
{<br />
$argvs = explode( &#8221; &#8221; , $string );<br />
$reargvs = false;<br />
for( $i = 0; $i &lt; count($argvs) ; $i++ )<br />
{<br />
if( $argvs[$i][0]==&#8217;-&#8217; &amp;&amp; $argvs[$i][1]==&#8217;-&#8217; )<br />
{<br />
$reargvs[$argvs[$i]] = true;<br />
$x++;<br />
}<br />
else if( $argvs[$i][0]==&#8217;-&#8217; &amp;&amp; $argvs[$i][1]!=&#8217;-&#8217; )<br />
{<br />
$reargvs[$argvs[$i]] = isset($argvs[($i+1)])&amp;&amp;($argvs[($i+1)][0]!=&#8217;-')&amp;&amp;($argvs[($i+1)][0]!=&#8221;) ? $argvs[($i+1)] : &#8221;;<br />
isset($argvs[($i+1)])&amp;&amp;($argvs[($i+1)][0]!=&#8217;-')&amp;&amp;($argvs[($i+1)][0]!=&#8221;) ? $i++ : &#8221;;<br />
}<br />
}<br />
return $reargvs;<br />
}<br />
else<br />
{<br />
return false;<br />
}<br />
}<br />
}</p>
<p>class KernelIO<br />
{<br />
//write file<br />
public function write_file( $filename , $content )<br />
{<br />
$handle = fopen( $filename );<br />
fwrite( $handle , $content );<br />
fclose( $handle );<br />
}<br />
}<br />
class KernelInfo<br />
{<br />
//show version<br />
public function version()<br />
{<br />
print(&#8221;##################################\n&#8221;);<br />
print(&#8221;# Mysql Back Cron Manage Shell #\n&#8221;);<br />
print(&#8221;# Auth: sunboyu #\n&#8221;);<br />
print(&#8221;# Version: v1.0 #\n&#8221;);<br />
print(&#8221;##################################\n&#8221;);<br />
}<br />
//show help<br />
public function help()<br />
{<br />
print(sprintf(&#8221;%s [--version] [--help] [--check]\n&#8221;,SUN_FILE_NAME));<br />
print(&#8221; &#8211;version Show\n&#8221;);<br />
print(&#8221; &#8211;help This Help\n&#8221;);<br />
print(&#8221; &#8211;check This Help\n&#8221;);<br />
}<br />
//check system info<br />
public function checksystem()<br />
{<br />
print(&#8221;System:&#8221;.$_GLOBAL['System'].&#8221;\n&#8221;);<br />
$check_dir = array( SUN_BAK_PATH , SUN_CFG_PATH , SUN_LOG_PATH );<br />
foreach($check_dir as $key =&gt; $value)<br />
{<br />
if(is_writable($value))<br />
{<br />
print(&#8221;The dir &#8216;&#8221;.$value.&#8221;&#8216; is writable!\n&#8221;);<br />
}<br />
else<br />
{<br />
print(&#8221;The dir &#8216;&#8221;.$value.&#8221;&#8216; is unwritable.Please check the power!\n&#8221;);<br />
print(&#8221;The shell is stop!&#8221;);<br />
exit();<br />
}<br />
}<br />
$shell_exec = SUN_SHELL_EXEC;<br />
if($shell_exec(&#8217;ls&#8217;))<br />
{<br />
print(&#8221;The shell can execute &#8220;.SUN_SHELL_EXEC.&#8221;;\n&#8221;);<br />
}<br />
else<br />
{<br />
print(&#8221;The shell can&#8217;t execute &#8220;.SUN_SHELL_EXEC.&#8221;;\n&#8221;);<br />
print(&#8221;The shell is stop!&#8221;);<br />
exit();<br />
}<br />
print(&#8221;The Shell can work in this system!\n&#8221;);<br />
}<br />
//check is writeable the dir<br />
public function is_writeable( $dir )<br />
{<br />
return @is_writable( $dir );<br />
}<br />
}</p>
<p>#Mysql Dump<br />
class Mysql<br />
{<br />
function MysqlGuide()<br />
{<br />
$mysqlargv = array(<br />
&#8216;-host&#8217; =&gt; false,<br />
&#8216;-username&#8217; =&gt; false,<br />
&#8216;-password&#8217; =&gt; false,<br />
&#8216;-datebase&#8217; =&gt; false,<br />
&#8216;-otherargv&#8217; =&gt; false<br />
);<br />
$argvs = KernelBase::cgetargv(KernelBase::cgetchar(&#8221;input argv&#8221;));<br />
foreach($argvs as $key =&gt; $value)<br />
{<br />
$mysqlargv[$key] = empty($value) ? &#8221; : $value;<br />
}<br />
if($mysqlargv['-host']&amp;&amp;$mysqlargv['-username']&amp;&amp;$mysqlargv['-datebase'])<br />
{<br />
self::Mysqldump( $mysqlargv['-host'] , $mysqlargv['-username'] , $mysqlargv['-password'] , $mysqlargv['-datebase'] , $mysqlargv['-otherargv'] );<br />
}<br />
else<br />
{<br />
print(&#8221;error vars!\n&#8221;);<br />
}<br />
}<br />
function Mysqldump( $host = false , $username = false , $password = &#8221; , $datebase = false , $otherargv = false )<br />
{<br />
$shell_exec = SUN_SHELL_EXEC;<br />
if($host&amp;&amp;$username&amp;&amp;$datebase)<br />
{<br />
$command = &#8220;mysqldump &#8211;opt &#8220;.$datebase.&#8221; -u&#8221;.$datebase.&#8221; -p&#8221;.$db_password.( $otherargv ? $otherargv : &#8221; ).&#8221; &gt; &#8220;.SUN_BAK_PATH.&#8221;db_bak.sql&#8221;;<br />
$feedback = $shell_exec( $command );<br />
print($feedback.&#8221;\n&#8221;);<br />
}<br />
}<br />
}</p>
<p>?&gt;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/06/22/mysql%e5%a4%87%e4%bb%bdshell-v10demo%e7%89%88%e9%97%ae%e4%b8%96.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP Shell初体验</title>
		<link>http://www.sunboyu.cn/2008/05/25/php-shell%e5%88%9d%e4%bd%93%e9%aa%8c.shtml</link>
		<comments>http://www.sunboyu.cn/2008/05/25/php-shell%e5%88%9d%e4%bd%93%e9%aa%8c.shtml#comments</comments>
		<pubDate>Sun, 25 May 2008 08:59:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[cli]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=53</guid>
		<description><![CDATA[在linux（centos5）上编译安装 php-5.2.6.tar.gz ,configure参数一定要带上 &#8211;enable-cli
完成后，php所在目录 /usr/local/bin/php
运营  ./php -v  显示php版本信息，证明安装成功
编写我的第一个php shell脚本
#!/usr/local/bin/php -q
echo &#8220;Hello World!&#8221;;
?&#62;
保存为 test.sh
运行，屏幕会 回显 Hello World!
在命令行下，不会存在get post之类的动作，除非参数写到页面内，而php恰巧提供了这样的命令行参数接口，$argv
修改test.sh
#!/usr/local/bin/php -q
print_r($argv);
?&#62;
加参数运行  ./test.sh  t1 t2   ，回显为
Array
(
[0] =&#62; ./test.sh
[1] =&#62; t1
[2] =&#62; t2
)
]]></description>
			<content:encoded><![CDATA[<p>在linux（centos5）上编译安装 php-5.2.6.tar.gz ,configure参数一定要带上 &#8211;enable-cli</p>
<p>完成后，php所在目录 /usr/local/bin/php</p>
<p>运营  ./php -v  显示php版本信息，证明安装成功</p>
<p>编写我的第一个php shell脚本<br />
#!/usr/local/bin/php -q<br />
echo &#8220;Hello World!&#8221;;<br />
?&gt;</p>
<p>保存为 test.sh<br />
运行，屏幕会 回显 Hello World!</p>
<p>在命令行下，不会存在get post之类的动作，除非参数写到页面内，而php恰巧提供了这样的命令行参数接口，$argv<br />
修改test.sh<br />
#!/usr/local/bin/php -q<br />
print_r($argv);<br />
?&gt;</p>
<p>加参数运行  ./test.sh  t1 t2   ，回显为</p>
<p>Array<br />
(<br />
[0] =&gt; ./test.sh<br />
[1] =&gt; t1<br />
[2] =&gt; t2<br />
)</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/05/25/php-shell%e5%88%9d%e4%bd%93%e9%aa%8c.shtml/feed</wfw:commentRss>
		</item>
		<item>
		<title>PHP SHELL，用php来代替bash</title>
		<link>http://www.sunboyu.cn/2008/05/24/php-shell%ef%bc%8c%e7%94%a8php%e6%9d%a5%e4%bb%a3%e6%9b%bfbash.shtml</link>
		<comments>http://www.sunboyu.cn/2008/05/24/php-shell%ef%bc%8c%e7%94%a8php%e6%9d%a5%e4%bb%a3%e6%9b%bfbash.shtml#comments</comments>
		<pubDate>Sat, 24 May 2008 15:50:51 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[原创技术]]></category>

		<category><![CDATA[bash]]></category>

		<category><![CDATA[cli]]></category>

		<category><![CDATA[eefocus]]></category>

		<category><![CDATA[php]]></category>

		<category><![CDATA[shell]]></category>

		<guid isPermaLink="false">http://www.sunboyu.cn/?p=52</guid>
		<description><![CDATA[总看到招聘php程序员的帖子说要求php程序员熟练运用linux,shell,我估计熟悉LAMP配置，在这个架构下开发php的人不在少数，但说到SHELL，估计有一批人一冒一身的冷汗。
c shell，bash shell的确用的少，但php shell你说不懂，就该左右开弓一百八十个大嘴巴。
php本身就是一种shell，在php4之后，php编译有个 &#8211;enable-cli 参数，php5之后这个参数几乎成了标配参数。php一样可以作为shell脚本运行在装有php环境的服务器上。
而在phpchina.com phpx.com总多bbs的招聘上，居然没有哪个php程序员拿出php shell这个技能去跟他们交涉。而实际上，phpshell的功能根本不比bash弱，而且在LAMP环境中，php shell比bashshell有诸多的优点。
下边是我在与非门科技工作时候的几个php shell应用，抛砖引玉，希望大家能学会这些简单但又适用的技能。
$root = &#8220;/var/www/&#8221;;
$bakdir = &#8220;/var/wwwbak/&#8221;.date(&#8221;Y-m-d&#8221;);
$dir = array(&#8221;***.eefocus.com&#8221;,&#8221;***.eefocus.com&#8221;);
if(!is_dir($bakdir)){
mkdir($bakdir);
}
foreach($dir as $key=&#62;$value)
{
exec(&#8221;tar zcf &#8220;.$bakdir.&#8221;/&#8221;.$value.&#8221;.tar.gz /var/www/&#8221;.$value);
#echo &#8220;tar zcf &#8220;.$bakdir.&#8221;/&#8221;.$value.&#8221;.tar.gz /var/www/&#8221;.$value.&#8221;
&#8220;;
}
?&#62;
这是一个简单的网站目录备份程序，使用cron每天执行，自动tar压包备份网站。虽然很笨的方法，但网站安全系数提高了，这个过程也不用写啥bash去解决。
其实在php执行shell的时候，已经支持命令行参数了，这些应用下次分解。
参考网站：
http://www.phpbuilder.com/columns/darrell20000319.php3
http://www.php-cli.com/
]]></description>
			<content:encoded><![CDATA[<p>总看到招聘php程序员的帖子说要求php程序员熟练运用linux,shell,我估计熟悉LAMP配置，在这个架构下开发php的人不在少数，但说到SHELL，估计有一批人一冒一身的冷汗。<br />
c shell，bash shell的确用的少，但php shell你说不懂，就该左右开弓一百八十个大嘴巴。<br />
php本身就是一种shell，在php4之后，php编译有个 &#8211;enable-cli 参数，php5之后这个参数几乎成了标配参数。php一样可以作为shell脚本运行在装有php环境的服务器上。<br />
而在phpchina.com phpx.com总多bbs的招聘上，居然没有哪个php程序员拿出php shell这个技能去跟他们交涉。而实际上，phpshell的功能根本不比bash弱，而且在LAMP环境中，php shell比bashshell有诸多的优点。</p>
<p>下边是我在<a href="http://www.eefocus.com" target="_blank">与非门科技</a><img src="http://www.eefocus.com/images/logo.gif" alt="" width="73" height="21" />工作时候的几个php shell应用，抛砖引玉，希望大家能学会这些简单但又适用的技能。</p>
<p>$root = &#8220;/var/www/&#8221;;<br />
$bakdir = &#8220;/var/wwwbak/&#8221;.date(&#8221;Y-m-d&#8221;);<br />
$dir = array(&#8221;***.eefocus.com&#8221;,&#8221;***.eefocus.com&#8221;);<br />
if(!is_dir($bakdir)){<br />
mkdir($bakdir);<br />
}<br />
foreach($dir as $key=&gt;$value)<br />
{<br />
exec(&#8221;tar zcf &#8220;.$bakdir.&#8221;/&#8221;.$value.&#8221;.tar.gz /var/www/&#8221;.$value);<br />
#echo &#8220;tar zcf &#8220;.$bakdir.&#8221;/&#8221;.$value.&#8221;.tar.gz /var/www/&#8221;.$value.&#8221;<br />
&#8220;;<br />
}<br />
?&gt;</p>
<p>这是一个简单的网站目录备份程序，使用cron每天执行，自动tar压包备份网站。虽然很笨的方法，但网站安全系数提高了，这个过程也不用写啥bash去解决。</p>
<p>其实在php执行shell的时候，已经支持命令行参数了，这些应用下次分解。</p>
<p>参考网站：</p>
<p>http://www.phpbuilder.com/columns/darrell20000319.php3</p>
<p>http://www.php-cli.com/</p>
]]></content:encoded>
			<wfw:commentRss>http://www.sunboyu.cn/2008/05/24/php-shell%ef%bc%8c%e7%94%a8php%e6%9d%a5%e4%bb%a3%e6%9b%bfbash.shtml/feed</wfw:commentRss>
		</item>
	</channel>
</rss>

