包含标签 linux 的文章

linux编写定时任务

linux中定时任务用来执行一些周期性的自动化的任务,比如有些人可能用来定期备份,也可能是定期检查一下特殊文件的签名,如果不一致,就报警,检测入侵。 cron是linux下的定时执行工具 这个工具的几个命令是这样的 注意,这几个服务都是要以root权限才能运行的,很多时候,只要我们可能只是一个低权限的用户,那么我们要执行一些定时任务的时候,可以这样做 直接通过这个命令来编辑,无需root用户 首先添加定时任务 打开之后按如下的格式编写 从左到右一次表示 分钟 一小时的第几分 0-59 小时 一天的第几小时 0-23 日期 一个月的的第几天 1-31 月份 一年的第几个月 1-12 周几 一周的第几天 0-6 /1表示每一天 /2表示每两天,直接*的话就表示每天/每小时这样 写完之后,wq保存退出 然后 可以看到自己的定时任务了,然后就不要做什么操作了,操作系统定时会读取配置的,编辑完成之后,我们的定时任务过一会就会生效了。 有时候,可能还要把结果信息和一些错误信息也写入 这里就是说明天的5点50执行一次ls命令,并把结果追加到文件 如果我想每天5点30和17点30都执行一次呢,使用逗号隔开就行了 如果是某个时间段呢 这样5-17点钟的每个30分到会执行 如果是一些特殊的时间点,那么有更简单的方法,比如每月0点或者每天0点执行一次 使用如上的关键字……

阅读全文

linux的CPU负载均值

当运行在Linux上的程序有问题之后,我们通常要看一下当前CPU和内存的使用情况来分析一下问题 对于CPU的使用率,通常用Load Average,也就是负载均值来度量 负载均值是啥? 负载是啥,负载就是对CPU使用率的一个计量,均值就是某一段时间内的一个平均值。 怎么看啊? 直接输入w命令 第一位1.20:表示最近1分钟平均负载 第二位1.28:表示最近5分钟平均负载 第三位1.29:表示最近15分钟平均负载 或者uptime命令 我们一般认为0.00表示无负载,可以理解为CPU空闲,1.00表示CPU满负载,但是注意,1.00是对于单cpu来说的,也就是说,如果是双核,那么这个满负载显示的值应该是2.00,以此类推。 怎么看我是几核啊 通过统计cpuinfo的model name信息来算的 这三个值哪个重要? 一分钟内突然负载很大没关系,当然如果你要排查也没人拦着,如果15分钟的负载均值超过cpu的数目,就要关注了。 那什么就是理想负载呢? 以单个cpu为例,1.00表示cpu满负载运行,没有一点点浪费,实际上,有些管理员认为0.7也许是理想的状态。如果你的经常超过0.7,那么最好查一查。……

阅读全文

[笔记]写代码遇到的一些问题汇总下

本篇是用来填上一篇 挖下的坑的。 1.java调用webservice 有一些已有的webservice服务,由xfire生成发布,有些有参数,有些无参数,无参数的直接我直接使用org.codehaus.xfire这个包里的Client来动态生成客户端。然后调用就可以了。非常简单 但对于有参的,且是服务器自定义的类作为参数的时候,实在是搞不定。。不管是把自定义的类放到本地,包名一致,在invoke的时候生成这个对象还是其他什么方法。都无法完成。 最终换了直接发送soap报文来完成。dirty hack啊。如果你有一些好的方法希望不吝赐教。 解决方案来源自stackoverflow,因为stackoverflow现在国内好像有时候打不开。因此把代码贴过来。有疑问的话留言讨论。 2.Access restriction on class due to restriction on required library rt.jar? 报错 总么都感觉是环境问题,系统bug。解决如下: 进入project properties的 Build Path 设置里. 移除 JRE System Library 再添加回来,方法是: 选择 “Add Library” ,然后选择 JRE System Library. 3.SSHManager类报错:com.jcraft.jsch.JSchException: UnknownHostKey 我使用的一个SSHManager类如下: 报这个错是因为 连接这段代码里少了config.put(“StrictHostKeyChecking”, “no”);这段设置,这个是去掉了严格的安全检查,一般只用于测试目的。 4.navicat连接oracle数据库 之前使用PL/SQL操作Oracle数据库,使用Heidisql操作mysql数据库。。切换麻烦。而且PL/SQL搜索的时候中文有问题。于是打算使用navicat统一管理 方法是: 1.首先下载Instant Client 的32位版本和Navicat Premium 2.然后解压Instant Client,配置navicat 选择oci文件即可 然后新建oracle配置,选择basic模式,其他的根据你的数据库信息自己填写即可。  5.HttpClient的logger日志实在太多了 大人,实在太多了。看不过来啊。附赠一篇log4j配置文件详解 在log4j.properties文件中添加如下配置信息 log4j.logger.httpclient.wire.header=INFO log4j.logger.httpclient.wire.content=INFO log4j.logger.org.apache.commons.httpclient = INFO 最后附赠一些实用的工具 http://www.freeformatter.com/ 程序员必备。各类转换,包括转义工具,格式校验工具。效果很好。 流体力学理论与F1赛车的空气动力学1,2,3 什么雷诺数,伯努利方程,文丘里效应,当年木有好好学啊。这么高大上的东西果然还是有压力。……

阅读全文

Unix sed实用教程系列目录

本系列文章已经译完了,译自awk-sed@theunixschool,收获颇丰,作者没有将明白的我做了补充,并且尝试讲的更清楚,整理成系列索引,方便学习,开篇非译文,是我为了方便后面的理解写的一篇,感谢原作者的分享.有任何问题欢迎留言讨论. Unix sed实用教程开篇 [译]Unix sed实用教程第一篇–向文件中增加一行 [译]Unix sed实用教程第二篇–替换文件内容 [译]Unix sed实用教程第三篇–读写文件 [译]Unix sed实用教程第四篇–选择性打印 [译]Unix sed实用教程第五篇–替换文件内容续 [译]Unix sed实用教程第六篇–删除文件内容 [译]Unix sed实用教程第七篇–输出文件内容(10 Demo) [译]Unix sed实用教程第八篇–CSV文件操作 ……

阅读全文

[译]Unix sed实用教程第八篇–CSV文件操作

本文作为sed使用教程的最后一篇,将比较全面的讲解如何操作csv文件,csv文件通过逗号分隔 示例文件如下: 1.删除第一列s开启替换模式,当^符号在中括号里的时候,就是非的意思,也就是说[^,]匹配了所有不是逗号的一个字符,然后后面的星号表示0个或多个,然后是一个逗号,也就是匹配"xxxx,“替换为空 2.删除除过最后一列的其他所有sed先匹配任意多个字符,然后匹配最后一个“,”这就直接把前面的都匹配完了。替换为空即可。 3.输出第一列好理解把,先匹配第一列之后的逗号,然后是多个字符,然后替换为空 4.删除第二列先匹配第一列之后的逗号,然后匹配一个或多个非逗号字符,这样就匹配了第二列的内容,然后再匹配一个逗号,我简化一下,比如该列是1,2,3,4,那么这一个匹配就是”,2,",替换成一个逗号,就是1,3,4了 5.输出第二列我们可以分析前两个斜线之间的内容 两个右斜线转移了括号,所以括号不是简单的符号,而是正则里的组的意义,圆括号的作用是对字符进行分组,并保存匹配的文本。这里先匹配非逗号的多个字符,然后一个逗号,然后再匹配第二列,并且第二列的匹配用括号括起来,然后匹配其他列,然后里面用\1来引用这个括号的内容,如果前面有两个括号,就可以使用\1或\2这样,分别表示第一个括号或第二个括号的匹配 6.输出最后一列是一位数字的行.*匹配了前面的所有字符,然后,匹配了最后一个逗号,sed的贪婪原则。。然后[0-9]匹配一个数字$表示行尾.ok 7.给每一行自动添加行号这个和cat -n file的效果是一样的。awk也可以很简单的做,这里使用一个=命令会在每一行之前添加一个行号,也就是是,如果执行 文件会是: 然后我们通过管道再执行 N表示读入并合并下一行,然后将两行之间的换行符替换为空即可了 8.如果第一列是Ubuntu,就把最后一列替换成99中间的 匹配“Ubuntu,任意个字符,任意个字符”,也就是将行分成几组,将本行替换成第一组的内容第一组的内容,第二组的内容,但最后的一列被替换成99,就这样。 9.如果第一列是RedHat就删除第二列也好理解嘛。将要保留的用括号分组,然后用\1和\2分别引用第一组和第二组,然后中间的匹配就被删除了 10.在末尾插入一列正则首先匹配了整行字符,然后使用&来引用该匹配,然后添加了一个逗号和一个A 11.在头部添加一列 很简单不是么… 比预计的要快,两天翻译完了.体会到了理解原理对学习sed的好处,希望对想学的人有帮助.           ……

阅读全文

[译]Unix sed实用教程第七篇–输出文件内容(10 Demo)

之前已经学习过选择性打印输出了,本文将通过10个例子全面讲解文件输出的一些方法,主打p命令 首先看一下将使用的示例文件 1.打印文件首行之前讲过了,-n取消默认的全部打印,p表示print,1就是行号了 2.输出最后一行3.输出不匹配X的那些行也好理解,!表示非,就是说包含X匹配的不打印输出 4.输出包含u/x的那些行正则是强大的,这样就匹配了u/x 5.输出以x/X结尾的那些行这里$符号不再是匹配文件尾部,而是行尾,这是正则的规则 6.输出以A/L开头的行前面也说过,^匹配了行首,A表示A匹配,然而|则是或者的意思,为什么要加\转义,是为了避免被解析成pipe管道,后面的就不解释了 7.隔行打印n命令是输出当前行,然后读入下一行到pattern space的意思,这句命令是这么执行的,首先读入一行,然后通过n命令输出,然后通过n命令再读一行,然后把这行删除,就出现了隔行输出的效果 8.如何两行输出,隔两行再输出n;n; 命令呢输出了前两行,然后读入第三行到pattern space,N命令则对如下一行并与第三行合并,然后d命令删除pattern space中的内容,于是三四行被清空,然后读入56行,继续重复。就这样。作者这里给出的例子不直观,我举个例子,我的文件内容是 执行上面的命令后,会输出 明白了吧 9.输出某个范围行内以X结果的那些行这里首先制定了从/Unix/匹配开始到文件尾部的这些行,然后呢,在这些之间的行,如果以X结果,就输出。 10.输出不包括开始和结尾的那些行这个命令就会只输出/Solaris/和/HPUX/之间的行,不包括他们两个。 这里要说一下//这个,当匹配了Solaris的时候就进入了花括号,因为这个里面没有提供任何匹配,所以就考虑最后一次匹配模式,也就是相当于是考虑Solaris这一行,他不被打印,当到了HPUX这一匹配,//又代表了HPUX匹配,这一行也不打印。 Demo完了,你懂了么。……

阅读全文

[译]Unix sed实用教程第六篇–删除文件内容

其实,删除和替换是由一些相同的,不过,这里我们单独列出来,通过25个例子穿插讲解sed删除文件的一些方法,使用的示例文件如下: 1.删除第一行d就是删除,1就是指第1行,记得哦,这不会影响到源文件,一般,做删除的时候一般要加-i参数,前面说过了 2.删除指定行,这里删除第3行3.删除最后一行4.删除范围行,这里删除2-4行5.保留指定的行,这里保留2-4行!这个是对前面的2,4来操作,是非的意思,也就是不是2-4行的行,这样除去2-4行,其他的都删除了 6.删除第一行和最后一行分号隔开两个命令,你懂的,也可以删除第二行和第三行等等. ‘2d;3d’ 7.删除以指定字符开头的行这里就把以L开头的Linux这一行删除了 8.删除以指定字符结尾的行这里就删除了,可以看到AIX没有删除,unix区分大小写你懂的 9.忽略大小写,都删除[xX]匹配x或X,所以就成功了嘛 10.删除文件中的空行^匹配开头,$匹配结果,中间啥都没有,这样就匹配了空行,但是注意哦,如果某一行全是空格,这个命令是不会删除这一行的。 11.删除空行或是仅仅包含空格的行如果你看我前面的文章,这个就不用我说了吧,0个或多个空格就是匹配了所有的空行了 12.删除完全是大写字母的行[A-Z]就匹配了26个大写字母的任意一个 13.删除包含Unix匹配的行14.删除不包含Unix的行15.删除包含Unix或Linux匹配的行这里要说的是|,这个本来是表示or,或的意思,但是在终端下,为了防止被认为是管道,所以要用\来转义 16.删除从第一行到满足匹配的行可以通过行号到模式,模式到行号等等组合来匹配 17.删除从Linux匹配到末尾的行18.如果最后一行匹配AIX就删除,否则就不删除$匹配了最后一行,也可以是行号,比如1,后面的大括号里就是条件和处理方式了,这样就在sed里实现了if条件了,再看一遍这个例子,熟悉一下这个规则 19.所处最后一行如果满足两个匹配20.如果1-4行满足Solaris匹配就删除21.删除包含Unix匹配的行,同时删除下一行N命令将下一行读入pattern space,什么。你忘了,看开篇去,这个命令就删除了两行 22.删除包含Unix的下一行作者这里没有说清楚,我讲一下,N读入了下一行,然后这时候pattern space里就相当于两行并作了一行,中间有一个换行符,所以pattern space里现在就是: 然后通过s命令匹配了\nLinux,并且替换为空,就ok了哦。 23.删除包含Linux模式的行,也包含上一行少年,不要怕,我们一步步来 首先,要知道,为了删除某一匹配的前一行,我们需要将文件的每一行放入到hold space里,一旦发现匹配,我们就开始删除连个缓冲区的内容,其中pattern space存储了当前行,hold space 存储了前一行 而x;p;这是啥呢,这两个命令是对每一行都会执行的,x表示exchange,即是交换hold space 和pattern space中的内容,p则是print,打印pattern space中的内容,因此,每次当前行被存入hold space,然后打印出了前一行的内容 当/Linux/匹配之后,我们使用s/.//来清空当前行,也就是pattern space为空了,当前行相当于被删了,然后使用x和hold space来交换,这样,就导致hold space为空了,然后使用d来删除pattern space的内容(此时pattern space里是交换过来的前一行的内容),因此,匹配Linnx的当前行和前一行都被删除了, 然后呢${x;p;}表示如果最后一行还在hold space里,就把他换出来,打印出来。 而后面的管道之后的命令呢,是吧第一部分sed命令之后产生的空行给删掉。 再理解一下 24.仅删除匹配Linux的前一行,不删除当前行和23类似,当匹配到Linux的时候,hold space 存储了前一行的内容,所以我们交换一下他们,然后前一行就进入了pattern space,然后一个d,这样就把前一行删掉了。别急,还没完,这样,当前行就被留在hold space了。就无法被输出了 1h;1!{x;p;} 1h是说,如果将第1行移动到hold space,也就是1h只对第一行操作,而后面的1!{x;p;}是说对于其他的行执行x;p;命令, 25.删除匹配模式的前后两行有了前面两个例子,自己试试理解一下,有问题留言讨论吧。……

阅读全文

[译]Unix sed实用教程第五篇–替换文件内容续

前面已经学习过替换文件内容了,本文我们学习一些更频繁使用的搜索替换操作. 示例文件使用: 1.替换每行开始的两个字母,这里用XX来替换s代表substitute,前面说过了,^用来匹配行开头,.表示任意一个字符,两个..就是你懂的, 其实,不要^符号也是可以的,因为默认就是从开头开始匹配,如下也可以实现 2.删除每行开头的两个字符看到没有,后两个斜线之间没有内容,也就是用空字符来替换开头的两个字符,就实现了删除 3.要是想删除每行最后的两个字符呢再次强调,$在不同的情况下表示不同的意思,这里匹配行尾,有时候也匹配文件尾部 4.向每行末尾添加内容这里,先匹配行尾,然后把”.Rs"添加到行尾 5.在每行开头添加空格还记得前面说过的么,sed默认不影响原始文件,要是想更新原始文件,请加-i参数 6.移除开始的空格^匹配行首,然后是一个空格,然后是*,表示一个或多个空格嘛,然后替换为空字符 7.移除行首和行尾的空格不要怕,从分号处分开,就是两条命令啦,一个做行首的,一个做行尾的,前面说过的,可以使用-e参数来分开 8.如何在一个字符串前后添加一些其他字符呢,可以用来字符串转义前两个斜线匹配了所有字符,也就是本行,然后后面两个斜线是替换的内容,注意里面的&符号,之前也说过的,表示匹配到的字符,也就是本行了。所有就这样啦 9.移除行首和行尾的一个字符(多个你也会的啦)分开看看,你可以的 10.删除第一个数字之前的所有字符这条命令略复杂,请先回头看一下我们的示例文件,然后我们开始分析这个表达式,地一个^表示匹配行首,然后[^0-9]* 是一个典型的正则,匹配非数字的多个字符,简单说一下[0-9]表示匹配0,1,2,3,4,5,6,7,8,9任意一个字符,前面加个一个^,表示非,也就是不匹配这些数字,然后最后是一个*,表示匹配非数字的连续多个字符,有机会的话我会推荐一个正则系列,或者自己写一篇文章。这里就先这样理解吧。 那猜猜这个是干嘛的 是的,你猜对了,删除开头的所有非字母字符。 11.删除行尾的数字看看前面的你就知道了 12.通过分隔符得到文件最后一列可能你你预想的不一样,是不是,你可能认为会是第一列被删除,其他的列都在,不对的,sed是很贪心的,当我们指定’.*:‘时,他会一直向后查找,尽量匹配更多,所以,就匹配到最后一个列之前了 13.转换整行字符为小写\L是sed的一个命令,Lowercase嘛。\L之后的内容被毁转换,而&表示前面匹配道德内容,所以就实现了转换 14.转换大写\U你懂的,Uppercase ……

阅读全文

[译]Unix sed实用教程第四篇–选择性打印

本文,我们将会学习如何选择性的打印(其实,这里的打印是print,也就是输出到标准输出的意思),用到的示例文件是: 1.打印所有内容一对单引号,没有任何参数即可 2.如何打印包含Gmail的那一行.(grep也可以实现这个功能)在斜线里面,我们指定正则匹配模式,p的意思呢,就是print,打印的意思,也就是打印包含Gmail这一行,但是我们看到Gmail打印了两次,为什么,因为sed的默认行为是在解析完一行之后就把他输出出来,也就是对于Gmail这一行,先执行p解析,解析完成后再默认打印一次,就打印了两次,而其他的,没有命令解析,直接读入完成后输出即可。 如果得到期望的结果呢? -n参数会取消sed的默认打印行为,所以就ok了 3.删除包含Gmail的那一行。(grep -v也有同样的效果)d就是delete的意思,不多解释, 同样,要想删除某一指定的行 4.打印直到模式匹配,这里我们从头一直打印到Yahooq就是quit的意思,这条命令就是对于前面的行都没啥可解析的,执行默认的打印即可,一到碰到Yahoo这一行,打印完成,就停止,退出,因此,就是上面的了 打印某一指定范围行 到此,我们一直在学习基于一个条件取一行或多行,现在,我们来学习打印指定范围行 使用的示例文件如下: 5.打印前三行-n先取消默认打印,然后1,3指定行范围,p表示打印,你想一下我们前面的q命令,就知道下面这个命令效果是一样的 执行默认打印,到第三行的时候退出 6.通过模式指定范围,这里我打印从Yahoo到Live之间的行,包括本身不用多解释了 7.从指定模式到文件尾部,这里是从Redif到文件尾回忆一下$符号吧.少年 8.从开头到匹配模式相信你懂的… 对于数字不需要斜线包围,对于匹配需要斜线.就这样..   ……

阅读全文

[译]Unix sed实用教程第三篇–读写文件

本文将展示如何将文件内容读入到sed输出,同时包含如何将一个文件的部分内容写入到另一文件 一.文件读取 假定有两个文件,file1和file2,内容分别如下: sed有两个选项用来读写文件 看例子: 1.在file1的每一行读完之后读取file2的内容r file2读取file2的所有内容,因此r之前没有知道那个行号或匹配,因此有了上面的输出,记住,sed的工作机制,每次读file1的一行,然后执行命令 2.如何在读取了file1的第一行之后将file2读入r前面加个1就行了 3.当file1某行匹配了模式之后,读入file2sed逐行读入file1,然后判断该行是否匹配banana,如果匹配,就读入file2 4.当file1读取完成后读入file2,其实就是合并两个文件这里只是演示一下,其实cat file1 file2就可以完成合并 _**二.文件写入**_使用一个file1文件,内容如下: 1.将file1的2-4行写入到file22,4w就是写2-4行的意思,那-n呢?默认情况下sed会把读入的文件处理的结果输出到标准输出,也就是终端,而为了不使用默认输出,-n就派上用场了,执行该命令终端不会有任何输出 查看file2内容,发现已经写入成功了 2.从第三行开始全部写入file2就不多解释了 3.如果是用正则呢?该命令将逐行读入file1,然后判断该行是否匹配apple,如果匹配,则作为起始行,然后继续读入,判断是否匹配mango,如果是,则作为终止行,然后将中间的内容写入到file2  ……

阅读全文