全部博文(842)
分类: LINUX
2012-05-16 16:16:25
[root@sz1 root]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.1 0.1 1372 472 ? S 21:32 0:04 init
root 2 0.0 0.0 0 0 ? SW 21:32 0:00 [keventd]
USER 进程的属主;
PID 进程的ID;
PPID 父进程;
%CPU 进程占用的CPU百分比;
%MEM 占用内存的百分比;
NI 进程的NICE值,数值大,表示较少占用CPU时间;
VSZ 进程虚拟大小;
RSS 驻留中页的数量;
TTY 终端ID
WCHAN 正在等待的进程资源;
START 启动进程的时间;
TIME 进程消耗CPU的时间;
COMMAND 命令的名称和参数;
STAT 进程状态
D Uninterruptible sleep (usually IO)
R 正在运行可中在队列中可运行的;
S 处于休眠状态;
T 停止或被追踪;
W 进入内存交换(从内核2.6开始无效);
X 死掉的进程;
Z 僵尸进程;
< 优先级高的进程
N 优先级较低的进程
L 有些页被锁进内存;
s 进程的领导者(在它之下有子进程);
l is multi-threaded (using CLONE_THREAD, like NPTL pthreads do)
+ 位于后台的进程组;
ps 提供了很多的选项参数,常用的有以下几个;
l 长格式输出;
u 按用户名和启动时间的顺序来显示进程;
j 用任务格式来显示进程;
f 用树形格式来显示进程;
a 显示所有用户的所有进程(包括其它用户);
x 显示无控制终端的进程;
r 显示运行中的进程;
ww 避免详细参数被截断;
标准输出和标准错误输出可以重定向到同一个文件,一般形式是:
command &>file
等价于下面形式的命令:
command > file 2>& 1
– diff:按行比较两个文件的不同
– cmp:按字节比较两个文件的不同
– diff3:按行比较三个文件的不同
– sdiff:输出两个文件的合集。输出文件中两个文件原本的行在同一行中不同列
– comm:快速的比较两个已经排过序的文件,输出两个文件的合集,交集,或任何单独的部分
sort
• 功能:对文件中的各行进行排序。
– sort排序是根据从输入行抽取的一个或多个关键字进行比较来完成的。缺省情况下以整行为关键字按ASCII字符顺序进行排序。
• 常用选项
– - m 若给定文件已排好序,合并文件。
– - c 检查给定文件是否已排好序。
– - u 对排序后认为相同的行只留其中一行。
– - d 按字典顺序排序,仅比较字母、数字、空格和制表符。
– - r 按逆序输出排序结果。
– - b 在每行中寻找排序关键字时忽略前导的空格和制表符。
– - t separator 指定字符separator作为字段分隔符。
– -k,pos1,[pos2]:以pos1到pos2中间的字符为键值
• 使用举例
– cat words | uniq –c | sort –k 1,1 –n –r 将一批词按照出现频次有高到低排序
• cut功能:用来从标准输入或文本中剪切指定列或者域
• 常用选项:
– -c:指定剪切字符数
– -f:field 指定剪切指定域数
– -d:delimit 指定除空格和tab外的域分隔符
• 使用举例:
– cut –d : -f 3 example.txt
– who –u|cut –c1-8
• paste功能:将两个文件按行粘贴在不同的列中。是cut的反向操作
•
•
• (list) list将在一个子shell中执行, 不会对当前shell产生影响,返回list的exit值
• { list; } 可以作组合命令用,list将在当前shell中被执行,list结尾处必须要有新行或‘;’号,返回list的exit值,list前后必须有空格
• 推荐使用[[ ]]进行条件测试
if [[ “x$str”== “xa.txt” && -f b.txt ]]
then
cmd;
fi
• if [ $a –lt 0 ]
then
echo OK
fi
• 推荐使用(( ))
if (( a > 0 ))
then
echo OK
fi
• for (( expr1 ; expr2 ; expr3 )) ; do list ;done
for ((i=0;i<100;i++));do echo $i;done
• while list; do list; done
while read line
do
echo $line
done < a.txt
• until list; do list; done
•
• 截去域名尾部
name=jx-sys-superdb.jx.baidu.com
echo ${name%%.*}
jx-sys-superdb
• 截取日期
str=20081011
year=${str:0:4}
• 替换
echo ${name//jx/tc}
tc-sys-superdb.tc.baidu.com
• 功能:查找文件。find将在目录树中查找和用户指定模式相符合的文件。locate则是通过在locate的数据库中查找,locate 的数据库由updatedb程序负责维护。
• 常用选项:
– -name:指定要查找的文件名
– -perm:指定要查找文件的权限
– -size:指定要查找文件的大小范围
– -mtime:指定查找修改时间在n天以内的文件。
– exec command:将find命令查找到的文件作为command命令的参数
- 使用举例:
- find . -mtime –1:查找在最近一天内被修改的文件
- find . -name b.cpp -exec mv \{\} a.cpp \;
dd
拷贝二进制文件,
格式:
count=BLOCKS 只拷贝BLOCKS个数据块
ibs=BYTES 一次读入的数据量
if=FILE 输入文件
obs=BYTES 一次写出的数据量
of=FILE 输出文件
seek=BLOCKS 输出文件跳过BLOCKS个数据块
skip=BLOCKS 输入文件跳过BLOCKS个数据块
time dd if=/dev/zero of=test bs=1024k count=1024 查看系统io性能
•
•
• x=aabbaarealwwvvww
echo “${x%w*w}“ # 截去尾部最短匹配
aabbaarealwwvv
echo “${x%%w*w}“ # 截去尾部最长匹配
aabbaareal
echo “${x##a*a}“ # 截去头部最长匹配
lwwvvww
echo “${x#a*a}“ # 截去头部最短匹配
bbaarealwwvvww
• x=abcdabcd
echo ${x/a/b} # 只替换一个
bbcdabcd
echo ${x//a/b} # 替换所有
bbcdbbcd
• x=abcd
• ${#x} # 获取字串长度
4
• expr index $x “b“ # 获取子串所在偏移
2
expr index $x "a“
# 获取子串所在偏移
1
• echo ${x:1} # 获取子串
bcd
echo ${x:2}
cd
echo ${x:0:2}
ab
遍历数组:
• total=${#A[*]}
• for ((i = 0; i < total; i++))
• do
• echo ${A[$i]}
• done
•
• ${!p*} #返回所有以p开头的变量
echo ${!P*}
PATH PIPESTATUS PPID PS1 PS2 PS4 PWD
• ${p:-word} #如果变量p不存在,返回"word”
• ${p:=word} #如果变量p不存在,返回"word",并将p的值设为"word"
• ${p:?word} #如果变量p不存在,将"word"打入STDERR
• ${p:+word} #如果变量p存在,返回"word"
–
–
– 将标准错误和标准输出一起过滤
• ./shell.sh 2>&1|grep
– 只过滤标准错误,标准输出不要
• ./shell.sh 2>&1 1>/dev/null
• 两个重定向顺序不能改变
• ./shell.sh 1>/dev/null 2>&1的结果是抛弃所有输出和错误