《Centos系统——linux运维必备基础命令》

目录

    • 1. vi编译器的3种基本模式
      • 命令模式
      • 末行模式
      • 插入模式
    • 2. vim的高级模式
      • 可视化模式
      • vim多行注释
    • 3. 线上查询及帮助命令( 2 个)
      • man(帮助)
      • help(命令用于显示shell内部命令的帮助信息)
    • 4. 文件和目录操作命令( 13 个)
      • ls(列出目前工作目录所含之文件及子目录)
      • tree(树状图列出目录的内容)
      • pwd(以绝对路径的方式显示用户当前工作目录)
      • mkdir(用来创建目录)
      • rmdir(用来删除空目录)
      • cd(切换工作目录)
      • touch(创建文件)
      • cp(复制)
      • rm(删除)
      • ln(创建链接文件)
      • find(查找文件)
      • rename(用字符串替换的方式批量改变文件名)
    • 5. 查看文件及内容处理命令( 18 个)
      • Cat(显示文件的内容)
      • tac(用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示)
      • more(全屏显示文件内容)
      • less(分页浏览内容)
      • head(显示文件的开头的内容)
      • tail(显示文件的末尾的内容)
      • cut(显示行中的指定部分)
      • split(将一个文件分割成数个)
      • paste(合并文件的列)
      • sort(排序)
      • uniq(去重)
      • wc(用于计算字数)
      • file(用于辨识文件类型)
      • diff(比较文件的差异)
      • chattr(用于改变文件属性)
      • lsattr (用于显示文件属性)
      • grep(用于查找文件里符合条件的字符串)
      • egrep(用于在文件内查找指定的字符串)
    • 6. 文件压缩及解压缩命令( 4 个 )
      • tar(可以为linux的文件和目录创建档案)
      • unzip(用于解压缩由zip命令压缩的“.zip”压缩包。)
      • gzip(压缩文件)
      • zip(解压缩文件)
    • 信息显示命令( 11 个)
      • hostname(显示和设置系统的主机名称)
      • dmesg(用于显示开机信息)
      • uptime
      • file(探测给定文件的类型)
      • stat(显示文件的状态信息)
      • du(用于显示目录或文件的大小)
      • df(显示目前在 Linux 系统上的文件系统磁盘使用情况统计)
      • top(实时动态地查看系统的整体运行情况)
      • free(用于显示内存状态)
      • date(显示日期)
    • 搜索文件命令( 4 个)
      • Which(用于查找文件)
      • find
      • whereis(只能用于程序名的搜索)
      • locate(用于查找符合条件的文档)
    • 用户管理命令( 9 个)
      • Useradd(用于建立用户帐号)
      • usermod(用于修改用户帐号)
      • userdel(用于删除用户帐号)
      • groupadd(创建一个新的工作组)
      • passwd
      • chage(用来修改帐号和密码的有效期限)
      • id(用于显示用户的ID,以及所属群组的ID)
      • su(变更为其他使用者的身份)
      • sudo(以系统管理者的身份执行指令)
    • 基础网络操作命令( 9 个)
      • Telnet(用于远端登入)
      • ssh(客户端连接工具)
      • scp(远程拷贝文件的命令)
      • wget (从指定的URL下载文件)
      • ping(测试主机之间网络的连通性)
      • ifconfig(配置和显示Linux内核中网络接口的网络参数)
      • ifup(用于激活指定的网络接口)
      • ifdown(禁用指定的网络接口)
      • netstat(用于显示网络状态)
    • 有关磁盘文件系统的命令( 8 个)
      • mount(挂载)
      • umount(卸载)
      • df(显示磁盘分区上的可使用的磁盘空间)
      • du(查看使用空间)
      • fsck(用于检查与修复 Linux 档案系统)
    • 系统管理相关命令( 7 个)
      • uptime(打印系统总共运行了多长时间和系统的平均负载)
      • top(实时动态地查看系统的整体运行情况)
      • free(内存)
      • vmstat(用来获得有关进程、虚存、页面交换空间及 CPU活动的信息)
    • 系统安全相关命令( 10 个)
      • Chmod(是控制用户对文件的权限的命令)
      • chown(设置文件所有者和文件关联组的命令)
      • chgrp(用于变更文件或目录的所属群组)
      • chage(用来修改帐号和密码的有效期限)
      • passwd(设置用户的认证信息)
      • su(切换当前用户身份到其他用户身份)
      • sudo(以其他身份来执行命令)
      • umask(指定在建立文件时预设的权限掩码)
      • chattr(用于改变文件属性)
      • Lsattr(用于显示文件属性)
    • 查看系统用户登陆信息的命令( 7 个)
      • whoami(用户名)
      • who(显示目前登录系统的用户信息)
      • w(显示已经登陆系统的用户列表)
      • last(显示用户最近登录信息)
      • lastlog(显示系统中所有用户最近一次登录信息)
      • users(显示当前登录系统的所有用户的用户列表)
      • finger(用于查找并显示用户信息)
    • 查看硬件信息相关命令( 4 个)
      • ifconfig(配置和显示Linux内核中网络接口的网络参数)
      • free(显示内存信息)
      • fdisk(是一个创建和维护分区表的程序)
      • Dmesg(用于显示开机信息)
    • 其它(19 个)
      • echo(shell中打印shell变量的值)
      • printf(格式化并输出结果到标准输出)
      • rpm(RPM软件包的管理工具)
      • yum
      • watch(监测命令运行)
      • date
      • clear(清屏)
      • history(历史命令)
      • time(统计给定命令所花费的总时间)
      • nohup(用于在系统后台不挂断地运行命令)
      • xargs(给命令传递参数的一个过滤器)
      • exec(在运行的容器中执行命令)
      • export(用于设置或显示环境变量)
      • type(显示指定命令的类型)
    • 系统性能监视高级命令 (12 个)
      • 内存:
        • top(实时动态地查看系统的整体运行情况)
        • free(内存)
        • vmstat(用来获得有关进程、虚存、页面交换空间及 CPU活动的信息)
        • iostat(监视系统输入输出设备和CPU的使用情况)
        • sar(系统运行状态统计工具)
      • CPU:
        • top(实时动态地查看系统的整体运行情况)
        • vmstat(用来获得有关进程、虚存、页面交换空间及 CPU活动的信息)
        • iostat(监视系统输入输出设备和CPU的使用情况)
        • sar(系统运行状态统计工具)
      • I/O:
        • vmstat(用来获得有关进程、虚存、页面交换空间及 CPU活动的信息)
        • iostat(监视系统输入输出设备和CPU的使用情况)
        • sar(系统运行状态统计工具)
        • sar(系统运行状态统计工具)
      • 负载:
        • uptime(打印系统总共运行了多长时间和系统的平均负载)
      • 关机重启 :
        • shutdown(关机)
        • init(进程初始化工具)
        • poweroff(用于关闭计算器并切断电源)
        • reboot
      • 注销退出:
        • Logout(用于退出系统)
        • exit
    • 进程管理:( 15 个)
      • bg :后台运行
      • fg :挂起程序
      • jobs :显示后台程序
      • kill,killall,pkill :杀掉进程
      • crontab:设置定时
      • ps :查看进程
      • pstree :显示进程状态树
      • top :显示进程
      • nice:改变优先权
      • nohup :用户退出系统之后继续工作
      • pgrep :查找匹配条件的进程
      • strace :跟踪一个进程的系统调用
      • vmstat :报告虚拟内存统计信息

1. vi编译器的3种基本模式

命令模式

所输入字符均为命令

例如:
dd		删除一行
gg		进入首行
x		删除单个字符
yy		复制
p		粘贴
u		返回上一部操作

末行模式

在屏幕最后一行输出

例如:
:wq		保存并退出
:set nu 	显示行号

插入模式

所输入字符均为文本内容

例如:
o		光标进入下一行
a		光标往后移动一个字符
s		删除光标所对应的字符

2. vim的高级模式

可视化模式

例如:
v		可视化单字符(按方向键选取)
shift+v		可视化行(一次选取一行)
ctrl+v		可视化块(选取块状区域)

vim多行注释

vim /tmp/passwd #编辑文件
ctrl+v,进入可视化块
按j键,选择4行
shift+i 进入插入模式
输入#
按ESC键,完成多行注释

3. 线上查询及帮助命令( 2 个)

man(帮助)

man(选项)(参数)

-a:在所有的man帮助手册中搜索;

-f:等价于whatis指令,显示给定关键字的简短描述信息;

-P:指定内容时使用分页程序;

-M:指定man手册搜索的路径。

help(命令用于显示shell内部命令的帮助信息)

help(选项)(参数)

-s:输出短格式的帮助信息。仅包括命令格式。

4. 文件和目录操作命令( 13 个)

ls(列出目前工作目录所含之文件及子目录)

ls [选项] [目录或文件名]
参数:
-a:--all的缩写,显示所有的文件,包括隐藏文件(.开头的文件)

-A:--almost-all的缩写,显示所有的文件,包括隐藏文件,但不包括表示当前目录.和上级目录..这两个文件。

-c:和-lt一起使用:显示列表并且以ctime(文件状态最后改变时间)排序。和-l一起使用:显示ctime并且以文件名排序。其他情况,以ctime排序。

-d:--directory的缩写,仅列出目录本身,而不是列出目录里的内容列表

-f:直接列出结果,而不进行排序(ls默认会以文件名排序)
--color[=WHEN]:是否根据文件类型显示颜色,WHEN可以为never、always或者auto

--full-time:以完整的实际模式显示(包含年月日时分),类似与ls -l --time-style=full-iso。

-g:列表显示结果,和-l类似,但是不显示文件所属者。

-h:将文件内容大小以GB、KB等易读的方式显示。

-i:结合-l参数,列出每个文件的inode。

-l:列出长数据串,显示出文件的属性与权限等数据信息(常用)

-n:和-l类似,只是显示的所属用户和组不是名称而是对应的id。

-r:--reverse,将排序结果以倒序方式显示。

-S:以文件大小排序。

-t:以修改时间排序

--help:显示帮助信息

显示当前目录下非影藏文件与目录

[root@localhost ~]# ls
anaconda-ks.cfg  install.log  install.log.syslog  satools

显示当前目录下包括影藏文件在内的所有文件列表

[root@localhost ~]# ls -a
.   anaconda-ks.cfg  .bash_logout   .bashrc  install.log         .mysql_history  satools  .tcshrc   .vimrc
..  .bash_history    .bash_profile  .cshrc   install.log.syslog  .rnd            .ssh     .viminfo

输出长格式列表

[root@localhost ~]# ls -1

anaconda-ks.cfg
install.log
install.log.syslog
satools

显示文件的inode信息

索引节点(index inode简称为“inode”)是Linux中一个特殊的概念,具有相同的索引节点号的两个文本本质上是同一个文件(除文件名不同外)

[root@localhost ~]# ls -i -l anaconda-ks.cfg install.log
2345481 -rw------- 1 root root   859 Jun 11 22:49 anaconda-ks.cfg
2345474 -rw-r--r-- 1 root root 13837 Jun 11 22:49 install.log

水平输出文件列表

[root@localhost /]# ls -m

bin, boot, data, dev, etc, home, lib, lost+found, media, misc, mnt, opt, proc, root, sbin, selinux, srv, sys, tmp, usr, var

修改最后一次编辑的文件

最近修改的文件显示在最上面

[root@localhost /]# ls -t

tmp  root  etc  dev  lib  boot  sys  proc  data  home  bin  sbin  usr  var  lost+found  media  mnt  opt  selinux  srv  misc
显示递归文件

[root@localhost ~]# ls -R
.:
anaconda-ks.cfg  install.log  install.log.syslog  satools

./satools:
black.txt  freemem.sh  iptables.sh  lnmp.sh  mysql  php502_check.sh  ssh_safe.sh

打印文件的UID和GID

[root@localhost /]# ls -n

total 254
drwxr-xr-x   2 0 0  4096 Jun 12 04:03 bin
drwxr-xr-x   4 0 0  1024 Jun 15 14:45 boot
drwxr-xr-x   6 0 0  4096 Jun 12 10:26 data
drwxr-xr-x  10 0 0  3520 Sep 26 15:38 dev
drwxr-xr-x  75 0 0  4096 Oct 16 04:02 etc
drwxr-xr-x   4 0 0  4096 Jun 12 10:26 home
drwxr-xr-x  14 0 0 12288 Jun 16 04:02 lib
drwx------   2 0 0 16384 Jun 11 22:46 lost+found
drwxr-xr-x   2 0 0  4096 May 11  2011 media
drwxr-xr-x   2 0 0  4096 Nov  8  2010 misc
drwxr-xr-x   2 0 0  4096 May 11  2011 mnt
drwxr-xr-x   2 0 0  4096 May 11  2011 opt
dr-xr-xr-x 232 0 0     0 Jun 15 11:04 proc
drwxr-x---   4 0 0  4096 Oct 15 14:43 root
drwxr-xr-x   2 0 0 12288 Jun 12 04:03 sbin
drwxr-xr-x   2 0 0  4096 May 11  2011 selinux
drwxr-xr-x   2 0 0  4096 May 11  2011 srv
drwxr-xr-x  11 0 0     0 Jun 15 11:04 sys
drwxrwxrwt   3 0 0 98304 Oct 16 08:45 tmp
drwxr-xr-x  13 0 0  4096 Jun 11 23:38 usr
drwxr-xr-x  19 0 0  4096 Jun 11 23:38 var

列出文件和文件夹的详细信息

[root@localhost /]# ls -l

total 254
drwxr-xr-x   2 root root  4096 Jun 12 04:03 bin
drwxr-xr-x   4 root root  1024 Jun 15 14:45 boot
drwxr-xr-x   6 root root  4096 Jun 12 10:26 data
drwxr-xr-x  10 root root  3520 Sep 26 15:38 dev
drwxr-xr-x  75 root root  4096 Oct 16 04:02 etc
drwxr-xr-x   4 root root  4096 Jun 12 10:26 home
drwxr-xr-x  14 root root 12288 Jun 16 04:02 lib
drwx------   2 root root 16384 Jun 11 22:46 lost+found
drwxr-xr-x   2 root root  4096 May 11  2011 media
drwxr-xr-x   2 root root  4096 Nov  8  2010 misc
drwxr-xr-x   2 root root  4096 May 11  2011 mnt
drwxr-xr-x   2 root root  4096 May 11  2011 opt
dr-xr-xr-x 232 root root     0 Jun 15 11:04 proc
drwxr-x---   4 root root  4096 Oct 15 14:43 root
drwxr-xr-x   2 root root 12288 Jun 12 04:03 sbin
drwxr-xr-x   2 root root  4096 May 11  2011 selinux
drwxr-xr-x   2 root root  4096 May 11  2011 srv
drwxr-xr-x  11 root root     0 Jun 15 11:04 sys
drwxrwxrwt   3 root root 98304 Oct 16 08:48 tmp
drwxr-xr-x  13 root root  4096 Jun 11 23:38 usr
drwxr-xr-x  19 root root  4096 Jun 11 23:38 var

列出可读文件和文件夹详细信息

[root@localhost /]# ls -lh

total 254K
drwxr-xr-x   2 root root 4.0K Jun 12 04:03 bin
drwxr-xr-x   4 root root 1.0K Jun 15 14:45 boot
drwxr-xr-x   6 root root 4.0K Jun 12 10:26 data
drwxr-xr-x  10 root root 3.5K Sep 26 15:38 dev
drwxr-xr-x  75 root root 4.0K Oct 16 04:02 etc
drwxr-xr-x   4 root root 4.0K Jun 12 10:26 home
drwxr-xr-x  14 root root  12K Jun 16 04:02 lib
drwx------   2 root root  16K Jun 11 22:46 lost+found
drwxr-xr-x   2 root root 4.0K May 11  2011 media
drwxr-xr-x   2 root root 4.0K Nov  8  2010 misc
drwxr-xr-x   2 root root 4.0K May 11  2011 mnt
drwxr-xr-x   2 root root 4.0K May 11  2011 opt
dr-xr-xr-x 235 root root    0 Jun 15 11:04 proc
drwxr-x---   4 root root 4.0K Oct 15 14:43 root
drwxr-xr-x   2 root root  12K Jun 12 04:03 sbin
drwxr-xr-x   2 root root 4.0K May 11  2011 selinux
drwxr-xr-x   2 root root 4.0K May 11  2011 srv
drwxr-xr-x  11 root root    0 Jun 15 11:04 sys
drwxrwxrwt   3 root root  96K Oct 16 08:49 tmp
drwxr-xr-x  13 root root 4.0K Jun 11 23:38 usr
drwxr-xr-x  19 root root 4.0K Jun 11 23:38 var

显示文件夹信息

[root@localhost /]# ls -ld /etc/

drwxr-xr-x 75 root root 4096 Oct 16 04:02 /etc/

按时间列出文件和文件夹详细信息

[root@localhost /]# ls -lt

total 254
drwxrwxrwt   3 root root 98304 Oct 16 08:53 tmp
drwxr-xr-x  75 root root  4096 Oct 16 04:02 etc
drwxr-x---   4 root root  4096 Oct 15 14:43 root
drwxr-xr-x  10 root root  3520 Sep 26 15:38 dev
drwxr-xr-x  14 root root 12288 Jun 16 04:02 lib
drwxr-xr-x   4 root root  1024 Jun 15 14:45 boot
drwxr-xr-x  11 root root     0 Jun 15 11:04 sys
dr-xr-xr-x 232 root root     0 Jun 15 11:04 proc
drwxr-xr-x   6 root root  4096 Jun 12 10:26 data
drwxr-xr-x   4 root root  4096 Jun 12 10:26 home
drwxr-xr-x   2 root root  4096 Jun 12 04:03 bin
drwxr-xr-x   2 root root 12288 Jun 12 04:03 sbin
drwxr-xr-x  13 root root  4096 Jun 11 23:38 usr
drwxr-xr-x  19 root root  4096 Jun 11 23:38 var
drwx------   2 root root 16384 Jun 11 22:46 lost+found
drwxr-xr-x   2 root root  4096 May 11  2011 media
drwxr-xr-x   2 root root  4096 May 11  2011 mnt
drwxr-xr-x   2 root root  4096 May 11  2011 opt
drwxr-xr-x   2 root root  4096 May 11  2011 selinux
drwxr-xr-x   2 root root  4096 May 11  2011 srv
drwxr-xr-x   2 root root  4096 Nov  8  2010 misc

按修改时间列出文件和文件夹详细信息

[root@localhost /]# ls -ltr

total 254
drwxr-xr-x   2 root root  4096 Nov  8  2010 misc
drwxr-xr-x   2 root root  4096 May 11  2011 srv
drwxr-xr-x   2 root root  4096 May 11  2011 selinux
drwxr-xr-x   2 root root  4096 May 11  2011 opt
drwxr-xr-x   2 root root  4096 May 11  2011 mnt
drwxr-xr-x   2 root root  4096 May 11  2011 media
drwx------   2 root root 16384 Jun 11 22:46 lost+found
drwxr-xr-x  19 root root  4096 Jun 11 23:38 var
drwxr-xr-x  13 root root  4096 Jun 11 23:38 usr
drwxr-xr-x   2 root root 12288 Jun 12 04:03 sbin
drwxr-xr-x   2 root root  4096 Jun 12 04:03 bin
drwxr-xr-x   4 root root  4096 Jun 12 10:26 home
drwxr-xr-x   6 root root  4096 Jun 12 10:26 data
dr-xr-xr-x 232 root root     0 Jun 15 11:04 proc
drwxr-xr-x  11 root root     0 Jun 15 11:04 sys
drwxr-xr-x   4 root root  1024 Jun 15 14:45 boot
drwxr-xr-x  14 root root 12288 Jun 16 04:02 lib
drwxr-xr-x  10 root root  3520 Sep 26 15:38 dev
drwxr-x---   4 root root  4096 Oct 15 14:43 root
drwxr-xr-x  75 root root  4096 Oct 16 04:02 etc
drwxrwxrwt   3 root root 98304 Oct 16 08:54 tmp

按照特殊字符对文件进行分类

[root@localhost nginx-1.2.1]# ls -F

auto/  CHANGES  CHANGES.ru  conf/  configure*  contrib/  html/  LICENSE  Makefile  man/  objs/  README  src/

列出文件并标记颜色分类

[root@localhost nginx-1.2.1]# ls --color=auto

auto  CHANGES  CHANGES.ru  conf  configure  contrib  html  LICENSE  Makefile  man  objs  README  src

tree(树状图列出目录的内容)

tree(选项)(参数)

-a:显示所有文件和目录;

-A:使用ASNI绘图字符显示树状图而非以ASCII字符组合;

-C:在文件和目录清单加上色彩,便于区分各种类型;

-d:先是目录名称而非内容;

-D:列出文件或目录的更改时间;

-f:在每个文件或目录之前,显示完整的相对路径名称;

-F:在执行文件,目录,Socket,符号连接,管道名称名称,各自加上"*""/""@""|"号;

-g:列出文件或目录的所属群组名称,没有对应的名称时,则显示群组识别码;

-i:不以阶梯状列出文件和目录名称;

-l:<范本样式> 不显示符号范本样式的文件或目录名称;

-l:如遇到性质为符号连接的目录,直接列出该连接所指向的原始目录;

-L n:n为数字,表示显示目标目录下的n级; 

-n:不在文件和目录清单加上色彩;

-N:直接列出文件和目录名称,包括控制字符;

-p:列出权限标示;

-P:<范本样式> 只显示符合范本样式的文件和目录名称;

-q:用“?”号取代控制字符,列出文件和目录名称;

-s:列出文件和目录大小;

-t:用文件和目录的更改时间排序;

-u:列出文件或目录的拥有者名称,没有对应的名称时,则显示用户识别码;

-x:将范围局限在现行的文件系统中,若指定目录下的某些子目录,其存放于另一个文件系统上,则将该目录予以排除在寻找范围外。

pwd(以绝对路径的方式显示用户当前工作目录)

pwd(选项)

--help:显示帮助信息;

--version:显示版本信息。

mkdir(用来创建目录)

mkdir (选项)(参数)

-Z:设置安全上下文,当使用SELinux时有效;

-m<目标属性>或--mode<目标属性>建立目录的同时设置目录的权限;

-p或--parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;

--version 显示版本信息。

rmdir(用来删除空目录)

rmdir(选项)(参数)

-p或--parents:删除指定目录后,若该目录的上层目录已变成空目录,则将其一并删除;

--ignore-fail-on-non-empty:此选项使rmdir命令忽略由于删除非空目录时导致的错误信息;

-v或-verboes:显示命令的详细执行过程;

--help:显示命令的帮助信息;

--version:显示命令的版本信息。

cd(切换工作目录)

cd (选项) (参数)

-p 如果要切换到的目标目录是一个符号连接,直接切换到符号连接指向的目标目录

-L 如果要切换的目标目录是一个符号的连接,直接切换到字符连接名代表的目录,而非符号连接所指向的目标目录。

- 当仅实用"-"一个选项时,当前工作目录将被切换到环境变量"OLDPWD"所表示的目录。

touch(创建文件)

一是用于把已存在文件的时间标签更新为系统当前的时间(默认方式),它们的数据将原封不动地保留下来;二是用来创建新的空文件

touch(选项)(参数)

-a:或--time=atime或--time=access或--time=use  只更改存取时间;

-c:或--no-create  不建立任何文件;

-d:<时间日期> 使用指定的日期时间,而非现在的时间;

-f:此参数将忽略不予处理,仅负责解决BSD版本touch指令的兼容性问题;

-m:或--time=mtime或--time=modify  只更该变动时间;

-r:<参考文件或目录>  把指定文件或目录的日期时间,统统设成和参考文件或目录的日期时间相同;

-t:<日期时间>  使用指定的日期时间,而非现在的时间;

--help:在线帮助;

--version:显示版本信息。

cp(复制)

用来将一个或多个源文件或者目录复制到指定的目的文件或目录

cp(选项)(参数)

-a:此参数的效果和同时指定"-dpR"参数相同;

-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;

-f:强行复制文件或目录,不论目标文件或目录是否已存在;

-i:覆盖既有文件之前先询问用户;

-l:对源文件建立硬连接,而非复制文件;

-p:保留源文件或目录的属性;

-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;

-s:对源文件建立符号连接,而非复制文件;

-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;

-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;

-b:覆盖已存在的文件目标前将目标文件备份;

-v:详细显示命令执行的操作。

mv(移动改名)

用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。source表示源文件或目录,target表示目标文件或目录。如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖

mv(选项)(参数)

--backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;

-b:当文件存在时,覆盖前,为其创建一个备份;

-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;

-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。

--strip-trailing-slashes:删除源文件中的斜杠“/”;

-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;

--target-directory=<目录>:指定源文件要移动到目标目录;

-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。

rm(删除)

可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变

rm (选项)(参数)

-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;

-f:强制删除文件或目录;

-i:删除已有文件或目录之前先询问用户;

-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;

--preserve-root:不对根目录进行递归操作;

-v:显示指令的详细执行过程。

ln(创建链接文件)

用来为文件创件连接,连接类型分为硬连接和符号连接两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项

ln(选项)(参数)

-b或--backup:删除,覆盖目标文件之前的备份;

-d或-F或——directory:建立目录的硬连接;

-f或——force:强行建立文件或目录的连接,不论文件或目录是否存在;

-i或——interactive:覆盖既有文件之前先询问用户;

-n或--no-dereference:把符号连接的目的目录视为一般文件;

-s或——symbolic:对源文件建立符号连接,而非硬连接;

-S<字尾备份字符串>或--suffix=<字尾备份字符串>:用"-b"参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,预设的备份字符串是符号“~”,用户可通过“-S”参数来改变它;

-v或——verbose:显示指令执行过程;

-V<备份方式>或--version-control=<备份方式>:用“-b”参数备份目标文件后,备份文件的字尾会被加上一个备份字符串,这个字符串不仅可用“-S”参数变更,当使用“-V”参数<备份方式>指定不同备份方式时,也会产生不同字尾的备份字符串;

--help:在线帮助;

--version:显示版本信息。

find(查找文件)

用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示

find(选项)(参数)

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;

-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;

-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;

-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;

-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;

-daystart:从本日开始计算时间;

-depth:从指定目录下最深层的子目录开始查找;

-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;

-exec<执行指令>:假设find指令的回传值为True,就执行该指令;

-false:将find指令的回传值皆设为False;

-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;

-follow:排除符号连接;

-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;

-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;

-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;

-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;

-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;

-group<群组名称>:查找符合指定之群组名称的文件或目录;

-help或——help:在线帮助;

-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;

-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;

-inum<inode编号>:查找符合指定的inode编号的文件或目录;

-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;

-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;

-links<连接数目>:查找符合指定的硬连接数目的文件或目录;

-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;

-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;

-maxdepth<目录层级>:设置最大目录层级;

-mindepth<目录层级>:设置最小目录层级;

-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;

-mount:此参数的效果和指定“-xdev”相同;

-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;

-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-nogroup:找出不属于本地主机群组识别码的文件或目录;

-noleaf:不去考虑目录至少需拥有两个硬连接存在;

-nouser:找出不属于本地主机用户识别码的文件或目录;

-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;

-path<范本样式>:指定字符串作为寻找目录的范本样式;

-perm<权限数值>:查找符合指定的权限数值的文件或目录;

-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;

-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;

-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;

-prune:不寻找字符串作为寻找文件或目录的范本样式;

-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-size<文件大小>:查找符合指定的文件大小的文件;

-true:将find指令的回传值皆设为True;

-type<文件类型>:只寻找符合指定的文件类型的文件;

-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;

-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;

-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;

-version或——version:显示版本信息;

-xdev:将范围局限在先行的文件系统中;

-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

rename(用字符串替换的方式批量改变文件名)

rename(参数)

原字符串:将文件名需要替换的字符串;

目标字符串:将文件名中含有的原字符替换成目标字符串;

文件:指定要改变文件名的文件列表。

5. 查看文件及内容处理命令( 18 个)

Cat(显示文件的内容)

连接文件并打印到标准输出设备上,cat经常用来显示文件的内容,类似于下的type命令。
注意:当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态

cat(选项)(参数)

-n或-number:有1开始对所有输出的行数编号;

-b或--number-nonblank:和-n相似,只不过对于空白行不编号;

-s或--squeeze-blank:当遇到有连续两行以上的空白行,就代换为一行的空白行;

-A:显示不可打印字符,行尾显示“$”;

-e:等价于"-vE"选项;

-t:等价于"-vT"选项;

tac(用于将文件已行为单位的反序输出,即第一行最后显示,最后一行先显示)

tac(选项)(参数)

-a或——append:将内容追加到文件的末尾;

-i或——ignore-interrupts:忽略中断信号。

more(全屏显示文件内容)

是一个基于vi编辑器文本过滤器,它以全屏幕的方式按页显示文本文件的内容,支持vi中的关键字定位操作。more名单中内置了若干快捷键,常用的有H(获得帮助信息),Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)。

  • 按Space键:显示文本的下一屏内容。
  • 按Enier键:只显示文本的下一行内容。
  • 按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
  • 按H键:显示帮助屏,该屏上有相关的帮助信息。
  • 按B键:显示上一屏内容。
  • 按Q键:退出rnore命令。
more(语法)(参数)

-<数字>:指定每屏显示的行数;

-d:显示“[press space to continue,'q' to quit.]”和“[Press 'h' for instructions]”;

-c:不进行滚屏操作。每次刷新这个屏幕;

-s:将多个空行压缩成一行显示;

-u:禁止下划线;

+<数字>:从指定数字的行开始显示。

less(分页浏览内容)

与more十分相似,都可以用来浏览文字档案的内容,不同的是less命令允许用户向前或向后浏览文件,而more命令只能向前浏览。用less命令显示文件时,用PageUp键向上翻页,用PageDown键向下翻页。要退出less程序,应按Q键。

less(选项)(参数)

-e:文件内容显示完毕后,自动退出;

-f:强制显示文件;

-g:不加亮显示搜索到的所有关键词,仅显示当前显示的关键字,以提高显示速度;

-l:搜索时忽略大小写的差异;

-N:每一行行首显示行号;

-s:将连续多个空行压缩成一行显示;

-S:在单行显示较长的内容,而不换行显示;

-x<数字>:将TAB字符显示为指定个数的空格字符。

head(显示文件的开头的内容)

head(选项)(参数)

-n<数字>:指定显示头部内容的行数;

-c<字符数>:指定显示头部内容的字符数;

-v:总是显示文件名的头信息;

-q:不显示文件名的头信息。

tail(显示文件的末尾的内容)

用于输入文件中的尾部内容。tail命令默认在屏幕上显示指定文件的末尾10行。如果给定的文件不止一个,则在显示的每个文件前面加一个文件名标题。如果没有指定文件或者文件名为“-”,则读取标准输入。

tail(选项)(参数)

--retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;

-c<N>或——bytes=<N>:输出文件尾部的N(N为整数)个字节内容;

-f<name/descriptor>或;--follow<nameldescript>:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;

-F:与选项“-follow=name”和“--retry"连用时功能相同;

-n<N>或——line=<N>:输出文件的尾部N(N位数字)行内容。

--pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;

-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;

-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;

-v或——verbose:当有多个文件参数时,总是输出各个文件名;

--help:显示指令的帮助信息;

--version:显示指令的版本信息。

cut(显示行中的指定部分)

显示行中的指定部分,删除文件中指定字段。cut经常用来显示文件的内容,类似于下的type命令。

说明:该命令有两项功能,其一是用来显示文件的内容,它依次读取由参数file所指 明的文件,将它们的内容输出到标准输出上;其二是连接两个或多个文件,如cut fl f2 > f3将把文件fl和几的内容合并起来,然后通过输出重定向符“>”的作用,将它们放入文件f3中。

当文件较大时,文本在屏幕上迅速闪过(滚屏),用户往往看不清所显示的内容。因此,一般用more等命令分屏显示。为了控制滚屏,可以按Ctrl+S键,停止滚屏;按Ctrl+Q键可以恢复滚屏。按Ctrl+C(中断)键可以终止该命令的执行,并且返回Shell提示符状态。

cut(选项)(参数)

-b:仅显示行中指定直接范围的内容;

-c:仅显示行中指定范围的字符;

-d:指定字段的分隔符,默认的字段分隔符为“TAB”;

-f:显示指定字段的内容;

-n:与“-b”选项连用,不分割多字节字符;

--complement:补足被选择的字节、字符或字段;

--out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;

--help:显示指令的帮助信息;

--version:显示指令的版本信息。

split(将一个文件分割成数个)

可以将一个大文件分割成很多个小文件,有时需要将文件分割成更小的片段,比如为提高可读性,生成日志等

-b:值为每一输出档案的大小,单位为 byte。

-C:每一输出档中,单行的最大 byte 数。

-d:使用数字作为后缀。

-l:值为每一输出档的列数大小。

paste(合并文件的列)

paste(选项)(参数)

-d<间隔字符>或--delimiters=<间隔字符>:用指定的间隔字符取代跳格字符;

-s或——serial串列进行而非平行处理。

sort(排序)

sort命令是在Linux里非常有用,它将文件进行排序,并将排序结果标准输出。sort命令既可以从特定的文件,也可以从stdin中获取输入。

sort(选项)(参数)

-b:忽略每行前面开始出的空格字符;

-c:检查文件是否已经按照顺序排序;

-d:排序时,处理英文字母、数字及空格字符外,忽略其他的字符;

-f:排序时,将小写字母视为大写字母;

-i:排序时,除了040176之间的ASCII字符外,忽略其他的字符;

-m:将几个排序号的文件进行合并;

-M:将前面3个字母依照月份的缩写进行排序;

-n:依照数值的大小排序;

-o<输出文件>:将排序后的结果存入制定的文件;

-r:以相反的顺序来排序;

-t<分隔字符>:指定排序时所用的栏位分隔字符;

+<起始栏位>-<结束栏位>:以指定的栏位来排序,范围由起始栏位到结束栏位的前一栏位。

uniq(去重)

uniq命令用于报告或忽略文件中的重复行,一般与sort命令结合使用。

uniq(选项)(参数)

-c或——count:在每列旁边显示该行重复出现的次数;

-d或--repeated:仅显示重复出现的行列;

-f<栏位>或--skip-fields=<栏位>:忽略比较指定的栏位;

-s<字符位置>或--skip-chars=<字符位置>:忽略比较指定的字符;

-u或——unique:仅显示出一次的行列;

-w<字符位置>或--check-chars=<字符位置>:指定要比较的字符。

wc(用于计算字数)

wc命令用来计算数字。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。

wc(选项)(参数)

-c或--bytes或——chars:只显示Bytes数;

-l或——lines:只显示列数;

-w或——words:只显示字数。

file(用于辨识文件类型)

file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

file(选项)(参数)

-b:列出辨识结果时,不显示文件名称;

-c:详细显示指令执行过程,便于排错或分析程序执行的情形;

-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;

-L:直接显示符号连接所指向的文件类别;

-m<魔法数字文件>:指定魔法数字文件;

-v:显示版本信息;

-z:尝试去解读压缩文件的内容。

diff(比较文件的差异)

diff命令在最简单的情况下,比较给定的两个文件的不同。如果使用“-”代替“文件”参数,则要比较的内容将来自标准输入。diff命令是以逐行的方式,比较文本文件的异同处。如果该命令指定进行目录的比较,则将会比较该目录中具有相同文件名的文件,而不会对其子目录文件进行任何比较操作。

diff(选项)(参数)

-<行数>:指定要显示多少行的文本。此参数必须与-c或-u参数一并使用;

-a或——text:diff预设只会逐行比较文本文件;

-b或--ignore-space-change:不检查空格字符的不同;

-B或--ignore-blank-lines:不检查空白行;

-c:显示全部内容,并标出不同之处;

-C<行数>或--context<行数>:与执行“-c-<行数>”指令相同;

-d或——minimal:使用不同的演算法,以小的单位来做比较;

-D<巨集名称>或ifdef<巨集名称>:此参数的输出格式可用于前置处理器巨集;

-e或——ed:此参数的输出格式可用于ed的script文件;

-f或-forward-ed:输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处;

-H或--speed-large-files:比较大文件时,可加快速度;

-l<字符或字符串>或--ignore-matching-lines<字符或字符串>:若两个文件在某几行有所不同,而之际航同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异;

-i或--ignore-case:不检查大小写的不同;

-l或——paginate:将结果交由pr程序来分页;

-n或——rcs:将比较结果以RCS的格式来显示;

-N或--new-file:在比较目录时,若文件A仅出现在某个目录中,预设会显示:Only in目录,文件A 若使用-N参数,则diff会将文件A 与一个空白的文件比较;

-p:若比较的文件为C语言的程序码文件时,显示差异所在的函数名称;

-P或--unidirectional-new-file:与-N类似,但只有当第二个目录包含了第一个目录所没有的文件时,才会将这个文件与空白的文件做比较;

-q或--brief:仅显示有无差异,不显示详细的信息;

-r或——recursive:比较子目录中的文件;

-s或--report-identical-files:若没有发现任何差异,仍然显示信息;

-S<文件>或--starting-file<文件>:在比较目录时,从指定的文件开始比较;

-t或--expand-tabs:在输出时,将tab字符展开;

-T或--initial-tab:在每行前面加上tab字符以便对齐;

-u,-U<列数>或--unified=<列数>:以合并的方式来显示文件内容的不同;

-v或——version:显示版本信息;

-w或--ignore-all-space:忽略全部的空格字符;

-W<宽度>或--width<宽度>:在使用-y参数时,指定栏宽;

-x<文件名或目录>或--exclude<文件名或目录>:不比较选项中所指定的文件或目录;

-X<文件>或--exclude-from<文件>;您可以将文件或目录类型存成文本文件,然后在=<文件>中指定此文本文件;

-y或--side-by-side:以并列的方式显示文件的异同之处;

--help:显示帮助;

--left-column:在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容;

--suppress-common-lines:在使用-y参数时,仅显示不同之处。

chattr(用于改变文件属性)

chattr命令用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

a:让文件或目录仅供附加用途;

b:不更新文件或目录的最后存取时间;

c:将文件或目录压缩后存放;

d:将文件或目录排除在倾倒操作之外;

i:不得任意更动文件或目录;

s:保密性删除文件或目录;

S:即时更新文件或目录;

u:预防意外删除。
chattr(选项)

-R:递归处理,将指令目录下的所有文件及子目录一并处理;

-v<版本编号>:设置文件或目录版本;

-V:显示指令执行过程;

+<属性>:开启文件或目录的该项属性;

-<属性>:关闭文件或目录的该项属性;

=<属性>:指定文件或目录的该项属性。

lsattr (用于显示文件属性)

lsattr命令用于查看文件的第二扩展文件系统属性

lsattr(选项)(参数)

-E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。

-D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。

-R:递归的操作方式;

-V:显示指令的版本信息;

-a:列出目录中的所有文件,包括隐藏文件。

grep(用于查找文件里符合条件的字符串)

grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。

-a 不要忽略二进制数据。

-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。

-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。

-c 计算符合范本样式的列数。

-C<显示列数>或-<显示列数>  除了显示符合范本样式的那一列之外,并显示该列之前后的内容。

-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。

-e<范本样式> 指定字符串作为查找文件内容的范本样式。

-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。

-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。

-F 将范本样式视为固定字符串的列表。

-G 将范本样式视为普通的表示法来使用。

-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。

-H 在显示符合范本样式的那一列之前,标示该列的文件名称。

-i 忽略字符大小写的差别。

-l 列出文件内容符合指定的范本样式的文件名称。

-L 列出文件内容不符合指定的范本样式的文件名称。

-n 在显示符合范本样式的那一列之前,标示出该列的编号。

-q 不显示任何信息。

-R/-r 此参数的效果和指定“-d recurse”参数相同。

-s 不显示错误信息。

-v 反转查找。

-w 只显示全字符合的列。

-x 只显示全列符合的列。

-y 此参数效果跟“-i”相同。

-o 只输出文件中匹配到的部分。

egrep(用于在文件内查找指定的字符串)

egrep命令用于在文件内查找指定的字符串。egrep执行效果与grep -E相似,使用的语法及参数可参照grep指令,与grep的不同点在于解读字符串的方法。egrep是用extended regular expression语法来解读的,而grep则用basic regular expression 语法解读,extended regular expression比basic regular expression的表达更规范。

egrep(选项)(查找模式)(文件名1,文件名2,……)

6. 文件压缩及解压缩命令( 4 个 )

tar(可以为linux的文件和目录创建档案)

tar命令可以为linux的文件和目录创建档案。利用tar,可以为某一特定文件创建档案(备份文件),也可以在档案中改变文件,或者向档案中加入新的文件。tar最初被用来在磁带上创建档案,现在,用户可以在任何设备上创建档案。利用tar命令,可以把一大堆的文件和目录全部打包成一个文件,这对于备份文件或将几个文件组合成为一个文件以便于网络传输是非常有用的。

首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。

为什么要区分这两个概念呢?这源于Linux中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。

tar(选项)(参数)

-A或--catenate:新增文件到以存在的备份文件;

-B:设置区块大小;

-c或--create:建立新的备份文件;

-C <目录>:这个选项用在解压缩,若要在特定目录解压缩,可以使用这个选项。

-d:记录文件的差别;

-x或--extract或--get:从备份文件中还原文件;

-t或--list:列出备份文件的内容;

-z或--gzip或--ungzip:通过gzip指令处理备份文件;

-Z或--compress或--uncompress:通过compress指令处理备份文件;

-f<备份文件>或--file=<备份文件>:指定备份文件;

-v或--verbose:显示指令执行过程;

-r:添加文件到已经压缩的文件;

-u:添加改变了和现有的文件到已经存在的压缩文件;

-j:支持bzip2解压文件;

-v:显示操作过程;

-l:文件系统边界设置;

-k:保留原有文件不覆盖;

-m:保留文件不被覆盖;

-w:确认压缩文件的正确性;

-p或--same-permissions:用原来的文件权限还原文件;

-P或--absolute-names:文件名使用绝对名称,不移除文件名称前的“/”号;

-N <日期格式>  --newer=<日期时间>:只将较指定日期更新的文件保存到备份文件里;

--exclude=<范本样式>:排除符合范本样式的文件。

unzip(用于解压缩由zip命令压缩的“.zip”压缩包。)

unzip(选项)(参数)

-c:将解压缩的结果显示到屏幕上,并对字符做适当的转换;

-f:更新现有的文件;

-l:显示压缩文件内所包含的文件;

-p:与-c参数类似,会将解压缩的结果显示到屏幕上,但不会执行任何的转换;

-t:检查压缩文件是否正确;

-u:与-f参数类似,但是除了更新现有的文件外,也会将压缩文件中的其他文件解压缩到目录中;

-v:执行时显示详细的信息;

-z:仅显示压缩文件的备注文字;

-a:对文本文件进行必要的字符转换;

-b:不要对文本文件进行字符转换;

-C:压缩文件中的文件名称区分大小写;

-j:不处理压缩文件中原有的目录路径;

-L:将压缩文件中的全部文件名改为小写;

-M:将输出结果送到more程序处理;

-n:解压缩时不要覆盖原有的文件;

-o:不必先询问用户,unzip执行后覆盖原有的文件;

-P<密码>:使用zip的密码选项;

-q:执行时不显示任何信息;

-s:将文件名中的空白字符转换为底线字符;

-V:保留VMS的文件版本信息;

-X:解压缩时同时回存文件原来的UID/GID;

-d<目录>:指定文件解压缩后所要存储的目录;

-x<文件>:指定不要处理.zip压缩文件中的哪些文件;

-Z:unzip-Z等于执行zipinfo指令。

gzip(压缩文件)

gzip命令用来压缩文件。gzip是个使用广泛的压缩程序,文件经它压缩过后,其名称后面会多处“.gz”扩展名。

gzip是在Linux系统中经常使用的一个对文件进行压缩和解压缩的命令,既方便又好用。gzip不仅可以用来压缩大的、较少使用的文件以节省磁盘空间,还可以和tar命令一起构成Linux操作系统中比较流行的压缩文件格式。据统计,gzip命令对文本文件有60%~70%的压缩率。减少文件大小有两个明显的好处,一是可以减少存储空间,二是通过网络传输文件时,可以减少传输的时间。

gzip(选项)(参数)

-a或——ascii:使用ASCII文字模式;

-d或--decompress或----uncompress:解开压缩文件;

-f或——force:强行压缩文件。不理会文件名称或硬连接是否存在以及该文件是否为符号连接;

-h或——help:在线帮助;

-l或——list:列出压缩文件的相关信息;

-L或——license:显示版本与版权信息;

-n或--no-name:压缩文件时,不保存原来的文件名称及时间戳记;

-N或——name:压缩文件时,保存原来的文件名称及时间戳记;

-q或——quiet:不显示警告信息;

-r或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;

-S或<压缩字尾字符串>或----suffix<压缩字尾字符串>:更改压缩字尾字符串;

-t或——test:测试压缩文件是否正确无误;

-v或——verbose:显示指令执行过程;

-V或——version:显示版本信息;

-<压缩效率>:压缩效率是一个介于1~9的数值,预设值为“6”,指定愈大的数值,压缩效率就会愈高;

--best:此参数的效果和指定“-9”参数相同;

--fast:此参数的效果和指定“-1”参数相同。

zip(解压缩文件)

zip命令可以用来解压缩文件,或者对文件进行打包操作。zip是个使用广泛的压缩程序,文件经它压缩后会另外产生具有“.zip”扩展名的压缩文件。

zip(选项)(参数)

-A:调整可执行的自动解压缩文件;

-b<工作目录>:指定暂时存放文件的目录;

-c:替每个被压缩的文件加上注释;

-d:从压缩文件内删除指定的文件;

-D:压缩文件内不建立目录名称;

-f:此参数的效果和指定“-u”参数类似,但不仅更新既有文件,如果某些文件原本不存在于压缩文件内,使用本参数会一并将其加入压缩文件中;

-F:尝试修复已损坏的压缩文件;

-g:将文件压缩后附加在已有的压缩文件之后,而非另行建立新的压缩文件;

-h:在线帮助;

-i<范本样式>:只压缩符合条件的文件;

-j:只保存文件名称及其内容,而不存放任何目录名称;

-J:删除压缩文件前面不必要的数据;

-k:使用MS-DOS兼容格式的文件名称;

-l:压缩文件时,把LF字符置换成LF+CR字符;

-ll:压缩文件时,把LF+cp字符置换成LF字符;

-L:显示版权信息;

-m:将文件压缩并加入压缩文件后,删除原始文件,即把文件移到压缩文件中;

-n<字尾字符串>:不压缩具有特定字尾字符串的文件;

-o:以压缩文件内拥有最新更改时间的文件为准,将压缩文件的更改时间设成和该文件相同;

-q:不显示指令执行过程;

-r:递归处理,将指定目录下的所有文件和子目录一并处理;

-S:包含系统和隐藏文件;

-t<日期时间>:把压缩文件的日期设成指定的日期;

-T:检查备份文件内的每个文件是否正确无误;

-u:更换较新的文件到压缩文件内;

-v:显示指令执行过程或显示版本信息;

-V:保存VMS操作系统的文件属性;

-w:在文件名称里假如版本编号,本参数仅在VMS操作系统下有效;

-x<范本样式>:压缩时排除符合条件的文件;

-X:不保存额外的文件属性;

-y:直接保存符号连接,而非该链接所指向的文件,本参数仅在UNIX之类的系统下有效;

-z:替压缩文件加上注释;

-$:保存第一个被压缩文件所在磁盘的卷册名称;

-<压缩效率>:压缩效率是一个介于1~9的数值。

信息显示命令( 11 个)

Uname(用于显示系统信息)

uname命令用于打印当前系统相关信息(内核版本号、硬件架构、主机名称和操作系统类型等)。

uname(选项)

-a或--all:显示全部的信息;

-m或--machine:显示电脑类型;

-n或-nodename:显示在网络上的主机名称;

-r或--release:显示操作系统的发行编号;

-s或--sysname:显示操作系统名称;

-v:显示操作系统的版本;

-p或--processor:输出处理器类型或"unknown"

-i或--hardware-platform:输出硬件平台或"unknown"

-o或--operating-system:输出操作系统名称;

--help:显示帮助;

--version:显示版本信息。

hostname(显示和设置系统的主机名称)

hostname命令用于显示和设置系统的主机名称。环境变量HOSTNAME也保存了当前的主机名。在使用hostname命令设置主机名后,系统并不会永久保存新的主机名,重新启动机器之后还是原来的主机名。如果需要永久修改主机名,需要同时修改/etc/hosts和/etc/sysconfig/network的相关内容。

hostname(选项)(参数)

-v:详细信息模式;

-a:显示主机别名;

-d:显示DNS域名;

-f:显示FQDN名称;

-i:显示主机的ip地址;

-s:显示短主机名称,在第一个点处截断;

-y:显示NIS域名。

dmesg(用于显示开机信息)

dmesg命令被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log/dmesg文件里。

dmesg(选项)

-c:显示信息后,清除ring buffer中的内容;

-s<缓冲区大小>:预设置为8196,刚好等于ring buffer的大小;

-n:设置记录信息的层级。
[root@localhost ~]# dmesg | head
Linux version 2.6.18-348.6.1.el5 (mockbuild@builder17.centos.org) (gcc version 4.1.2 20080704 (Red Hat 4.1.2-54)) #1 SMP Tue May 21 15:34:22 EDT 2013
BIOS-provided physical RAM map:
 BIOS-e820: 0000000000010000 - 000000000009f400 (usable)
 BIOS-e820: 000000000009f400 - 00000000000a0000 (reserved)
 BIOS-e820: 00000000000f0000 - 0000000000100000 (reserved)
 BIOS-e820: 0000000000100000 - 000000007f590000 (usable)
 BIOS-e820: 000000007f590000 - 000000007f5e3000 (ACPI NVS)
 BIOS-e820: 000000007f5e3000 - 000000007f5f0000 (ACPI data)
 BIOS-e820: 000000007f5f0000 - 000000007f600000 (reserved)
 BIOS-e820: 00000000e0000000 - 00000000e8000000 (reserved)

uptime

uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

uptime(选项)
-V:显示指令的版本信息。
15:31:30             //系统当前时间

up 127 days,  3:00   //主机已运行时间,时间越大,说明你的机器越稳定。

1 user               //用户连接数,是总连接数而不是用户数

load average: 0.00, 0.00, 0.00         // 系统平均负载,统计最近1515分钟的系统平均负载

file(探测给定文件的类型)

file命令用来探测给定文件的类型。file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

file(选项)(参数)

-b:列出辨识结果时,不显示文件名称;

-c:详细显示指令执行过程,便于排错或分析程序执行的情形;

-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;

-L:直接显示符号连接所指向的文件类别;

-m<魔法数字文件>:指定魔法数字文件;

-v:显示版本信息;

-z:尝试去解读压缩文件的内容。

stat(显示文件的状态信息)

stat命令用于显示文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详细。

stat(选项)(参数)

-L:支持符号连接;

-f:显示文件系统状态而非文件状态;

-t:以简洁方式输出信息;

--help:显示指令的帮助信息;

--version:显示指令的版本信息。

du(用于显示目录或文件的大小)

du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。

du [选项][文件]

-a或-all 显示目录中个别文件的大小。

-b或-bytes 显示目录或文件大小时,以byte为单位。

-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

-k或--kilobytes 以KB(1024bytes)为单位输出。

-m或--megabytes 以MB为单位输出。

-s或--summarize 仅显示总计,只列出最后加总的值。

-h或--human-readable 以K,M,G为单位,提高信息的可读性。

-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。

-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。

-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。

-X<文件>或--exclude-from=<文件> <文件>指定目录或文件。

--exclude=<目录或文件> 略过指定的目录或文件。

-D或--dereference-args 显示指定符号链接的源文件大小。

-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。

-l或--count-links 重复计算硬件链接的文件。

df(显示目前在 Linux 系统上的文件系统磁盘使用情况统计)

df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

df(选项)(参数)

-a或--all:包含全部的文件系统;

--block-size=<区块大小>:以指定的区块大小来显示区块数目;

-h或--human-readable:以可读性较高的方式来显示信息;

-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;

-i或--inodes:显示inode的信息;

-k或--kilobytes:指定区块大小为1024字节;

-l或--local:仅显示本地端的文件系统;

-m或--megabytes:指定区块大小为1048576字节;

--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;

-P或--portability:使用POSIX的输出格式;

--sync:在取得磁盘使用信息前,先执行sync指令;

-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;

-T或--print-type:显示文件系统的类型;

-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;

--help:显示帮助;

--version:显示版本信息。

top(实时动态地查看系统的整体运行情况)

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

top(选项)

-b:以批处理模式操作;

-c:显示完整的治命令;

-d:屏幕刷新间隔时间;

-I:忽略失效过程;

-s:保密模式;

-S:累积模式;

-i<时间>:设置间隔时间;

-u<用户名>:指定用户名;

-p<进程号>:指定进程;

-n<次数>:循环显示的次数。

top交互命令

在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。

h:显示帮助画面,给出一些简短的命令总结说明;

k:终止一个进程;

i:忽略闲置和僵死进程,这是一个开关式命令;

q:退出程序;

r:重新安排一个进程的优先级别;

S:切换到累计模式;

s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

f或者F:从当前显示中添加或者删除项目;

o或者O:改变显示项目的顺序;

l:切换显示平均负载和启动时间信息;

m:切换显示内存信息;

t:切换显示进程和CPU状态信息;

c:切换显示命令名称和完整命令行;

M:根据驻留内存大小进行排序;

P:根据CPU使用百分比大小进行排序;

T:根据时间/累计时间进行排序;

w:将当前设置写入~/.toprc文件中。

free(用于显示内存状态)

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

free(选项)

-b:以Byte为单位显示内存使用情况;

-k:以KB为单位显示内存使用情况;

-m:以MB为单位显示内存使用情况;

-o:不显示缓冲区调节列;

-s<间隔秒数>:持续观察内存使用状况;

-t:显示内存总和列;

-V:显示版本信息。

date(显示日期)

date命令是显示或设置系统时间与日期。

很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

date(选项)(参数)

-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;

-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;

-u:显示GMT;

--help:在线帮助;

--version:显示版本信息。

参数

<+时间日期格式>:指定显示时使用的日期时间格式。

日期格式字符串列表

%H 小时,24小时制(00~23

%I 小时,12小时制(01~12

%k 小时,24小时制(0~23

%l 小时,12小时制(1~12

%M 分钟(00~59

%p 显示出AM或PM

%r 显示时间,12小时制(hh:mm:ss %p)

%s 19701100:00:00到目前经历的秒数

%S 显示秒(00~59

%T 显示时间,24小时制(hh:mm:ss)

%X 显示时间的格式(%H:%M:%S)

%Z 显示时区,日期域(CST)

%a 星期的简称(Sun~Sat)

%A 星期的全称(Sunday~Saturday)

%h,%b 月的简称(Jan~Dec)

%B 月的全称(January~December)

%c 日期和时间(Tue Nov 20 14:12:58 2012

%d 一个月的第几天(01~31

%x,%D 日期(mm/dd/yy)

%j 一年的第几天(001~366

%m 月份(01~12

%w 一个星期的第几天(0代表星期天)

%W 一年的第几个星期(00~53,星期一为第一天)

%y 年的最后两个数字(1999则是99

实例
格式化输出

date +"%Y-%m-%d"
2009-12-07

输出昨天日期

date -d "1 day ago" +"%Y-%m-%d"
2012-11-19

2秒后输出

date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31

传说中的 1234567890 秒

date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30

普通转格式

date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00

apache格式转换

date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37

格式转换后时间游走

date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37

加减操作

date +%Y%m%d                   //显示前天年月日
date -d "+1 day" +%Y%m%d       //显示前一天的日期
date -d "-1 day" +%Y%m%d       //显示后一天的日期
date -d "-1 month" +%Y%m%d     //显示上一月的日期
date -d "+1 month" +%Y%m%d     //显示下一月的日期
date -d "-1 year" +%Y%m%d      //显示前一年的日期
date -d "+1 year" +%Y%m%d      //显示下一年的日期

设定时间

date -s                        //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523               //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01               //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23"  //这样可以设置全部时间
date -s "01:01:01 20120523"    //这样可以设置全部时间
date -s "2012-05-23 01:01:01"  //这样可以设置全部时间
date -s "20120523 01:01:01"    //这样可以设置全部时间

有时需要检查一组命令花费的时间,举例

#!/bin/bash

start=$(date +%s)
nmap man.linuxde.net &> /dev/null

end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.

搜索文件命令( 4 个)

Which(用于查找文件)

which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。

which(选项)(参数)

-n<文件名长度>:制定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名;

-p<文件名长度>:与-n参数相同,但此处的<文件名长度>包含了文件的路径;

-w:指定输出时栏位的宽度;

-V:显示版本信息。

查找文件、显示命令路径

[root@localhost ~]# which pwd
/bin/pwd

[root@localhost ~]#  which adduser
/usr/sbin/adduser

find

find命令用来在指定目录下查找文件。任何位于参数之前的字符串都将被视为欲查找的目录名。如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。并且将查找到的子目录和文件全部进行显示。

find(选项)(参数)

-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;

-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;

-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;

-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;

-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;

-daystart:从本日开始计算时间;

-depth:从指定目录下最深层的子目录开始查找;

-empty:寻找文件大小为0 Byte的文件,或目录下没有任何子目录或文件的空目录;

-exec<执行指令>:假设find指令的回传值为True,就执行该指令;

-false:将find指令的回传值皆设为False;

-fls<列表文件>:此参数的效果和指定“-ls”参数类似,但会把结果保存为指定的列表文件;

-follow:排除符号连接;

-fprint<列表文件>:此参数的效果和指定“-print”参数类似,但会把结果保存成指定的列表文件;

-fprint0<列表文件>:此参数的效果和指定“-print0”参数类似,但会把结果保存成指定的列表文件;

-fprintf<列表文件><输出格式>:此参数的效果和指定“-printf”参数类似,但会把结果保存成指定的列表文件;

-fstype<文件系统类型>:只寻找该文件系统类型下的文件或目录;

-gid<群组识别码>:查找符合指定之群组识别码的文件或目录;

-group<群组名称>:查找符合指定之群组名称的文件或目录;

-help或——help:在线帮助;

-ilname<范本样式>:此参数的效果和指定“-lname”参数类似,但忽略字符大小写的差别;

-iname<范本样式>:此参数的效果和指定“-name”参数类似,但忽略字符大小写的差别;

-inum<inode编号>:查找符合指定的inode编号的文件或目录;

-ipath<范本样式>:此参数的效果和指定“-path”参数类似,但忽略字符大小写的差别;

-iregex<范本样式>:此参数的效果和指定“-regexe”参数类似,但忽略字符大小写的差别;

-links<连接数目>:查找符合指定的硬连接数目的文件或目录;

-iname<范本样式>:指定字符串作为寻找符号连接的范本样式;

-ls:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出;

-maxdepth<目录层级>:设置最大目录层级;

-mindepth<目录层级>:设置最小目录层级;

-mmin<分钟>:查找在指定时间曾被更改过的文件或目录,单位以分钟计算;

-mount:此参数的效果和指定“-xdev”相同;

-mtime<24小时数>:查找在指定时间曾被更改过的文件或目录,单位以24小时计算;

-name<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-newer<参考文件或目录>:查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;

-nogroup:找出不属于本地主机群组识别码的文件或目录;

-noleaf:不去考虑目录至少需拥有两个硬连接存在;

-nouser:找出不属于本地主机用户识别码的文件或目录;

-ok<执行指令>:此参数的效果和指定“-exec”类似,但在执行指令之前会先询问用户,若回答“y”或“Y”,则放弃执行命令;

-path<范本样式>:指定字符串作为寻找目录的范本样式;

-perm<权限数值>:查找符合指定的权限数值的文件或目录;

-print:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为每列一个名称,每个名称前皆有“./”字符串;

-print0:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式为全部的名称皆在同一行;

-printf<输出格式>:假设find指令的回传值为Ture,就将文件或目录名称列出到标准输出。格式可以自行指定;

-prune:不寻找字符串作为寻找文件或目录的范本样式;

-regex<范本样式>:指定字符串作为寻找文件或目录的范本样式;

-size<文件大小>:查找符合指定的文件大小的文件;

-true:将find指令的回传值皆设为True;

-type<文件类型>:只寻找符合指定的文件类型的文件;

-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;

-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;

-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;

-version或——version:显示版本信息;

-xdev:将范围局限在先行的文件系统中;

-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。

whereis(只能用于程序名的搜索)

whereis命令用来定位指令的二进制程序、源代码文件和man手册页等相关文件的路径。

whereis命令只能用于程序名的搜索,而且只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。

和find相比,whereis查找的速度非常快,这是因为linux系统会将 系统内的所有文件都记录在一个数据库文件中,当使用whereis和下面即将介绍的locate时,会从数据库中查找数据,而不是像find命令那样,通 过遍历硬盘来查找,效率自然会很高。 但是该数据库文件并不是实时更新,默认情况下时一星期更新一次,因此,我们在用whereis和locate 查找文件时,有时会找到已经被删除的数据,或者刚刚建立文件,却无法查找到,原因就是因为数据库文件没有被更新。

whereis(选项)(参数)

-b:只查找二进制文件; 

-B<目录>:只在设置的目录下查找二进制文件; 

-f:不显示文件名前的路径名称; 

-m:只查找说明文件; 

-M<目录>:只在设置的目录下查找说明文件; 

-s:只查找原始代码文件; 

-S<目录>只在设置的目录下查找原始代码文件; 

-u:查找不包含指定类型的文件。

locate(用于查找符合条件的文档)

locate命令和slocate命令都用来查找文件或目录。

locate命令其实是find -name的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux系统自动创建这个数据库,并且每天自动更新一次,所以使用locate命令查不到最新变动过的文件。为了避免这种情况,可以在使用locate之前,先使用updatedb命令,手动更新数据库。

locate/slocate(选项)(参数)

-d<目录>或--database=<目录>:指定数据库所在的目录;

-u:更新slocate数据库;

--help:显示帮助;

--version:显示版本信息。

参数
查找字符串:要查找的文件名中含有的字符串。

实例
搜索etc目录下所有以sh开头的文件

locate /etc/sh

搜索用户主目录下,所有以m开头的文件

locate ~/m

搜索用户主目录下,所有以m开头的文件,并且忽略大小写

locate -i ~/m

用户管理命令( 9 个)

Useradd(用于建立用户帐号)

useradd命令用于Linux中创建的新的系统用户。useradd可用来建立用户帐号。帐号建好之后,再用passwd设定帐号的密码.而可用userdel删除帐号。使用useradd指令所建立的帐号,实际上是保存在/etc/passwd文本文件中。

useradd(选项)(参数)

-c<备注>:加上备注文字。备注文字会保存在passwd的备注栏位中;

-d<登入目录>:指定用户登入时的启始目录;

-D:变更预设值;

-e<有效期限>:指定帐号的有效期限;

-f<缓冲天数>:指定在密码过期后多少天即关闭该帐号;

-g<群组>:指定用户所属的群组;

-G<群组>:指定用户所属的附加群组;

-m:自动建立用户的登入目录;

-M:不要自动建立用户的登入目录;

-n:取消建立以用户名称为名的群组;

-r:建立系统帐号;

-s<shell>:指定用户登入后所使用的shell;

-u<uid>:指定用户id。

新建用户加入组

useradd –g sales jack –G company,employees    //-g:加入主要组、-G:加入次要组

建立一个新用户账户,并设置ID

useradd caojh -u 544

usermod(用于修改用户帐号)

usermod命令用于修改用户的基本信息。usermod命令不允许你改变正在线上的使用者帐号名称。当usermod命令用来改变user id,必须确认这名user没在电脑上执行任何程序。你需手动更改使用者的crontab档。也需手动更改使用者的at工作档。采用NIS server须在server上更动相关的NIS设定。

usermod(选项)(参数)

-c<备注>:修改用户帐号的备注文字;

-d<登入目录>:修改用户登入时的目录;

-e<有效期限>:修改帐号的有效期限;

-f<缓冲天数>:修改在密码过期后多少天即关闭该帐号;

-g<群组>:修改用户所属的群组;

-G<群组>;修改用户所属的附加群组;

-l<帐号名称>:修改用户帐号名称;

-L:锁定用户密码,使密码无效;

-s<shell>:修改用户登入后所使用的shell;

-u<uid>:修改用户ID;

-U:解除密码锁定。

将newuser2添加到组staff中

usermod -G staff newuser2

修改newuser的用户名为newuser1

usermod -l newuser1 newuser

锁定账号newuser1

usermod -L newuser1

解除对newuser1的锁定

usermod -U newuser1	

userdel(用于删除用户帐号)

userdel命令用于删除给定的用户,以及与用户相关的文件。若不加选项,则仅删除用户帐号,而不删除相关文件。

userdel(选项)(参数)

-f:强制删除用户,即使用户当前已登录;

-r:删除用户的同时,删除与用户相关的所有文件。

groupadd(创建一个新的工作组)

groupadd命令用于创建一个新的工作组,新工作组的信息将被添加到系统文件中。

groupadd(选项)(参数)

-g:指定新建工作组的id;

-r:创建系统工作组,系统工作组的组ID小于500

-K:覆盖配置文件“/ect/login.defs”;

-o:允许添加组ID号不唯一的工作组。

建立一个新组,并设置组ID加入系统

groupadd -g 344 linuxde

此时在/etc/passwd文件中产生一个组ID(GID)是344的项目。

passwd

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

passwd(选项)(参数)

-d:删除密码,仅有系统管理者才能使用;

-f:强制执行;

-k:设置只有在密码过期失效后,方能更新;

-l:锁住密码;

-s:列出密码的相关信息,仅有系统管理者才能使用;

-u:解开已上锁的帐号。

chage(用来修改帐号和密码的有效期限)

chage [选项] 用户名
-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M:密码保持有效的最大天数。
-w:用户密码到期前,提前收到警告信息的天数。
-E:帐号到期的日期。过了这天,此帐号将不可用。
-d:上一次更改的日期。
-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

id(用于显示用户的ID,以及所属群组的ID)

id命令可以显示真实有效的用户ID(UID)和组ID(GID)。UID 是对一个用户的单一身份标识。组ID(GID)则对应多个UID。id命令已经默认预装在大多数Linux系统中。要使用它,只需要在你的控制台输入id。不带选项输入id会显示如下。结果会使用活跃用户。

当我们想知道某个用户的UID和GID时id命令是非常有用的。一些程序可能需要UID/GID来运行。id使我们更加容易地找出用户的UID以GID而不必在/etc/group文件中搜寻。如往常一样,你可以在控制台输入man id进入id的手册页来获取更多的详情。

id [-gGnru][--help][--version][用户名称]

-g或--group   显示用户所属群组的ID。

-G或--groups   显示用户所属附加群组的ID。

-n或--name    显示用户,所属群组或附加群组的名称。

-r或--real    显示实际ID。

-u或--user    显示用户ID。

-help         显示帮助。

-version      显示版本信息。

su(变更为其他使用者的身份)

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

su(选项)(参数)

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;

-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;

-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;

-m,-p或--preserve-environment:变更身份时,不要变更环境变量;

-s<shell>或--shell=<shell>:指定要执行的shell;

--help:显示帮助;

--version;显示版本信息。

sudo(以系统管理者的身份执行指令)

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

sudo(选项)(参数)

-b:在后台执行指令;

-h:显示帮助;

-H:将HOME环境变量设为新身份的HOME环境变量;

-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。

-l:列出目前用户可执行与无法执行的指令;

-p:改变询问密码的提示符号;

-s<shell>:执行指定的shell;

-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;

-v:延长密码有效期限5分钟;

-V :显示版本信息。

基础网络操作命令( 9 个)

Telnet(用于远端登入)

telnet命令用于登录远程主机,对远程主机进行管理。telnet因为采用明文传送报文,安全性不好,很多Linux服务器都不开放telnet服务,而改用更安全的ssh方式了。但仍然有很多别的系统可能采用了telnet方式来提供远程登录,因此弄清楚telnet客户端的使用方式仍是很有必要的。

telnet(选项)(参数)

-8:允许使用8位字符资料,包括输入与输出;

-a:尝试自动登入远端系统;

-b<主机别名>:使用别名指定远端主机名称;

-c:不读取用户专属目录里的.telnetrc文件;

-d:启动排错模式;

-e<脱离字符>:设置脱离字符;

-E:滤除脱离字符;

-f:此参数的效果和指定"-F"参数相同;

-F:使用Kerberos V5认证时,加上此参数可把本地主机的认证数据上传到远端主机;

-k<域名>:使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名;

-K:不自动登入远端主机;

-l<用户名称>:指定要登入远端主机的用户名称;

-L:允许输出8位字符资料;

-n<记录文件>:指定文件记录相关信息;

-r:使用类似rlogin指令的用户界面;

-S<服务类型>:设置telnet连线所需的ip TOS信息;

-x:假设主机有支持数据加密的功能,就使用它;

-X<认证形态>:关闭指定的认证形态。

ssh(客户端连接工具)

ssh命令是openssh套件中的客户端连接工具,可以给予ssh加密协议实现安全的远程登录服务器。

ssh(选项)(参数)

-1:强制使用ssh协议版本1

-2:强制使用ssh协议版本2

-4:强制使用IPv4地址;

-6:强制使用IPv6地址;

-A:开启认证代理连接转发功能;

-a:关闭认证代理连接转发功能;

-b:使用本机指定地址作为对应连接的源ip地址;

-C:请求压缩所有数据;

-F:指定ssh指令的配置文件;

-f:后台执行ssh指令;

-g:允许远程主机连接主机的转发端口;

-i:指定身份文件;

-l:指定连接远程服务器登录用户名;

-N:不执行远程指令;

-o:指定配置选项;

-p:指定远程服务器上的端口;

-q:静默模式;

-X:开启X11转发功能;

-x:关闭X11转发功能;

-y:开启信任X11转发功能。

scp(远程拷贝文件的命令)

scp命令用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的。可能会稍微影响一下速度。当你服务器硬盘变为只读read only system时,用scp可以帮你把文件移出来。另外,scp还非常不占资源,不会提高多少系统负荷,在这一点上,rsync就远远不及它了。虽然 rsync比scp会快一点,但当小文件众多的情况下,rsync会导致硬盘I/O非常高,而scp基本不影响系统正常使用。

scp(选项)(参数)

-1:使用ssh协议版本1

-2:使用ssh协议版本2

-4:使用ipv4;

-6:使用ipv6;

-B:以批处理模式运行;

-C:使用压缩;

-F:指定ssh配置文件;

-l:指定宽带限制;

-o:指定使用的ssh选项;

-P:指定远程主机的端口号;

-p:保留文件的最后修改时间,最后访问时间和权限模式;

-q:不显示复制进度;

-r:以递归方式复制。

wget (从指定的URL下载文件)

wget命令用来从指定的URL下载文件。wget非常稳定,它在带宽很窄的情况下和不稳定网络中有很强的适应性,如果是由于网络的原因下载失败,wget会不断的尝试,直到整个文件下载完毕。如果是服务器打断下载过程,它会再次联到服务器上从停止的地方继续下载。这对从那些限定了链接时间的服务器上下载大文件非常有用。

wget(选项)(参数)

-a<日志文件>:在指定的日志文件中记录资料的执行过程;

-A<后缀名>:指定要下载文件的后缀名,多个后缀名之间使用逗号进行分隔;

-b:进行后台的方式运行wget;

-B<连接地址>:设置参考的连接地址的基地地址;

-c:继续执行上次终端的任务;

-C<标志>:设置服务器数据块功能标志on为激活,off为关闭,默认值为on;

-d:调试模式运行指令;

-D<域名列表>:设置顺着的域名列表,域名之间用“,”分隔;

-e<指令>:作为文件“.wgetrc”中的一部分执行指定的指令;

-h:显示指令帮助信息;

-i<文件>:从指定文件获取要下载的URL地址;

-l<目录列表>:设置顺着的目录列表,多个目录用“,”分隔;

-L:仅顺着关联的连接;

-r:递归下载方式;

-nc:文件存在时,下载文件不覆盖原有文件;

-nv:下载时只显示更新和出错信息,不显示指令的详细执行过程;

-q:不显示指令执行过程;

-nh:不查询主机名称;

-v:显示详细执行过程;

-V:显示版本信息;

--passive-ftp:使用被动模式PASV连接FTP服务器;

--follow-ftp:从HTML文件中下载FTP连接文件。

ping(测试主机之间网络的连通性)

ping命令用来测试主机之间网络的连通性。执行ping指令会使用ICMP传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。

ping(选项)(参数)

-d:使用Socket的SO_DEBUG功能;

-c<完成次数>:设置完成要求回应的次数;

-f:极限检测;

-i<间隔秒数>:指定收发信息的间隔时间;

-I<网络界面>:使用指定的网络界面送出数据包;

-l<前置载入>:设置在送出要求信息之前,先行发出的数据包;
-n:只输出数值;

-p<范本样式>:设置填满数据包的范本样式;

-q:不显示指令执行过程,开头和结尾的相关信息除外;

-r:忽略普通的Routing Table,直接将数据包送到远端主机上;

-R:记录路由过程;

-s<数据包大小>:设置数据包的大小;

-t<存活数值>:设置存活数值TTL的大小;

-v:详细显示指令的执行过程。

ifconfig(配置和显示Linux内核中网络接口的网络参数)

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

ifconfig(参数)

add<地址>:设置网络设备IPv6的ip地址;

del<地址>:删除网络设备IPv6的IP地址;

down:关闭指定的网络设备;

<hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件地址;

io_addr<I/O地址>:设置网络设备的I/O地址;

irq<IRQ地址>:设置网络设备的IRQ;

media<网络媒介类型>:设置网络设备的媒介类型;

mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;

metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;

mtu<字节>:设置网络设备的MTU;

netmask<子网掩码>:设置网络设备的子网掩码;

tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;

up:启动指定的网络设备;

-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;

-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;

-promisc:关闭或启动指定网络设备的promiscuous模式;

IP地址:指定网络设备的IP地址;

网络设备:指定网络设备的名称。

ifup(用于激活指定的网络接口)

ifup(参数)

ifup eth0   #激活eth0

ifdown(禁用指定的网络接口)

ifup(参数)

ifdown eth0   #禁用eth0

netstat(用于显示网络状态)

netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。

netstat(选项)

-a或--all:显示所有连线中的Socket;

-A<网络类型>或--<网络类型>:列出该网络类型连线中的相关地址;

-c或--continuous:持续列出网络状态;

-C或--cache:显示路由器配置的快取信息;

-e或--extend:显示网络其他相关信息;

-F或--fib:显示FIB;

-g或--groups:显示多重广播功能群组组员名单;

-h或--help:在线帮助;

-i或--interfaces:显示网络界面信息表单;

-l或--listening:显示监控中的服务器的Socket;

-M或--masquerade:显示伪装的网络连线;

-n或--numeric:直接使用ip地址,而不通过域名服务器;

-N或--netlink或--symbolic:显示网络硬件外围设备的符号连接名称;

-o或--timers:显示计时器;

-p或--programs:显示正在使用Socket的程序识别码和程序名称;

-r或--route:显示Routing Table;

-s或--statistice:显示网络工作信息统计表;

-t或--tcp:显示TCP传输协议的连线状况;

-u或--udp:显示UDP传输协议的连线状况;

-v或--verbose:显示指令执行过程;

-V或--version:显示版本信息;

-w或--raw:显示RAW传输协议的连线状况;

-x或--unix:此参数的效果和指定"-A unix"参数相同;

--ip或--inet:此参数的效果和指定"-A inet"参数相同。

有关磁盘文件系统的命令( 8 个)

mount(挂载)

mount命令用于加载文件系统到指定的加载点。此命令的最常用于挂载cdrom,使我们可以访问cdrom中的数据,因为你将光盘插入cdrom中,Linux并不会自动挂载,必须使用Linux mount命令来手动完成挂载。

mount(选项)(参数)

-V:显示程序版本;

-l:显示已加载的文件系统列表;

-h:显示帮助信息并退出;

-v:冗长模式,输出指令执行的详细信息;

-n:加载没有写入文件“/etc/mtab”中的文件系统;

-r:将文件系统加载为只读模式;

-a:加载文件“/etc/fstab”中描述的所有文件系统。

umount(卸载)

umount命令用于卸载已经加载的文件系统。利用设备名或挂载点都能umount文件系统,不过最好还是通过挂载点卸载,以免使用绑定挂载(一个设备,多个挂载点)时产生混乱。

umount(选项)(参数)

-a:卸除/etc/mtab中记录的所有文件系统;

-h:显示帮助;

-n:卸除时不要将信息存入/etc/mtab文件中;

-r:若无法成功卸除,则尝试以只读的方式重新挂入文件系统;

-t<文件系统类型>:仅卸除选项中所指定的文件系统;

-v:执行时显示详细的信息;

-V:显示版本信息。

df(显示磁盘分区上的可使用的磁盘空间)

df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

df(选项)(参数)

-a或--all:包含全部的文件系统;

--block-size=<区块大小>:以指定的区块大小来显示区块数目;

-h或--human-readable:以可读性较高的方式来显示信息;

-H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;

-i或--inodes:显示inode的信息;

-k或--kilobytes:指定区块大小为1024字节;

-l或--local:仅显示本地端的文件系统;

-m或--megabytes:指定区块大小为1048576字节;

--no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;

-P或--portability:使用POSIX的输出格式;

--sync:在取得磁盘使用信息前,先执行sync指令;

-t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;

-T或--print-type:显示文件系统的类型;

-x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;

--help:显示帮助;

--version:显示版本信息。

du(查看使用空间)

du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。

du [选项][文件]

-a或-all 显示目录中个别文件的大小。

-b或-bytes 显示目录或文件大小时,以byte为单位。

-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

-k或--kilobytes 以KB(1024bytes)为单位输出。

-m或--megabytes 以MB为单位输出。

-s或--summarize 仅显示总计,只列出最后加总的值。

-h或--human-readable 以K,M,G为单位,提高信息的可读性。

-x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。

-L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。

-S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。

-X<文件>或--exclude-from=<文件> <文件>指定目录或文件。

--exclude=<目录或文件> 略过指定的目录或文件。

-D或--dereference-args 显示指定符号链接的源文件大小。

-H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。

-l或--count-links 重复计算硬件链接的文件。

fsck(用于检查与修复 Linux 档案系统)

fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。

fsck(选项)(参数)

-a:自动修复文件系统,不询问任何问题;

-A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;

-N:不执行指令,仅列出实际执行会进行的动作;

-P:当搭配"-A"参数使用时,则会同时检查所有的文件系统;

-r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式;

-R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查;

-s:依序执行检查作业,而非同时执行;

-t<文件系统类型>:指定要检查的文件系统类型;

-T:执行fsck指令时,不显示标题信息;

-V:显示指令执行过程。

系统管理相关命令( 7 个)

uptime(打印系统总共运行了多长时间和系统的平均负载)

uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

uptime(选项)

-V:显示指令的版本信息。

top(实时动态地查看系统的整体运行情况)

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

top(选项)

-b:以批处理模式操作;

-c:显示完整的治命令;

-d:屏幕刷新间隔时间;

-I:忽略失效过程;

-s:保密模式;

-S:累积模式;

-i<时间>:设置间隔时间;

-u<用户名>:指定用户名;

-p<进程号>:指定进程;

-n<次数>:循环显示的次数。

top交互命令

在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。

h:显示帮助画面,给出一些简短的命令总结说明;

k:终止一个进程;

i:忽略闲置和僵死进程,这是一个开关式命令;

q:退出程序;

r:重新安排一个进程的优先级别;

S:切换到累计模式;

s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

f或者F:从当前显示中添加或者删除项目;

o或者O:改变显示项目的顺序;

l:切换显示平均负载和启动时间信息;

m:切换显示内存信息;

t:切换显示进程和CPU状态信息;

c:切换显示命令名称和完整命令行;

M:根据驻留内存大小进行排序;

P:根据CPU使用百分比大小进行排序;

T:根据时间/累计时间进行排序;

w:将当前设置写入~/.toprc文件中。

free(内存)

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

free(选项)

-b:以Byte为单位显示内存使用情况;

-k:以KB为单位显示内存使用情况;

-m:以MB为单位显示内存使用情况;

-o:不显示缓冲区调节列;

-s<间隔秒数>:持续观察内存使用状况;

-t:显示内存总和列;

-V:显示版本信息。

第一部分Mem行解释

total:内存总数;
used:已经使用的内存数;
free:空闲的内存数;
shared:当前已经废弃不用;
buffers Buffer:缓存内存数;
cached Page:缓存内存数。
关系:total = used + free

第二部分(-/+ buffers/cache)解释:

(-buffers/cache) used内存数:第一部分Mem行中的 used  buffers  cached
(+buffers/cache) free内存数: 第一部分Mem行中的 free + buffers + cached
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三部分是指交换分区

vmstat(用来获得有关进程、虚存、页面交换空间及 CPU活动的信息)

vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

vmstat(选项)(参数)

-a:显示活动内页;

-f:显示启动后创建的进程总数;

-m:显示slab信息;

-n:头信息仅显示一次;

-s:以表格方式显示事件计数器和内存状态;

-d:报告磁盘状态;

-p:显示指定的硬盘分区状态;

-S:输出信息的单位。

Procs(进程)

r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1
b: 等待IO的进程数量。

Memory(内存)

swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id: 空闲时间百分比
  
iostat(用于输出CPU和磁盘I/O相关的统计信息)	 
sar(用于监控Linux系统各个性能的优秀工具) 	chkconfig(用于检查,设置系统的各种服务)

系统安全相关命令( 10 个)

Chmod(是控制用户对文件的权限的命令)

chmod命令用来变更文件或目录的权限。在UNIX系统家族里,文件或目录权限的控制分别以读取、写入、执行3种一般权限来区分,另有3种特殊权限可供运用。用户可以使用chmod指令去变更文件与目录的权限,设置方式采用文字或数字代号皆可。符号连接的权限无法变更,如果用户对符号连接修改权限,其改变会作用在被连接的原始文件。

u User,即文件或目录的拥有者;
g Group,即文件或目录的所属群组;
o Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a All,即全部的用户,包含拥有者,所属群组以及其他用户;
r 读取权限,数字代号为“4;
w 写入权限,数字代号为“2”;
x 执行或切换权限,数字代号为“1”;
- 不具任何权限,数字代号为“0”;
s 特殊功能说明:变更文件或目录的权限。
chmod(选项)(参数)

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;

-f或--quiet或——silent:不显示错误信息;

-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;

-v或——verbose:显示指令执行过程;

--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;

<权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置;

<权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置;

<权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;

chown(设置文件所有者和文件关联组的命令)

chown命令改变某个文件或目录的所有者和所属的组,该命令可以向某个用户授权,使该用户变成指定文件的所有者或者改变文件所属的组。用户可以是用户或者是用户D,用户组可以是组名或组id。文件名可以使由空格分开的文件列表,在文件名中可以包含通配符。

只有文件主和超级用户才可以便用该命令。

chown(选项)(参数)

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;

-f或--quite或——silent:不显示错误信息;

-h或--no-dereference:只对符号连接的文件作修改,而不更改其他任何相关文件;

-R或——recursive:递归处理,将指定目录下的所有文件及子目录一并处理;

-v或——version:显示指令执行过程;

--dereference:效果和“-h”参数相同;

--help:在线帮助;

--reference=<参考文件或目录>:把指定文件或目录的拥有者与所属群组全部设成和参考文件或目录的拥有者与所属群组相同;

--version:显示版本信息。

chgrp(用于变更文件或目录的所属群组)

chgrp命令用来改变文件或目录所属的用户组。该命令用来改变指定文件所属的用户组。其中,组名可以是用户组的id,也可以是用户组的组名。文件名可以 是由空格分开的要改变属组的文件列表,也可以是由通配符描述的文件集合。如果用户不是该文件的文件主或超级用户(root),则不能改变该文件的组。

在UNIX系统家族里,文件或目录权限的掌控以拥有者及所属群组来管理。您可以使用chgrp指令去变更文件与目录的所属群组,设置方式采用群组名称或群组识别码皆可。

chgrp(选项)(参数)

-c或——changes:效果类似“-v”参数,但仅回报更改的部分;

-f或--quiet或——silent:不显示错误信息;

-h或--no-dereference:只对符号连接的文件作修改,而不是该其他任何相关文件;

-R或——recursive:递归处理,将指令目录下的所有文件及子目录一并处理;

-v或——verbose:显示指令执行过程;

--reference=<参考文件或目录>:把指定文件或目录的所属群组全部设成和参考文件或目录的所属群组相同;

chage(用来修改帐号和密码的有效期限)

chage [选项] 用户名

-m:密码可更改的最小天数。为零时代表任何时候都可以更改密码。

-M:密码保持有效的最大天数。

-w:用户密码到期前,提前收到警告信息的天数。

-E:帐号到期的日期。过了这天,此帐号将不可用。

-d:上一次更改的日期。

-i:停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。

-l:例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。

passwd(设置用户的认证信息)

passwd命令用于设置用户的认证信息,包括用户密码、密码过期时间等。系统管理者则能用它管理系统用户的密码。只有管理者可以指定用户名称,一般用户只能变更自己的密码。

passwd(选项)(参数)

-d:删除密码,仅有系统管理者才能使用;

-f:强制执行;

-k:设置只有在密码过期失效后,方能更新;

-l:锁住密码;

-s:列出密码的相关信息,仅有系统管理者才能使用;

-u:解开已上锁的帐号。

su(切换当前用户身份到其他用户身份)

su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号与密码。

su(选项)(参数)

-c<指令>或--command=<指令>:执行完指定的指令后,即恢复原来的身份;

-f或——fast:适用于csh与tsch,使shell不用去读取启动文件;

-l或——login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;

-m,-p或--preserve-environment:变更身份时,不要变更环境变量;

-s<shell>或--shell=<shell>:指定要执行的shell;

--help:显示帮助;

--version;显示版本信息。

sudo(以其他身份来执行命令)

sudo命令用来以其他身份来执行命令,预设的身份为root。在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。

sudo(选项)(参数)

-b:在后台执行指令;

-h:显示帮助;

-H:将HOME环境变量设为新身份的HOME环境变量;

-k:结束密码的有效期限,也就是下次再执行sudo时便需要输入密码;。

-l:列出目前用户可执行与无法执行的指令;

-p:改变询问密码的提示符号;

-s<shell>:执行指定的shell;

-u<用户>:以指定的用户作为新的身份。若不加上此参数,则预设以root作为新的身份;

-v:延长密码有效期限5分钟;

-V :显示版本信息。

umask(指定在建立文件时预设的权限掩码)

umask命令用来设置限制新建文件权限的掩码。当新文件被创建时,其最初的权限由文件创建掩码决定。用户每次注册进入系统时,umask命令都被执行, 并自动设置掩码mode来限制新文件的权限。用户可以通过再次执行umask命令来改变默认值,新的权限将会把旧的覆盖掉。

umask(选项)(参数)

-p:输出的权限掩码可直接作为指令来执行;

-S:以符号方式输出权限掩码。

chattr(用于改变文件属性)

chattr命令用来改变文件属性。这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:

a:让文件或目录仅供附加用途;

b:不更新文件或目录的最后存取时间;

c:将文件或目录压缩后存放;

d:将文件或目录排除在倾倒操作之外;

i:不得任意更动文件或目录;

s:保密性删除文件或目录;

S:即时更新文件或目录;

u:预防意外删除。
chattr(选项)

-R:递归处理,将指令目录下的所有文件及子目录一并处理;

-v<版本编号>:设置文件或目录版本;

-V:显示指令执行过程;

+<属性>:开启文件或目录的该项属性;

-<属性>:关闭文件或目录的该项属性;

=<属性>:指定文件或目录的该项属性。

Lsattr(用于显示文件属性)

lsattr命令用于查看文件的第二扩展文件系统属性。

lsattr(选项)(参数)

-E:可显示设备属性的当前值,但这个当前值是从用户设备数据库中获得的,而不是从设备直接获得的。

-D:显示属性的名称,属性的默认值,描述和用户是否可以修改属性值的标志。

-R:递归的操作方式;

-V:显示指令的版本信息;

-a:列出目录中的所有文件,包括隐藏文件。

lsattr经常使用的几个选项-D,-E,-R这三个选项不可以一起使用,它们是互斥的,经常使用的还有-l,-H,使用lsattr时,必须指出具体的设备名,用-l选项指出要显示设备的逻辑名称,否则要用-c,-s,-t等选项唯一的确定某个已存在的设备。

参数

文件:指定显示文件系统属性的文件名。

实例

lsattr -E -l rmt0 -H
lsattr -EO -l rmt0

查看系统用户登陆信息的命令( 7 个)

whoami(用户名)

whoami命令用于打印当前有效的用户名称,相当于执行id -un命令。

whoami(选项)

--help:在线帮助;

--version:显示版本信息。

who(显示目前登录系统的用户信息)

who命令是显示目前登录系统的用户信息。执行who命令可得知目前有那些用户登入系统,单独执行who命令会列出登入帐号,使用的终端机,登入时间以及从何处登入或正在使用哪个X显示器。

who(选项)(参数)

-H或--heading:显示各栏位的标题信息列;

-i或-u或--idle:显示闲置时间,若该用户在前一分钟之内有进行任何动作,将标示成"."号,如果该用户已超过24小时没有任何动作,则标示出"old"字符串;

-m:此参数的效果和指定"am i"字符串相同;

-q或--count:只显示登入系统的帐号名称和总人数;

-s:此参数将忽略不予处理,仅负责解决who指令其他版本的兼容性问题;

-w或-T或--mesg或--message或--writable:显示用户的信息状态栏;

--help:在线帮助;

--version:显示版本信息。

w(显示已经登陆系统的用户列表)

w命令用于显示已经登陆系统的用户列表,并显示用户正在执行的指令。执行这个命令可得知目前登入系统的用户有那些人,以及他们正在执行的程序。单独执行w命令会显示所有的用户,您也可指定用户名称,仅显示某位用户的相关信息。

w(选项)(参数)

-h:不打印头信息;

-u:当显示当前进程和cpu时间时忽略用户名;

-s:使用短输出格式;

-f:显示用户从哪登录;

-V:显示版本信息。

last(显示用户最近登录信息)

last命令用于显示用户最近登录信息。单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

语法

last(选项)(参数)

选项

-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;

-d:将IP地址转换成主机名称;

-f <记录文件>:指定记录文件。

-n <显示列数>或-<显示列数>:设置列出名单的显示列数;

-R:不显示登入系统的主机名称或IP地址;

-x:显示系统关机,重新开机,以及执行等级的改变等信息。

lastlog(显示系统中所有用户最近一次登录信息)

lastlog命令用于显示系统中所有用户最近一次登录信息。

lastlog文件在每次有用户登录时被查询。可以使用lastlog命令检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示Never logged。注意需要以root身份运行该命令。

语法

lastlog(选项)

选项

-b<天数>:显示指定天数前的登录信息;

-h:显示召集令的帮助信息;

-t<天数>:显示指定天数以来的登录信息;

-u<用户名>:显示指定用户的最近登录信息。

users(显示当前登录系统的所有用户的用户列表)

users命令用于显示当前登录系统的所有用户的用户列表。每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。

语法

users(选项)

选项

--help:显示命令的帮助信息;

--version:显示命令的版本信息。

finger(用于查找并显示用户信息)

finger命令用于查找并显示用户信息。包括本地与远端主机的用户皆可,帐号名称没有大小写的差别。单独执行finger指令,它会显示本地主机现在所有的用户的登陆信息,包括帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话。

语法

finger(选项)(参数)

选项

-l:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,还有计划文件和方案文件内容;

-m:排除查找用户的真实姓名;

-s:列出该用户的帐号名称,真实姓名,登入终端机,闲置时间,登入时间以及地址和电话;

-p:列出该用户的帐号名称,真实姓名,用户专属目录,登入所用的Shell,登入时间,转信地址,电子邮件状态,但不显示该用户的计划文件和方案文件内容。

不指定finger的选项如果提供操作者的话,缺省设为-l输出风格,否则为-s风格,注意在两种格式中,如果信息不足,都有一些域可能丢失,如果没有指定参数finger会为当前登录的每个用户打印一个条目。

查看硬件信息相关命令( 4 个)

ifconfig(配置和显示Linux内核中网络接口的网络参数)

ifconfig命令被用于配置和显示Linux内核中网络接口的网络参数。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。

语法

ifconfig(参数)

参数

add<地址>:设置网络设备IPv6的ip地址;

del<地址>:删除网络设备IPv6的IP地址;

down:关闭指定的网络设备;

<hw<网络设备类型><硬件地址>:设置网络设备的类型与硬件地址;

io_addr<I/O地址>:设置网络设备的I/O地址;

irq<IRQ地址>:设置网络设备的IRQ;

media<网络媒介类型>:设置网络设备的媒介类型;

mem_start<内存地址>:设置网络设备在主内存所占用的起始地址;

metric<数目>:指定在计算数据包的转送次数时,所要加上的数目;

mtu<字节>:设置网络设备的MTU;

netmask<子网掩码>:设置网络设备的子网掩码;

tunnel<地址>:建立IPv4与IPv6之间的隧道通信地址;

up:启动指定的网络设备;

-broadcast<地址>:将要送往指定地址的数据包当成广播数据包来处理;

-pointopoint<地址>:与指定地址的网络设备建立直接连线,此模式具有保密功能;

-promisc:关闭或启动指定网络设备的promiscuous模式;

IP地址:指定网络设备的IP地址;

网络设备:指定网络设备的名称。

free(显示内存信息)

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

语法

free(选项)

选项

-b:以Byte为单位显示内存使用情况;

-k:以KB为单位显示内存使用情况;

-m:以MB为单位显示内存使用情况;

-o:不显示缓冲区调节列;

-s<间隔秒数>:持续观察内存使用状况;

-t:显示内存总和列;

-V:显示版本信息。

fdisk(是一个创建和维护分区表的程序)

fdisk命令用于观察硬盘实体使用情况,也可对硬盘分区。它采用传统的问答式界面,而非类似DOS fdisk的cfdisk互动式操作界面,因此在使用上较为不便,但功能却丝毫不打折扣。

语法

fdisk(选项)(参数)

选项

-b<分区大小>:指定每个分区的大小;

-l:列出指定的外围设备的分区表状况;

-s<分区编号>:将指定的分区大小输出到标准输出上,单位为区块;

-u:搭配"-l"参数列表,会用分区数目取代柱面数目,来表示每个分区的起始地址;

-v:显示版本信息。	

Dmesg(用于显示开机信息)

dmesg命令被用于检查和控制内核的环形缓冲区。kernel会将开机信息存储在ring buffer中。您若是开机时来不及查看信息,可利用dmesg来查看。开机信息保存在/var/log/dmesg文件里。

语法

dmesg(选项)

选项

-c:显示信息后,清除ring buffer中的内容;

-s<缓冲区大小>:预设置为8196,刚好等于ring buffer的大小;

-n:设置记录信息的层级。

其它(19 个)

echo(shell中打印shell变量的值)

echo命令用于在shell中打印shell变量的值,或者直接输出指定的字符串。linux的echo命令,在shell编程中极为常用, 在终端下打印变量value的时候也是常常用到的,因此有必要了解下echo的用法echo命令的功能是在显示器上显示一段文字,一般起到一个提示的作用。

语法

echo(选项)(参数)

选项

-e:激活转义字符。

使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:

\a 发出警告声;

\b 删除前一个字符;

\c 最后不加上换行符号;

\f 换行但光标仍旧停留在原来的位置;

\n 换行且光标移至行首;

\r 光标移至行首,但不换行;

\t 插入tab;

\v \f相同;

\\ 插入\字符;

\nnn 插入nnn(八进制)所代表的ASCII字符;

参数
变量:指定要打印的变量。

实例
用echo命令打印带有色彩的文字:

文字色

echo -e "\e[1;31mThis is red text\e[0m"
This is red text
\e[1;31m 将颜色设置为红色
\e[0m 将颜色重新置回

颜色码:重置=0,黑色=30,红色=31,绿色=32,黄色=33,蓝色=34,洋红=35,青色=36,白色=37

背景色

echo -e "\e[1;42mGreed Background\e[0m"
Greed Background

颜色码:重置=0,黑色=40,红色=41,绿色=42,黄色=43,蓝色=44,洋红=45,青色=46,白色=47

文字闪动

echo -e "\033[37;31;5mMySQL Server Stop...\033[39;49;0m"

红色数字处还有其他数字参数:0 关闭所有属性、1 设置高亮度(加粗)、4 下划线、5 闪烁、7 反显、8 消隐

printf(格式化并输出结果到标准输出)

printf命令格式化并输出结果到标准输出。

语法

printf(选项)(参数)

--help:在线帮助;

--version:显示版本信息。

参数
输出格式:指定数据输出时的格式;
输出字符串:指定要输出的数据。
格式替代符

%b 相对应的参数被视为含有要被处理的转义序列之字符串。

%c ASCII字符。显示相对应参数的第一个字符

%d, %i 十进制整数

%e, %E, %f 浮点格式

%g %e或%f转换,看哪一个较短,则删除结尾的零

%G %E或%f转换,看哪一个较短,则删除结尾的零

%o 不带正负号的八进制值

%s 字符串

%u 不带正负号的十进制值

%x 不带正负号的十六进制值,使用a至f表示1015

%X 不带正负号的十六进制值,使用A至F表示1015

%% 字面意义的%

转义序列

\a 警告字符,通常为ASCII的BEL字符

\b 后退

\c 抑制(不显示)输出结果中任何结尾的换行字符(只在%b格式指示符控制下的参数字符串中有效),而且,任何留在参数里的字符、任何接下来的参数以及任何留在格式字符串中的字符,都被忽略

\f 换页(formfeed)

\n 换行

\r 回车(Carriage return)

\t 水平制表符

\v 垂直制表符

\\ 一个字面上的反斜杠字符

\ddd 表示13位数八进制值的字符,仅在格式字符串中有效

\0ddd 表示13位的八进制值字符

实例
printf “hello world”

#!/bin/bash

printf "%-5s %-10s %-4s\n" NO Name Mark
printf "%-5s %-10s %-4.2f\n" 01 Tom 90.3456
printf "%-5s %-10s %-4.2f\n" 02 Jack 89.2345
printf "%-5s %-10s %-4.2f\n" 03 Jeff 98.4323

%-5s 格式为左对齐且宽度为5的字符串代替(-表示左对齐),不使用则是又对齐。
%-4.2f 格式为左对齐宽度为4,保留两位小数。

rpm(RPM软件包的管理工具)

rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM套件管理方式的出现,让Linux易于安装,升级,间接提升了Linux的适用度。

语法

rpm(选项)(参数)

选项

-a:查询所有套件;

-b<完成阶段><套件档>+或-t <完成阶段><套件档>+:设置包装套件的完成阶段,并指定套件档的文件名称;

-c:只列出组态配置文件,本参数需配合"-l"参数使用;

-d:只列出文本文件,本参数需配合"-l"参数使用;

-e<套件档>或--erase<套件档>:删除指定的套件;

-f<文件>+:查询拥有指定文件的套件;

-h或--hash:套件安装时列出标记;

-i:显示套件的相关信息;

-i<套件档>或--install<套件档>:安装指定的套件档;

-l:显示套件的文件列表;

-p<套件档>+:查询指定的RPM套件档;

-q:使用询问模式,当遇到任何问题时,rpm指令会先询问用户;

-R:显示套件的关联性信息;

-s:显示文件状态,本参数需配合"-l"参数使用;

-U<套件档>或--upgrade<套件档>:升级指定的套件档;

-v:显示指令执行过程;

-vv:详细显示指令执行过程,便于排错。
httpd-2.2.15-29.el6.centos.x86_64.rpm
名称  版本   发布	系统	架构  后缀
rpm -i 		安装软件
rpm -e 		卸载软件
rpm -u 		升级软件
rpm -qi 	查询软件
rpm -qa		查询已安装的所有rpm软件
rpm -qf		查询指定文件属于哪个rpm包[目录]
rpm -ql		列出安装rpm软件包自动生成的所有文件信息

yum

yum命令是在Fedora和RedHat以及SUSE中基于rpm的软件包管理器,它可以使系统管理人员交互和自动化地更细与管理RPM软件包,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

语法

yum(选项)(参数)

选项

-h:显示帮助信息;

-y:对所有的提问都回答“yes”;

-c:指定配置文件;

-q:安静模式;

-v:详细模式;

-d:设置调试等级(0-10);

-e:设置错误等级(0-10);

-R:设置yum处理一个命令的最大等待时间;

-C:完全从缓存中运行,而不去下载或者更新任何头文件。
参数

install:安装rpm软件包;

update:更新rpm软件包;

check-update:检查是否有可用的更新rpm软件包;

remove:删除指定的rpm软件包;

list:显示软件包的信息;

search:检查软件包的信息;

info:显示指定的rpm软件包的描述信息和概要信息;

clean:清理yum过期的缓存;

shell:进入yum的shell提示符;

resolvedep:显示rpm软件包的依赖关系;

localinstall:安装本地的rpm软件包;

localupdate:显示本地rpm软件包进行更新;

deplist:显示rpm软件包的所有依赖关系。

实例
部分常用的命令包括

自动搜索最快镜像插件:yum install yum-fastestmirror
安装yum图形窗口插件:yum install yumex
查看可能批量安装的列表:yum grouplist

安装

yum install              #全部安装
yum install package1     #安装指定的安装包package1
yum groupinsall group1   #安装程序组group1
更新和升级

yum update               #全部更新
yum update package1      #更新指定程序包package1
yum check-update         #检查可更新的程序
yum upgrade package1     #升级指定程序包package1
yum groupupdate group1   #升级程序组group1

查找和显示

yum info package1      #显示安装包信息package1
yum list               #显示所有已经安装和可以安装的程序包
yum list package1      #显示指定程序包安装情况package1
yum groupinfo group1   #显示程序组group1信息yum search string 根据关键字string查找安装包

删除程序

yum remove &#124; erase package1   #删除程序包package1
yum groupremove group1             #删除程序组group1
yum deplist package1               #查看程序package1依赖情况

清除缓存

yum clean packages       #清除缓存目录下的软件包
yum clean headers        #清除缓存目录下的 headers
yum clean oldheaders     #清除缓存目录下旧的 headers

watch(监测命令运行)

watch命令以周期性的方式执行给定的指令,指令输出以全屏方式显示。watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。

语法

watch(选项)(参数)

选项

-n:指定指令执行的间隔时间(秒);

-d:高亮显示指令输出信息不同之处;

-t:不显示标题。

date

date命令是显示或设置系统时间与日期。

很多shell脚本里面需要打印不同格式的时间或日期,以及要根据时间和日期执行操作。延时通常用于脚本执行过程中提供一段等待的时间。日期可以以多种格式去打印,也可以使用命令设置固定的格式。在类UNIX系统中,日期被存储为一个整数,其大小为自世界标准时间(UTC)1970年1月1日0时0分0秒起流逝的秒数。

语法
date(选项)(参数)
选项
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。

参数
<+时间日期格式>:指定显示时使用的日期时间格式。

日期格式字符串列表

%H 小时,24小时制(00~23
%I 小时,12小时制(01~12
%k 小时,24小时制(0~23
%l 小时,12小时制(1~12
%M 分钟(00~59
%p 显示出AM或PM
%r 显示时间,12小时制(hh:mm:ss %p)
%s 19701100:00:00到目前经历的秒数
%S 显示秒(00~59
%T 显示时间,24小时制(hh:mm:ss)
%X 显示时间的格式(%H:%M:%S)
%Z 显示时区,日期域(CST)
%a 星期的简称(Sun~Sat)
%A 星期的全称(Sunday~Saturday)
%h,%b 月的简称(Jan~Dec)
%B 月的全称(January~December)
%c 日期和时间(Tue Nov 20 14:12:58 2012
%d 一个月的第几天(01~31
%x,%D 日期(mm/dd/yy)
%j 一年的第几天(001~366
%m 月份(01~12
%w 一个星期的第几天(0代表星期天)
%W 一年的第几个星期(00~53,星期一为第一天)
%y 年的最后两个数字(1999则是99

实例
格式化输出

date +"%Y-%m-%d"
2009-12-07

输出昨天日期

date -d "1 day ago" +"%Y-%m-%d"
2012-11-19

2秒后输出

date -d "2 second" +"%Y-%m-%d %H:%M.%S"
2012-11-20 14:21.31

传说中的 1234567890 秒

date -d "1970-01-01 1234567890 seconds" +"%Y-%m-%d %H:%m:%S"
2009-02-13 23:02:30

普通转格式

date -d "2009-12-12" +"%Y/%m/%d %H:%M.%S"
2009/12/12 00:00.00

apache格式转换

date -d "Dec 5, 2009 12:00:37 AM" +"%Y-%m-%d %H:%M.%S"
2009-12-05 00:00.37

格式转换后时间游走

date -d "Dec 5, 2009 12:00:37 AM 2 year ago" +"%Y-%m-%d %H:%M.%S"
2007-12-05 00:00.37

加减操作

date +%Y%m%d                   //显示前天年月日
date -d "+1 day" +%Y%m%d       //显示前一天的日期
date -d "-1 day" +%Y%m%d       //显示后一天的日期
date -d "-1 month" +%Y%m%d     //显示上一月的日期
date -d "+1 month" +%Y%m%d     //显示下一月的日期
date -d "-1 year" +%Y%m%d      //显示前一年的日期
date -d "+1 year" +%Y%m%d      //显示下一年的日期

设定时间

date -s                        //设置当前时间,只有root权限才能设置,其他只能查看
date -s 20120523               //设置成20120523,这样会把具体时间设置成空00:00:00
date -s 01:01:01               //设置具体时间,不会对日期做更改
date -s "01:01:01 2012-05-23"  //这样可以设置全部时间
date -s "01:01:01 20120523"    //这样可以设置全部时间
date -s "2012-05-23 01:01:01"  //这样可以设置全部时间
date -s "20120523 01:01:01"    //这样可以设置全部时间

有时需要检查一组命令花费的时间,举例

#!/bin/bash

start=$(date +%s)
nmap man.linuxde.net &> /dev/null

end=$(date +%s)
difference=$(( end - start ))
echo $difference seconds.

clear(清屏)

clear命令用于清除当前屏幕终端上的任何信息。

语法

clear

history(历史命令)

history命令用于显示指定数目的指令命令,读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。

该命令单独使用时,仅显示历史命令,在命令行中,可以使用符号!执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2。

历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取。在内存中,历史命令仅能够存储1000条历史命令,该数量是由环境变量HISTSIZE进行控制。

语法

history(选项)(参数)

选项

-c:清空当前历史命令;

-a:将历史命令缓冲区中命令写入历史命令文件中;

-r:将历史命令文件中的命令读入当前历史命令缓冲区;

-w:将当前历史命令缓冲区命令写入历史命令文件中。

参数
n:打印最近的n条历史命令。

time(统计给定命令所花费的总时间)

time命令用于统计给定命令所花费的总时间。

语法

time(参数)

参数
指令:指定需要运行的额指令及其参数。

nohup(用于在系统后台不挂断地运行命令)

nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

语法

nohup(选项)(参数)

选项

--help:在线帮助;

--version:显示版本信息。

参数
程序及选项:要运行的程序及选项。

实例

使用nohup命令提交作业,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

nohup command > myout.file 2>&1 &

在上面的例子中,输出被重定向到myout.file文件中。

xargs(给命令传递参数的一个过滤器)

xargs命令是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs能够处理管道或者stdin并将其转换成特定命令的命令参数。xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。这意味着通过管道传递给xargs的输入将会包含换行和空白,不过通过xargs的处理,换行和空白将被空格取代。xargs是构建单行命令的重要组件之一。

xargs命令用法
xargs用作替换工具,读取输入数据重新格式化后输出。

定义一个测试文件,内有多行文本数据

cat test.txt

a b c d e f g
h i j k l m n
o p q
r s t
u v w x y z

多行输入单行输出

cat test.txt | xargs

a b c d e f g h i j k l m n o p q r s t u v w x y z

-n选项多行输出

cat test.txt | xargs -n3

a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z

-d选项可以自定义一个定界符

echo "nameXnameXnameXname" | xargs -dX

name name name name

结合-n选项使用

echo "nameXnameXnameXname" | xargs -dX -n2

name name
name name

读取stdin,将格式化后的参数传递给命令

假设一个命令为 sk.sh 和一个保存参数的文件arg.txt:

#!/bin/bash
#sk.sh命令内容,打印出所有参数。

echo $*
arg.txt文件内容:

cat arg.txt

aaa
bbb
ccc

xargs的一个选项-I,使用-I指定一个替换字符串{},这个字符串在xargs扩展时会被替换掉,当-I与xargs结合使用,每一个参数命令都会被执行一次:

cat arg.txt | xargs -I {
     } ./sk.sh -p {
     } -l

-p aaa -l
-p bbb -l
-p ccc -l

复制所有图片文件到 /data/images 目录下:

ls *.jpg | xargs -n1 -I cp {
     } /data/images

xargs结合find使用

用rm 删除太多的文件时候,可能得到一个错误信息:/bin/rm Argument list too long. 用xargs去避免这个问题:

find . -type f -name "*.log" -print0 | xargs -0 rm -f

xargs -0将\0作为定界符

统计一个源代码目录中所有php文件的行数:

find . -type f -name "*.php" -print0 | xargs -0 wc -l

查找所有的jpg 文件,并且压缩它们:

find . -type f -name "*.jpg" -print | xargs tar -czvf images.tar.gz

xargs其他应用

假如你有一个文件包含了很多你希望下载的URL,你能够使用xargs下载所有链接:

cat url-list.txt | xargs wget -c

子Shell(Subshells)

运行一个shell脚本时会启动另一个命令解释器.,就好像你的命令是在命令行提示下被解释的一样,类似于批处理文件里的一系列命令。每个shell脚本有效地运行在父shell(parent shell)的一个子进程里。这个父shell是指在一个控制终端或在一个xterm窗口中给你命令指示符的进程。

cmd1 | ( cmd2; cmd3; cmd4 ) | cmd5

如果cmd2 是cd /,那么就会改变子Shell的工作目录,这种改变只是局限于子shell内部,cmd5则完全不知道工作目录发生的变化。子shell是嵌在圆括号()内部的命令序列,子Shell内部定义的变量为局部变量。

子shell可用于为一组命令设定临时的环境变量

COMMAND1
COMMAND2
COMMAND3
(
  IFS=:
  PATH=/bin
  unset TERMINFO
  set -C
  shift 5
  COMMAND4
  COMMAND5
  exit 3 # 只是从子shell退出。
)
父shell不受影响,变量值没有更改。
COMMAND6
COMMAND7

exec(在运行的容器中执行命令)

exec命令用于调用并执行指令的命令。exec命令通常用在shell脚本程序中,可以调用其他的命令。如果在当前终端中使用命令,则当指定的命令执行完毕后会立即退出终端。

语法

exec(选项)(参数)

选项

-c:在空环境中执行指定的命令。

export(用于设置或显示环境变量)

export命令用于将shell变量输出为环境变量,或者将shell函数输出为环境变量。

一个变量创建时,它不会自动地为在它之后创建的shell进程所知。而命令export可以向后面的shell传递变量的值。当一个shell脚本调用并执 行时,它不会自动得到原为脚本(调用者)里定义的变量的访问权,除非这些变量已经被显式地设置为可用。export命令可以用于传递一个或多个变量的值到任何后继脚本。

语法

export(选项)(参数)

选项

-f:代表[变量名称]中为函数名称;

-n:删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中;

-p:列出所有的shell赋予程序的环境变量。

type(显示指定命令的类型)

type命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。

命令类型:

alias:别名。
keyword:关键字,Shell保留字。
function:函数,Shell函数。
builtin:内建命令,Shell内建命令。
file:文件,磁盘文件,外部命令。
unfound:没有找到。
语法

type(选项)(参数)

选项

-t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;

-p:如果给出的指令为外部指令,则显示其绝对路径;

-a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。

系统性能监视高级命令 (12 个)

内存:

top(实时动态地查看系统的整体运行情况)

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

top(选项)

-b:以批处理模式操作;

-c:显示完整的治命令;

-d:屏幕刷新间隔时间;

-I:忽略失效过程;

-s:保密模式;

-S:累积模式;

-i<时间>:设置间隔时间;

-u<用户名>:指定用户名;

-p<进程号>:指定进程;

-n<次数>:循环显示的次数。

top交互命令

在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。

h:显示帮助画面,给出一些简短的命令总结说明;

k:终止一个进程;

i:忽略闲置和僵死进程,这是一个开关式命令;

q:退出程序;

r:重新安排一个进程的优先级别;

S:切换到累计模式;

s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

f或者F:从当前显示中添加或者删除项目;

o或者O:改变显示项目的顺序;

l:切换显示平均负载和启动时间信息;

m:切换显示内存信息;

t:切换显示进程和CPU状态信息;

c:切换显示命令名称和完整命令行;

M:根据驻留内存大小进行排序;

P:根据CPU使用百分比大小进行排序;

T:根据时间/累计时间进行排序;

w:将当前设置写入~/.toprc文件中。

free(内存)

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

free(选项)

-b:以Byte为单位显示内存使用情况;

-k:以KB为单位显示内存使用情况;

-m:以MB为单位显示内存使用情况;

-o:不显示缓冲区调节列;

-s<间隔秒数>:持续观察内存使用状况;

-t:显示内存总和列;

-V:显示版本信息。

第一部分Mem行解释

total:内存总数;
used:已经使用的内存数;
free:空闲的内存数;
shared:当前已经废弃不用;
buffers Buffer:缓存内存数;
cached Page:缓存内存数。
关系:total = used + free

第二部分(-/+ buffers/cache)解释:

(-buffers/cache) used内存数:第一部分Mem行中的 used  buffers  cached
(+buffers/cache) free内存数: 第一部分Mem行中的 free + buffers + cached
可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数。

第三部分是指交换分区

vmstat(用来获得有关进程、虚存、页面交换空间及 CPU活动的信息)

vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

vmstat(选项)(参数)

-a:显示活动内页;

-f:显示启动后创建的进程总数;

-m:显示slab信息;

-n:头信息仅显示一次;

-s:以表格方式显示事件计数器和内存状态;

-d:报告磁盘状态;

-p:显示指定的硬盘分区状态;

-S:输出信息的单位。

Procs(进程)

r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1
b: 等待IO的进程数量。

Memory(内存)

swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id: 空闲时间百分比
  
iostat(用于输出CPU和磁盘I/O相关的统计信息)	 
sar(用于监控Linux系统各个性能的优秀工具) 	chkconfig(用于检查,设置系统的各种服务)

iostat(监视系统输入输出设备和CPU的使用情况)

iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

语法

iostat(选项)(参数)

选项

-c:仅显示CPU使用情况;

-d:仅显示设备利用率;

-k:显示状态以千字节每秒为单位,而不使用块每秒;

-m:显示状态以兆字节每秒为单位;

-p:仅显示块设备和所有被使用的其他分区的状态;

-t:显示每个报告产生时的时间;

-V:显示版号并退出;

-x:显示扩展状态。

sar(系统运行状态统计工具)

sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

语法

sar(选项)(参数)

选项

-A:显示所有的报告信息;

-b:显示I/O速率;

-B:显示换页状态;

-c:显示进程创建活动;

-d:显示每个块设备的状态;

-e:设置显示报告的结束时间;

-f:从指定文件提取报告;

-i:设状态信息刷新的间隔时间;

-P:报告每个CPU的状态;

-R:显示内存状态;

-u:显示CPU利用率;

-v:显示索引节点,文件和其他内核表的状态;

-w:显示交换分区状态;

-x:显示给定进程的状态。

CPU:

top(实时动态地查看系统的整体运行情况)

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

top(选项)

-b:以批处理模式操作;

-c:显示完整的治命令;

-d:屏幕刷新间隔时间;

-I:忽略失效过程;

-s:保密模式;

-S:累积模式;

-i<时间>:设置间隔时间;

-u<用户名>:指定用户名;

-p<进程号>:指定进程;

-n<次数>:循环显示的次数。

top交互命令

在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。

h:显示帮助画面,给出一些简短的命令总结说明;

k:终止一个进程;

i:忽略闲置和僵死进程,这是一个开关式命令;

q:退出程序;

r:重新安排一个进程的优先级别;

S:切换到累计模式;

s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

f或者F:从当前显示中添加或者删除项目;

o或者O:改变显示项目的顺序;

l:切换显示平均负载和启动时间信息;

m:切换显示内存信息;

t:切换显示进程和CPU状态信息;

c:切换显示命令名称和完整命令行;

M:根据驻留内存大小进行排序;

P:根据CPU使用百分比大小进行排序;

T:根据时间/累计时间进行排序;

w:将当前设置写入~/.toprc文件中。

vmstat(用来获得有关进程、虚存、页面交换空间及 CPU活动的信息)

vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

vmstat(选项)(参数)

-a:显示活动内页;

-f:显示启动后创建的进程总数;

-m:显示slab信息;

-n:头信息仅显示一次;

-s:以表格方式显示事件计数器和内存状态;

-d:报告磁盘状态;

-p:显示指定的硬盘分区状态;

-S:输出信息的单位。

Procs(进程)

r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1
b: 等待IO的进程数量。

Memory(内存)

swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id: 空闲时间百分比
  
iostat(用于输出CPU和磁盘I/O相关的统计信息)	 
sar(用于监控Linux系统各个性能的优秀工具) 	chkconfig(用于检查,设置系统的各种服务)

iostat(监视系统输入输出设备和CPU的使用情况)

iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

语法

iostat(选项)(参数)

选项

-c:仅显示CPU使用情况;

-d:仅显示设备利用率;

-k:显示状态以千字节每秒为单位,而不使用块每秒;

-m:显示状态以兆字节每秒为单位;

-p:仅显示块设备和所有被使用的其他分区的状态;

-t:显示每个报告产生时的时间;

-V:显示版号并退出;

-x:显示扩展状态。

sar(系统运行状态统计工具)

sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

语法

sar(选项)(参数)

选项

-A:显示所有的报告信息;

-b:显示I/O速率;

-B:显示换页状态;

-c:显示进程创建活动;

-d:显示每个块设备的状态;

-e:设置显示报告的结束时间;

-f:从指定文件提取报告;

-i:设状态信息刷新的间隔时间;

-P:报告每个CPU的状态;

-R:显示内存状态;

-u:显示CPU利用率;

-v:显示索引节点,文件和其他内核表的状态;

-w:显示交换分区状态;

-x:显示给定进程的状态。

I/O:

vmstat(用来获得有关进程、虚存、页面交换空间及 CPU活动的信息)

vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

vmstat(选项)(参数)

-a:显示活动内页;

-f:显示启动后创建的进程总数;

-m:显示slab信息;

-n:头信息仅显示一次;

-s:以表格方式显示事件计数器和内存状态;

-d:报告磁盘状态;

-p:显示指定的硬盘分区状态;

-S:输出信息的单位。

Procs(进程)

r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1
b: 等待IO的进程数量。

Memory(内存)

swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id: 空闲时间百分比
  
iostat(用于输出CPU和磁盘I/O相关的统计信息)	 
sar(用于监控Linux系统各个性能的优秀工具) 	chkconfig(用于检查,设置系统的各种服务)

iostat(监视系统输入输出设备和CPU的使用情况)

iostat命令被用于监视系统输入输出设备和CPU的使用情况。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。

语法

iostat(选项)(参数)

选项

-c:仅显示CPU使用情况;

-d:仅显示设备利用率;

-k:显示状态以千字节每秒为单位,而不使用块每秒;

-m:显示状态以兆字节每秒为单位;

-p:仅显示块设备和所有被使用的其他分区的状态;

-t:显示每个报告产生时的时间;

-V:显示版号并退出;

-x:显示扩展状态。

sar(系统运行状态统计工具)

sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

语法

sar(选项)(参数)

选项

-A:显示所有的报告信息;

-b:显示I/O速率;

-B:显示换页状态;

-c:显示进程创建活动;

-d:显示每个块设备的状态;

-e:设置显示报告的结束时间;

-f:从指定文件提取报告;

-i:设状态信息刷新的间隔时间;

-P:报告每个CPU的状态;

-R:显示内存状态;

-u:显示CPU利用率;

-v:显示索引节点,文件和其他内核表的状态;

-w:显示交换分区状态;

-x:显示给定进程的状态。

sar(系统运行状态统计工具)

sar命令是Linux下系统运行状态统计工具,它将指定的操作系统状态计数器显示到标准输出设备。sar工具将对系统当前的状态进行取样,然后通过计算数据和比例来表达系统的当前运行状态。它的特点是可以连续对系统取样,获得大量的取样数据。取样数据和分析的结果都可以存入文件,使用它时消耗的系统资源很小。

语法

sar(选项)(参数)

选项

-A:显示所有的报告信息;

-b:显示I/O速率;

-B:显示换页状态;

-c:显示进程创建活动;

-d:显示每个块设备的状态;

-e:设置显示报告的结束时间;

-f:从指定文件提取报告;

-i:设状态信息刷新的间隔时间;

-P:报告每个CPU的状态;

-R:显示内存状态;

-u:显示CPU利用率;

-v:显示索引节点,文件和其他内核表的状态;

-w:显示交换分区状态;

-x:显示给定进程的状态。

负载:

uptime(打印系统总共运行了多长时间和系统的平均负载)

uptime命令能够打印系统总共运行了多长时间和系统的平均负载。uptime命令可以显示的信息显示依次为:现在时间、系统已经运行了多长时间、目前有多少登陆用户、系统在过去的1分钟、5分钟和15分钟内的平均负载。

uptime(选项)

-V:显示指令的版本信息。

关机重启 :

shutdown(关机)

shutdown命令用来系统关机命令。shutdown指令可以关闭所有程序,并依用户的需要,进行重新开机或关机的动作。

语法

shutdown(选项)(参数)

选项

-c:当执行“shutdown -h 11:50”指令时,只要按+键就可以中断关机的指令;

-f:重新启动时不执行fsck;

-F:重新启动时执行fsck;

-h:将系统关机;

-k:只是送出信息给所有用户,但不会实际关机;

-n:不调用init程序进行关机,而由shutdown自己进行;

-r:shutdown之后重新启动;

-t<秒数>:送出警告信息和删除信息之间要延迟多少秒。

init(进程初始化工具)

init命令是Linux下的进程初始化工具,init进程是所有Linux进程的父进程,它的进程号为1。init命令是Linux操作系统中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程。

语法

init(选项)(参数)

选项

-b:不执行相关脚本而直接进入单用户模式;

-s:切换到单用户模式。

参数

运行等级:指定Linux系统要切换到的运行等级。

实例
几个常用的命令

查看系统进程命令:ps -ef | head
查看init的配置文件:more /etc/inittab
查看系统当前运行的级别:runlevel

运行级别

到底什么是运行级呢?简单的说,运行级就是操作系统当前正在运行的功能级别。这个级别从0到6 ,具有不同的功能。你也可以在/etc/inittab中查看它的英文介绍。

#0  停机(千万不能把initdefault 设置为0
#1  单用户模式
#2  多用户,没有 NFS(和级别3相似,会停止部分服务)
#3  完全多用户模式
#4  没有用到
#5  x11(Xwindow)
#6  重新启动(千万不要把initdefault 设置为6

poweroff(用于关闭计算器并切断电源)

poweroff命令用来关闭计算机操作系统并且切断系统电源。

语法

poweroff(选项)

选项

-n:关闭操作系统时不执行sync操作;

-w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;

-d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;

-f:强制关闭操作系统;

-i:关闭操作系统之前关闭所有的网络接口;

-h:关闭操作系统之前将系统中所有的硬件设置为备用模式。

reboot

reboot命令用来重新启动正在运行的Linux操作系统。

语法

reboot(选项)

选项

-d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果;

-f:强制重新开机,不调用shutdown指令的功能;

-i:在重开机之前,先关闭所有网络界面;

-n:重开机之前不检查是否有未结束的程序;

-w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。

注销退出:

Logout(用于退出系统)

logout命令用于退出当前登录的Shell,logout指令让用户退出系统,其功能和login指令相互对应。

语法

logout

exit

exit命令同于退出shell,并返回给定值。在shell脚本中可以终止当前脚本执行。执行exit可使shell以指定的状态值退出。若不设置状态值参数,则shell以预设值退出。状态值0代表执行成功,其他值代表执行失败。

语法


exit(参数)

ctl+d —— > 快捷键 ( 生产常用 )

进程管理:( 15 个)

bg :后台运行

bg命令用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&的效果是相同的,都是将其放到系统后台执行。

在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到 jobs、bg、和 fg 三个命令以及两个快捷键来完成。

语法

bg(参数)

参数
作业标识:指定需要放到后台的作业标识号。

实例
使用bg命令将任务号为1的任务放到后台继续执行,输入如下命令

bg 1            #后台执行任务号为1的任务

如果系统中只有一个挂起的任务时,即使不为该命令设置参数"1",也可以实现这个功能。

注意:实际上,使用bg命令与在指令后面添加符号"&"的效果是一样的。例如,使用&将find / -name password放到后台执行,输入如下命令:

find / -name password &     #后台执行任务

fg :挂起程序

fg命令用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。与bg命令一样,若后台任务中只有一个,则使用该命令时,可以省略任务号。

在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到 jobs、bg、和 fg 三个命令以及两个快捷键来完成。

语法
fg(参数)
参数

作业标识:指定要放到前台的作业标识号

实例
使用fg命令将任务号为1的任务从后台执行转换到前台执行,输入如下命令:

fg 1          #将任务转换到前台执行

执行上面的命令后,命令行窗口将显示如下信息:

find / -name password       #前台执行命令

jobs :显示后台程序

jobs命令用于显示Linux中的任务列表及任务状态,包括后台运行的任务。该命令可以显示任务号及其对应的进程号。其中,任务号是以普通用户的角度进行的,而进程号则是从系统管理员的角度来看的。一个任务可以对应于一个或者多个进程号。

在Linux系统中执行某些操作时候,有时需要将当前任务暂停调至后台,或有时须将后台暂停的任务重启开启并调至前台,这一序列的操作将会使用到 jobs、bg、和 fg 三个命令以及两个快捷键来完成。

语法

jobs(选项)(参数)

选项

-l:显示进程号;

-p:仅任务对应的显示进程号;

-n:显示任务状态的变化;

-r:仅输出运行状态(running)的任务;

-s:仅输出停止状态(stoped)的任务。

kill,killall,pkill :杀掉进程

killall

killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。我们可以使用kill命令杀死指定进程PID的进程,如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,而killall把这两个过程合二为一,是一个很好用的命令。

语法

killall(选项)(参数)

选项

-e:对长名称进行精确匹配;

-l:忽略大小写的不同;

-p:杀死进程所属的进程组;

-i:交互式杀死进程,杀死进程前需要进行确认;

-l:打印所有已知信号列表;

-q:如果没有进程被杀死。则不输出任何信息;

-r:使用正规表达式匹配要杀死的进程名称;

-s:用指定的进程号代替默认信号“SIGTERM”;

-u:杀死指定用户的进程。

kill

kill命令用来删除执行中的程序或工作。kill可将指定的信息送至程序。预设的信息为SIGTERM(15),可将指定程序终止。若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。程序或工作的编号可利用ps指令或job指令查看。

语法

kill(选项)(参数)

选项

-a:当处理当前进程时,不限制命令名和进程号的对应关系;

-l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;

-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;

-s <信息名称或编号>:指定要送出的信息;

-u:指定用户。

crontab:设置定时

crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

语法

crontab(选项)(参数)

选项

-e:编辑该用户的计时器设置;

-l:列出该用户的计时器设置;

-r:删除该用户的计时器设置;

-u<用户名称>:指定要设定计时器的用户名称。

参数

crontab文件:指定包含待执行任务的crontab文件。

知识扩展
Linux下的任务调度分为两类:系统任务调度和用户任务调度。

系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

/etc/crontab文件包括下面几行

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=""HOME=/

# run-parts
51 * * * * root run-parts /etc/cron.hourly
24 7 * * * root run-parts /etc/cron.daily
22 4 * * 0 root run-parts /etc/cron.weekly
42 4 1 * * root run-parts /etc/cron.monthly

前四行是用来配置crond任务运行的环境变量,第一行SHELL变量指定了系统要使用哪个shell,这里是bash,第二行PATH变量指定了系统执行命令的路径,第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户,第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。

用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用 crontab 工具来定制自己的计划任务。所有用户定义的crontab文件都被保存在/var/spool/cron目录中。其文件名与用户名一致,使用者权限文件如下:

/etc/cron.deny     该文件中所列用户不允许使用crontab命令
/etc/cron.allow    该文件中所列用户允许使用crontab命令
/var/spool/cron/   所有用户crontab文件存放的目录,以用户名命名

crontab文件的含义:用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

minute   hour   day   month   week   command     顺序:分    

其中:

minute: 表示分钟,可以是从059之间的任何整数。
hour:表示小时,可以是从023之间的任何整数。
day:表示日期,可以是从131之间的任何整数。
month:表示月份,可以是从112之间的任何整数。
week:表示星期几,可以是从07之间的任何整数,这里的07代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

在以上各个字段中,还可以使用以下特殊字符:

星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。

crond服务

/sbin/service crond start    //启动服务
/sbin/service crond stop     //关闭服务
/sbin/service crond restart  //重启服务
/sbin/service crond reload   //重新载入配置

查看crontab服务状态:

service crond status

手动启动crontab服务:

service crond start

查看crontab服务是否已设置为开机启动,执行命令:

ntsysv

加入开机自动启动:

chkconfig –level 35 crond on

ps :查看进程

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

语法
ps(选项)
选项
-a:显示所有终端机下执行的程序,除了阶段作业领导者之外。
a:显示现行终端机下的所有程序,包括其他用户的程序。
-A:显示所有程序。
-c:显示CLS和PRI栏位。
c:列出程序时,显示每个程序真正的指令名称,而不包含路径,选项或常驻服务的标示。
-C<指令名称>:指定执行指令的名称,并列出该指令的程序的状况。
-d:显示所有程序,但不包括阶段作业领导者的程序。
-e:此选项的效果和指定"A"选项相同。
e:列出程序时,显示每个程序所使用的环境变量。
-f:显示UID,PPIP,C与STIME栏位。
f:用ASCII字符显示树状结构,表达程序间的相互关系。
-g<群组名称>:此选项的效果和指定"-G"选项相同,当亦能使用阶段作业领导者的名称来指定。
g:显示现行终端机下的所有程序,包括群组领导者的程序。
-G<群组识别码>:列出属于该群组的程序的状况,也可使用群组名称来指定。
h:不显示标题列。
-H:显示树状结构,表示程序间的相互关系。
-j或j:采用工作控制的格式显示程序状况。
-l或l:采用详细的格式来显示程序状况。
L:列出栏位的相关信息。
-m或m:显示所有的执行绪。
n:以数字来表示USER和WCHAN栏位。
-N:显示所有的程序,除了执行ps指令终端机下的程序之外。
-p<程序识别码>:指定程序识别码,并列出该程序的状况。
p<程序识别码>:此选项的效果和指定"-p"选项相同,只在列表格式方面稍有差异。
r:只列出现行终端机正在执行中的程序。
-s<阶段作业>:指定阶段作业的程序识别码,并列出隶属该阶段作业的程序的状况。
s:采用程序信号的格式显示程序状况。
S:列出程序时,包括已中断的子程序资料。
-t<终端机编号>:指定终端机编号,并列出属于该终端机的程序的状况。
t<终端机编号>:此选项的效果和指定"-t"选项相同,只在列表格式方面稍有差异。
-T:显示现行终端机下的所有程序。
-u<用户识别码>:此选项的效果和指定"-U"选项相同。
u:以用户为主的格式来显示程序状况。
-U<用户识别码>:列出属于该用户的程序的状况,也可使用用户名称来指定。
U<用户名称>:列出属于该用户的程序的状况。
v:采用虚拟内存的格式显示程序状况。
-V或V:显示版本信息。
-w或w:采用宽阔的格式来显示程序状况。 
x:显示所有程序,不以终端机来区分。
X:采用旧式的Linux i386登陆格式显示程序状况。
-y:配合选项"-l"使用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位 
-<程序识别码>:此选项的效果和指定"p"选项相同。
--cols<每列字符数>:设置每列的最大字符数。
--columns<每列字符数>:此选项的效果和指定"--cols"选项相同。
--cumulative:此选项的效果和指定"S"选项相同。
--deselect:此选项的效果和指定"-N"选项相同。
--forest:此选项的效果和指定"f"选项相同。
--headers:重复显示标题列。
--help:在线帮助。
--info:显示排错信息。
--lines<显示列数>:设置显示画面的列数。
--no-headers:此选项的效果和指定"h"选项相同,只在列表格式方面稍有差异。
--group<群组名称>:此选项的效果和指定"-G"选项相同。
--Group<群组识别码>:此选项的效果和指定"-G"选项相同。
--pid<程序识别码>:此选项的效果和指定"-p"选项相同。
--rows<显示列数>:此选项的效果和指定"--lines"选项相同。
--sid<阶段作业>:此选项的效果和指定"-s"选项相同。
--tty<终端机编号>:此选项的效果和指定"-t"选项相同。
--user<用户名称>:此选项的效果和指定"-U"选项相同。
--User<用户识别码>:此选项的效果和指定"-U"选项相同。
--version:此选项的效果和指定"-V"选项相同。
--widty<每列字符数>:此选项的效果和指定"-cols"选项相同。

pstree :显示进程状态树

pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观。

语法

pstree(选项)

选项

-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;

-c:不使用精简标示法;

-G:使用VT100终端机的列绘图字符;

-h:列出树状图时,特别标明现在执行的程序;

-H<程序识别码>:此参数的效果和指定"-h"参数类似,但特别标明指定的程序;

-l:采用长列格式显示树状图;

-n:用程序识别码排序。预设是以程序名称来排序;

-p:显示程序识别码;

-u:显示用户名称;

-U:使用UTF-8列绘图字符;

-V:显示版本信息。

top :显示进程

top(实时动态地查看系统的整体运行情况)

top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。通过top命令所提供的互动式界面,用热键可以管理。

top(选项)

-b:以批处理模式操作;

-c:显示完整的治命令;

-d:屏幕刷新间隔时间;

-I:忽略失效过程;

-s:保密模式;

-S:累积模式;

-i<时间>:设置间隔时间;

-u<用户名>:指定用户名;

-p<进程号>:指定进程;

-n<次数>:循环显示的次数。

top交互命令

在top命令执行过程中可以使用的一些交互命令。这些命令都是单字母的,如果在命令行中使用了-s选项, 其中一些命令可能会被屏蔽。

h:显示帮助画面,给出一些简短的命令总结说明;

k:终止一个进程;

i:忽略闲置和僵死进程,这是一个开关式命令;

q:退出程序;

r:重新安排一个进程的优先级别;

S:切换到累计模式;

s:改变两次刷新之间的延迟时间(单位为s),如果有小数,就换算成ms。输入0值则系统将不断刷新,默认值是5s;

f或者F:从当前显示中添加或者删除项目;

o或者O:改变显示项目的顺序;

l:切换显示平均负载和启动时间信息;

m:切换显示内存信息;

t:切换显示进程和CPU状态信息;

c:切换显示命令名称和完整命令行;

M:根据驻留内存大小进行排序;

P:根据CPU使用百分比大小进行排序;

T:根据时间/累计时间进行排序;

w:将当前设置写入~/.toprc文件中。

nice:改变优先权

nice命令用于以指定的进程调度优先级启动其他的程序。

语法

nice(选项)(参数)

选项

-n:指定进程的优先级(整数)。

参数

指令及选项:需要运行的指令及其他选项。

实例
新建一个进程并设置优先级,将当前目录下的documents目录打包,但不希望tar占用太多CPU

nice -19 tar zcf pack.tar.gz documents

方法非常简单,即在原命令前加上nice -19。很多人可能有疑问了,最低优先级不是19么?那是因为这个“-19”中的“-”仅表示参数前缀;所以,如果希望将当前目录下的documents目录打包,并且赋予tar进程最高的优先级:

nice --19 tar zcf pack.tar.gz documents

nohup :用户退出系统之后继续工作

nohup命令可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。

无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中。如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

语法

nohup(选项)(参数)

选项

--help:在线帮助;

--version:显示版本信息。

参数
程序及选项:要运行的程序及选项。

实例

使用nohup命令提交作业,如果使用nohup命令提交作业,那么在缺省情况下该作业的所有输出都被重定向到一个名为nohup.out的文件中,除非另外指定了输出文件:

nohup command > myout.file 2>&1 &

在上面的例子中,输出被重定向到myout.file文件中。

pgrep :查找匹配条件的进程

pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

语法

pgrep(选项)(参数)

选项

-o:仅显示找到的最小(起始)进程号;

-n:仅显示找到的最大(结束)进程号;

-l:显示进程名称;

-P:指定父进程号;

-g:指定进程组;

-t:指定开启进程的终端;

-u:指定进程的有效用户ID。

strace :跟踪一个进程的系统调用

strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。当然strace与专业的调试工具比如说gdb之类的是没法相比的,因为它不是一个专业的调试器。

strace的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了。在命令执行的过程中,strace会记录和解析命令进程的所有系统调用以及这个进程所接收到的所有的信号值。

语法
strace  [  -dffhiqrtttTvxx  ] [ -acolumn ] [ -eexpr ] ...
    [ -ofile ] [-ppid ] ...  [ -sstrsize ] [ -uusername ]
    [ -Evar=val ] ...  [ -Evar  ]...
    [ command [ arg ...  ] ]

strace  -c  [ -eexpr ] ...  [ -Ooverhead ] [ -Ssortby ]
    [ command [ arg...  ] ]
选项
-c 统计每一系统调用的所执行的时间,次数和出错的次数等.
-d 输出strace关于标准错误的调试信息.
-f 跟踪由fork调用所产生的子进程.
-ff 如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号.
-F 尝试跟踪vfork调用.在-f时,vfork不被跟踪.
-h 输出简要的帮助信息.
-i 输出系统调用的入口指针.
-q 禁止输出关于脱离的消息.
-r 打印出相对时间关于,,每一个系统调用.
-t 在输出中的每一行前加上时间信息.
-tt 在输出中的每一行前加上时间信息,微秒级.
-ttt 微秒级输出,以秒了表示时间.
-T 显示每一调用所耗的时间.
-v 输出所有的系统调用.一些调用关于环境变量,状态,输入输出等调用由于使用频繁,默认不输出.
-V 输出strace的版本信息.
-x 以十六进制形式输出非标准字符串
-xx 所有字符串以十六进制形式输出.
-a column 设置返回值的输出位置.默认 40.
-e expr 指定一个表达式,用来控制如何跟踪.格式:[qualifier=][!]value1[,value2]...
qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如:-eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open 表示跟踪除了open以外的其他调用.有两个特殊的符号 all  none. 注意有些shell使用!来执行历史记录里的命令,所以要使用\\.
-e trace=set 只跟踪指定的系统 调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all.
-e trace=file 只跟踪有关文件操作的系统调用.
-e trace=process 只跟踪有关进程控制的系统调用.
-e trace=network 跟踪与网络有关的所有系统调用.
-e strace=signal 跟踪所有与系统信号有关的 系统调用
-e trace=ipc 跟踪所有与进程通讯有关的系统调用
-e abbrev=set 设定strace输出的系统调用的结果集.-v 等与 abbrev=none.默认为abbrev=all.
-e raw=set 将指定的系统调用的参数以十六进制显示.
-e signal=set 指定跟踪的系统信号.默认为all. signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号.
-e read=set 输出从指定文件中读出 的数据.例如: -e read=3,5
-e write=set 输出写入到指定文件中的数据.
-o filename 将strace的输出写入文件filename
-p pid 跟踪指定的进程pid.
-s strsize 指定输出的字符串的最大长度.默认为32.文件名一直全部输出.
-u username 以username的UID和GID执行被跟踪的命令

vmstat :报告虚拟内存统计信息

vmstat命令的含义为显示虚拟内存状态(“Virtual Memory Statistics”),但是它可以报告关于进程、内存、I/O等系统整体运行状态。

vmstat(选项)(参数)

-a:显示活动内页;

-f:显示启动后创建的进程总数;

-m:显示slab信息;

-n:头信息仅显示一次;

-s:以表格方式显示事件计数器和内存状态;

-d:报告磁盘状态;

-p:显示指定的硬盘分区状态;

-S:输出信息的单位。

Procs(进程)

r: 运行队列中进程数量,这个值也可以判断是否需要增加CPU。(长期大于1
b: 等待IO的进程数量。

Memory(内存)

swpd: 使用虚拟内存大小,如果swpd的值不为0,但是SI,SO的值长期为0,这种情况不会影响系统性能。
free: 空闲物理内存大小。
buff: 用作缓冲的内存大小。
cache: 用作缓存的内存大小,如果cache的值大的时候,说明cache处的文件数多,如果频繁访问到的文件都能被cache处,那么磁盘的读IO bi会非常小。

Swap

si: 每秒从交换区写到内存的大小,由磁盘调入内存。
so: 每秒写入交换区的内存大小,由内存调入磁盘。
注意:内存够用的时候,这2个值都是0,如果这2个值长期大于0时,系统性能会受到影响,磁盘IO和CPU资源都会被消耗。有些朋友看到空闲内存(free)很少的或接近于0时,就认为内存不够用了,不能光看这一点,还要结合si和so,如果free很少,但是si和so也很少(大多时候是0),那么不用担心,系统性能这时不会受到影响的。

IO(现在的Linux版本块的大小为1kb)

bi: 每秒读取的块数
bo: 每秒写入的块数
注意:随机磁盘读写的时候,这2个值越大(如超出1024k),能看到CPU在IO等待的值也会越大。

system(系统)

in: 每秒中断数,包括时钟中断。
cs: 每秒上下文切换数。
注意:上面2个值越大,会看到由内核消耗的CPU时间会越大。

CPU(以百分比表示)

us: 用户进程执行时间百分比(user time)
us的值比较高时,说明用户进程消耗的CPU时间多,但是如果长期超50%的使用,那么我们就该考虑优化程序算法或者进行加速。

sy: 内核系统进程执行时间百分比(system time)
sy的值高时,说明系统内核消耗的CPU资源多,这并不是良性表现,我们应该检查原因。

wa: IO等待时间百分比
wa的值高时,说明IO等待比较严重,这可能由于磁盘大量作随机访问造成,也有可能磁盘出现瓶颈(块操作)。

id: 空闲时间百分比
  
iostat(用于输出CPU和磁盘I/O相关的统计信息)	 
sar(用于监控Linux系统各个性能的优秀工具) 	chkconfig(用于检查,设置系统的各种服务)

你可能感兴趣的:(linux,vim,linux,1024程序员节)