背景:在家里装没事,在单位安装时用的是trying试用版本,给c盘增大空间说是要注册,我去,刚开机就启动了,不知怎么退出,好不容易找到方法是F6(http://m.zol.com.cn/nbbbs/d160_86426.html),还得狂按,否则又进入那个Acronis OS了,我去。得下个破解的,得增加c盘空间才行。

参考来源自己博客:http://jackxiang.com/post/7194/
破解下载:http://www.downkr.com/soft/14325.html
中招了一直进不了系统怎么办?http://m.zol.com.cn/nbbbs/d160_86426.html
也准备装个WIN7,但是C盘才不到15G昨天就想给C盘扩大点空间,村里的人建议我安装Acronis Disk Director Suite v10.0.2160 英文正式版这款软件,但是不小心安上了一个叫acronis os selector的软件。问题就出来了,之后每次我再开机,这个软件都会自动运行,没有办法进入系统.我就用了联想的一键还原功能,把我的系统还原了。可是这个软件NB的是每次开机它依然自动运行.可我按了那个小旗子标志的BOOT键后可以进入系统.进入系统我想用搜索功能把这个软件找到然后给它卸载了,可是搜索功能找不到他.这样我觉得很麻烦,每次开机它都自动运行,我就到买机子的联想店那里去解决,他说他也没有用过这个软件,不知道能解决不.他给我重装了系统,D,E盘没动,问题依然存在.他也解决不了!!!!!!!!我的天啊,村里有没有高手帮帮忙了!!
解决了按F6,得快:
他爷爷的终于被我给搞定了!我的机器一键恢复了三次,重装系统了一次, 重起了N次.都没有搞定acronis os selector这个顽固软件,害的我的小Y 也当了把小白鼠.希望我的小Y的小白鼠没有白当,希望以下的经验能够给遇到次问题人能够有帮助!最后我研究了下这个软件的英文说明书,终于找到了解决他的办法.原来这个是一款多系统软件它在系统系统前运行用来选择你想进入的系统!关闭它的方法如下!开机自动进入Acronis软件(进入这个软件后运行速度非常慢,但是可以运行)选择tools菜单-----选择deactivatge Acronis os Selector(有的版本可能没有deactivatge Acronis os Selector但有Steup,选择Steup进入other菜单)然后按照提示清除Acronis os Selector(这个中间你要选择一个你要应用的系统,如果你没有重装过系统肯定就是唯一的可用系统了,不向我一键恢复了三次,重装系统了一次一共四个系统可选我当然要选择最后这个了),最后电击OK就可以了,重起看下就知道了这个软件就关闭了!可是这个软件应该还在你的计算机里但是我暂时还没有找它,奶奶的找到它了我必须给它粉碎了!因为我的机器重装系统了,他的卸裁程序也没有了!还有两种简单的方法供童鞋们参考,这两种种方法都能进入系统但是每次开机都需要操作不闲麻烦的人可以用!第一种就是刚刚要进入系统的时候就是还没有运行Acronis os Selector之前就按F6可以跳过要快,F6要按的快哦!,第二种就已经进入该软件后双击BOOT键(就是带有小旗子标志的那个)也可以进入系统!以上的这些方法都是亲测的保证可以成功!再提供一种彻底卸载的方法(非亲测适合于没有重装系统的人)就是在控制面板卸载Acronis Disk,很慢,选择第二项,从自己的系统启动,下一步点击默认按钮,点击YES.重起.到Acronis启动提示后-按ESC,它会提示卸载成功!!!!哎呀累死我了,也心疼我的小Y希望我的经历对大家有点用处!!!!!他爷爷的终于被我给搞定了!我的机器一键恢复了三次,重装系统了一次, 重起了N次.都没有搞定acronis os selector这个顽固软件,害的我的小Y 也当了把小白鼠.希望我的小Y的小白鼠没有白当,希望以下的经验能够给遇到次问题人能够有帮助!最后我研究了下这个软件的英文说明书,终于找到了解决他的办法.原来这个是一款多系统软件它在系统系统前运行用来选择你想进入的系统!关闭它的方法如下!开机自动进入Acronis软件(进入这个软件后运行速度非常慢,但是可以运行)选择tools菜单-----选择deactivatge Acronis os Selector(有的版本可能没有deactivatge Acronis os Selector但有Steup,选择Steup进入other菜单)然后按照提示清除Acronis os Selector(这个中间你要选择一个你要应用的系统,如果你没有重装过系统肯定就是唯一的可用系统了,不向我一键恢复了三次,重装系统了一次一共四个系统可选我当然要选择最后这个了),最后电击OK就可以了,重起看下就知道了这个软件就关闭了!可是这个软件应该还在你的计算机里但是我暂时还没有找它,奶奶的找到它了我必须给它粉碎了!因为我的机器重装系统了,他的卸裁程序也没有了!还有两种简单的方法供童鞋们参考,这两种种方法都能进入系统但是每次开机都需要操作不闲麻烦的人可以用!第一种就是刚刚要进入系统的时候就是还没有运行Acronis os Selector之前就按F6可以跳过要快,F6要按的快哦!,第二种就已经进入该软件后双击BOOT键(就是带有小旗子标志的那个)也可以进入系统!以上的这些方法都是亲测的保证可以成功!再提供一种彻底卸载的方法(非亲测适合于没有重装系统的人)就是在控制面板卸载Acronis Disk,很慢,选择第二项,从自己的系统启动,下一步点击默认按钮,点击YES.重起.到Acronis启动提示后-按ESC,它会提示卸载成功!!!!哎呀累死我了,也心疼我的小Y希望我的经历对大家有点用处!!!!!
来自:http://m.zol.com.cn/nbbbs/d160_86426.html  多谢这位兄弟啊,我还好没有重装。


——————————————————————————————————————————————————————————————————————————
以下摘自 :http://jackxiang.com/post/7194
分区魔术师不太稳定,DK,Diskgenius和win7自带的分区工具都易用,在windows界面右点“我的电脑”,选择“管理”,然后在其中“硬盘管理”中进行相关操作。
PQ8.0不支持WIN7
WIN7用自带的分区工具就行了,很简单。
释放D盘一部分空间,整合到C盘去。就行了
最后,还是选择了Acronis Disk Director 11 Advanced 官方简体中文注册版,它支持在Windows 7 及以下版本的操作系统中:
DownLoad:http://www.itopdog.cn/utilities-operating-systems/diskdriver-software/acronis-disk-director.html
acronis disk director 11教程:
http://wenku.baidu.com/link?url=ZfoalPw3cS8J_qb0fnqflm07Qvvxf5OSTbZIfV3FlN_W-4T3Ro9NtfNee51a0ZPnYUmM2hT-YTyAypB5Je8f5BnE1ctsMYAnWbxsy3R-A3W

后记:新的版本用上面的工具把C盘符扩大后,会重启,像dos一样,后增加成功。

Advanced Workstation:
H9NL5SZ5-EN6BD5ED-A7P9D22V-8WXZ5QAG-4G5XK7JS-X52BEDQX-J9J8UUAC-KRLG8GAT



来源:http://www.pczpg.com/html/caozuoxitong/Win_7/20091016/20963.html

安装了Windows7,忽然发现c盘只剩下1G多的空间,而D盘却有40多G,于想从D盘转一些空间给系统盘而又不损失C盘数据,不用重做系统。 想当然地从网上找了PQ,可是却不支持Windows7,最后我找到了Acronis Disk Director Suite v10.0.2160,非常好用,还有汉化包,用中文操作,方便得很啊。

32位操作系统,配合32位CPU,寻址空间位2^32次方,计算出来是
4294967296字节,就是4G,32位系统最大支持4G空间,如果想要32位
系统支持4G以上空间的话,就要用PAE的特殊内核,采用特殊方式访问,
但是系统效率会比原生的64位系统低。

64位操作系统配合64位CPU,寻址空间是2^64次方,计算出来是
18446744073709551616字节,换算一下4G个G,太大了,反正是
N多G,一辈子也用不完。当然这是64位系统的理论最大内存支持,实际上谁也用不了这么大内存,

反正如果你的系统是64位的,CPU是64位的,那么随便插个8G,16G内存是肯定能支持的。
在开发EMOS 新版(基于Centos5)的时候,发现在用的VM 5.5 工作站版本不支持2.6.18的核心,无法使用hgfs文件系统来共享windows下的磁盘或目录,折腾了vmware-tools半天不得其法。直接倒腾hgfs 的kernel source也没搞好。

后来想了下hgfs只是个kenrel module,能否下一个新版支持2.6.18的vmware-tools(linux版)来解决?于是下了一个vmware 6.x的vm-tools for linux,安装/编译,居然可以!在这里这个方法共享一下,希望对路过的朋友有帮助。

软件列表:

VMware 5.5 workstation (english)
CentOS 5.3 i386
VMware tools for linux (6.0)
Kernel 2.6.18
HGFS (support 2.6.18 kenrel)

支持hgfs后,我就挂了d盘的一个test目录给vm里的centos写文件进去,这样每次build了emos iso后就直接写入win下的目录,而不是在vm里写个iso,再ftp或scp出来,太麻烦了,现在这样舒服多了。可以随时进行测试了!

CentOS 5.4 发布

WEB2.0 jack 2009-12-14 11:47
CentOS的项目管理员曾经“闹过”失踪,不过最终还是割舍不下对CentOS“情谊”,没过几天又带领着团队从新出发。就在今天,CentOS开发团队在官网上发放了5.4 版本的下载。



CentOS 是一个建立在红帽企业Linux基础上的免费提供源代码的 Linux 发行版。


CentOS 5.4 基于 RHEL 5.4.0,几乎对所有包都进行了升级,包括服务器和客户端。所有的upstream库都合并在了同一个包中,方便使用。



CentOS 5.4 提供包括 i386 及 x86_64 的架构版本
把Tbl_User_Bak_09_12_15替换为:Tbl_User
sed -i 's/Tbl_User_Bak_09_12_15/Tbl_User/g' Tbl_User_Bak_09_12_15.sql


函数参数 s 表示替换(substitute)文件内字串。其指令格式如下 :
[address1[ ,address2]] s/pattern/replacemen/[flag]
说明:
函数参数 s 最多与两个位址参数配合。
pattern: 它为 reguler expression 字串。它表示文件中要被替换的字串。
阅读全文
《蜗居》反映的是一对名牌大学毕业的知识分子夫妇到大都市上海拼搏奋斗的历程。辛苦七载,梦想一点点幻灭,最后落得为了一套房子而绞尽脑汁。虽然最后导演还特意让人们看到点希望,郭海萍通过教老外中文而创办了一所海萍学校。但也看出导演顺势的无奈,毕竟,郭海萍不是通过正常的就业使自己一步步达到自己想要的生活的。导演在昭示什么?
在这部电视剧中,我们看到传统的道德理念被彻底颠覆。新的道德理念甚至还有一些社会伦理在扭曲着人们的价值观。金钱覆盖下的社会,走捷径总是比正常的劳动能够快速地获得自己想要的东西。虽然那些金钱买不到的东西偶尔也噬咬着自己的灵魂。但无关紧要,没有牺牲,就不会获得胜利;没有付出,又怎么能够得到?为了物质,有多少人在出卖自己?只不过作为女人,仅仅出卖的是自己的肉体。比起那些出卖人民利益、出卖国家利益、出卖人民权力、出卖国家信仰的人,郭海藻们出卖自己的肉体,实在不算什么。而且,她的影响并不能和那些人一样,祸国殃民,践踏社会法制和公共秩序。阅读全文
awk '{print $1,"asdf", $3, $4}' file > newfile


awk 的 gsub 函数使用:
awk -F'\t' '{gsub(/abc/, "def", $6); print}' files.txt
解释:
gsub(/abc/, "def", $6)  把第 6 列里的所有 “abc” 替换成 “def”。
print 打印整行(修改后的结果)。


实践如下:
awk -F' ' '{gsub(/abc/, "def", $6); print}' file.txt

abcdef adfd dfdf fdfd ab def qqq
abcdef adfd dfdf fdfd ab def qqq
abcdef adfd dfdf fdfd ab def qqq
abcdef adfd dfdf fdfd ab def qqq



原文件如下:
cat file.txt
abcdef adfd dfdf fdfd ab abc qqq
abcdef adfd dfdf fdfd ab abc qqq
abcdef adfd dfdf fdfd ab abc qqq
abcdef adfd dfdf fdfd ab abc qqq


 作为Linux下的程序开发人员,大家一定都遇到过Makefile,用make命令来编译自己写的程序确实是很方便。一般情况下,可以手工写一个简单Makefile,如果要想写出一个符合自由软件惯例的Makefile就不那么容易了。
  在此,介绍如何使用autoconf和automake两个工具来帮助我们自动地生成符合自由软件惯例的Makefile,这样就可以象常见的GNU程序一样,只要使用“./configure”,“make”,“make instal”就可以把程序安装到Linux系统中去了。这将特别适合想做开放源代码软件的程序开发人员,又或如果你只是自己写些小的Toy程序,那么这个文章对你也会有很大的帮助。阅读全文
关于键盘和鼠标谁更快捷之争,是一个永远被程序员争论的话题。我想大多数人都不会极端的信奉一种操作方式,鼠标更为大众接受,但掌握一些快捷键对于提高操作速度是有帮助的。

si为我们提供了丰富的快捷键和灵活的定制方式,同时还支持自定义命令和脚本,熟练掌握这些之后相信可以使你更加喜欢它。

以下是我认为比较有用的快捷键:

1. ctrl+o,打开文件列表
2. F7,打开符号检索窗口(全局列表)
3. F8,打开符号检索窗口(本地文件)
4. ctrl+=,调转到符号的定义处
5. alt+, /alt+. 跳转到前/后一次停留的地方
7. ctrl+/,全局搜索
8. ctrl+',搜索并替换
9. shift+f8,把当前光标下的关键字标记为高亮
更多:阅读全文
问题:
为方便快速登录某系统,经常会对secureCRT会话设置默认登录用户名和密码。可一旦登录系统的密码做了修改,在secureCRT中要在哪修改已保存密码呢?
处理:
secureCRT将每个session的配置文件保存在
C:\Documents and Settings\Administrator\Application Data\VanDyke下的config文件夹。
根据session名找到对应的配置文件,删除配置文件中password对应的value即可。


如何恢复SecureCRT保存的密码

很老很土却很有效的办法,现公之于众。


登录密码保存在CRT的session配置文件中,不过是加密保存的,看不懂
也不知道它的加密算法,没法解密. 所以如果能让CRT自己显示出来就好了

首先修改要登录的主机的IP地址,改成另外一台机器, 这台的登录密码要跟原来机器的不一样
然后连接,这时因为登录密码错误,会弹出一个窗口,显示了用户名和密码,密码是用一串星号表示的
随便下一个星号密码查看软件,查看一下就行了
我用 “侠客密码查看器”,很不错的查看密码软件。
BSD 和 SYSV 是世上最正统的 UNIX 操作系统,在 LINUX 出现之前,他们统治了整个 UNIX 世界。也正因为此,这两个最正统的 UNIX 核心流派都在实践中积累丰富的经验。


SYSV 偏向于商业,BSD 更偏向于自由和实用。

现 在,本文只讨论 BSD 流派最活跃的发行版 FreeBSD。FreeBSD 作为最重要的一个 BSD 发行版,它保持了 BSD 自由和实用的原则。但亦因为此而忽略很多商业的考虑的相应的功能。凭藉我自己多年 UNIX 的使用经验,列出一些 BSD 的优势与不足,希望以此作为读者的参考。

不足之处:

文件系统:
FreeBSD 的文件系统属于中上水平,但未达至企业级的应用需求。主要体现于文件系统本身存在的脆弱性。在高负载的情况下,文件系统存在有崩溃的可能性。需要注意的 是,导致这样的结果,也有可能由于磁盘控制器(SCSI, RAID 等等)驱动程序本身导致的。没有原厂设备驱动程序是个比较大的问题。

网络:
FreeBSD 的网络性能是无用置疑的!但是网卡驱动(是的,设备驱动是个很重要的因素)不完善会导致性能和稳定性大打节扣。虽然这与 FreeBSD 的核心没有关系,但对于一个可提供服务的整体来说,驱动程序却是一个很重要的组成部份。

另外,由于一个网卡接口上的线的松动,有可能导致网络中断。而一些商业化的 UNIX 操作系统可以在当主网卡不可用时将该网卡上的 IP 转移至可提供正确连接的网卡上。


多处理器(超线程)支持:
在 6.0 出版之前,FreeBSD 对多处理器支持是不尽人意的。INTEL CPU 提供有 HT(超线程)功能。FreeBSD 在 HT 开启的状态下会比在关闭的状态下差。我忘记了超线程的原理,只记得拥有超线程功能的 CPU 在过多的切换情况下性能就会降低,不过在什么时候切换和切换些什么我忘记了。FreeBSD 在开启 HT 后性能会变差,可能与这个有关。


出众之处:

网络:
FreeBSD 的网络性能非常好,可以同时处理海量的网络请求,这使 BSD 非常适合作为防火墙的环境。另外,在网络聊天服务器,如 IM 这种应用上,FreeBSD 也是很合适的选择。网易的 POPO 聊天软件服务器端就是在 FreeBSD 下开发并投入到实际环境中使用的,通过对内核的修改,可以轻松支持数以万计的用户连接,要注意,是永久性的连接,除非用户点击注销按钮。


内存:
你 会发现你服务器上的内存会被 FreeBSD 很好地利用,以使你的服务达至最佳的状态。FreeBSD 不会因为将过多的内存用于磁盘 CACHE 而使更重要的程序获取不到物理内存而让系统使用 SWAP。在实际的环境中,我就遇到过 LINUX 为保持磁盘的 CACHE,而让新任务使用 SWAP,导致新任务执行时间大大拉长。在执行 swapoff -a 操作后,运行同样的新任务只需要原来时间的一半。而系统并没有因为关闭 SWAP 而停机,表示物理内存并没有因为新任务而被耗尽。

一个例子:

Memcached 是一个非常出众的基于内存的缓存服务器。它可以为被其支持的程序语言提供串行化数据保存的功能,这样可以让同一份数据被多台服务器共享,而更重要的是,它的速度非常快。

我 可以利用 PHP 或 JAVA 从数据库中获取数据结果集,然后将结果集的内容保存进 Memcached,其他服务器上的程序同样可以相应的 key 从 Memcached 中获得相同的拷贝。在分布式的环境,这种需求非常明显。我自己也尝试当 SESSION 数据保存至 Memcached 而无需为共享 SESSION 数据而专门架设一台 MYSQL 数据库。


在利用 Memcached 作为数据的中心点,网络的流量会非常大,内存的使用会非常频繁,基本上不与磁盘打交道,而且整个系统的稳健性要求非常高。在这种应用需求下,FreeBSD 自然地成为首选。因为它为高效的网络性能,更合理的内存利用率,和稳健的系统基础。





一挥受到此文的影响故而最终决定在FreeBSD上装Memcached和图片服务器!
原文请见《FreeBSD是什么?FreeBSD的优缺点分析》
Uptimes-Project.org统计了各种操作系统的连续运行时间的最高纪录以及平均值。我们看到目前这项纪录的保持者是由运行于Alpha主机之上的OpenVMS集群系统保持的,其最长连续运行时间为10年180天6小时40分钟,平均运行时间也有4年多。我们常用的Windows系统最高纪录为189天1小时59分钟,平均值为10天多;Linux的表现则为1年 309天(最高值)和接近20天(平均值)



Uptimes Project
Welcome to the uptimes project. This site uses open source software to track, report, and generate statistics based on user data.

We currently have collectively monitored over 10907 Years 98 Days 10 Hours 30 Minutes of uptime.

With more than 2371 hosts reporting.


Overall Statistics
Highest Uptime
NameWVNETcluster

DescriptionWVNET VMScluster with both ...

Uptime11 Years 303 Days 20 Hours 57 Minutes

Detailed Stats
Overall Project Stats
Total Uptime10907 Years 110 Days 6 Hours 18 Minutes


Total Hosts
2371
Active Hosts
134

Operating System Hosts Highest Uptime
BeOS 2 1 Hours 32 Minutes  
Darwin 15 89 Days 12 Hours 40 Minutes  
Embedded 67 1 Years 131 Days 2 Hours 27 Minutes  
FreeBSD 93 5 Years 64 Days 17 Hours 37 Minutes  
Linux 466 3 Years 331 Days 14 Hours 24 Minutes  
Mac OS X 1 1 Days 2 Hours 43 Minutes  
mIRC 1 18 Days 18 Hours 13 Minutes  
NetBSD 9 3 Years 4 Days 23 Hours 5 Minutes  
OpenBSD 18 2 Years 76 Days 4 Hours 39 Minutes  
OpenVMS 15 1 Years 265 Days 8 Hours 42 Minutes  
OpenVMSClust 4 13 Years 337 Days 19 Hours 16 Minutes  
OpenVMSCluster 1 10 Years 5 Days 1 Hours 17 Minutes  
OS/2 3 250 Days 7 Hours 50 Minutes  
Unknown 1 49 Days 16 Hours 41 Minutes  
Windows 779 272 Years 74 Days 12 Hours 28 Minutes  
跨域名设置cookie需要用到两个文件 分别在两个域名下
比如你现在有两个域名 www.a.com  www.b.com
你现在想在b下设置cookie并通过在b下面设置a的cookie
你需要b下面的文件b.php
setcookie("test", ‘value’, time()+3600, "/", ".b.com");//建立b的cookie

<script src="http://www.a.com/seta.php?id=value"></script>//[/url]传递到a中

同时在a下面建立接收文件a.php
header('P3P: CP="CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR"');//有些浏览器需要这句话

setcookie("test", $_GET['id'], time()+3600, "/", ".a.com"); //在a中设置cookie

为你能睡个好觉,呵呵!

以前真没在意cookie的作用域问题,可能以前用.com域名没出过问题,今天用公司的一个cn域名测试,怎么也不能实现cookie共享,后来采用 js设置cookie,在另外一台服务器上共享cookie成功,真叫气人!翻阅了一下php的cookie 规范 ,里面有这么一段

Only hosts within the specified domain can set a cookie for a domain and domains must have at least two (2) or three (3) periods in them to prevent domains of the form: ".com", ".edu", and "va.us". Any domain that fails within one of the seven special top level domains listed below only require two periods. Any other domain requires at least three. The seven special top level domains are: "COM", "EDU", "NET", "ORG", "GOV", "MIL", and "INT".

看出来了吧,真他娘的草蛋!除了"COM", "EDU", "NET", "ORG", "GOV", "MIL", and "INT"这几个后缀的域名可以设置二级作用域,其他的域名至少三级才可以,也就是说想通过设置作用域为b.cn来实现a.b.cn和c.b.cn下的 cookie共享用php是不行的,php只能实现作用域b.a.cn下的d.b.a.cn和e.b.a.cn间的cookie共享,希望大家注意,再遇到此类问题,别浪费时间拼命的测试了……
延伸阅读:http://www.ibiancheng.cn/Article/VBNetArticle/200711/67.html
if[空格  条件  空格] 注意空格!!否则shell无法解析
Shell Scripts学习之if
–b 当file存在并且是块文件时返回真 -c 当file存在并且是字符文件时返回真 -d 当pathname存在并且是一个目录时返回真 -e 当pathname指定的文件或目录存在时返回真 -f 当file存在并且是正规文件时返回真 -g 当由pathname指定的文件或目录存在并且设置了SGID位时返回为真 -h 当file存在并且是符号链接文件时返回真,该选项在一些老系统上无效 -k 当由pathname指定的文件或目录存在并且设置了“粘滞”位时返回真 -p 当file存在并且是命令管道时返回为真 -r 当由pathname指定的文件或目录存在并且可读时返回为真 -s 当file存在文件大小大于0时返回真 -u 当由pathname指定的文件或目录存在并且设置了SUID位时返回真 -w 当由pathname指定的文件或目录存在并且可执行时返回真。一个目录为了它的内容被访问必然是可执行的。 -o 当由pathname指定的文件或目录存在并且被子当前进程的有效用户ID所指定的用户拥有时返回真。阅读全文

cut的用法

WEB2.0 jack 2009-12-7 17:41
我们经常会遇到需要取出分字段的文件的某些特定字段,例如 /etc/password就是通过":"分隔各个字段的。可以通过cut命令来实现。例如,我们希望将系统账号名保存到特定的文件,就可以:
cut -d: -f 1 /etc/passwd > /tmp/users
-d用来定义分隔符,默认为tab键,-f表示需要取得哪个字段

当然也可以通过cut取得文件中每行中特定的几个字符,例如:
cut -c3-5 /etc/passwd
就是输出/etc/passwd文件中每行的第三到第五个字符。
-c 和 -f 参数可以跟以下子参数:
N 第N个字符或字段
N- 从第一个字符或字段到文件结束
N-M 从第N个到第M个字符或字段
-M 从第一个到第N个字符或字段
cut  使用 将原串通过 符号 分割成行   cut  -d  分割符号 第几行 ( f几  ) ( -f几 )

awk  将原串通过 符号 分割成行       awk  -F  分割符号 "{print $几 }" 默认为空格

#!/bin/sh
udpstr=`netstat -anp | grep 7001 | cut -d "*" -f2 | cut -d "/" -f1 '`
if[-z "$udpstr"]
then
  $udpid = ` echo $udpstr | tr -d ' ' `  #去掉空格
  kill "$udpid"
fi


tcpstr=`netstat -anp | grep 7002 | cut -d "*" -f2 | cut -d "/" -f1 '`
if[-z "$tcpstr"]
then
  $tcpid = ` echo $tcpstr | tr -d ' ' `  #去掉空格
  kill "$tcpid"
else
  exit 1
fi

cd /var/www/html/modules/sag_manager/socket
php -q  /var/www/html/modules/sag_manager/socket/socket.server.php
exit $?

shell的一些语法:

表 31.4. 常用的位置参数和特殊变量

$0            相当于C语言main函数的argv[0]
$1、$2...     这些称为位置参数(Positional Parameter),相当于C语言main函数的argv[1]、argv

[2]...
$#           相当于C语言main函数的argc - 1,注意这里的#后面不表示注释
$@           表示参数列表"$1" "$2" ...,例如可以用在for循环中的in后面。
$?           上一条命令的Exit Status
$$           当前Shell的进程号

 用户可以比较两个字符串相等或不等,也可以测试一个串是否赋了值。有关串的操作符如下:
 str1 = str2      当两个串有相同内容、长度时为真
 str1 != str2      当串str1和str2不等时为真
 -n str1        当串的长度大于0时为真(串非空)
 -z str1        当串的长度为0时为真(空串)
 str1         当串str1为非空时为真


1、 set命令

当没有参数的时候,列出系统中所有的自定义变量值;当有参数的时候,重置基本参数如$1、$2等。如set

`date` 将date命令的输出当作输入参数;


2、let命令

      执行算术运算。功能如i=j+1,shell语法为:

      let “i=$j+1”,等同于 ‘expr’。 后者只能作用于整数,如 i=`expr $i+1`; 如果使用非整数

,退出状态不为0

3、expr  

      expr也有模式匹配功能。

   可以使用expr通过指定冒号选项计算字符串中字符数。.*意即任何字符重复0次或多次。
        $value=accounts.doc
        $expr $value : '.*'
   输出:12
   在expr中可以使用字符串匹配操作,这里使用模式. d o c抽取文件附属名。
       $expr $value : '\(.*\).doc' 在圆括号前加转义符号是表示圆括号是用于提取功能的。
   输出:accounts

4、shift命令

       将参数表向左移动一个位置,$2变成$1,...,依次类推。

5、shell中可以嵌套命令,使用\`来保护内层命令,如`cd \`pwd\``。

6、设置IFS为换行符:IFS=’

’(还真得换行)

7、两个特殊操作

     命令1 && 命令2 :只有在命令1执行成功时才执行命令2;

     命令1 || 命令2 :命令1失败才执行命令2;

8、变量赋值

     “”引用的字符串需要shell解析其中的``、$、\等特殊字符,而’’引用的字符串则被看作完全的

   字符串,echo ‘`pwd`’将输出`pwd`;而echo “`pwd`”将输出当前目录;

   变量
含义

$var
Var的值,若无定义则无值

${var}
同上,用于同$varx等类型变量区分

${var-thing}
Var有定义时,取值$var;无定义时取值thing,而$var不变

${var=thing}
Var有定义时,取值$var;无定义时取值thing,$var值设为thing

${var?message}
有定义时取值$var;否则打印message并退出shell,若message为空串,打印var:parameter not set

${var+thing}
有定义时取值thing;否则无值





9、shell内部变量

      变量
含义

$#
参数个数

$*
所有参数

$@
同上,稍有区别

$-
Shell的选择项

$?
上次执行命令返回值

$$
Shell的进程标识符

$!
用&启动的最后一个命令的进程标识符

$HOME
cd命令的缺省参数

$IFS
参数分割词的字符表

$MAIL
信件文件,当其改变时给出信息you have mail

$PATH
搜索命令的目录表

$PS1
提示符串,缺省为$

$PS2
后继命令行提示符,缺省为>



有关$*和$@得归纳:

$*和$@扩展为参数,并被重复扫描;参数得空格将字符串分成多个参数;

“$*”表示shell文件的所有参数及其空格连在一起作为单个词处理;

“$@”与shell文件接收的参数等价,参数中的空格被忽略,其结果是等同于原来参数的一个单词列表。

10、 shell模式匹配规则

*      匹配任意字符串,包括空字符串

?      匹配任意单字符串

[ABC]  匹配ABC中任意字符

“…”   完全与…匹配,引号保护特殊字符,也可以写成’…’

\C     匹配C

11、 case语句

case word in

  模式1)  命令;;

  模式2)  命令;;

  …

  *)       命令[;;]

esac

只能匹配一个模式

12、 if 语句
if 命令
then
else
fi
其中换行很重要,then、else和fi仅在换行或分号之后被识别,else部分可选。可以利用case语句替代if

和test测试语句,对于test命令不是内部命令的情况下,case语句执行的要快;

13、循环
1)for i [in 文件(参数)列表]
do
  循环体
done
如果i后面没有in部分,则隐含地表示对shell文件的全部参数,即$*

2) While 命令
            do
                  循环体,只要命令返回状态为真便继续进行
  done

3)until 命令
do
   循环体,只要命令返回状态为假便继续执行
Done
例如:
While sleep 60
do
…
Done
每隔60秒执行一次循环中的操作;
   另外,where处的控制命令可以是true、false、或者是:,冒号命令是一个shell内部命令,仅仅计
   算参数值,然后返回“真”,但是它不需要调用系统中的命令,所以效率比true命令高;

4)break命令:退出循环,取自C语言。

14、点号命令:
  将文件作为标准输入,从中读入一行一行的命令在当前shell中执行,不要求文件具有可执行权限;

15、 文件命令习惯,后面加上当前进程号码$$为好

16、标准输入命令read
$read greeting
Hello,world
$echo $greeting
Hello,world

17、here document 输入

         <
    <<’s’ 同上,不进行替换。

    <<\s 同上。
在写shell脚本的时候遇到了一个问题,对于下面这个字符串,想把后面从/local开始截取出来。
/work/lib-optimizer/test/local/lib/libcrypto.so.0.9.8
请教同事,知道了一个方法,可以用cut命令,如上面我需要将从local开始的路径截取出来,就可以如下操作
path=/work/lib-optimizer/test/local/lib/libcrypto.so.0.9.8
echo $path | cut -b25-
可是这样,我就得一个个的数要截掉多少个,前面一变动,又得数,呵呵。。。让我想起了初学数学是用手指头数数的时候了 :P 。这样对我现在这种情况来讲不方便,所以网上搜搜,搜到了下面这个小技巧,网上的都没有例子,而且有的说的还不准确,实验了几次才找到正确的。在这里顺便带上个例子。
${varible##*string} 从左向右截取最后一个string后的字符串
${varible#*string}从左向右截取第一个string后的字符串
${varible%%string*}从右向左截取最后一个string后的字符串
${varible%string*}从右向左截取第一个string后的字符串
“*”只是一个通配符可以不要
例子如下:
[xiangyu@localhost ~]$ a="finding"
[xiangyu@localhost ~]$ echo ${a##*in}
g
[xiangyu@localhost ~]$ echo ${a#*in}
ding
[xiangyu@localhost ~]$ echo ${a%%in*}
f
[xiangyu@localhost ~]$ echo ${a%in*}
find

好了,为了让这个字符串截取完整些,把另外些方法也一并贴出来吧!
一、Linux shell 截取字符变量的前8位,有方法如下:
1.expr substr “$a” 1 8
2.echo $a|awk ‘{print substr(,1,8)}’
3.echo $a|cut -c1-8
4.echo $
5.expr $a : ‘\(.\\).*’
6.echo $a|dd bs=1 count=8 2>/dev/null

二、按指定的字符串截取
上面带例子的是第一种方法。
还有一种方法:${varible:n1:n2}:截取变量varible从n1到n2之间的字符串。
可以根据特定字符偏移和长度,使用另一种形式的变量扩展,来选择特定子字符串。试着在 bash 中输入以下行:
$ EXCLAIM=cowabunga
$ echo ${EXCLAIM:0:3}
cow
$ echo ${EXCLAIM:3:7}
abunga
这种形式的字符串截断非常简便,只需用冒号分开来指定起始字符和子字符串长度。

三、按照指定要求分割:
比如获取后缀名
ls -al | cut -d “.” -f2

http://www.bsdlover.cn/html/25/n-3225.html
分页: 220/338 第一页 上页 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 下页 最后页 [ 显示模式: 摘要 | 列表 ]