Linux中变量#,@,0,1,2,*,$$,$?的含义
$# 是传给脚本的参数个数
$0 是脚本本身的名字
$1 是传递给该shell脚本的第一个参数
$2 是传递给该shell脚本的第二个参数
$@ 是传给脚本的所有参数的列表
$* 是以一个单字符串显示所有向脚本传递的参数,与位置变量不同,参数可超过9个
$$ 是脚本运行的当前进程ID号 $? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误
- 区别:@ *
- 相同点:都是引用所有参数
- 不同点:只有在双引号中体现出来。假设在脚本运行时写了三个参数(分别存储在1123)则”3)则”*“等价于”1123”(传递了一个参数);而”3”(传递了一个参数);而“@”等价于”1”“1”“2”“$3”(传递了三个参数)
变量说明:
$$:Shell本身的PID(ProcessID)
$!:Shell最后运行的后台Process的PID
$?:最后运行的命令的结束代码(返回值,0为正常,其它为不正常。)
$-:使用Set命令设定的Flag一览
$*:所有参数列表。如”$*“用「”」括起来的情况、以”$1 $2 … $n”的形式输出所有参数。
$@:所有参数列表。如”$@”用「”」括起来的情况、以”$1” “$2” … “$n” 的形式输出所有参数。
$#:添加到Shell的参数个数
$0:Shell本身的文件名
$1~$n:添加到Shell的各参数值。$1是第1参数、$2是第2参数…。
一、文件比较运算符
-e filename如果 filename存在,则为真 如:[ -e /var/log/syslog ]-d filename如果 filename为目录,则为真 如:[ -d /tmp/mydir ]-f filename如果 filename为常规文件,则为真 如:[ -f /usr/bin/grep ]-L filename如果 filename为符号链接,则为真 如:[ -L /usr/bin/grep ]-r filename如果 filename可读,则为真 如:[ -r /var/log/syslog ]-w filename如果 filename可写,则为真 如:[ -w /var/mytmp.txt ]-x filename如果 filename可执行,则为真 如:[ -x /usr/bin/grep ]filename1 -nt filename2如果filename1比filename2新,则为真如:[/tmp/install/etc/services-nt/etc/services]filename1 -ot filename2如果 filename1比 filename2旧,则为真 如:[/boot/bzImage -ot arch/i386/boot/bzImage]
二、字符串比较运算符(请注意引号的使用,这是防止空格扰乱代码的好方法)
-z string如果 string长度为零,则为真 如:[ -z "$myvar" ]-n string如果 string长度非零,则为真 如:[ -n "$myvar" ]string1 = string2如果 string1与 string2相同,则为真 如:["$myvar" = "one two three"]string1 != string2如果 string1与 string2不同,则为真 如:["$myvar" != "one two three"]
三、算术比较运算符
num1-eq num2等于 如:[ 3 -eq $mynum ]num1-ne num2不等于 如:[ 3 -ne $mynum ]num1-lt num2小于 如:[ 3 -lt $mynum ]num1-le num2小于或等于 如:[ 3 -le $mynum ]num1-gt num2大于 如:[ 3 -gt $mynum ]num1-ge num2大于或等于 如:[ 3 -ge $mynum ]
-eq//等于-ne//不等于-gt//大于 (greater )-lt//小于 (less)-ge//大于等于-le//小于等于 在linux 中 命令执行状态:0为真,其他为假
四、查看磁盘、文件大小
df -h查看磁盘占用情况du -sh ./*查看当前目录下文件大小,单位M
awk处理过程:
依次对每一行进行处理,然后输出 awk命令形式:
awk [-F|-f|-v] ' BEGIN{} // {command1;command2} END{}' file
[-F|-f|-v]:大参数,-F指定分隔符,-f调用脚本,-v定义变量 var=value' '引用代码块BEGIN初始化代码块,在对每一行进行处理之前,初始化代码,主要是引用全局变量,设置FS分隔符//匹配代码块,可以是字符串或正则表达式{}命令代码块,包含一条或多条命令;多条命令使用分号分隔END结尾代码块,在对每一行进行处理之后再执行的代码块,主要是进行最终计算或输出结尾摘要信息
ps和top cpu占用区别
- 看看man中对
ps才相关介绍
CPU usage is currently expressed as the percentage of time spent running during the entire lifetime of a process. This is not ideal,and it does not conform to the standards that ps otherwise conforms to.CPU usage is unlikely to add up to exactly 100%.
- 再看看
top的介绍
k: %CPU – CPU usage The task’s share of the elapsed CPU time since the last screen upmodify_date, expressed as a percentage of total CPU time. In a true SMP environment, if ‘Irix mode’ is Off, top will operate in ‘Solaris mode’ where a task’s cpu usage will be divided by the total number of CPUs. You toggle ‘Irix/Solaris’ modes with the ‘I’ interactive command.
就不难理解了。ps是从进程开始就开始算的,是平均的占用率;而top是从上次刷新开始算的,一般几秒钟一刷,可以认为是即时的。而桌面系统我们一般更关注即时的,所以top的cpu占用率才是我需要的。而且top默认cpu的占用率的和并不是100%,而是核数x100%,所以有时会有一个进程占用超过100%的情况。


