Linux下bash中关于日期函数date的格式及各种用法:
阅读全文
在windows下用notapad++写的shell脚本,拷贝到Linux下却无法正常工作,而且一碰到空白行就会报错:./place_category.sh: line 2: $’r’: command not found
这些都是由于脚本的格式不对造成的。
因为在windows下,换行符是rn ,在Linux下是 n,所以在Linux下,当遇到空白行时,实际上是当作有一个命令r去执行,当然会报错了。
而且我定义了一个数组,结果也无法能够当作数组形式的数据,完全还是当作字符串一样。
#!/bin/bash
filename=$1
#定义数组,学校类型的关键字。
schools="学院 校"
array=($schools)
# echo ${array[1]}
解决问题的办法就是在Linux下,或者windows下的cygwin也可以,运行dos2unix file.sh 命令,把shell脚本格式进行转换后即可。
阅读全文
top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。下面详细介绍它的使用方法。
top - 15:59:30 up 55 days, 5:05, 4 users, load average: 0.19, 0.33, 0.30 Tasks: 134 total, 1 running, 133 sleeping, 0 stopped, 0 zombie Cpu(s): 2.2%us, 0.4%sy, 0.0%ni, 97.2%id, 0.0%wa, 0.0%hi, 0.2%si, 0.0%st Mem: 12292800k total, 5476308k used, 6816492k free, 1117884k buffers Swap: 8385920k total, 5136k used, 8380784k free, 3281700k cachePID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 10928 root 15 0 156m 9984 5328 S 6.0 0.1 971:34.63 php 15234 root 18 0 157m 13m 5272 S 1.3 0.1 0:00.04 php 7664 www 15 0 420m 26m 15m S 0.7 0.2 0:00.55 httpd 1 root 15 0 10348 80 48 S 0.0 0.0 1:07.21 init 2 root RT -5 0 0 0 S 0.0 0.0 0:04.55 migration/0 3 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/0 4 root RT -5 0 0 0 S 0.0 0.0 0:00.00 watchdog/0 5 root RT -5 0 0 0 S 0.0 0.0 0:02.20 migration/1</pre>统计信息区
前五行是系统整体的统计信息。第一行是任务队列信息,同 uptime 命令的执行结果。其内容如下:
15:59:30
当前时间
up 1:22
系统运行时间,格式为时:分
1 user
当前登录用户数
load average: 0.06, 0.60, 0.48
系统负载,即任务队列的平均长度。
三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
第二、三行为进程和CPU的信息。当有多个CPU时,这些内容可能会超过两行。内容如下:
Tasks: 29 total
进程总数
1 running
正在运行的进程数
28 sleeping
睡眠的进程数
0 stopped
停止的进程数
0 zombie
僵尸进程数
Cpu(s): 0.3% us
用户空间占用CPU百分比
1.0% sy
内核空间占用CPU百分比
0.0% ni
用户进程空间内改变过优先级的进程占用CPU百分比
98.7% id
空闲CPU百分比
0.0% wa
等待输入输出的CPU时间百分比
0.0% hi
0.0% si
阅读全文
用awk进行文本处理,少不了就是它的数组处理。那么awk数组有那些特点,一般常见运算又会怎么样呢。我们先看下下面的一些介绍,结合例子我们会讲解下它的不同之处。在 awk 中数组叫做关联数组(associative arrays),因为下标记可以是数也可以是串。awk 中的数组不必提前声明,也不必声明大小。数组元素用 0 或空串来初始化,这根据上下文而定。
一、定义方法
1:可以用数值作数组索引(下标)
Tarr[1]=“cheng mo” Tarr[2]=“800927”
2:可以用字符串作数组索引(下标)
Tarr[“first”]=“cheng ”
Tarr[“last”]=”mo”
Tarr[“birth”]=”800927”
直接使用print Tarr[1]即可得到对应的值。
二、数组相关函数
1.获取数组长度 length函数; print length(Tarr);
2.输出数组内容(无序,有序输出):
无序输出:for(k in Tarr){print k,Tarr[k]}
有序输出:for(k=1;k<=length(Tarr);k++){print k,Tarr[k];}//注意,数组下标从1开始。
3.判断键值存在以及删除键值:
键值是否存在:if( "11211" in Tarr){print "ok";}
删除键值:delete Tarr['key'];阅读全文
转自: NinGoo的博客
经常可以在一些脚本,尤其是在crontab调用时发现如下形式的命令调用
/tmp/test.sh > /tmp/test.log 2>&1
前半部分/tmp/test.sh > /tmp/test.log很容易理解,那么后面的2>&1是怎么回事呢?
要解释这个问题,还是得提到文件重定向。我们知道>和<是文件重定向符。那么1和2是什么?**在shell中,每个进程都和三个系统文件相关联:标准输入stdin,标准输出stdout和标准错误stderr,三个系统文件的文件描述符分别为0,1和2。**所以这里2>&1的意思就是将标准错误也输出到标准输出当中。
下面通过一个例子来展示2>&1有什么作用:
$ cat test.sh t date
test.sh中包含两个命令,其中t是一个不存在的命令,执行会报错,默认情况下,错误会输出到stderr。date则能正确执行,并且输出时间信息,默认输出到stdout
./test.sh > test1.log ./test.sh: line 1: t: command not found $ cat test1.log Tue Oct 9 20:51:50 CST 2007
可以看到,date的执行结果被重定向到log文件中了,而t无法执行的错误则只打印在屏幕上。
$ ./test.sh > test2.log 2>&1 $ cat test2.log ./test.sh: line 1: t: command not found Tue Oct 9 20:53:44 CST 2007
这次,stderr和stdout的内容都被重定向到log文件中了。
实际上, > 就相当于 1> 也就是重定向标准输出,不包括标准错误。通过2>&1,就将标准错误重定向到标准输出了,那么再使用>重定向就会将标准输出和标准错误信息一同重定向了。如果只想重定向标准错误到文件中,则可以使用2> file。
阅读全文
使用 cURL 获取站点的各类响应时间 – dns解析时间,响应时间,传输时间等:
curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time_redirect}:%{time_pretransfer}:%{time_connect}:%{time_starttransfer}:%{time_total}:%{speed_download} digdeeply.org
这是一个本人博客站点执行 curl 命令的情况。输出通常是 HTML 代码,通过 -o 参数发送到 /dev/null。-s 参数去掉所有状态信息。-w 参数让 curl 输出的计时器的状态信息。
下边对-w参数做个详细的解释,由我(DigDeeply)翻译。有不对的地方请大家指出。(英文原文:http://curl.haxx.se/docs/manpage.html)
阅读全文
在windows下vim的中文字体显示并不好,所以我们需要调整字体显示编码为utf-8,只有这样才能使用美观的中文。这时候可能出现很多中文乱码。
如:文件显示乱码、菜单乱码、右键菜单乱码、conlse输出乱码、文件关联右键菜单乱码等等。
以下_vimrc配置可以解决以上问题。
if has(“gui_running”) set encoding=utf-8 set fileencodings=utf-8,chinese,latin-1if has(“win32″) set fileencoding=chinese else set fileencoding=utf-8 endif
let &termencoding=&encoding
” 解决菜单乱码 source $VIMRUNTIME/delmenu.vim source $VIMRUNTIME/menu.vim
” 解决consle输出乱码 language messages zh_CN.utf-8 endif
阅读全文












