linux相关命令细节及shell语法等汇总

1.top
参数:
-d :后面可以接秒数,就是整个程序画面更新的秒数。预设是 5 秒;
top -d 2
-b :以批次的方式执行 top ,还有更多的参数可以使用喔!
通常会搭配数据流重导向来将批次的结果输出成为档案。
-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果。
    将 top 的信息进行 2 次,然后将结果输出到 /tmp/top.txt
    top -b -n 2 > /tmp/top.txt
    # 这样一来,嘿嘿!就可以将 top 的信息存到 /tmp/top.txt 档案中了。
-p :指定某些个 PID 来进行观察监测而已。
    假设 10604 是一个已经存在的 PID ,仅观察该程序?
    top -d 2 -p10604
在 top 执行过程当中可以使用的按键指令:
? :显示在 top 当中可以输入的按键指令;
P :以 CPU 的使用资源排序显示;
M :以 Memory 的使用资源排序显示;
N :以 PID 来排序喔!
T :由该 Process 使用的 CPU 时间累积 (TIME+) 排序。
k :给予某个 PID 一个讯号 (signal)
r :给予某个 PID 重新制订一个 nice 值。


第一行是任务队列信息:
当前时间 系统运行时间,格式为时:分 当前登录用户数 load average: 0.06, 0.60, 0.48 
系统负载,即任务队列的平均长度。 三个数值分别为  1分钟、5分钟、15分钟前到现在的平均值。

第二、三行为进程和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

第四五行为内存信息:
Mem: 191272k total 物理内存总量
173656k used 使用的物理内存总量
17616k free 空闲内存总量
22052k buffers 用作内核缓存的内存量

Swap: 192772k total 交换区总量
0k used 使用的交换区总量
192772k free 空闲交换区总量
123988k cached
缓冲的交换区总量。 内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。
相应的内存再次被换出时可不必再对交换区写入。
    
PID    USER    PR    NI    VIRT    RES    SHR    S    %CPU    %MEM    TIME+    COMMAND

序号列名含义
PID    进程id
PPID    父进程id
RUSER    Realusername
UID    进程所有者的用户id
USER    进程所有者的用户名
GROUP    进程所有者的组名
TTY    启动进程的终端名。不是从终端启动的进程则显示为?
PR    优先级
NInice     值。负值表示高优先级,正值表示低优先级
P    最后使用的CPU,仅在多CPU环境下有意义
%CPU    上次更新到现在的CPU时间占用百分比
TIME    进程使用的CPU时间总计,单位秒
TIME+    进程使用的CPU时间总计,单位1/100秒
%MEM    进程使用的物理内存百分比
VIRT    进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
SWAP    进程使用的虚拟内存中,被换出的大小,单位kb。
RES    进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
CODE    可执行代码占用的物理内存大小,单位kb
DATA    可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
SHR    共享内存大小,单位kb
nFLT    页面错误次数
nDRT    最后一次写入到现在,被修改过的页面数。

2.less 
功能:less命令可以对文件或其他输出进行分页显示,与more命令相似。退出按q。

  参数详解:

  -a:在当前屏幕显示最后

  -c:从顶部(从上到下)刷新屏幕,并显示文件内容。而不是通过底部滚动完成刷新;

  -f:强制打开文件,二进制文件显示时,不提示警告;

  -i:搜索时忽略大小写;除非搜索串中包含大写字母;
  -I:搜索时忽略大小写,除非搜索串中包含小写字母;

  -m:显示当前读取文件的百分比

  -M:显示当前读取文件的百分比、行号及总行数;

  -N:在每行前输出行号

  -p pattern:搜索日志文件中含有pattern的所有日志内容;

  -s:把连续多个空白行作为一个空白行显示

  扩展:

  U:向上

  J:向下

  g:跳到第一行

  G:跳到最后一行

  /pattern:搜索pattern  n下一个, N反向下一个

  q:退出less

  !command:调用SHELL,可以运行命令;比如!ls 显示当前列当前目录下的所有文件

3. more
功能:以百分比的形式查看日志,按空白键(space)就往下一页显示,按b键(back)就会往回一页显示,而且还有搜寻字符串的功能(与vi相似),使用中的说明文件,请按h。退出按q。

  参数详解:

  -d:提示使用者,在画面下方显示[Press space to continue, 'q' to quit.],如果如果使用者按错键,则会显示 [Press 'h' for instructions.] 而不是 '哔' 声 。

  -s:当遇到有连续两行以上的空白行,就代换成一行的空白行。

  +num:从第num行开始显示
  
4.head

  功能:从文本文件的头部开始查看,head命令用于查看一个文本文件的开头部分。

  参数详解:

  -n 制定您想要显示文本多少行

  -n number 这个参数选项必须是十进制的整数,它将决定在文件中的位置,以字节单位。

  -c number 这个参数选项必须是十进制的整数,它将决定在文件中的位置,以字节为单位。

  范例:

  head file.txt 显示file.txt的前十行内容;

  head -n 20 file.txt 显示file.txt的前二十行内容;
  
5.tail

   功能:用于显示文本文件的末尾几行。

   参数详解:

   -b Number  :从Number变量表示的512自己块位置开始读取制定文件。

   -c Number  :从Number变量表示的字节位置开始读取指定文件。

   -f         :tail -f 命令可用于监视另一个进程正在写入的文件的增长。

   -k Number  :从Number变量表示的1KB块位置开始读取制定文件。

   -m Number  :从Number变量表示的多字节字符位置开始读取指定文件。使用该标志提供在单字节和双字节字符代码集环境中的一致结果。
   -n Number  :从首行或末行位置来读取指定文件,位置由 Number 变量的符号(+ 或 - 或无)表示,并通过行号 Number 进行位移。 
    范例:

    tail file.txt :显示文件file.txt的后十行内容。

    tail -n 20 file.txt :显示文件file.txt的后二十行内容。

    tail -f file.txt :显示文件file.txt的后十行内容并在文件内容增加后,自动显示新增的文件内容。

    tail -n 50 -f file.txt :显示文件file.txt的后50行内容并在文件内容增加后,自动显示新增内容。  
    
6. ls 
-a 所有
-l 显示详情,list
-c 或 -t 按修改时间排序
-r 反序    
-F 给条目后加类型标识
-R 递归列出子目录内容
-S 按文件大小排序
-u 输出文件的最后访问时间,而非修改时间

7. touch
新建文件
修改文件的访问和修改时间
-a 访问时间
-m 修改时间
-t + 时间戳 指定时间

8. cp source destination
-f 强制覆盖不提示
-i 覆盖前提示
-r 递归地复制文件
-R 递归地复制目录
-p 如果可能,保留文件属性
-s 创建软链接
-l 创建硬链接

9. mv 重命名文件

10. rm
-i 给出提示,确认删除
-f 不提示,强制删除
-r 递归删除目录

11. mkdir

12. rmdir
默认只能删除空目录

13. stat 查看文件统计信息

14. file 查看文件类型

15. cat 
-n 加行号
-b 只给有文件的行加行号,忽略空行
-s 多个空行按一个空行显示

16. more
空格 显示下一屏
回车 显示下一行
d 显示后半屏
b 显示上一屏
q 退出
/expression  在文件中查找匹配文本  n 跳到下一处匹配 `'跳到第一处匹配
v 在当前行启动vi
= 显示当前行在文件中的行号
. 重复前一个命令

17. less 
也可显示文件的内容,而不用读取整个文件。这点是cat和more命令读取大文件时的明显缺陷

18. tail 
默认显示文件末尾10行
-n 显示文件末尾n行
-f 动态显示文件末尾n行

19. head 
只想看文件前面部分,而不想看全部时用。

20. ps 
ps -ef 查看所有进程信息 
-e 所有进程
-f 显示完整格式的输出
-H 把进程以层级结构显示,按启动关系

ps aux
USER:该 process 属于那个使用者账号的
%CPU:该 process 使用掉的 CPU 资源百分比
%MEM:该 process 所占用的物理内存百分比
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
TTY :该 process 是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,主要的状态有
    R :该程序目前正在运作,或者是可被运作
    S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。
    T :该程序目前正在侦测或者是停止了
    Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
START:该 process 被触发启动的时间
TIME :该 process 实际使用 CPU 运作的时间
COMMAND:该程序的实际指令

找出与 cron 与 syslog 这两个服务有关的 PID 号码:
ps aux | egrep '(cron|syslog)'
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND


21. kill
kill 进程号
kill -s 信号值 pId   kill -s HUP 3940

22. killall
支持按进程名结束进程
killall http*  //结束所有以http开头的进程

23. mount
显示当前系统上挂载的设备列表
mount -t device directory  //手动挂载 -t 指定了磁盘被格式化的文件系统类型
eg: mount -t vfat /dev/sdb1 /media/disk
-o 给文件系统添加特定的选项 ro(read only) rw loop(挂载一个文件)
eg: mount -t iso9660 -o loop tmp.iso mnt

24. umount 卸载
umount [directory|device]

25. df 显示磁盘空间使用情况
df -h 以M或G显示

26. du 显示当前目录下所有文件、目录、子目录的磁盘使用情况
du -h
du -s * 显示当前目录下每个文件或文件夹的总计

27. sort 排序
sort -n 文件名 按数字排序
sort -M 文件名 按月份排序
sort -t ':' -k 3 -n /etc/passwd  密码文件根据用户ID进行数值排序
-t 分隔符 -k 用来指定按第几列排序
-r 反序 升序变降序

eg: du -sh * |sort -nr

28. grep
grep -v 反向搜索,即不包含
grep -n 显示匹配所在行的行号
grep -c 显示有多少行包含匹配模式
grep -e 用来指定匹配多个模式中的任意一个
eg: grep -e t -e f file1
grep [ef] file1 搜索包含t或f的行

# grep ‘energywise’ *           #在当前目录搜索带'energywise'行的文件
# grep -r ‘energywise’ *        #在当前目录及其子目录下搜索'energywise'行的文件
# grep -l -r ‘energywise’ *     #在当前目录及其子目录下搜索'energywise'行的文件,但是不显示匹配的行,只显示匹配的文件
# 用 dmesg 列出核心信息,再以 grep 找出内含 eth 那行,在关键字所在行的前两行与后三行也一起捉出来显示
dmesg | grep -n -A3 -B2 --color=auto 'eth'

29. gzip gunzip gzcat

30. zip unzip zip -r 文件名

31. tar
tar -cvf test.tar test/ test2/ 创建包含test和test2目录内容的归档文件
tar -tf test.tar 列出test.tar的内容,但并不解压文件
tar -xvf test.tar 从test.tar文件中提取内容
tar -zxvf filename.tgz 解压以gzip压缩过的tar文件

32. printenv 查看全局环境变量
echo $JAVA_HOME  查看单个环境变量的值

33. set 查看所有环境变量
set 用来显示本地变量
env 用来显示环境变量
export 用来显示和设置环境变量

set 显示当前shell的变量,包括当前用户的变量
env 显示当前用户的变量
export 显示当前导出成用户变量的shell变量

34. export 导出环境变量
test=test
export test

35. unset 删除环境变量
test=test
export test
unset test

36. 设置PATH环境变量
PATH=$PATH:/home/user/test
echo $PATH

37.主启动文件 /etc/profile
用户专用启动文件:
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile

38. 环境变量可作数组使用
mytest=(one two three)
echo mytest 显示第一个
echo ${mytest[2]} 显示第三个,下标从0开始
echo ${mytest[*]} 显示所有

39. 安全性
user id 
login name(最长8字符)
/etc/passwd
用户名:密码:UID:GID:账户描述:主目录位置:默认shell
密码都显示为x,真实密码存在/etc/shadow文件中

40. useradd
useradd -m mytest 添加用户,并创建主目录(-m),默认不创建
-p 密码
-g 用户组ID
-u 用户ID
-M 不创建主目录
useradd -D 查看用户的默认信息
useradd -D 后接要修改的内容,可以修改默认信息

41. userdel
userdel 默认只删除/etc/passwd文件中的用户信息
userdel -r 会删除用户主目录及mail目录

42. usermod 修改用户
-l 修改用户登录名
-L 锁定用户,无法登录
-p 修改密码
-U 解除锁定

43. passwd 修改密码
chpasswd 批量修改密码

44. finger 用户名 简单查看用户信息
45. chage设置密码有效期等

46. 用户组 /etc/group
组名:组密码:GID:属于该组的用户列表

47. groupadd test 添加新组test
usermod -G test aaa  把用户aaa添加到组test中

48. groupmod -n test newtest 修改组名
groupmod -g 修改GID

49. umask 设置文件权限
文件默认权限为666,新建的文件权限,会从666 中减去umask的值
目录默认权限为777,新建的目录权限,会从777 中减去umask的值

50. chmod 760 newfile 改变文件权限
chmod o+r newfile
chmod u-x newfile
-R 会让权限递归到文件和子目录

51. chown 修改文件的属主、属组
chown test newfile
chown grp.test newfile

52. chgrp 修改文件属组

53. vi
h 左移一个字符
j 下移一行
k 上移一行
l 右移一个字符

pageDown或ctrl+F 下翻一屏
pageUp或ctrl+B   上翻一屏
G 到缓冲区的最后一行
gg 到缓冲区的第一行
num G 到缓冲区的第num行

q
q!
w filename
wq

x 删除当前位置字符
dd 删除当前行
dw 删除光标所在位置单词
d0 删除至行首的单词
d$ 删除当标至行尾的单词
J 删除光标所在行行尾的换行符(拼接行)

u 撤销前一编辑命令
a 在当前光标后追加数据
A 在当前光标所在行尾追加数据

r 用char替换当前光标所在位置的单个字符
R 用text覆盖光标所在位置数据,直到按下Esc键

2x 删除两个字符
5dd 删除5行

p 粘贴  删除后可以用p粘贴到另一个地方

y 复制 
第二个字符和d的第一个字符表示一样的意思

可视模式,按下v键进入。移动鼠标选择要复制的文本即可。

/aaa  查找单词
按回车键或n键查找下一个

:s/old/new/ 替换
:s/old/new/g 一行命令替换所有old
:n,ms/old/new/g 替换行号n和m之间所有old
:%s/old/new/g 替换整个文件中的所有old
:%s/old/new/gc 替换整个文件中的所有old,但在每次出现时提示

54. echo
-n 不换行输出
-e 处理特殊字符

55. wc 对文本中数据的计数
默认输出三个值:行数、词数、字节数
eg: wc < test  

内联输入 wc << EOF

56. expr 数学运算
eg: expr 5\*2
或:$[1 + 5]
只支持整数运算

57. bc 支持浮点计算
bc -q 去掉提示信息

58. $? 退出状态码
0 成功结束
126 命令不可执行 127 没找到命令

59. test 测试运算符
test -n expr1 字符串的长度是否非0
test -z expr1 字符串的长度是否为0

test expression 等价于
[ expression ]

60. 双尖括号 (( )) 提供数字的高级运算
eg: if (( $val1 ** 2 >90 )) then 

61. 双方括号 [[ ]] 提供了字符串的模式匹配
eg: if [[ $USER == r* ]] then 

62. case $USER in
            rich | barbara)
                echo "hello"::
            tom)
                echo "hehe"::
            *) 
                echo "o-o"::
        esac
        
63. 输入参数
bash shell会将命令行输入的参数赋值给位置参数, $0为程序名,$1为第一个参数,$2---$9,第9个以后的,引用要加大括号:${10},${11}
`basename $0`-->只返回程序名,不返回路径

$# 返回参数个数
${!#}返回最后一个参数的值
$* 获取所有参数并赋值给一个变量
$@ 获取所有参数并添加到一个集合中,可以遍历这个集合获取所有参数
shift移动参数,默认第3个变为第2个,第2个变为第1个,依次。
shift 2 -->每次移动两个参数

64. getopt options optstring parameters
eg: getopt ab:cd -a -b test1 -cd test2 test3 冒号表示该命令选项需要参数
输出为: -a -b test1 -c -d -- test2 test3
-q 忽略错误消息(如果optstring不在options范围中)

65. getopts optstring variable    
getopts :ab:c opt 需要去掉错误提示在optstring前加冒号
$opt 保存参数选项 $OPTARGW保存命令参数 $OPTIND保存正在处理的参数位置

66. read 读取输入
read -p "提示信息" inputString1 input2
如果不指定inputString,则输入的所有数据都存到环境变量REPLY中
-t 设置超时时间,单位为秒
eg: read -t 5 -p "pleaes enter your name" name
-n 对输入字符数计数,输入的字符数达到预设的字符数时,read自动结束
eg: read -n1 -p "enter your name" name
-s 隐藏方法读取,如读取密码等时可以使用

读取文件:
count =1
cat test|while read line
do
    echo "Line $count: $line"
    count=$[ $count+1 ]
done    

67.文件描述符
bash shell 保留使用:
0 stdin
1 stdout
2 stderr

cat 后不接文件参数时,也可以接受标准输入
eg: ls -al badfile 2>test4 错误重定向到test4文件中

&> test7 stdout和stderr的输出,重定向到同一个输出文件中

脚本中重定向输出到错误,需要在文件描述符前加&
eg: echo "this is error" >&2

脚本运行期间,重定向输出:
exec 1>testout
exec 0< testfile 重定向输入

创建文件输出描述符:
exec 3>test130ut

关闭文件描述符:exec 3>&-

68. lsof 列出linux系统打开的所有文件描述符
普通用户要用全路径引用:/usr/sbin/lsof
-p 进程ID
-d 要显示的文件描述符个数
-a 对上两个结果进行布尔与运算
$$ 当前进程ID

69. /dev/null 重定向到这个文件中,数据都不会保存
eg: ls -al > /dev/null

70. /tmp 目录下存放临时文件,当系统启动时,会自动删除/tmp目录的所有临时文件
mktemp命令可以在/tmp目录下轻松创建临时文件
mktemp test.XXXXXX 创建本地临时文件
mktemp -t test.XXXXXX (-t 强制在临时目录创建文件)
mktemp -d dir.XXXXXX (-d 创建临时目录,而不是文件)

71. tee filename
将从stdin过来的数据同时发往两个目录地:标准输出、文件filename
eg: date | tee -a test file1  (-a 表示追加)

72. 信号
ctrl + C 终止进程
ctrl + z 暂停进程
kill -9 pId 结束进程

trap 捕捉信号
eg: trap "echo 'trapped Ctrl-c'" SIGINT SIGTERM
        trap "echo byebye" EXIT
trap - command 移除捕捉信号

后台运行脚本:
./test1 &  后面加个&符就可以在后台运行脚本了

nohup ./test1 & 互略任何终端会话发过来的sighup信号,stdin和stdout会重定向到nohup.out文件中

73. jobs 查看当前正在处理的作业
-l 列出进程号及作业号
-r 只列出正在运行的作业
-s 只列出已停止的作业
-p 只列出作业的PID
-n 只列出上次的shell发出通知后改变了状态的作业

74.重启作业
bg 2  后台模式重启 bg加上作业号
fg 2  前台模式重启 fg加上作业号

75. nice 改变优先级
nice -n 10 ./test4 > test4out &

76. renice 调整已运行进程优先级
renice 10 -p 29504

77. 定时运行命令: at命令和cron表

---------------------------------------------------------------------
at
at命令守护进程为atd, 每60秒检查 /var/spool/at 目录,检查提交来的作业的运行时间,如果和当前时间匹配,则运行该作业

该用户的Email地址会被作为该作业的stdout和stderr
eg: at -f test5 14:39

atq 命令:列出有那些作业在等待

atrm 命令: 删除作业
---------------------------------------------------------------------
cron
cron时间表:min hour dayofmonth month dayofweek command

crontab -l 列出已有的时间表
crontab -e 编辑添加时间表

预配置的脚本目录:
ls /etc/cron.*ly
/etc/cron.daily  /etc/cron.hourly  /etc/cron.monthly  /etc/cron.weekly 
不需要精确时间时,可把脚本复制到这些目录执行。

开机自动运行目录:
/etc/init.d  或  /etc/rc#.d   或 /etc/init.d/rc.d

每个用户主目录中有两个文件,bash shell会用他们来启动脚本并设置环境变量
.bash_profile文件  .bashrc文件


78. 创建函数
function name{
    commands
}

name(){
    commands
}

return 来设置函数的退出状态码 但退出状态码必须小于256

可以把函数的输出赋给变量:
function db1{
    read -p "Enter a value" value
    echo $[ $value * 2 ]
}

result = `db1`
echo "the new value is $result"

函数局部变量: local temp

给函数传递数组变量方式: testFun ${myarray[*]}
函数返回数组: echo ${myarray[*]}

创建库文件,供多个脚本引用: . ./myfuncs source命令别名(点操作符)

在.bashrc中直接定义函数,就能在系统中任何地方使用该函数了
或将库文件加到.bashrc文件中

79. sed
sed -e scripts -f file
-e 要在sed命令行上执行多个命令,只要用-e选项就可以了,命令间用分号分隔。
eg: sed -e 's/brown/green/; s/dog/cat/' data1

从文件中读取命令:
sed -f script1 data1
sed 's/test/trial/' data5  默认替换每行第一处
sed 's/test/trial/g' data5 g是全部替换
sed 's/test/trial/2' data5 只替换每行第2处匹配的
sed -n 's/test/trial/p' data5  -n选项禁止sed编辑器输出 p表示打印与模式匹配的行,两者合用,可以只输出被修改过的行
sed 's/test/trial/w test' data5  w选项表示把输出保存在test文件中

sed '!/bin/bash!/bin/csh!' /etc/passwd 这个例子中感叹号被用作分隔符,使得路径名很容易被理解和读取

sed '2s/dog/cat/' data1 只修改第二行的文本
sed '2.$s/dog/cat/' data1 修改第二行开行到结尾的文本

sed '/Tom/s/bash/csh/' /etc/passwd  查找文件中包含Tom的行进行替换

sed '2{ s/fox/elephant/ s/dog/cat }' data1  单行上执行多条命令要用大括号括起来

删除命令(删除不会修改原文件,只是从输出中消失):
sed '2.3d' data7 删除2到3行
sed 'd' data7 删除所有文本行
sed '/hello/d' data7 删除包含hello的行

sed '/1/./2/d' data6 删除匹配1和匹配2之间的所有行

插入命令:
echo 'Test line 2' | sed 'i\Test lin 1'   i插入行出现在数据流前面
echo 'Test line 2' | sed 'a\Test lin 1'   a插入行出现在数据流后面

sed '3a\aaa' data7 在第3行后面插入新行aaa

修改:
sed '3c\aaa' data7

转换命令:
sed 'y/123/789/' data8  把文件中的1 2 3 替换为对应的 7 8 9

打印行:
sed -n '/number3/p' data7
sed -n '/2.3p/' data7

打印行号: sed '=' data1

sed -n 'l' data9 打印所有,包括制表符等,会用/t表示

向文件写入: sed '1.2w test' data7  文件1到2行写入test文件中

从文件读取数据: sed '3r data12' data7  选项r表示 从文件data12中读取所有数据插入到文件data7中第3行以后

查找文件内容:
sed -n '/validate error/p' refundApplyValidate.log
sed -n '/validate error/p' refundApplyValidate.log|awk -F 'id:' '{print $2}'

80. 正则表达式 
sed '/^$/d' data5  过滤出文件中的空白行  d表示删除

BRE(基本正则表达式,能在sed中使用):
点字符 匹配任意的单字符,必须匹配一个字符(空格也算单个字符)
* 表示字符出现0次或多次
.*  匹配任意多个任意字符

字符组[yY] 匹配中括号中的一个字符
eg: sed -n '/[Yy][Ee][Ss]/p' file1

排除字符组:[^abc] 排除以abc开头的,但仍必须匹配一个字符

使用区间: [0-9]  [a-ch-m]

b[ae]*t  匹配baeeaeeat bat bet等

ERE(扩展正则表达式, 不能在sed中使用,可以在gawk中使用):
? 表示前面的字符出现0次或1次
+ 表示匹配1次或多次
花括号{m,n}  出现至少m次,至多n次

gawk程序默认不识别正则表达式区间,需要指定 --re-interval选项来识别。
eg: gawk --re-interval '/be{1}t/{print $0}'

管道符号:expr1|expr2|...    匹配任何一个模式就算匹配
eg: gawk '/cat|dog/{print $0}'

聚合表达式: 把正则表达式模式用圆括号聚合起来,该组就会被当成标准字符,可以给该组使用特殊字符,就跟正常字符使用一样
eg: gawk '/Sat(urday)?/{print $0}'
eg: gawk '/(c|b)a(b|t)/{print $0}'

vmstat
jstat

安装命令lsof:
yum install lsof

##查看服务在每个级别的运行状态
chkconfig --list

启动mysql: #/usr/local/mysql/bin/mysqld_safe --defaults-file=/data1/mysql_3309/my.cnf --user=mysql&
关闭mysql: mysqladmin -h 127.0.0.1 -u root -p shutdown 


81. Linux查看程序端口占用情况
使用命令:netstat –apn 
常见参数:
-a (all)显示所有选项,默认不显示LISTEN相关
-t (tcp)仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化成数字。
-l 仅列出有在 Listen (监听) 的服務状态

-p 显示建立相关链接的程序名
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计
-c 每隔一个固定时间,执行该netstat命令。

提示:LISTEN和LISTENING的状态只有用-a或者-l才能看到
netstat -nat |awk '{print $6}'|sort|uniq -c|sort -rn
1. 列出所有端口 (包括监听和未监听的)
  列出所有端口 netstat -a
   列出所有 tcp 端口 netstat -at
     列出所有 udp 端口 netstat -au
2. 列出所有处于监听状态的 Sockets
  只显示监听端口 netstat -l
3. 显示每个协议的统计信息
  显示所有端口的统计信息 netstat -s
4 找出程序运行的端口
并不是所有的进程都能找到,没有权限的会不显示,使用 root 权限查看所有的信息。
# netstat -ap | grep ssh
 tcp        1      0 dev-db:ssh           101.174.100.22:39213        CLOSE_WAIT  -
 tcp        1      0 dev-db:ssh           101.174.100.22:57643        CLOSE_WAIT  -
  找出运行在指定端口的进程
# netstat -an | grep ':80'
5 IP和TCP分析
  查看连接某服务端口最多的的IP地址
netstat -nat | grep "192.168.1.15:22" |awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -nr|head -20
uniq的一个特性,检查重复行的时候,只会检查相邻的行。重复数据,肯定有很多不是相邻在一起的

82. xargs 是一个强有力的命令,它能够捕获一个命令的输出,然后传递给另外一个命令

83.磁盘空间的状况可通过df -h来查看

如果要分析每个目录的空间状况,可以用du -sh .或du -sh *看目录里面所有文件或目录的磁盘占用状况,在磁盘空间这块可能会碰到一个现象,就是df -h看到使用了很多,但du -sh *的时候看到相应的目录下加起来也没用掉那么多,这种有可能是直接在程序里把这个文件删除了,但统计磁盘空间占用的时候还统计了,这种可以重启应用来解决,也可以通过lsof | grep -i deleted来找下是什么文件,以及是什么进程中的操作。

84.磁盘的利用率可以通过iostat -x来查看

需要特别注意下这个里面的cpu iowait以及%util的值,这两个值只要稍微高一些对应用的影响就会非常的明显,要查磁盘利用率到底是读写什么文件造成的,需要用iotop、blktrace这些来查

 

 

欢迎关注公众号:“架构一线”,定期分享一些实战心得,互联网前沿技术等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值