定时任务只能通过crontab -e 来编辑计划任务吗
我想通过shell来添增加或减少计划项,
可是直接添加或减少不行哟
如比
$echo " 0 6 * * * /usr/bin/start.sh" /usr/spool/cron/crontabs/root
添加倒是成功了,可是不会执行..必须通过手工 crontab -e才行
请问该如何做哟,谢谢!

请问如何用shell添加或减少crontab -e 项
1.copy or backup
#crontab -l > /tmp/root.crontab
2.edit
edit root.crontab by vi,emacs, ed ,etc etc .
3.activate
#crontab /tmp/root.crontab
点评:有这种需求一很有可能是搞运营开发的,哇哈。
导入原理:usage:  crontab [-u user] file
                          -l      (list user's crontab)
                         > 重定向
                         自动化脚本修改。

By:jack
来源:http://bbs.chinaunix.net/thread-542028-1-1.html
x:剪切当前字符到剪贴板。
dd     :剪切当前光标所在处的行
ndd   :剪切当前光标所在处及以下的n行

来自:
http://blog.itpub.net/25836975/viewspace-697911
http://hi.baidu.com/jqorwrlvdwbfqvq/item/7b717ef599abba1dfe3582cc

vim有复制并粘贴的命令,比如
:1, 10 co 20
但是这个命令执行完以后,1-10行仍然存在,我想实现将1-10剪切并粘贴到20行之后,有类似的命令么?一行代码能做到么?

:1,10 m 20
来自:
http://bbs.chinaunix.net/thread-3688477-1-1.html

——————————————————————————————————————
d:剪贴选中的内容到剪贴板。
y:拷贝选中的内容到剪贴板。
c:剪贴选中的内容到剪贴板并且进入插入模式。


      我们先做这样一个小小的尝试,请打开浏览器,从网页上随便复制一段文字,然后打开VIM,用VIM,用"p"粘贴一下,你会发现,什么都没有站贴过来,原因是这样的,不同于Windows,VIM具有多个剪贴板,并且和系统剪贴板是完全独立的,所以当你复制浏览器里的文字的时候,这段文字保存在了系统剪贴板,当你是用"p"来粘贴的时候,实际上,他读取的是VIM的剪切板。  
       那怎么方便的将系统剪贴板的内容复制过来呢?简单!用另外一个快捷方式"Shift+Insert"就可以了,如果你在使用Gvim的话,直接用鼠标中键也可起到相同的作用。是不是很简单? 
       OK!我们开始进阶!  
       我们前面说过,VIM具有多个剪切板,目的是为了用户在做较复杂的字符处理的时候,可以更方便的复制粘贴。请现在使用一下":reg"命令(先按 ESC键,退出编辑模式,然后按:进入命令模式,然后输入reg回车),看到了?屏幕上的输出结果!是不是特别眼熟,对了!就是您之前复制过的所有内容!也许这时候您还发现,VIM的剪切板原来有这么多个,按照数字还有符号一个一个的区分开的,这里举一个编号的例子--""5,看到了吗?是以"开头的。还有!有没有看到编号为"+的剪切板?里面的内容是不是刚才你在浏览器里复制的那段文字啊?呵呵……没错了!系统剪切板的编号就是"+。  
       好了,这时候您已经知道了如何查看之前的所有剪贴板内容,我们现在就试着把某一个特定剪切板的内容复制进我们正在编辑的文件中。我们知道,vi的粘贴指令是"p",但是如果要粘贴一个特定的剪贴板,只是用p就不行了,那怎么办?简单!把剪贴板的编号带上不就可以了?现在先按ESC,退出编辑模式,然后依次按"+p这三个字符(怎么按?不会吧!"和+怎么按?用Shift啊!),好了!你看看,之前在浏览器中复制的这段文本,是不是被粘贴进文档中了?  如何将系统剪切板里的内容复制进VIM当中,您已经清楚了。那如何将ViM中复制的字符粘贴到其他地方呢?很简单,我们只需要把要复制的文字,复制进 "+剪切板不就可以了?("+剪切板是系统剪切板,忘记了?)在VIM中,复制的指令是y(在非编辑模式下按y就可以了),那要将文本复制进指定的剪切板,只需要加上剪切板的编号就可以了。举个例子,我们希望把VIM中的一段文本复制下来,然后粘贴到浏览器的地址栏中:第一步,现把需要复制的文字选中(非编辑模式下),然后在键盘上依次按"+y这三个字符,OK!已经复制下来了,现在用:reg命令看看,是不是在"+剪切板中了?  好了,目前为止,您已经大致掌握了VIM剪切板的基本用法,当然,VIM剪切板的功能还很强大,本文也不能尽数道来,就请您继续发掘吧。
vi中多个文件相互之间的复制、粘贴功能简介!

发布: 2007-6-08 22:43 | 作者: seanhe | 来源: | 查看: 25次 | 进入软件测试论坛讨论


昨天有人提出此类问题,我特地加以编辑一下,请大家共享,可能写的不好!

大家在vi编辑中,常常遇到想把文件A里面的一行或多行,复制到B文件里面去
(可能很多人不知道怎么办),该怎么做了?
下面是几中方法:
1.如果你有多台机器,而且是联网的,你可以.netterm虚拟终端,telnet登陆主机对A文件进行修改、复制,然后打开B文件粘贴过去!
2.如果是单机,当然要用unix自带的编辑功能呢
   先简单介绍一些vi编辑里的命令:
   (A).yw 将当前字存入无名缓冲区,前面可加"x,表示存入名字为x的有名
缓冲区(x为a-z),也可加数字表示存入的字数,以后可用P或p命
令取出
yy 将当前行存入无名缓冲区,用法参看yw

    (B).命令如下:a-Z 是缓冲区,也可移出数字1-9指定的删除缓冲区
利用命名缓冲区可很好地保存若干文本段,便于以后存取、移动或者重排。这些缓冲区用a到z字母命名!为了访问这些缓冲区中的一个,要使用双引号
例如:要把一行插入a缓冲区,可键入:
"ayy
为了把这个文本放回该文件中,键入"ap


   (c).m做标志命令:
   m 字母 用字母标记当前行,以后可用 '字母使光标移动到当前行,
(参看'命令)

列子:1。将a文件中的4行到b文件中

       命令如下:"ay4+
                   :ex b (转到b文件中)
                    然后"ap
         2. 将a中多行复制到b文件中
先在开始处做标志mk
然后在末尾用"ay'k (光标自动回到开始处,此时已经把你的内容放到缓冲区了)
其中a表示缓冲区a
然后用ex转义到你的文件B中,然后用"ap命令粘贴就行

3。如果你文件中有多次要复制粘贴的话,看下面:
a表示缓冲区a ,你还继续可以使用缓冲b吗
缓冲区有a-z和1-9这么多
缓冲区就好象windows下的煎切版一样,它有好多个,你可以把你想要的复制进去,然后粘贴,只不过你用"ay时候多换a就是了,如你要复制462行用"ay ,复制536行用"by
    
我编写的不好,恳请斑竹帮我修改和补充,谢谢
来自:http://hi.baidu.com/%B4%FA%CD%F2%BB%D4/blog/item/56d18ddf9eb3d4d58c102969.html
以前我也写过类似的博文,今天也重再抄一个吧:
   日常维护我们经常会遇到某个程序使用了哪些端口,某个端口被哪个程序占用,如何查看呢,下面介绍如下:
对windows系统:通过windows任务管理器找到应用程序,右击“转到进程”,查看进程pid号(如无此列,请在“查看”-“选择列”中添加该列),然后在 cmd命令行下面输入netstat -an -o 然后找到对应的PID号 就能找到端口了。同理,某个端口被哪个程序占用,反查便可。注:有时netstat -na -o查出内容太多,不易找到pid,可通过重定向到txt文件(>pid.txt)查找。
对linux系统:查看某程序使用端口,在控制台输入netstat -na -p |grep  pid/program name,便可;查看某端口被程序占用,在控制台输入lsof -i tcp:port或netstat -na -p |grep port便可。

当然,以上也可以通过cport或sv等端口查看工具查看。如:
Linux下运行一个PHP程序去执行一项艰巨的串口查询任务,读出串口值,但从来不推出,Ps进程时,发现进程出现两个状态,如下:

上面两行,出现了D,和S的进程状态,于是查询网络上的解释如下:
D Uninterruptible sleep (usually IO)
不可中断的深度睡眠,一般由IO引起,同步IO在做读或写操作时,此进程不能做其它事情,只能等待,这时进程处于这种状态,如果程序采用异步IO,这种状态应该就很少见到了

S Interruptible sleep (waiting for an event to complete)
可接收信号的睡眠状态,sleep函数可演示这种状态

主要是想对D进程做下研究,如下:
  S其实很正常,但是那个D,有一类垃圾却并非这么容易打扫,那就是我们常见的状态为 D (Uninterruptible sleep) ,这些垃圾进程要么是求而不得,像怨妇一般等待资源(D),这种垃圾进程偏偏是刀枪不入的,不管换哪种枪法都杀不掉它们。无奈,只好reboot,像剿灭禽流感那样不分青红皂白地一律扑杀!
怨妇 D,往往是由于 I/O 资源得不到满足,而引发等待,在内核源码 fs/proc/array.c 里,其文字定义为“ "D (disk sleep)", /* 2 */ ”(由此可知 D 原是Disk的打头字母),对应着 include/linux/sched.h 里的“ #define TASK_UNINTERRUPTIBLE 2 ”。举个例子,当 NFS 服务端关闭之时,若未事先 umount 相关目录,在 NFS 客户端执行 df 就会挂住整个登录会话,按 Ctrl+C 、Ctrl+Z 都无济于事。断开连接再登录,执行 ps axf 则看到刚才的 df 进程状态位已变成了 D ,kill -9 无法杀灭。正确的处理方式,是马上恢复 NFS 服务端,再度提供服务,刚才挂起的 df 进程发现了其苦苦等待的资源,便完成任务,自动消亡。若 NFS 服务端无法恢复服务,在 reboot 之前也应将 /etc/mtab 里的相关 NFS mount 项删除,以免 reboot 过程例行调用 netfs stop 时再次发生等待资源,导致系统重启过程挂起。

  ps 的手册里说D状态是uninterruptible sleep,Linux进程有两种睡眠状态,一种interruptible sleep,处在这种睡眠状态的进程是可以通过给它发信号来唤醒的,比如发HUP信号给nginx的master进程可以让nginx重新加载配置文件而 不需要重新启动nginx进程;另外一种睡眠状态是uninterruptible sleep,处在这种状态的进程不接受外来的任何信号,这也是为什么之前我无法用kill杀掉这些处于D状态的进程,无论是”kill”, “kill -9″还是”kill -15″,因为它们压根儿就不受这些信号的支配。

  进程为什么会被置于uninterruptible sleep状态呢?处于uninterruptible sleep状态的进程通常是在等待IO,比如磁盘IO,网络IO,其他外设IO,如果进程正在等待的IO在较长的时间内都没有响应,那么就很会不幸地被 ps看到了,同时也就意味着很有可能有IO出了问题,可能是外设本身出了故障,也可能是比如挂载的远程文件系统已经不可访问了。

  正是因为得不到IO的相应,进程才进入了uninterruptible sleep状态,所以要想使进程从uninterruptible sleep状态恢复,就得使进程等待的IO恢复,比如如果是因为从远程挂载的NFS卷不可访问导致进程进入uninterruptible sleep状态的,那么可以通过恢复该NFS卷的连接来使进程的IO请求得到满足,除此之外,要想干掉处在D状态进程就只能重启整个Linux系统了。

  看到有人说如果要想杀掉D状态的进程,通常可以去杀掉它的父进程(通常是shell,我理解的这种情况是在shell下直接运行的该进程,之后该进 程转入了D状态),于是我就照做了,之后就出现了上面的状态:他们的父进程被杀掉了,但是他们的父进程PID都变成了1,也就是init进程,这下可如何 是好?此时我这些D状态的进程已经影响到其他一些进程的运行,而已经无法访问的NFS卷又在段时间内无法恢复,那么,只好重新启动了,root不是玉皇大 帝,也有无奈的时候。

  跟czhang说起这个事,觉得Linux如果有这么一个专用的垃圾回收进程就好了:系统自动或者用户手动把僵尸进程,和比如之前我遇到的D状态进程的PPID设为这个垃圾回收进程,那么通过干掉这个垃圾回收进程来清理这些僵尸们,这样该有多美好…
总结:我估计是我的PHP代码正在等待串口的温度数据返回罢,一直没有等着吧,就等呀等,其实是那一瞬间给我用Ps命令监控到了,呵呵。EOF
来源:
http://www.blogjava.net/fhtdy2004/archive/2009/07/05/285515.html
http://hi.baidu.com/xuwanbest/blog/item/45f18f3dbce0aece9e3d6255.html
这样:

如下:


利用Ls查出来后再接上路径的方法:
WEB_39_74_sles10sp1:/home/jackxiang/public_html/adc_branches/tst # ls -lart  $PWD/order*.html
Nov 22 16:36 /home/jackxiang/public_html/adc_branches2/tst/order_detail.html
Nov 22 16:36 /home/jackxiang/public_html/adc_branches2/tst/order_result.html
Nov 23 09:19 /home/jackxiang/public_html/adc_branches2/tst/order_report.html

ls -lart ~+/order*.html 也行。

注:
~+和$PWD一样的功能,就是一样的不同表示罢了。

通过find配合~+输出文件路径:
我本地 有NEWS.JS这个文件,,服务器上也有一个,,本地版本库跟服务器 版本库一样的情况下 有人改了服务器上的NEWS.JS这个文件,,同时 你也改了 NEWS.JS 这个文件,,你们两个提交的时候 版本库都会自动加以个版本,,也就是 你们两个的版本一致了但是文件内容不一致导致的:
问题是确实有服务器的改动,但是改动并没提交,本地确实在此时改动,那请问怎么样才知道是哪些文件有这样的改动呢,我好删除,有命令么?
1)svn stat查看有无冲突:
svn stat .
看没有conflict啊:
svn stat .|grep conflict

2)对服务器中因中间临时修改时的文件予以强制回退到svn版本中,如下:希望恢复一整个目录的文件,可以使用--depth=infinity选项
[root@localhost cntv_mytv]# cd application/
[root@localhost application]# svn revert --depth=infinity .  
Reverted 'models/app.php'
————————————————————————————————
自己安装了一个,得到CentOs6.0的内核版本号:



刻录需要超刻的方法:
打开Nero文件-选项-高级 启动DVD超刻 前面打勾,然后确定。数度选择4X,最后,提示刻录失败,其实已经好了。
Last:
自己刻录,自己安装,果然Ok啊,哈哈。
================================================================
centos 6.0已经正式发布了,做为一个大版本的第一个版本肯定有很多问题,RHEL 6.1早发布修补了很多问题,当然还有增强(或增加)了一些功能,所以真正重要生产服务器还是期待centos 6.1的发布,估计下个月底就会发布。
http://qaweb.dev.centos.org/qa/dashboard 预计下周会正式发布下载,且centos 5.7 发布也一样
2011-08-26
centos 5.7官方最新消息称最快7-10天内发布
centos 6.1不太顺利,估计要比5.7晚点
2011-09-01
centos 5.7已经发布了,开始同步外部镜像,估计这两天就可以下载
现在已经有部份镜像点有下载了:
http://ftp.twaren.net/Linux/CentOS/5.7/isos
http://centos.mirror.nexicom.net/5.7/isos/
更多的见:http://www.centos.org/modules/tinycontent/index.php?id=30
按照计划先推出CentOS 6,然后再进行CentOS 6.1的工作。centos。Karanbir表示CentOS 6将在未来的数个星期内发布,而之后的CentOS 6.1只需要几个星期的时间,centos ftp,因为目前CentOS 6的开发branch的自动化和测试流程已经基本完善。centos和rhel。
centos 6.1预15天左右可供下载,可能还得等,官方更新build包日志:http://qaweb.dev.centos.org/qa/blog ,感谢CentOS团队无私的奉献。
在centos 6.1发布之前,centos临时发布了CentOS 6.0 CR Repo,有需要的可以下载用于CENTOS 6.0,同时也说明centos 6.1可能会再次跳票(大家都习惯了吧!)
# yum install centos-release-cr
# yum update
详见:
https://www.centos.org/modules/newbb/viewtopic.php?topic_id=33458&forum=53
http://www.h-online.com/open/news/item/Advance-updates-for-CentOS-6-1-1350302.html
法一:

法二:



由于不同系统中ifconfig返回信息的格式有一定差别,故分开讨论:

Linux:

FreeBSD/OpenBSD:

Solaris:

三段代码的原理类似,都是先获取含有IP的行,再去掉含有127.0.0.1的行。最后获取IP所在的列


参考:http://linux-wiki.cn/wiki/Shell%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%BD%93%E5%89%8DIP%E5%9C%B0%E5%9D%80
rpm -qR cnginx-1.4.7-1.x86_64
openssl-devel  
pcre-devel
libpcre.so.0()(64bit)
       ......


Linux中往往是这样子的,一对的,例如:

有一个真的包,也就是有so包,往往还有一个:libxslt-devel-1.1.17-2.el5_2.2包,它的作用就是把libxslt-1.1.17-2.el5_2.2的相关配置放到Linux默认编译能找得到的位置,如:

这样的错误,说是找不到这个xslt-config这个文件,而你一看,libxslt-1.1.17-2.el5_2.2安装了,就是找不到,然后,你用命令:

发现xslt-config 不在这个包里面,而实际呢?

在这个包里呢?所以要多关注:devel这样的rpm喔。
扯远了一点儿,还是继续说吧,碰到这个问题大概可以用这个方法去解决(我碰到几个都是这样搞定的):

譬如:

解决方法:

其实有可能是你自己的Mysql安装后没有把它放入到那个默认的lib目录中即可,如下:
/usr/lib中去,如下:
先说我的简单配置:


访问:
http://status.jackxiang.com/

然后看是怎么配置和相关模块,及参数含义,如下:
http_stub_ status这个模块能够获取Nginx自上次启动以来的工作状态 此模块非核心模块,需要在编译的时候手动添加编译参数 --with-http_stub_ status _module ,配置说明:


指令
stub_status





stub_status
语法: stub_status on

默认值: None

作用域: location

创建一个 location 区域启用 stub_status

"stub status" 模块返回的状态信息跟 mathopd's 的状态信息很相似. 返回的状态信息如下:

Active connections: 291
server accepts handled requests
16630948 16630948 31070465
Reading: 6 Writing: 179 Waiting: 106active connections -- 对后端发起的活动连接数

server accepts handled requests -- nginx 总共处理了 16630948 个连接, 成功创建 16630948 次握手 (证明中间没有失败的), 总共处理了 31070465 个请求 (平均每次握手处理了 1.8个数据请求)

reading -- nginx 读取到客户端的Header信息数

writing -- nginx 返回给客户端的Header信息数

waiting -- 开启 keep-alive 的情况下,这个值等于 active - (reading + writing), 意思就是Nginx说已经处理完正在等候下一次请求指令的驻留连接

   在Linux下给你权限小了呢?你说在原有目录下部分文件是root创建的,或者其他兄弟用root角色创建的或者拷贝过来的,无法用小帐号删除,你说要root方便,于是你sudo -s 也好,su root也好成了root,爽了吧,于是你开始整了,如下:
root在终端上执行rm -rf ./命令。一时疏忽,错把目录./ 打成/,虽然及时发现,按下ctrl+c中断命令执行,但已过去几秒钟,开发机上的部分文件已经被删除。
   这时系统还是照常运行,但已经是微稳了,于是某一天,那一天,一个测试人员测试一紧急项目,发现该机器的页面打开很慢,直接对apache多次重启后,情况依旧,看似很专业的vmstat查看系统资源时,没有发现异常,只因时间已晚,调试心情急切,一时冲动,输入了重启的命令。造成了服务器无法重启,挂了,这到底是谁的错,好像有个歌曲有点像:)

  其实,这根源就是只差一点造成的,习惯决定,忘记了,但有一个好的操作习惯会避免这些问题的发生或者把范围缩小。

我的一点Linux下rm小习惯,如下,可以参考下,有更好的更好:
1.rm时要养成心中多一点的习惯:
rm -Rf ./.    平衡点
当你看到这个时,你敢马上删除吗?不会,这就可能得到避免了
rm -Rf /.      不平衡

2.再就是常用PWD来探测:进入目录中并PWD确定无误后再删除
以减少把跟给干掉一部分了,这样留下隐患,万一有人重启就挂。

3.就是修改那个rm -Rf 这个玩意把它通过alias(别名)整个搞成一个移动而不是真删除
万一整出问题到移动的文件夹找回,这个rm -Rf 就相当于 mv folder /tmpfolder.

4.实在是没有法子了张宴兄弟好像介绍一个可以磁盘恢复的软件,看能否找回,但看是
简单,好像也很难搞。URL:http://blog.s135.com/linux_ext3_undelete/

5.系统启动后自动运行脚本,使其终端这样显示,随时知道你的位置,类似于PWD:
root@116.255.139.240:/data0/proxy_temp_dir#   ,这个脚本忘记放哪儿了...
在 root 目录下,生成一个 .bashrc 文件

来源:补上,来自Scottjiang兄弟,Thanks。
最后,一个小心的操作,以及习惯的养成,才是国防之根本。
启动rsyncd的命令行:




理解:从{ip}这台机器上用root用户连接远程rsync服务器和本机需要同步的目录/usr/local/push_endsvr 同步,
            并作限定速度为3000KB,不需要同步logs目录!

关键参数解释:
rsync --help|grep bwlimit
     --bwlimit=KBPS          limit I/O bandwidth; KBytes per second
     --progress      show progress during transfer
     --include=PATTERN       don't exclude files matching PATTERN
     --port=PORT             specify double-colon alternate port number

实际测试情况如下:

里面是配置了从/root/elink这个目录向:/home/elink这个目录推送,后查看目录/home/elink的层次结构发现如下:

说明/root/elink/jackxiang.txt 中包含目录也给推送到了/home/elink下,形成/home/elink/elink/jackxiang.txt
阅读全文
示例用wget下载整个目录包括图片和CSS&HTML:
root@116.255.139.240:/home/admin/wget#
wget -r -x  http://c.jackxiang.com/login/index.html?url=http://bbs.jackxiang.com/passport.php
查看下载情况:
root@116.255.139.240:/home/admin/wget/c.jackxiang.com/login# ls
css  images  index.html?url=http:%2F%2Fbbs.jackxiang.com%2Fpassport.php
阅读全文
一.调试打印C程序中的数组的方法

二.打印C程序中的结构体的方法


打印整个结构体:


打结构体中的某个值:


如果打开printf pretty这个选项,那么当GDB显示结构体时会比较漂亮。如:

四.修改变量的值


他人实践:http://wenku.baidu.com/view/77cbd54f767f5acfa1c7cdda.html
GDB个人总结下载:


参看:http://wiki.ubuntu.org.cn/index.php?title=%E7%94%A8GDB%E8%B0%83%E8%AF%95%E7%A8%8B%E5%BA%8F&variant=zh-cn
本站参考:
http://jackxiang.com/post/4014/
http://jackxiang.com/post/757/

使用 GDB 调试多进程程序:
http://www.ibm.com/developerworks/cn/linux/l-cn-gdbmp/
http://tieba.baidu.com/f?kz=874502809
http://blog.163.com/redhumor@126/blog/static/1955478420108192540752/
find命令常用来查找特定目录下,所有相关文件,可是也经常要排除特定内容的文件/目录,比如不想看svn/cvs的系统文件目录,如何做到呢,明显-name不能解决问题,但是可以用find 的 -not参数,比如查找不包含.svn的所有文件:
代码:去SVN目录:


法一:

法二:


再者find经常结合xargs处理复杂的功能。
阅读全文
   近来学习了一下C++在Linux下的多进程并发服务器的模型,听专搞C++服务器的兄弟们说这个也不行,需要Epoll,Select模型,还需要FiFo队列的结合,链表,共享内存等同时起多个进程后循环去共享内存里去取数据,去循环的读FIFO才会高效更有效形成一个更高更强更快的多并发的服务器,本质就是异步服务。
      我也想学,但苦于基础不好,于是否给我顺手抓了一本Unix网络编程 实用技术与实例分析,这一章节,代码错误较多,还好有兄弟帮忙调试,在此感谢,看来还是需要把书写好才能省下不少时间啊,写书的人或排版的也许太匆忙罢,和兄弟沟通后说错误多是为了让初学者多调试,写错了也有理由,我倒。
近来事情不多也就了解了下他们的架构,画画图什么的,其实Mysql长连接这块我觉得应该做进PHP中,现在PHP都FastCGI开自己的端口了,长连接也做进去不是难事哇,期待加到下一个PHP扩展中,直接整成可配置的连接池得了,上图:
阅读全文
缘起:最近想学下C++,Linux下的C++,但苦于没有找到好的编辑器,经同事介绍,有同事在用source Insight,我也用过,近来发现scott用VC2008,还会自动提示,跳转什么的,好生羡慕,苦于没有安装源文件,只好在自己的VC6.0上整上同一套来学习下C++开发喽,听其他人都说:
   VC6.0是一个不错的编辑器编译器,直至现在还有不少人有用它做开发的,XP系统是盗版的,再来个VC6.0是盗版的也无足轻重啦,但VC6.0不像source Insight 和CFree那样天生都具有提示功能,以及行号功能,但它也有它的优点,经过左右思考后结论如下:
1.代码字体很清晰,有条例,编译提示都有的,在这里没有问题,放到Linux下应该没太大问题,有问题再修改咯,主要是提高编码速度和质量才是,在哪个系统上跑不关心呗,不过Windows Server要钱,我提示下,Linux下运行Web CGI什么的可是免费的哇,微软的Server不是个人能买得起,听说是按连接数算,如果你还想买个Oracle那TMD可是按CPU数来算滴,这下TMD完了两家都帮做广告了。
2.能一键F5就能编译提示错误。【这个好像source Insight无,但中文字体显示让人觉得不舒服,但它自己带提示,而CFree有行号,也有编译mingw,但不大气,国产也需要注册,不注册也是盗版不是,没面子哇(你想说我很抠是吧,才100块钱注册费用都不给),我有个观点就是盗版全用一个公司的盗版得了,免得多家来找你就不好了,常言道:虱子多了不咬, 债多了不愁,就用一家,省得好几家找你,多事了不是?,何况你一个人用,微软尽管现在比起以前卖XP来说收入少了一点点,让人感觉是经营多少有点惨淡,最进我发现不是还有很多专利赚钱的嘛,听说手机上的专利钱一个手机都抽5美元不是,喔,原来瘦死的骆驼比马大,你这点小钱,So Little,再说当年八国联军火烧。。。扯远了,扯远了,不讲道理哈,打住。
3.就是现在VC6.0后有什么Visual2008等也出来了,微软估计都懒得理你,找你打官司真是无聊,爱死死一边用去吧:)

常用快捷键:
Alt + M:列出当前文件所有的函数
Alt + G:函数定义和声明的跳转
shift+alt+f:查找选定的内容,比VS2010自带的爽,不信你选定一个函数试试
Ctrl + J - 列出成员,仅包括代码提示
F3: 查找下一个
Shift+F3: 查找上一个


下载:
首先,来下载那个提示工具:
一个是在北邮的学校网上找了个最新破解版本的,
提示语法和函数的工具下载地,分Part1,Part2,分别URL如下,这个版本是1649,下面爱文的版本是1837:
http://bbs.byr.edu.cn/att/NetResources/44974/443
http://bbs.byr.edu.cn/att/NetResources/44973/488
当然也可以到Sina爱问下载,这个补丁Visual AssistX 10.6.1837安装文件和破解补丁打包下载 这个版本的VAX安装包直接支持所有的VS,包括VC6 VS2003 2005 2008 2010。
使用方法,URL是:http://ishare.iask.sina.com.cn/f/14588331.html
再次,是下载那个行号工具,后来的行号提示工具是在Sina爱问上找到的,老东家爱问上确实有很多好东东,近来百度文库上也有好多好东东哇,这尽管是涉及到版权,确定有很多知识和学习的文档,不顶不赞,默默享用,Sina爱问行号显示的插件下载URL如下:
http://ishare.iask.sina.com.cn/f/11944905.html?retcode=0

安装:
第一个提示代码和函数语法的插件直接安好就是,好像有一个破解VA_X.dll的给覆盖到提示代码的安装目录下就行。
第二个行号安装如下:
1)拷贝:拷贝文件VC6LineNumberAddin.dll到
D:\Program Files\Microsoft Visual Studio\Common\MSDev98\AddIns
2)注册:双击VC6LineNumberAddin.reg进行注册。
3)启用
打开vc6,菜单栏:Tools -> customize -> Add-ins and Macro Files
选中VC6LineNumber Developer Studio Add-in
后记:
在第3)中看到了那个提示插件,我估计是就是安装时它就帮你勾选了这个Visual Assist X Add-in啦。

最后,
有了这两个插件,后面开发效率上可能会有较大提高哇,我也是初学,还请大家帮我,有什么好学习C++的方法的给我留言,呵呵。


Add: 2014-01-13 visual studio 2008
回忆未来-向东-Jàck  下午 05:31:26
两个安上了,提示是怎么跳来着,当年我是用的vc6.0

scott  下午 05:32:17
安装后,有没有这个工具条

回忆未来-向东-Jàck  下午 05:32:29
有了,哈哈。

跳不动,是要做索引?

scott  下午 05:33:10

关了,重新打开一次,光标放到函数哪里,点击右上角的“Go”
回忆未来-向东-Jàck  下午 05:35:02
喔,好。
回忆未来-向东-Jàck  下午 05:36:30
O了,嘿嘿。





—————http://blog.renren.com/share/232211851/7847121738————

函数跳转
Alt + G:函数定义和声明的跳转
F12: 转到所调用函数或变量的定义
Alt + M:列出当前文件所有的函数
查找
Ctrl+F: 查找
Ctrl+Shift+F: 在文件中查找
F3: 查找下一个
Shift+F3: 查找上一个
替换
Ctrl+H: 替换
Ctrl+Shift+H: 在文件中替换
Alt+F12: 查找符号(列出所有查找结果)
----------------------------------------------------------------
代码编写
----------------------------------------------------------------
Shift + Alt + Ente - 全屏显示
tt - 快速插入 _T()
Alt + Shift + Q:鼠标定位到函数名上,若是在h文件中,按此快捷键会弹出右键菜单,里面有个选项--创建定义;若是在cpp文件中,则按此快捷键会弹出右键菜单,里面 有一个选项--创建声明。 这在定义好接口之后,再来写实现时,配合Alt+O是非常快捷的。
Ctrl + R + E - 封装字段(VS 2008已经基本不需要该快捷键了,因为C# 3.0的自动属性 – Auto-Implemented Properties)
Ctrl + J - 列出成员,仅包括代码提示
Ctrl + Shift + Space - 参数信息
F7 - 跳转到窗体后置代码,WinForm中、WebForm中都可以
----------------------------------------------------------------
代码操作
----------------------------------------------------------------
Ctrl + K + C - 注释
Ctrl + K + U - 取消注释
Ctrl + ] - 寻找匹配的括号
Ctrl + Shift + ] - 选择匹配的括号与其中的代码
Ctrl + F - 快速查找
Ctrl + H - 快速替换
Ctrl + Shift + U - 转换为大写
Ctrl + U - 转换为小写
Ctrl + K + D - 设置文档格式
Tab - 增加缩进
Shift + Tab - 减少缩进
Ctrl + M + M - 折叠代码,例如将光标放在#region、if、方法头的位置,将会折叠它们
----------------------------------------------------------------
调试运行
----------------------------------------------------------------
F5 - 启动调试
Shift + F5 - 停止调试
F9 - 设置断点
Ctrl + Shift + F9 - 删除所有断点
F10 - 逐过程调试
F11 - 逐语句调试
----------------------------------------------------------------
项目的操作
----------------------------------------------------------------
Alt + Enter - 打开选定项的属性对话框
Ctrl + Shift + N - 新建项目
Shift + Alt + N - 新建网站
Ctrl + N - 新建文件
Ctrl + Shift + O - 打开项目
Shift + Alt + O - 打开网站
Ctrl + O - 打开文件
在日常生活中往往有一些命令很长,如要到apache的htdocs下,要到Mysql和Apache的下bin目录下,要删除某个文件而事实上是把这个rm -Rf 变为了移动到某个大硬盘中去了,就会避免误删除后出现找不回文件了(当然有些软件可以找回,另当别论),别名可用来定义新的命令。一条别名当多条,这些别名通常放在初始化文件~/.bashrc(bash)或者/.tcshrc(tcsh)中,这样在交互式子shell中就可以使用这些别名。
在bash中,内置命令alias的语法如下:

在tcsh中语法如下:

jackxiang@178.258.918.106:/# vi ~/.bashrc


阅读全文
su 和 sudo 的区别:
    1.共同点:都是root用户的权限;
    2.不同点:su仅仅取得root权限,工作环境不变,还是在切换之前用户的工作环境;sudo是完全取得root的权限和root的工作环境。


su - root 和 su root(su)有什么区别?
su - root:表示人以root身份登录
just like login as root, then the shell is login shell,
which mean it will expericene a login process,
usually .bash_profile and .bashrc will be sourced
su   root:表示与root建立一个链接,通过root执行命令
like you open an interactive shell in root name,

最直接的区别就是su目录还是原先用户的目录
但是su或su - root后目录就变为root用户的主目录了。

实践:
vi /root/.bashrc

我是先root登录后:
root@172.25.3*.7*:~# su jackxiang
jackxiang@Tencent:/root>
发现上面的区别了吧?由root变为jackxiang后,控制台出现不同,再来看看:
jackxiang@Tencent:/root> cdh
bash: cdh: command not found
cdh这个不存在,也就是/root/.bashrc这个没有被执行,注意这点。
我们再 su - root 一下:

看上面,控制台变了吧,主要原因是什么呢?是因为我们在su - root,或者su root 时,这一瞬间其root时去执行了脚本:
/root/.bashrc。
它告诉我们,想要修改PATH,PHP,APACHE,Mysql等的路径,都可以到这个脚本中添加即可。

有一个文档说明此事:
背景:http://jackxiang.com/post/2656/  里有通过php进行curl配置并进行模拟IP来进行请求:PHP的curl扩展为我们用了CURLOPT_HTTPHEADER来做host的工作, curl -l -H "Host:test3.qq.com"  http://17.2*.*.70/index.php,这儿讲一下用shell下的curl来一行进行模拟及其用wireshark进行抓包发现其http的头的原理。自己之前写过放在这儿:jackxiang.com/post/2656/
____________实践有用的Curl强大功能________________
用Curl直接模拟Host方法,Curl伪造Refer的方法:
http://jackxiang.com/post/6201/
获取cookie后,模拟refer并带上cookie通过curl访问某个接口:
http://jackxiang.com/post/4082/
PHP用CURL伪造IP和来源:
http://jackxiang.com/post/6201/
______________________________________________
完整示例只传入data,其它项默认即可:

调用示例:


—————————————————————Curl模拟Host和Ip对应关系—————————————————————
一个是Linux命令行来实现,二是从PHP编码上来实现不用修改Linux的Host就可能实现对虚拟主机的访问,实现如下:
一.假如70上有一个test3.qq.com ,我们在Windows下还需要通过

对Host加入配置:

后,
才能通过浏览器访问,而我们如果不加就不能访问。
现在,可以通过Curl来不用修改host文件也能访问,如下:
去Host:

用Curl直接模拟Host如下:

如果看代码图片:
curl -l -H "Host:mytv.jackxiang.com"  http://127.0.0.1/uploads/temp/201310261334109440.jpg > xdy.jpg
-----------------------------------------------------------------------------------------------------------------------------------------------------------
如果有&号连接的Url需要对Url加引号:
curl -l --silent -v -H "Host:api.xdxp.cn"  "http://115.182.35.108/general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json"
*   Trying 115.182.35.108... connected
* Connected to 115.182.35.108 (115.182.35.108) port 80 (#0)
> GET /general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json HTTP/1.1

不加引号的情况:
curl -l --silent -v -H "Host:api.xdxp.cn"  http://115.182.35.108/general/getVideoCategoryList?uid=100&videoCategoryIds=15,16,17,18,19,20,31&format=json
* About to connect() to 115.182.35.108 port 80 (#0)
*   Trying 115.182.35.108... connected
* Connected to 115.182.35.108 (115.182.35.108) port 80 (#0)
> GET /general/getVideoCategoryList?uid=100 HTTP/1.1
-----------------------------------------------------------------------------------------------------------------------------------------------------------

与此同时,我们还能通过在Linux自己带的Curl来进行不用设置/etc/hosts来实现我们自己的模拟host访问。这样在调试接口等就不用我们自己每次都修改Host文件了,带来了极大的方便。

二.我们在PHP代码编程使用中PHP设置Curl参数来实现的代码片段如下,注意传入的是IP,而Host设置在函数的代码中:


如一个域名有两个IP,如何来实现调用的简单实现,这样有利于分担接口负载,如下:


综上所述,其本质是模拟了Http协议的头,想了解更多请看我之前写的一篇文章:
《PHP CURL CURLOPT_HTTPHEADER设置HOST(也就是不用配置host访问),Curl伪造Refer的方法及其杂谈》
Url:http://jackxiang.com/post/4022/


—————————————————————伪造客户端IP—————————————————————
一)这就是伪造的Curl的PHP代码:
curl_setopt($ch, CURLOPT_HTTPHEADER, array('X-FORWARDED-FOR:'.$sendip, 'CLIENT-IP:'.$sendip));

来自:http://www.phpec.org/php/curl.html
参考:http://www.onlypo.com/archives/7


二)在Linux的Shell环境下如何不用PHP设置Header呢?
linux curl http header处理:

设置http请求头信息:
curl -A "Mozilla/5.0 Firefox/21.0" http://www.baidu.com #设置http请求头User-Agent
curl -e "http://pachong.org/" http://www.baidu.com #设置http请求头Referer
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com
来自:http://www.aiezu.com/system/linux/linux_curl_syntax.html

于是,如果忽悠下服务器端简单获取客户端的IP,实践如下,用-H参数即可:

于是日志显示:2013/12/06 21:05:57     HostIp:jackxiang.com--ClientIp:192.168.1.108--
果然被curl给忽悠了吧,其被忽悠的代码如下:
X-Forwarded-For:192.168.1.108 在http头里通过linux下的curl注入头里即可!
调用如下:
file_put_contents($logFile, date("Y/m/d H:i:s") . "\t" . $type .'HostIp:'.$this->request->getHttpHost().'--'.'ClientIp:'.$this->request->getClientIp().'--'. "\t" . var_export($msg, true) . "\n", FILE_APPEND);
代码片段如下:


模拟修改Host的IP,不用修改Host文件的方法也是-H参数,能否合并起来使用呢?实践是不行的,如下探讨研究:

但是把上面两个写在一块用\n分开,实践好像不行,尽管上面有这样一个示例:
curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.aiezu.com
实践是可行的,如:curl -H "Connection:keep-alive \n User-Agent: Mozilla/5.0" http://www.baidu.com
Connection:keep-alive \n User-Agent: Mozilla/5.0
但是把Curl模拟Host所对IP及如模拟客户端IP放一块,实践不Ok,如下:

出现接口返回不对,Nginx如下,只能单用吗?疑惑,因为这都是\r\n拼接的呀,\r\n也不行,如:http://www.myhack58.com/Article/html/3/62/2012/34944_2.htm
<html>
<head><title>403 Forbidden</title></head>
<body bgcolor="white">
<center><h1>403 Forbidden</h1></center>
<hr><center>nginx</center>
</body>
</html>
很有可能是一个要非ip的字母数字作为域名,而另一个是要ip冲突导致矛盾吧?

Add Time:2013-12-19
在实践中用到,一外包兄弟写的代码经过队列调时出现没有入库,但是线上有多台机器,而所配置的机器的/etc/hosts指向是虚拟IP,不能修改,于是否,用这个方法找到了问题所在,其双方沟通的接口参数不一致导致,当时是怎么说通了,这个真是玄乎,代码如下:


对下面这个链接进行tcpdump抓包查看其请求是怎么样的,这儿python主要是想对json输出不能轻易读取加上json输出一行进行格式化:

第一点:直接用ip访问就不用找dns了,直接对IP访问,这是一定的。
第二点:这个-H主要体现在头上,也就是服务器(如:WebServer nginx apache tomcat都是对这个解析进行分发到或是php-fpm进行解析这个头作返回)
User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Accept: */*
Host:t43.jackxiang.com

也就是说,根据nginx里的conf文件进行分发时核对Host,或是php-fpm进行分发,这块还需要进一步研究,自己写server时可能会用到,也就这儿可以作为标志,至于怎么去的,我们可以直接用域名作对比:
1)域名直接访问(会先读host或dns得到一个ip后直接对其发起连接),curl "http://t43.jackxiang.com/json.php":
Source      Destination    Protocol
192.168.131.6    115.182.9.243    HTTP

GET /json.php HTTP/1.1
User-Agent: curl/7.17.0 (i586-pc-mingw32msvc) libcurl/7.17.0 zlib/1.2.2
Host: t43.jackxiang.com
Accept: */*

附:curl -H"Host:t43.jackxiang.com" "http://115.182.9.243/json.php"
2)用-H的curl通过localhost进行访问:
Source      Destination    Protocol
127.0.0.1             127.0.0.1              HTTP
User-Agent: curl/7.15.5 (x86_64-redhat-linux-gnu) libcurl/7.15.5 OpenSSL/0.9.8b zlib/1.2.3 libidn/0.6.5
Accept: */*
Host:t43.jackxiang.com


直接访问IP是不行的,加一个错误的头也是不行的,说明的的确确是这个Host:xxx进行解析:

C:\>curl -H"t43.jackxiang.com" "http://115.182.9.243/json.php"
<html>
<head><title>404 Not Found</title></head>
<body bgcolor="white">
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>

C:\>curl -H"Host:t43.jackxiang.com" "http://115.182.9.243/json.php"
    {  "status":200,  "data":  [  {  "id":1000,  "name":"John"  },  {  "id":1004
,  "name":"Tom"  }  ]  }

安装rinetd
    wget http://www.boutell.com/rinetd/http/rinetd.tar.gz
    tar -zxvf rinetd.tar.gz
    cd rinetd
    make;make install
配置文件
    vi /etc/rinetd.conf
最简单的配置方式
    192.168.1.100 80 192.168.1.200 80
这样就完成了
然后你所有对于 192.168.1.100 80端口的访问将转发到 192.168.1.200 的80端口上
但是有个前提就是 192.168.1.100这台机子上的没有启动任何占用80端口的进程,如apache等;否则将转发不成功。
PS:他只能转发TCP的端口,不能转发UDP以及其他协议的端口;
rinetd的详细配置教程
http://hi.baidu.com/opbsder/blog/item/31d6f545a1c2f9318694734a.html
——————————————————————————————————————————————————————————————
linux下简单好用的工具rinetd,实现端口映射/转发/重定向
官网地址http://www.boutell.com/rinetd


软件下载
wget http://www.boutell.com/rinetd/http/rinetd.tar.gz

解压安装
tar zxvf rinetd.tar.gz
make
make install

编辑配置
vi /etc/rinetd.conf
0.0.0.0 8080 172.19.94.3 8080
0.0.0.0 2222 192.168.0.103 3389
1.2.3.4 80     192.168.0.10 80

说明一下(0.0.0.0表示本机绑定所有可用地址)
将所有发往本机8080端口的请求转发到172.19.94.3的8080端口
将所有发往本机2222端口的请求转发到192.168.0.103的3389端口
将所有发往1.2.3.4的80端口请求转发到192.168.0.10的80端口

命令格式是
bindaddress bindport connectaddress connectport
绑定的地址  绑定的端口  连接的地址  连接的端口

[Source Address] [Source Port] [Destination Address] [Destination Port]
源地址  源端口   目的地址  目的端口

启动程序
pkill rinetd  ##关闭进程
rinetd -c /etc/rinetd.conf  ##启动转发
把这条命令加到/etc/rc.local里面就可以开机自动运行

查看状态
netstat -antup

需要注意
1.rinetd.conf中绑定的本机端口必须没有被其它程序占用
2.运行rinetd的系统防火墙应该打开绑定的本机端口
例如:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 1111 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 2222 -j ACCEPT

来自:http://blog.csdn.net/paulluo0739/article/details/7023711
一、查找上G的文件:

列出上G并删除的命令,如果加上 |sh 就能删除掉:
find /data/logs/nginx -type f -name "*.log-*" |xargs -i du -lh {} |awk '{if(match($1, "G")>0) print $0}' |awk '{print "rm -Rf " $2}'
二、查找上的G目录:


这样来查找:


示例Demo:
root@116.255.139.240:/data1/logs#     find . -name "*" |du -sh *|awk '{if(match($1, "G")>0) print $0 }'
5.0G    access.log



Linux中清理磁盘空间时,经常需要找出大于200M的文件。
这个命令可以实现这个功能:
find / -size +200M -exec du -h {} \;


http://blog.csdn.net/yfleng2002/article/details/8080556


三、文件夹大小的及层级统计:
du -h --max-depth=1 |grep 'G' |sort   #查看上G目录并排序
du -h --max-depth=0 user
--max-depth=n表示仅仅深入到第n层文件夹,此处设置为0,即表示不深入到子文件夹。

du -h --max-depth=1 /home/|grep [M] |sort     #查看上M目录并排序
21M     /home/jackx
32M     /home/
9.2M    /home/jackxiang

du -h --max-depth=1 |sort                            #查看当前目录下所有一级子目录文件夹大小 并排序
1.2G    .
12K     ./.ssh
16K     ./.gconfd
16K     ./js
45M     ./yucc
464K    ./s
48K     ./.gconf
48K     ./.subversion

参考:http://www.cnblogs.com/mfryf/p/3243211.html
Tags: ,
分页: 21/22 第一页 上页 11 12 13 14 15 16 17 18 19 20 21 22 下页 最后页 [ 显示模式: 摘要 | 列表 ]