Linux基础及常用命令

Linux系统基础

Linux系统是一个类Unix操作系统,设计初衷为替代Unix系统。系统命令实际上是一个在用户编程接口上的可执行程序,内部引用API来实现相应的功能。

与Windows系统不同,Linux系统中所有部件(包括硬件)均使用文件保存,且不存在多个并列驱动器盘符,即不存在多个并列根目录,而是所有目录均在同一根目录下。Windows系统使用扩展名区分文件,而Linux系统中不存在扩展名概念,为方便区分使用部分扩展。

目录结构

  • /bin:存放二进制可执行文件,常用命令一般存放在此处。
  • /etc:存放系统管理和配置文件。
  • /home:存放所有用户文件的根目录,是用户主目录的基点,可使用~表示。
  • /usr:用于存放系统应用程序,比较重要的目录/usr/local是本地系统管理员软件安装目录,用于存放系统级应用。
  • /opt:额外安装的可选应用程序包存放的位置。
  • /proc:此目录的数据如系统核心、外部设备、网络状态等均存放于内存中,不占用磁盘空间。较为重要的目录有:/proc/cpuinfo/proc/interrupts/proc/dma/proc/net/*等。
  • /root:系统管理员root的家目录。
  • /sbin、/usr/sbin、/usr/local/sbin:放置系统管理员使用的可执行命令,如fdskshutdownmount等。由于这些目录存放root用户可使用的命令,故一般用户只能查看而无法设置和使用。
  • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人均可访问。
  • /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,所有登录文件存放目录/var/log/message,邮件存放目录/var/spool/mail,程序或服务启动后PID存放目录/var/run

基本操作

命令基础知识

  • Linux系统命令区分大小写,而Windows系统命令对大小写不敏感
  • Tab补全

进出目录命令 cd

  • .代表当前目录,..代表父目录,~代表用户的个人主目录。
  • 常用选项
    • cd ~:进入当前用户主目录
    • cd -:返回进入此目录之前所在的目录
    • cd !$:将上个命令的参数作为cd参数使用

查看目录信息 ls

ls命令列出文件或目录信息,常用参数如下:

  • -a:显示包含以”.”开头的隐藏文件。
  • -A:显示指定目录下所有的子目录及文件,包括隐藏文件,但不显示”.”和”..”。
  • -c:按文件的修改时间排序。
  • -C:分成多列显示各行。
  • -d:如果参数为目录,只显示其名称而不显示其下的各个文件。
  • -l:以长格形式显示文件的详细信息

常用命令

查看文件命令

Linux系统文件概述

文件系统.png-570.2kB

cat命令

该命令主要用于滚屏显示文件内容。常用选项参数如下:

  • -b:对输出内容中的非空行标注行号。
  • -n:对输出内容中的所有行标注行号。

more命令

使用more命令可以实现分屏显示文件内容。按下【Enter】键可以向下移动一行,按下【Space】键可以向下移动一页,按【q】键可以退出more命令。常用选项参数如下:

  • -num:用来指定分页显示时每页的行数。
  • +num:指定从文件的第num行开始显示。

less命令

作为more命令的改进版,具有更加强大的功能, 可以实现向上向下翻页以及前后左右移动。

进入less状态后可执行以下操作:

  • 按【Enter】键向下移动一行
  • 按【Space】键向下移动一页
  • 按【b】键向上移动一页
  • 使用光标键向前后左右移动
  • 按【q】键退出less命令
  • 按下【/】后输入待查找的单词可实现快速查找

head命令

该命令用于显示文件的开头部分,默认情况下只显示前10行的内容。常用选项参数如下:

  • -n num:显示指定文件的前num行
  • -c num:显示指定文件的前num个字符

tail命令

该命令用于显示文件的末尾部分,默认情况下只显示文件的末尾10行内容。常用选项参数如下:

  • -n num:显示指定文件的末尾num行
  • -c num:显示指定文件的末尾num个字符
  • +num:从第num行开始显示指定文件的内容

查找文件或目录命令

find命令

find命令支持多种查找模式匹配,具有强大的查找功能。语法为find path [parameter]。常用选项参数如下:

  • -name <表达式>:根据文件名查找文件

  • -user <用户名>:按归属用户查找文件

  • -type <文件类型>:根据文件类型查找文件(b块设备、c字符设备、d目录、p管道文件、f普通文件、l链接、s端口文件)

  • -size <大小>:根据文件大小进行查找

  • |xargs tar cvzf <文件名>:将查询结果压缩

grep命令

grep命令用于查找文件中包含指定字符串的行。语法为grep [parameter] aimed_string filename。常用选项参数如下:

  • -v:列出不匹配的行
  • -c:对匹配的行计数
  • -l:只显示包含匹配模式的文件名
  • -h:抑制包含匹配模式的文件名的显示
  • -n:每个匹配行只按照相对行号显示
  • -i:匹配模式不区分大小写

cp命令

该命令主要用于文件或目录的复制。常用选项参数如下:

  • -f:如果目标文件或目录存在,则执行覆盖操作,并且不进行用户提示。
  • -i:如果目标文件或目录存在,提示是否覆盖已有文件。
  • -R:递归复制目录,即包含目录下的各级子目录。

mv命令

在不同目录之间进行操作,则该命令用于文件或目录的移动。在相同目录之间进行操作,则该命令用于文件或目录的改名。常用选项参数如下:

  • -i:如果目标文件或目录存在,提示是否覆盖。
  • -f:无论目标文件或目录是否存在,均直接覆盖并不进行提示。

df命令

该命令主要用来查看文件系统各个分区的占用情况。命令列出系统上所有已挂载的分区大小、已占用的空间、可用空间以及占有率。

du命令

该命令主要用来查看某个目录中的各级子目录所使用的硬盘空间数。常用选项参数如下:

  • -a:显示目录中个别文件的大小。
  • -c:除显示个别目录或文件大小外,同时显示所有目录或文件的总和。
  • -k/-m:以KB/MB为单位输出结果。
  • -s:仅显示总计。
  • -h:以K,M,G为单位,提高信息的可读性。
  • --max-depth=k:显示k级目录的情况。

常用Linux命令及作用

ping命令

该命令常用来测试与目标主机的连通性。通过发送ICMP ECHO_REQUEST数据包到网络主机并显示响应情况来判断连通状态。常用选项参数如下:

  • -c packet_number:在发送指定数目的数据包后停止。
  • -s byte_number:指定发送的数据字节数,预设值为56,加上8字节ICMP头共构成64字节ICMP数据。一般设定为千数量级来探测大包的发送能力。
  • -i time:设定间隔几秒发送一个网络封包给一台机器,预设值为1s。
  • -t TTL:设置存活数值TTL的大小。

ifconfig命令

该命令用来配置或查看网卡接口。单独使用ifconfig时,只显示激活状态的网络设备信息。常用参数选项如下:

  • up:启动指定网络设备/网卡。
  • down:关闭指定网络设备/网卡。只起到临时阻止指定接口IP信息流的作用,若需永久关闭则需要从核心路由表中删除接口全部信息。
  • -a:显示全部接口信息。
  • -s:显示摘要信息。
  • add:给指定网卡配置IP。
  • del:删除指定网卡地址。

netstat命令

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

  • -a:显示所有连线中的socket。
  • -n:不通过域名服务器直接使用IP地址。
  • -t/-u:显示TCP/UDP传输协议的连线状况。
  • -p:显示正在使用socket的程序识别码和程序名称。
  • -c:持续列出网络状态。

route命令

该命令用于显示和操作IP路由表。常用参数选项如下:

  • add/del:添加/删除一条路由规则。
  • -net/-host:目的地址是一个网络/主机。
  • target:目的网络或主机。
  • netmask:目的地址网络掩码。
  • gw:指定路由数据包通过的网关。
  • dev:为路由指定的网络接口。

tcpdump命令

该命令将网络中传输的数据包报头信息完全截获以供分析,支持针对网络层、协议、主机、网络或端口的过滤,提供and、or、not等连接词用以构建完整过滤逻辑。常用参数选项如下:

  • -i:指定监听的网络接口。
  • -v:输出稍微详细的报文信息。
  • -vv:输出详细报文信息。
  • -c:指定数据包数量,收到该数量的数据包后,tcpdump停止。
  • -e:在输出行打印出数据链路层的头部信息,包括源mac和目的mac,以及网络层协议。
  • -f:将外部的Internet地址以数字的形式打印出来。
  • -w:直接将包写入文件,不进行分析和打印。
  • -X:将原始协议头和包内容显示出来(默认以十六进制和ASCII形式显示)。

iptables命令

iptables服务不是真正的防火墙,只作为用来定义防火墙规则功能的管理工具,其将定义好的规则交由内核中的netfilter即网络过滤器进行读取,从而实现防火墙功能。我们经常使用以下两条命令:

  • iptables -L -n:显示当前所有防火墙过滤规则。
  • service iptables stop:关闭防火墙过滤规则,实现全连通。

iperf命令

iperf作为网络性能测试工具,可以测试最大TCP和UDP的带宽性能,具有多种参数和UDP特性,可以根据需要进行调整,多用以报告带宽、延迟抖动和数据包丢失。该命令结合C/S架构进行使用。

ethtool命令

该命令用于查询及设置网卡参数。常用选项:

  • ethtool -i ethX:查询ethX网口的相关信息。
  • ethtool -d ethX:查询ethX网口注册性信息。
  • ethtool -r ethX:重置ethX网口到自适应模式。
  • ethtool -S ethX:查询ethX网口收发包统计。
  • ethtool -s ethX [speed 10|100|1000]:设置网口速率为10/100/1000M。

telnet命令

该命令通常由于远程登录,还可用于确定远程服务的状态即某个端口是否开放访问。但由于telnet协议报文采用明文传输,故安全性较差,Linux系统中telnet服务多被ssh取代。

free命令

该命令主要用来查看系统内存和虚拟机内存的大小及占用情况。常用选项参数如下:

  • -b/-k/-m/-g:以Byte/KB/MB/GB为单位显示内存使用情况。
  • -s <gap seconds>:持续观察内存使用状况。
  • -t:显示内存总和列。

ps命令

该命令主要用于查看系统的进程。常用以下参数选项:

  • -a:显示当前控制终端的进程。
  • -u:显示进程的用户名和启动时间等信息。
  • -x:显示没有控制终端的进程。

kill命令

前台进程运行时,可以使用【Ctrl+C】的组合来终止它,后台进程则使用kill命令向进程发送强制终止信号,以达到终止进程的目的。

top命令

该命令用于实时监控进程的状况,默认5s刷新一次,可以使用top -d time设定top屏幕刷新的时间间隔。

top演示.PNG-88.3kB

关机命令

  • shutdown
    • shutdown -h:关闭计算机。
    • shutdown -r:重新启动。
  • reboot == shutdown -r now
  • poweroff == shutdown -h now
请作者吃个小鱼饼干吧