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:放置系统管理员使用的可执行命令,如
fdsk
、shutdown
、mount
等。由于这些目录存放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系统文件概述
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屏幕刷新的时间间隔。
关机命令
- shutdown
shutdown -h
:关闭计算机。shutdown -r
:重新启动。
- reboot ==
shutdown -r now
- poweroff ==
shutdown -h now