LINUX命令

    xiaoxiao2022-07-03  111

    ls命令是linux下最常用的命令。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单。如果ls指定其他目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅可以查看linux文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限),查看目录信息等等。

     

    例一:列出/home/peidachang文件夹下的所有文件和目录的详细资料

    ls -lR /home/peidachang

     

    例二:列出当前目录中所有以“t”开头的目录的详细内容,可以使用如下命令

    ls -l t*

     

    例三:只列出文件下的子目录

    ls -F /opt/soft |grep /$

     

    例四:列出目前工作目录下所有名称是s 开头的档案,愈新的排愈后面

    ls -ltr s*

     

    例五:列出目前工作目录下所有档案及目录;目录于名称后加"/", 可执行档于名称后加"*" 

    ls -AF

     

    例六:计算当前目录下的文件数和目录数

    ls -l * |grep "^-"|wc -l ---文件个数   ls -l * |grep "^d"|wc -l    ---目录个数

     

    例七: 在ls中列出文件的绝对路径

    ls | sed "s:^:`pwd`/:"

     

    例八:列出当前目录下的所有文件(包括隐藏文件)的绝对路径, 对目录不做递归

    find $PWD -maxdepth 1 | xargs ls -ld

     

    例九:指定文件时间输出格式

     ls -tl --time-style=full-iso    ls -ctl --time-style=long-iso

     cd命令的主要功能是用来切换目录的。

         例一:进入系统根目录

    cd /

        

        例二:返回上层目录

    cd ..

     

        例三:进入当前用户的主目录

    cd

     

        例四:跳转至指定目录

    cd /opt/soft

     

        例五:返回进入此目录之前所在的目录

    cd -

     

     pwd 命令来查看”当前工作目录“的完整路径。

              实例1:用 pwd 命令查看当前工作目录的完整路径

    pwd

            

            实例二:目录连接链接时,pwd -P  显示出实际路径,而非使用连接(link)路径;pwd显示的是连接路径

    pwd -P

    linux mkdir 命令用来创建指定的名称的目录,要求创建目录的用户在当前目录中具有写权限,并且指定的目录名不能是当前目录中已有的目录。

    实例1:创建一个空目录 

    mkdir test1

    实例2:递归创建多个目录 

    mkdir -p test2/test22

    实例3:创建权限为777的目录 

    mkdir -m 777 test3

    实例4:创建新目录都显示信息

    mkdir -v test4

    实例五:一个命令创建项目的目录结构

    mkdir -vp scf/{lib/,bin/,doc/{info,product},logs/{info,product},service/deploy/{info,product}}

     

    rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。对于链接文件,只是删除了链接,原有文件均保持不变。

    实例一:删除文件file,系统会先询问是否删除。 

    rm 文件名

    实例二:强行删除file,系统不再提示。 

    rm -f log1.log

    实例三:删除任何.log文件;删除前逐一询问确认 

    rm -i *.log

    实例四:将 test1子目录及子目录中所有档案删除

    rm -r test1

    实例五:将 test2 子目录及子目录中所有档案删除,并且不用一一确认

    rm -rf test2

    实例六:删除以 -f 开头的文件

    rm -- -f

     

    rmdir是常用的命令,该命令的功能是删除空目录,一个目录被删除之前必须是空的。(注意,rm - r dir命令可代替rmdir,但是有很大危险性。)删除某目录时也必须具有对父目录的写权限。

    实例一:rmdir 删除空目录

    rmdir doc

    实例2:rmdir -p 当子目录被删除后使目录自身也成为空目录的话,则把自身一并删除 

    rmdir -p logs

    mv命令是move的缩写,可以用来移动文件或者将文件改名,经常用来备份文件或者目录。

    实例一:文件改名

    mv test.log test1.txt

    实例二:移动文件

    mv /etc/test1.txt /var/test1.txt

    实例三:将多个文件移动到一个目录中。 

    mv log1.txt log2.txt log3.txt test3

    实例四:将文件file1改名为file2,如果file2已经存在,则询问是否覆盖

    mv -i log1.txt log2.txt

    实例五:将文件file1改名为file2,即使file2存在,也是直接覆盖掉。

    mv -f log3.txt log2.txt

    实例六:目录的移动

    mv dir1 dir2

    实例7:移动当前文件夹下的所有文件到上一级目录

    mv * ../

    实例八:把当前目录的一个子目录里的文件移动到另一个子目录里

    mv test3/*.txt test5

    实例九:文件被覆盖前做简单备份,前面加参数-b

    mv log1.txt -b log2.txt

     

    cp命令用来复制文件或者目录。

    实例一:复制单个文件到目标目录,文件在目标文件中不存在

    cp log.log test5

    实例二:复制整个目录

    cp -a test3 test5

    实例三:建立一个快捷方式

    cp -s log.log log_link.log

    一般在使用make的时候可能会用到,用来修改文件时间戳,或者新建一个不存在的文件。

    实例一:创建一个空文件

    touch log2012.log

    实例二:更新log.log的时间和log2012.log时间戳相同

    touch -r log.log log2012.log

    实例三:设定文件的时间戳

    touch -t 201211142234.50 log.log

     

    cat命令的用途是连接文件或标准输入并打印

    实例一:把 log2012.log 的文件内容加上行号后输入 log2013.log 这个文件里

    cat -n log2012.log log2013.log

    实例二:把 log2012.log 和 log2013.log 的文件内容加上行号(空白行不加)之后将内容附加到 log.log 里。 

    cat -b log2012.log log2013.log log.log

    实例三:把 log2012.log 的文件内容加上行号后输入 log.log 这个文件里 

    cat -n log2012.log > log.log

    实例四:使用here doc来生成文件

     cat >log.txt <<EOF  Hello  World  EOF

    实例五:tac (反向展示)

    tac log.txt

     

    nl命令在linux系统中用来计算文件中行号。

    实例一:用 nl 列出 log2012.log 带行号的内容

    nl log2012.log

    实例二:用 nl 列出 log2012.log 的内容,空本行也加上行号

    nl -b a log2012.log

    实例3:让行号前面自动补上0,统一输出格式

    nl -b a -n rz log2014.log   #默认行号为6位 nl -b a -n rz -w 3 log2014.log  #用-w可以调整位数

     

    more命令,功能类似 cat ,cat命令是整个文件的内容从上到下显示在屏幕上。 more会以一页一页的显示方便使用者逐页阅读,而最基本的指令就是按空白键(space)就往下一页显示,按 b 键就会往回(back)一页显示,而且还有搜寻字串的功能 。more命令从前向后读取文件,因此在启动时就加载整个文件。

    实例1:显示文件中从第3行起的内容

    more +3 log2012.log

    实例2:从文件中查找第一个出现"day3"字符串的行,并从该处前两行开始显示输出 

    more +/day3 log2012.log

    实例3:设定每屏显示行数 

    more -5 log2012.log

    实例4:列一个目录下的文件,由于内容太多,我们应该学会用more来分页显示。这得和管道 | 结合起来 

    ls -l  | more -5

           less 工具也是对文件或其它输出进行分页显示的工具。在 more 的时候,我们并没有办法向前面翻, 只能往后面看,但若使用了 less 时,就可以使用 [pageup] [pagedown] 等按键的功能来往前往后翻看文件

    实例1:查看文件

    less log2013.log

     

    实例2:ps查看进程信息并通过less分页显示 

     ps -ef |less

     

    实例3:浏览多个文件 

    less log2013.log log2014.log 输入 :n后,切换到  log2014.log 输入 :p 后,切换到 log2013.log

     

    它是用来显示开头或结尾某个数量的文字区块

    实例1:显示文件的前n行

    head -n 5 log2014.log

    实例2:显示文件前n个字节

    head -c 20 log2014.log

    实例3:文件的除了最后n个字节以外的内容 

    head -c -32 log2014.log

    实例4:输出文件除了最后n行的全部内容

    head -n -6 log2014.log

    tail 命令从指定点开始将文件写到标准输出

    实例1:显示文件末尾内容

    tail -n 5 log2014.log

    实例2:循环查看文件内容

    tail -f test.log

    实例3:从第5行开始显示文件

    tail -n +5 log2014.log

     

    使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令

    实例1:查找文件、显示命令路径

    which lsmod

     

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

    实例1:将和**文件相关的文件都查找出来

    whereis svn

    实例2:只将二进制文件 查找出来 

    whereis -b svn

    locate 让使用者可以很快速的搜寻档案系统内是否有指定的档案。

    实例1:查找和pwd相关的所有文件

    locate pwd

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

    locate /etc/sh

     

    Linux下find命令在目录结构中搜索文件,并执行指定的操作。Linux下find命令提供了相当多的查找条件,功能很强大。

    实例1:查找超找48小时内修改过的文件 

    find -atime -2

    实例2:根据关键字查找 

    find . -name "*.log"

    实例3:按照目录或文件的权限来查找文件

    find /opt/soft/test/ -perm 777

    实例4:按类型查找 

    find . -type f -name "*.log"

    实例5:查找当前所有目录并排序

    find . -type d | sort

    实例6:按大小查找文件

    find . -size +1000c -print

    find是我们很常用的一个Linux命令,但是我们一般查找出来的并不仅仅是看看而已,还会有进一步的操作,这个时候exec的作用就显现出来了。 

        -exec  参数后面跟的是command命令,它的终止是以;为结束标志的,所以这句命令后面的分号是不可缺少的,考虑到各个系统中分号会有不同的意义,所以前面加反斜杠。{}  花括号代表前面find查找出来的文件名。

     

    实例1:ls -l命令放在find命令的-exec选项中 

    find . -type f -exec ls -l {} \;

    实例2:在目录中查找更改时间在n日以前的文件并删除它们

    find . -type f -mtime +14 -exec rm {} \;

    实例3:在目录中查找更改时间在n日以前的文件并删除它们,在删除之前先给出提示

    find . -name "*.log" -mtime +5 -ok rm {} \;

    实例4:-exec中使用grep命令

    find /etc -name "passwd*" -exec grep "root" {} \;

    实例5:查找文件移动到指定目录  

    find . -name "*.log" -exec mv {} .. \;

    实例6:用exec选项执行cp命令  

    find . -name "*.log" -exec cp {} test3 \;

     

     在使用 find命令的-exec选项处理匹配到的文件时, find命令将所有匹配到的文件一起传递给exec执行。但有些系统对能够传递给exec的命令长度有限制,这样在find命令运行几分钟之后,就会出现溢出错误。错误信息通常是“参数列太长”或“参数列溢出”。这就是xargs命令的用处所在,特别是与find命令一起使用。  

            find命令把匹配到的文件传递给xargs命令,而xargs命令每次只获取一部分文件而不是全部,不像-exec选项那样。这样它可以先处理最先获取的一部分文件,然后是下一批,并如此继续下去

     

    实例1: 查找系统中的每一个普通文件,然后使用xargs命令来测试它们分别属于哪类文件 

    find . -type f -print | xargs file

    实例2:在整个系统中查找内存信息转储文件(core dump) ,然后把结果保存到/tmp/core.log 文件中

     find / -name "core" -print | xargs echo "" >/tmp/core.log

    实例3:在当前目录下查找所有用户具有读、写和执行权限的文件,并收回相应的写权限

    find . -perm -7 -print | xargs chmod o-w

    实例4:用grep命令在所有的普通文件中搜索hostname这个词

    find . -type f -print | xargs grep "hostname"

    实例5:使用xargs执行mv 

    find . -name "*.log" | xargs -i mv {} test4

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

    实例1:将文件全部打包成tar包

    tar -cvf log.tar log2012.log    仅打包,不压缩!  tar -zcvf log.tar.gz log2012.log   打包后,以 gzip 压缩  tar -zcvf log.tar.bz2 log2012.log  打包后,以 bzip2 压缩

                 实例2:查阅上述 tar包内有哪些文件

    tar -ztvf log.tar.gz

    实例3:将tar 包解压缩

    tar -zxvf /opt/soft/test/log.tar.gz

    实例4:只将 /tar 内的 部分文件解压出来

    tar -zxvf /opt/soft/test/log30.tar.gz log2013.log

    实例5:文件备份下来,并且保存其权限

    tar -zcvpf log31.tar.gz log2014.log log2015.log log2016.log

    实例6:在 文件夹当中,比某个日期新的文件才备份

    tar -N "2012/11/13" -zcvf log17.tar.gz test

    实例7:备份文件夹内容是排除部分文件

    tar --exclude scf/service -zcvf scf.tar.gz scf/*

     

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

    实例1:把test6目录下的每个文件压缩成.gz文件

    gzip *

    实例2:把例1中每个压缩的文件解压,并列出详细的信息

    gzip -dv *

    实例3:详细显示例1中每个压缩的文件的信息,并不解压

    gzip -l *

    实例4:压缩一个tar备份文件,此时压缩文件的扩展名为.tar.gz

    gzip -r log.tar

    实例5:递归的压缩目录

    gzip -rv test6

     chmod命令用于改变linux系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。

    实例1:增加文件所有用户组可执行权限

    chmod a+x log2012.log

     

    实例2:同时修改不同用户权限

    chmod ug+w,o-x log2012.log

     

    实例3:删除文件权限

    chmod a-x log2012.log

     

    实例4:使用“=”设置权限 

    chmod u=x log2012.log

     

    实例5:对一个目录及其子目录所有文件添加权限 

    chmod -R u+x test4

     

    在Linux系统里,文件或目录的权限的掌控以拥有者及所属群组来管理。可以使用chgrp指令取变更文件与目录所属群组,这种方式采用群组名称或群组识别码都可以。Chgrp命令就是change group的缩写!要被改变的组名必须要在/etc/group文件内存在才行。

    实例1:改变文件的群组属性 

    chgrp -v bin log2012.log

    实例2:根据指定文件改变文件的群组属性 

    chgrp --reference=log2012.log log2013.log

    实例3:改变指定目录以及其子目录下的所有文件的群组属性 

     chgrp -R bin test6

    实例4:通过群组识别码改变文件群组属性

    chgrp -R 100 test6

     chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。 

    实例1:改变拥有者和群组

    chown mail:mail log2012.log

    实例2:改变文件拥有者

    chown root: log2012.log

    实例3:改变文件群组

    chown :mail log2012.log

    实例4:改变指定目录以及其子目录下的所有文件的拥有者和群组 

     

     

       linux中df命令的功能是用来检查linux服务器的文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

    实例1:显示磁盘使用情况

    df

    实例2:以inode模式来显示磁盘使用情况

    df -i

    实例3:显示指定类型磁盘

    df -t ext3

    实例4:列出各文件系统的i节点使用情况

    df -ia

    实例5:列出文件系统的类型

    df -T

    实例6:以更易读的方式显示目前磁盘空间和使用情况 

     df -h

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

    实例1:显示目录或者文件所占空间 

     du

    实例2:显示指定文件所占空间

    du log2012.log

    实例3:查看指定目录的所占空间

    du scf

    实例4:只显示总和的大小

    du -s

    实例5:方便阅读的格式显示

    du -h test

    实例6:显示几个文件或目录各自占用磁盘空间的大小,还统计它们的总和

    du -c log30.tar.gz log31.tar.gz

    实例7:按照空间大小排序

    du|sort -nr|more

    实例8:输出当前目录下各个子目录所使用的空间

    du -h  --max-depth=1

     

      top命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,类似于Windows的任务管理器。

    实例1:显示进程信息

    top

    实例2:显示 完整命令

    top -c

    实例3:以批处理模式显示程序信息

    top -b

    实例4:以累积模式显示程序信息

    top -S

    实例5:设置信息更新次数

     top -n 2

    实例6:设置信息更新时间

    top -d 3

     

    free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

    实例1:显示内存使用情况

    free -g

     

    实例2:以总和的形式显示内存的使用信息

    free -t

     

    实例3:周期性的查询内存使用信息

    free -s 10

     

     vmstat是Virtual Meomory Statistics(虚拟内存统计)的缩写,可对操作系统的虚拟内存、进程、CPU活动进行监控。他是对系统的整体情况进行统计,不足之处是无法对某个进程进行深入分析。vmstat 工具提供了一种低开销的系统性能观察方式。因为 vmstat 本身就是低开销工具,在非常高负荷的服务器上,你需要查看并监控系统的健康情况,在控制窗口还是能够使用vmstat 输出结果。

    实例1:显示虚拟5秒时间内进行5次采样的内存使用情况

    vmstat 5 5

    实例2:显示活跃和非活跃内存

    vmstat -a 2 5

    实例3:查看系统已经fork了多少次

    vmstat -f

    实例4:查看内存使用的详细信息

    vmstat -s

    实例5:查看磁盘的读/写

    vmstat -d

    实例6:查看/dev/sda1磁盘的读/写

    vmstat -p /dev/sda1

    实例7:查看系统的slab信息

    vmstat -m

     Linux系统中的 iostat是I/O statistics(输入/输出统计)的缩写,iostat工具将对系统的磁盘操作活动进行监视。它的特点是汇报磁盘活动统计情况,同时也会汇报出CPU使用情况。同vmstat一样,iostat也有一个弱点,就是它不能对某个进程进行深入分析,仅对系统的整体情况进行分析。iostat属于sysstat软件包。可以用yum install sysstat 直接安装。

    实例1:显示所有设备负载情况

    iostat

    实例2:定时显示所有信息

    iostat 2 3  #每隔两秒显示一次,刷新三次

    实例3:显示指定磁盘信息

    iostat -d sda1

    实例4:显示tty和Cpu信息

    iostat -t

    实例5:以M为单位显示所有信息

    iostat -m

    实例6:查看TPS和吞吐量信息

    iostat -d -k 1 1

    实例7:查看设备使用率(%util)、响应时间(await)

    iostat -d -x -k 1 1

      实例8:查看cpu状态

    iostat -c 1 3

     

        lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的。

    实例1:无任何参数

    lsof

    实例2:查看谁正在使用某个文件,也就是说查找某个文件相关的进程

    lsof /bin/bash

    实例3:递归查看某个目录的文件信息

    lsof test/test3

    实例4:不使用+D选项,遍历查看某个目录的所有文件信息的方法

     lsof |grep 'test/test3'

    实例5:列出某个用户打开的文件信息

    lsof -u username

    实例6:列出某个程序进程所打开的文件信息

    lsof -c mysql

    实例7:列出多个进程多个打开的文件信息

    lsof -c mysql -c apache

    实例8:列出某个用户以及某个进程所打开的文件信息

    lsof  -u test -c mysql

    实例9:列出除了某个用户外的被打开的文件信息

    lsof -u ^root

    实例10:通过某个进程号显示该进行打开的文件

    lsof -p 1

    实例11:列出多个进程号对应的文件信息

    lsof -p 1,2,3

    实例12:列出所有的网络连接

    lsof -i

    实例13:列出所有tcp 网络连接信息

    lsof -i tcp

    实例14:列出所有udp网络连接信息

    lsof -i udp

    实例15:列出谁在使用某个端口

    lsof -i :3306

    实例16:列出某个用户的所有活跃的网络端口

    lsof -a -u test -i

    实例17:列出被进程号为1234的进程所打开的所有IPV4 network files 

    lsof -i 4 -a -p 1234

     许多windows用户非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。依赖于ifconfig命令中使用一些选项属性,ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置。

     实例1:显示网络设备信息(激活状态的)

    ifconfig

     实例2:启动关闭指定网卡

    ifconfig eth0 up ifconfig eth0 down

    实例3:为网卡配置和删除IPv6地址

    ifconfig eth0 add 33ffe:3240:800:1005::2/64 ifconfig eth0 del 33ffe:3240:800:1005::2/64

    实例4:用ifconfig修改MAC地址

    ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE

    实例5:配置IP地址

    ifconfig eth0 192.168.120.56  ifconfig eth0 192.168.120.56 netmask 255.255.255.0  ifconfig eth0 192.168.120.56 netmask 255.255.255.0 broadcast 192.168.120.255

    实例6:启用和关闭ARP协议

    ifconfig eth0 arp ifconfig eth0 -arp

    实例7:设置最大传输单元

    ifconfig eth0 mtu 1500

     

     Linux系统的route命令用于显示和操作IP路由表(show / manipulate the IP routing table)。要实现两个不同的子网之间的通信,需要一台连接两个网络的路由器,或者同时位于两个网络的网关来实现。在Linux系统中,设置路由通常是为了解决以下问题:该Linux系统在一个局域网中,局域网中有一个网关,能够让机器访问Internet,那么就需要将这台机器的IP地址设置为Linux机器的默认路由。要注意的是,直接在命令行下执行route命令来添加路由,不会永久保存,当网卡重启或者机器重启之后,该路由就失效了;可以在/etc/rc.local中添加route命令来保证该路由设置永久有效。

    实例1:显示当前路由

    route

    实例2:添加网关/设置网关

    route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0

    实例3:屏蔽一条路由

    route add -net 224.0.0.0 netmask 240.0.0.0 reject

    实例4:删除路由记录

    route del -net 224.0.0.0 netmask 240.0.0.0

    实例5:删除和添加设置默认网关

    route del default gw 192.168.120.240 route add default gw 192.168.120.240

     

     Linux系统的ping命令是常用的网络命令,它通常用来测试与目标主机的连通性,我们经常会说“ping一下某机器,看是不是开着”、不能打开网页时会说“你先ping网关地址192.168.1.1试试”。它通过发送ICMP ECHO_REQUEST数据包到网络主机(send ICMP ECHO_REQUEST to network hosts),并显示响应情况,这样我们就可以根据它输出的信息来确定目标主机是否可访问(但这不是绝对的)。有些服务器为了防止通过ping探测到,通过防火墙设置了禁止ping或者在内核参数中禁止ping,这样就不能通过ping确定该主机是否还处于开启状态。

    实例1:ping的通的情况

    ping 192.168.120.205

    实例2:ping指定次数

    ping -c 10 192.168.120.206

    实例3:时间间隔和次数限制的ping

    ping -c 10 -i 0.5 192.168.120.206

     

    netstat命令用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。netstat是在内核中访问网络及相关信息的程序,它能提供TCP连接,TCP和UDP监听,进程内存管理的相关报告。

    如果你的计算机有时候接收到的数据报导致出错数据或故障,你不必感到奇怪,TCP/IP可以容许这些类型的错误,并能够自动重发数据报。但如果累计的出错情况数目占到所接收的IP数据报相当大的百分比,或者它的数目正迅速增加,那么你就应该使用netstat查一查为什么会出现这些情况了。

    实例1:无参数使用

    netstat

    实例2:列出所有端口

    netstat -a

    实例3:显示当前UDP连接状况

    netstat -nu

    实例4:显示UDP端口号的使用情况

    netstat -apu

    实例5:显示网卡列表

    netstat -i

    例6:显示组播组的关系

    netstat -g

    实例7:显示网络统计信息

    netstat -s

    实例8:显示监听的套接口

    netstat -l

    实例9:显示所有已建立的有效连接

    netstat -n

     实例10:显示关于以太网的统计数据

    netstat -e

     实例11:显示关于路由表的信息

    netstat -r

     实例12:列出所有 tcp 端口

    netstat -at

    实例13:统计机器中网络连接各个状态个数

    netstat -a | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

    实例14:把状态全都取出来后使用uniq -c统计后再进行排序

    netstat -nat |awk '{print $6}'|sort|uniq -c

    实例15:查看连接某服务端口最多的的IP地址

    netstat -nat | grep "192.168.120.20:16067" |awk '{print $5}'|awk -F: '{print $4}'|sort|uniq -c|sort -nr|head -20

    实例16:找出程序运行的端口

    netstat -ap | grep ssh

    实例17:在 netstat 输出中显示 PID 和进程名称

    netstat -pt

    实例18:找出运行在指定端口的进程

    netstat -anpt | grep ':16064'

     

       ss是Socket Statistics的缩写。顾名思义,ss命令可以用来获取socket统计信息,它可以显示和netstat类似的内容。但ss的优势在于它能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效。

    当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢。可能你不会有切身的感受,但请相信我,当服务器维持的连接达到上万个的时候,使用netstat等于浪费 生命,而用ss才是节省时间。

    天下武功唯快不破。ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效。当然,如果你的系统中没有tcp_diag,ss也可以正常运行,只是效率会变得稍慢。(但仍然比 netstat要快。)

    实例1:显示TCP连接

    ss -t -a

    实例2:显示 Sockets 摘要

    ss -s

    实例3:列出所有打开的网络连接端口

    ss -l

    实例4:查看进程使用的socket

    ss -pl

    实例5:找出打开套接字/端口应用程序

    ss -lp | grep 3306

    实例6:显示所有UDP Sockets

    ss -u -a

    实例7:显示所有状态为established的SMTP连接

    ss -o state established '( dport = :smtp or sport = :smtp )'

    实例8:显示所有状态为Established的HTTP连接

    ss -o state established '( dport = :http or sport = :http )'

    实例9:列举出处于 FIN-WAIT-1状态的源端口为 80或者 443,目标网络为 193.233.7/24所有 tcp套接字

    ss -o state fin-wait-1 '( sport = :http or sport = :https )' dst 193.233.7/24

    实例10:用TCP 状态过滤Sockets:

    ss -4 state closing

    实例11:匹配远程地址和端口号

    ss dst 192.168.119.113

    实例12:匹配本地地址和端口号

    ss src 192.168.119.103:16021

     

    telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式。它为用户提供了在本地计算机上完成远程主机工作的 能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样。可以在本地就能控制服务器。要开始一个 telnet会话,必须输入用户名和密码来登录服务器。Telnet是常用的远程控制Web服务器的方法。

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

    telnet命令还可做别的用途,比如确定远程服务的状态,比如确定远程服务器的某个端口是否能访问。

    实例1:判断远程服务器是否可以访问

    telnet 192.168.120.206

    实例2:判断域名是否无法解析

    telnet www.baidu.com

    实例3:启动telnet服务

    service xinetd restart

    实例4:判断某个端口是否对本机放通

    telnet 192.168.2.42 8080

     

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

    实例1:从远处复制文件到本地目录

    scp root@192.168.120.204:/opt/soft/nginx-0.5.38.tar.gz /opt/soft/

    实例2:从远处复制到本地

    scp -r root@192.168.120.204:/opt/soft/mongodb /opt/soft/

    实例3:上传本地文件到远程机器指定目录

    scp /opt/soft/nginx-0.5.38.tar.gz root@192.168.120.204:/opt/soft/scptest

    实例4:上传本地目录到远程机器指定目录

    scp -r /opt/soft/mongodb root@192.168.120.204:/opt/soft/scptest

     

      ln是linux中又一个非常重要命令,它的功能是为某一个文件在另外一个位置建立一个同步的链接.当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在 其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。    

            链接可分为两种 : 硬链接(hard link)与软链接(symbolic link),硬链接的意思是一个档案可以有多个名称,而软链接的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链接是存在同一个文件系统中,而软链接却可以跨越不同的文件系统。

    实例1:给文件创建软链接

    ln -s log2013.log link2013

    实例2:给文件创建硬链接

    ln log2013.log ln2013

    实例3:将文件链接为另一个目录中的相同名字

    ln log2013.log test3

    实例4:给目录创建软链接

    ln -sv /opt/soft/test/test3 /opt/soft/test/test5

     

     diff 命令是 linux上非常重要的工具,用于比较文件的内容,特别是比较两个版本不同的文件以找到改动的地方。diff在命令行中打印每一个行的改动。最新版本的diff还支持二进制文件。diff程序的输出被称为补丁 (patch),因为Linux系统中还有一个patch程序,可以根据diff的输出将a.c的文件内容更新为b.c。diff是svn、cvs、git等版本控制工具不可或缺的一部分。

    实例1:比较两个文件

    diff log2014.log log2013.log

    实例2:并排格式输出

    diff log2013.log log2014.log  -y -W 50

    实例3:上下文输出格式

    diff log2013.log log2014.log  -c

    实例4:统一格式输出

    diff log2014.log log2013.log  -u

    实例5:比较文件夹不同

    diff  test3 test6

    实例6:比较两个文件不同,并生产补丁

    diff -ruN log2013.log log2014.log >patch.log

    实例7:打补丁

     patch log2013.log patch.log

     

     在linux环境中,不管是编程还是其他维护,时间是必不可少的,也经常会用到时间的运算,熟练运用date命令来表示自己想要表示的时间,肯定可以给自己的工作带来诸多方便。

    实例1:显示当前时间

     date

    实例2:显示日期和设定时间

    date --date 08:42:00

    实例3:date -d参数使用

    date -d "nov 22"  今年的 11 月 22 日是星期三 date -d '2 weeks' 2周后的日期 date -d 'next monday' (下周一的日期) date -d next-day +%Y%m%d(明天的日期)或者:date -d tomorrow +%Y%m%d date -d last-day +%Y%m%d(昨天的日期) 或者:date -d yesterday +%Y%m%d date -d last-month +%Y%m(上个月是几月) date -d next-month +%Y%m(下个月是几月) 使用 ago 指令,您可以得到过去的日期: date -d '30 days ago' (30天前的日期) 使用负数以得到相反的日期: date -d 'dec 14 -2 weeks' (相对:dec 14这个日期的两周前的日期) date -d '-100 days' (100天以前的日期) date -d '50 days'(50天后的日期)

    实例4:显示月份和日数

    date  '+%B %d'

    实例5:显示时间后跳行,再显示目前日期 

    date '+%T%n%D'

        cal命令可以用来显示公历(阳历)日历。公历是现在国际通用的历法,又称格列历,通称阳历。“阳历”又名“太阳历”,系以地球绕行太阳一周为一年,为西方各国所通用,故又名“西历”。

    实例1:显示当前月份日历

    cal

    实例2:显示指定月份的日历

    cal 9 2012

    实例3:显示2013年日历

    cal 2013

    实例4:显示自1月1日的天数

    cal -j

    实例5:星期一显示在第一列

    cal -m

     

    Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹 配的行打印出来。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

    grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。

    grep可用于shell脚本,因为grep通过返回一个状态值来说明搜索的状态,如果模板搜索成功,则返回0,如果搜索不成功,则返回1,如果搜索的文件不存在,则返回2。我们利用这些返回值就可进行一些自动化的文本处理工作。

    实例1:查找指定进程

    ps -ef|grep svn

    实例2:查找指定进程个数

    ps -ef|grep svn -c

    实例3:从文件中读取关键词进行搜索

    cat test.txt | grep -f test2.txt

    实例3:从文件中读取关键词进行搜索 且显示行号

    cat test.txt | grep -nf test2.txt

    实例5:从文件中查找关键词

    grep 'linux' test.txt

    实例6:从多个文件中查找关键词

    grep 'linux' test.txt test2.txt

    实例7:grep不显示本身进程

    ps aux | grep ssh | grep -v "grep"

    实例8:找出已u开头的行内容

    cat test.txt |grep ^u

    实例9:输出非u开头的行内容

    cat test.txt |grep ^[^u]

    实例10:输出以hat结尾的行内容

    cat test.txt |grep hat$

    实例12:显示包含ed或者at字符的内容行

    cat test.txt |grep -E "ed|at"

    Linux系统中的wc(Word Count)命令的功能为统计指定文件中的字节数、字数、行数,并将统计结果显示输出。

    实例1:查看文件的字节数、字数、行数

    wc test.txt   #行数 单词数 字节数 文件名

    实例2:用wc命令做到只打印统计数字不打印文件名

    wc -l test.txt

    实例3:用来统计当前目录下的文件数

    ls -l | wc -l

     

    Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。

    要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。总之大部分信息都是可以通过执行该命令得到的。

    ps 为我们提供了进程的一次性的查看,它所提供的查看结果并不动态连续的;如果想对进程时间监控,应该用 top 工具。

    kill 命令用于杀死进程。

    linux上进程有5种状态: 

    1. 运行(正在运行或在运行队列中等待) 

    2. 中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号) 

    3. 不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生) 

    4. 僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放) 

    5. 停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行) 

    ps工具标识进程的5种状态码: 

    D 不可中断 uninterruptible sleep (usually IO) 

    R 运行 runnable (on run queue) 

    S 中断 sleeping 

    T 停止 traced or stopped 

    Z 僵死 a defunct (”zombie”) process 

    实例1:显示所有进程信息

    ps -A

    实例2:显示指定用户信息

    ps -u root

    实例3:显示所有进程信息,连同命令行

    ps -ef

    实例4: ps 与grep 常用组合用法,查找特定进程

    ps -ef|grep ssh

    实例5:将目前属于您自己这次登入的 PID 与相关信息列示出来

    ps -l

    实例6:列出目前所有的正在内存当中的程序

    ps aux

    实例7:列出类似程序树的程序显示

    ps -axjf

    实例8:找出与 cron 与 syslog 这两个服务有关的 PID 号码

    ps aux | egrep '(cron|syslog)'

    watch是一个非常实用的命令,基本所有的Linux发行版都带有这个小工具,如同名字一样,watch可以帮你监测一个命令的运行结果,省得你一遍遍的手动运行。在Linux下,watch是周期性的执行下个程序,并全屏显示执行结果。你可以拿他来监测你想要的一切命令的结果变化,比如 tail 一个 log 文件,ls 监测某个文件的大小变化。

    实例1:每隔一秒高亮显示网络链接数的变化情况

    watch -n 1 -d netstat -ant

    实例2:每隔一秒高亮显示http链接数的变化情况

    watch -n 1 -d 'pstree|grep http'

    实例3:实时查看模拟攻击客户机建立起来的连接数

    watch 'netstat -an | grep:21 | \ grep<模拟攻击客户机的IP>| wc -l'

    实例4:监测当前目录中 scf' 的文件的变化

    watch -d 'ls -l|grep scf'

    实例5:10秒一次输出系统的平均负载

    watch -n 10 'cat /proc/loadavg'

     

    crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。

    Linux下的任务调度分为两类,系统任务调度和用户任务调度。

    系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。

     

    crontab文件的含义:

    用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:

    minute   hour   day   month   week   command

    其中:

    minute: 表示分钟,可以是从0到59之间的任何整数。

    hour:表示小时,可以是从0到23之间的任何整数。

    day:表示日期,可以是从1到31之间的任何整数。

    month:表示月份,可以是从1到12之间的任何整数。

    week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。

    command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。

     

    实例1:每1分钟执行一次command

    * * * * * command

    实例2:每小时的第3和第15分钟执行

    3,15 * * * * command

    实例3:在上午8点到11点的第3和第15分钟执行

    3,15 8-11 * * * command

    实例4:每隔两天的上午8点到11点的第3和第15分钟执行

    3,15 8-11 */2 * * command

    实例5:每个星期一的上午8点到11点的第3和第15分钟执行

    3,15 8-11 * * 1 command

    实例6:每晚的21:30重启smb 

    30 21 * * * /etc/init.d/smb restart

    实例7:每月1、10、22日的4 : 45重启smb 

    45 4 1,10,22 * * /etc/init.d/smb restart

    实例8:每周六、周日的1 : 10重启smb

    10 1 * * 6,0 /etc/init.d/smb restart
    最新回复(0)