标签为 "Linux" 的存档

awk如何使用自定义函数-linux-bash-awk学习笔记

在awk中,是支持自定义函数的,格式如下:


        function name ( parameter, parameter, parameter, ... ) {
                        statements
                        return expression                  # the return statement and expression are optional
        }

但是此段代码块的位置并不是在BEGIN内进行定义,而是紧随在BEGIN之后,具体格式如下:

awk
'BEGIN{
   // do something ...
}
function name(para1, para2){
// do something ...
}
{
    // do something...
    name(a, b);
}
END{
    // do something...
}' filename

Read more…

Linux下bash中关于日期函数date的格式及各种用法

Linux下bash中关于日期函数date的格式及各种用法:
Read more…

bash编程 奇怪的错误 脚本空行报错 数组无法正常工作

在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脚本格式进行转换后即可。

Read more…

linux下top命令 结果 各参数详解

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 cache

	  PID 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

统计信息区
前五行是系统整体的统计信息。第一行是任务队列信息,同 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

Read more…

linux bash – awk数组操作详解

用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'];

Read more…

linux/unix下shell 编程之 2>&1 是什么意思 [转]

转自: 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。
Read more…

解决vim、gvim在windows下的中文乱码问题(菜单乱码、右键菜单乱码)

在windows下vim的中文字体显示并不好,所以我们需要调整字体显示编码为utf-8,只有这样才能使用美观的中文。这时候可能出现很多中文乱码。
如:文件显示乱码、菜单乱码、右键菜单乱码、conlse输出乱码、文件关联右键菜单乱码等等。
以下_vimrc配置可以解决以上问题。

if has(“gui_running”)
set encoding=utf-8
set fileencodings=utf-8,chinese,latin-1

if 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

Read more…

如何查看安装的linux操作系统是多少位的?32位还是64位?

如何确定linux操作系统是32位还是64位的?
只要只用以下几个命令即可实现。
5种查看linux操作系统是多少位的方法:


#1. uname -a 通过查看i386还是x86_64即可确认
#32位
[fukun@localhost ~]$ uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Thu Sep 3 03:33:56 EDT 2009 i686 i686 i386 GNU/Linux
#64位
[fukun @~]$uname -a
Linux localhost.localdomain 2.6.18-164.el5 #1 SMP Thu Sep 3 03:28:30 EDT 2009 x86_64 x86_64 x86_64 GNU/Linux

#2.使用更简单的 uname -i ,更直接的看到结果
#32位
[fukun@localhost ~]$ uname -i
i386
#64位
[fukun @~]$uname -i
x86_64

#3.通过 getconf LONG_BIT
#32位
[fukun@localhost ~]$ getconf LONG_BIT
32
#64位
[fukun @~]$getconf LONG_BIT
64

#4.通过echo $HOSTTYPE来查看
#32位
[fukun@localhost ~]$ echo $HOSTTYPE
i686
#64位
[fukun @~]$echo $HOSTTYPE
x86_64

#5.通过 file /sbin/init 来确认
#32位
[fukun@localhost ~]$ file /sbin/init
/sbin/init: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped
#64位
[fukun @~]$file /sbin/init
/sbin/init: ELF 64-bit LSB executable, AMD x86-64, version 1 (SYSV), for GNU/Linux 2.6.9, dynamically linked (uses shared libs), for GNU/Linux 2.6.9, stripped

#ps.使用 getconf WORD_BIT不可行,在32位或64位下,获得的值都为32.

Read more…

i386和i686有什么区别?各自的具体定义是什么?

i386和i686

现在所有的intel 32位体系(包括AMD等兼容CPU)都叫i386体系,包括P4。、i686仍然属于i386体系,不过对CPU(相对于386)的特性作了指令优化。GNU/Linux分为alpha、PowerPC、Sun等各个不同版本,所有从Intel386-P4都用i386版本,但i386版本中有几个内核(i486,i486,i586,i686),安装时安装程序检测到你得CPU级别后,自动为你安装相应内核。

与cpu的指令集有关.I代表与intel的指令集兼容,后面的数字是指cpu的分类。
因为intel的cpu经过这么久的发展,不断的更新,产生从8086,8088,80286,80386,80486,奔腾(586),奔腾二代(686),奔腾三代(686)…cpu的每次换代,都增加了一些新的指令集,但都向后兼容(就是说后面的CPU都能完全使用前面的CPU的指令集)。而软件包为了能发挥好cpu的全部性能,就加入cpu相对应能指行的指令。因此就产生了各种不同的软件包。所以,i686的软件包能在奔腾二代以上的cpu上执行,但基本不能在此之先的cpu如486上执行。而i386的软件包既可在i386的电脑上执行,也可在后面所有的cpu上执行(如奔三、奔四,但不能发挥cpu的最佳性能。)

i686指的是Pentium Pro以及此后的Intel IA32 CPU,也就是平常我们所说的P6系列处理器。

i386不用说了,泛指80386以后的。

Read more…

linux命令:apachectl 命令详解-graceful 不中断原有连接,重新启动Apache服务器

apachectl(Apache control interface)
功能说明:可用来控制Apache HTTP服务器的程序。
apachectl is a front end to the Apache HyperText Transfer Protocol (HTTP) server. It is designed to help the administrator control the functioning of the Apache httpd daemon.

语  法:apachectl [configtest][fullstatus][graceful][help][restart][start][status][stop]
某些系统下某些参数命令可能不可用,如fullstatus、status

补充说明:apachectl是slackware内附Apache HTTP服务器的script文件,可供管理员控制服务器,但有些Linux的Apache HTTP服务器不一定有这个文件。

参  数:


  configtest   检查设置文件中的语法是否正确。用于修改了配置文件后进行测试是否有误。
  fullstatus   显示服务器完整的状态信息。
  graceful   重新启动Apache服务器,但不会中断原有的连接。用于修改了配置文件后进行重新读取配置文件。
  help   显示帮助信息。
  restart   重新启动Apache服务器。 = httpd -k restart
  start   启动Apache服务器。
  status   显示服务器摘要的状态信息。
  stop   停止Apache服务器。

Read more…