Linux常用命令

Posted kris12

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux常用命令相关的知识,希望对你有一定的参考价值。

 

1. Linux常用命令

目录操作

ls 显示目录下的内容(ls -a 、 ls -l 等等)

cd 切换所在目录 (~家目录、-上次所在目录、 .当前目录、 ..上级目录)

pwd 查询所在目录  

mkdir 创建目录 (-p递归创建所需多级目录)  

rmdir 删除目录 ,只能删除空目录(-p递归删除目录),一般使用rm

 

文件操作

touch 创建空文件或修改文件时间  如touch 1.txt

stat 查看文件详细信息,且可以看到文件的三个时间。

cat 查看文件内容  (-A 列出所有隐藏符合、-E列出每行结尾的回车符$、-n 行号、-T把Tab键用^I显示出来、-v列出特殊字符)

more 分屏显示文件 (空格键 向下翻页、b向上翻页、回车键向下滚动一行、/字符串 搜索指定字符串、q:退出)

less 分行显示 跟more类似

head 显示文件开始 (-n 行数 指从文件开始,显示指定行数、 -v显示文件名)

tail 显示文件结尾 (-n 行数 指文件结尾开始,显示指定行数、-f监听文件新增内容)

ln 在文件之间建立连接 (ln [选项] 源文件  目标文件) (-s 建立软连接文件,不加则建立硬连接文件、-f强制 如果目标文件存在,则删除目标文件后建立链接文件)

 

  软连接和硬链接的特征:

软链接与硬链接的特征
硬链接特征:
 源文件和硬链接文件拥有相同的Inode和Block
 修改任意一个文件,另一个都改变
 删除任意一个文件,另一位都能使用
 硬链接标记不清,很难确认硬链接文件位置,不建议使用
 硬链接不能链接目录
 硬链接不能跨区 
软链接特征:
 软链接和源文件拥有不同的Inode和Block
 两个文件修改任意一个,另一个都改变
 删除软链接,源文件不受影响:删除源文件,软链接不能使用
 软链接没有实际数据,只保存源文件的Inode,不论源文件多大,软链接大小不变 
 软链接的权限是最大权限 lrwxrwxrwx., 但是由于没有实际数据,最终访问时需要参考源文件权限
 软链接可以链接目录
 软链接可以跨分区
 软链接特征明显,建议使用软链接。
 
View Code

目录和文件都能操作的命令

rm 不仅删文件还删内容 (-f强制删除、-r递归删除、-i交互删除,删除之前会询问用户)

cp 复制文件和目录 (-r 递归复制、-p复制后目标文件保留源文件的属性(包括所有者、所属组、权限和时间)、-d若源文件为软链接则复制后也是软链接、-a相当于dpa的集合、-i询问,如果目标文件存在是否覆盖)
  
mv 移动文件或改名 (-f强制覆盖、-i交互、-v显示详细信息)

 

基本权限管理

   

[kris@hadoop101 bin]$ ls -l kf.sh 
-rwxr-xr-x 1 root root 523 2月   7 2020 kf.sh

第1.位代表文件类型, 详细分类可查看 info ls 命令查看 
    - 普通文件;
    b 块设备文件。如分区文件/dev/sda1 
    c 字符设备文件, 输入设备如鼠标、键盘等
    d 目录文件 目录 
    l 软链接文件 
    p 管道符文件 
    s 套接字文件 支持Socket访问
第2-4位代表文件所有者的权限。 r 表read 读权限; w 表write 写权限; x 表execute 执行权限; 如果是-代表没有对应的权限 
第5-7位代表文件所属组的权限,同样拥有"rwx"权限;
第8-10位代表其他人的权限, 同样拥有"rwx"权限。

chmod [选项]  权限模式  文件名   

选项: -R 是递归设置权限,即给子目录中的所有文件设定权限。

权限模式:
[ugoa][[+-=][perms]] 即[用户身份][[赋予方式][权限]]
用户身份: u 所有者(user)、 g所属组(group)、o其他人(other) 、a 全部身份(all)
赋予方式: + 加入权限、 - 减去权限、 = 设置权限 
权限: r 读取权限(read) 、 w 写权限(write)、x 执行权限(execute)

数字权限:
4"r"2"w"权限, 1"x"权限 

常用权限:
644 表文件的基本权限,代表所有者拥有读、写权限,而所属组和其他人拥有只读权限。
755 这是文件的执行权限和目录的基本权限,代表所有者拥有读、写和执行权限,而所属组和其他人拥有读和执行权限。
777 这是最大权限,尽力避免给文件或目录赋予这样的权限,会造成一定的安全隐患。

目录的可用权限:
0 任何权限都不赋予;
5 基本目录浏览和进入权限;
7 完全权限。


chmod 修改文件和目录的所有者和所属组
  chmod [选项] 所有者:所属组 文件或目录
  选项: -R 递归设置权限,即给子目录中的所有文件设置权限。

chgrp 修改文件和目录的所属组

umask 查看系统的umask权限
  [kris@hadoop101 bin]$ umask #用八进制数值显示umask 权限
    0002
  [kris@hadoop101 bin]$ umask -S #用字母表示文件和目录的初始权限
    u=rwx,g=rwx,o=rx

  对文件来讲, 新建文件的默认权限是666(umask值是022), 没有执行权限。
  对目录来讲,新建目录最大权限是777(umask值是022),因为目录的执行权限仅仅是进入目录。

帮助命令

man (-f 查看命令拥有哪个级别的帮助、 -f查看和命令相关的所有帮助)
man -f <==> whatis 、 man -k <==> apropos 
info 
help 
--help 如 ls --help

搜索命令

whereis 只能搜索系统命令,不能搜索普通文件

which 也是搜索系统命令 与whereis 的区别:
whereis 可以查找到二进制命令的同时,查找到帮助文档的位置;
which 在查找二进制命令的同时,如果有别名则还可以找到别名。

locate 按照文件名搜索普通文件
  优点:按照数据库(位置/var/lib/mlocate/mlocate.db)搜索,速度快、消耗资源少。可以使用updatedb强制更新数据库。
  缺点:只能按文件名来搜索文件,不能执行更复杂的搜索,比如按权限、大小、修改时间等。

[kris@hadoop101 bin]$ vim /etc/updatedb.conf 
PRUNE_BIND_MOUNTS = "yes" 
#开启搜索限制,即让这个配置文件生效
PRUNEFS = "9p afs anon_inodefs auto autofs bdev binfmt_misc cgroup cifs coda configfs cpuset debugfs devpts ecryptfs exofs
 fuse fusectl gfs gfs2 gpfs hugetlbfs inotifyfs iso9660 jffs2 lustre mqueue ncpfs nfs nfs4 nfsd pipefs proc ramfs rootfs r
pc_pipefs securityfs selinuxfs sfs sockfs sysfs tmpfs ubifs udf usbfs vmhgfs"
#在locate执行搜索时,禁止搜索这些文件系统类型
PRUNENAMES = ".git .hg .svn"
#在locate执行搜索时,禁止搜索带有这些扩展名的文件
PRUNEPATHS = "/afs /media /net /sfs /tmp /udev /var/cache/ccache /var/spool/cups /var/spool/squid /var/tmp"
#在locate执行搜索时,禁止搜索这些系统目录
~ 
View Code

find 在目录中搜索文件

find 搜索路径 [选项] 搜索内容

按照文件名搜索

选项:
-name 按文件名搜索 (比如 find . -name text.txt  在. 当前目录查找text.txt的文件。)
-iname 按文件名搜索,不区分文件名大小写 
-inum 按inode号搜索 (ls -i text.txt 查看inode号; find . -inum 3019582)

按照文件大小搜索、按照修改时间搜索、按照权限搜索、按照所有者和所属组搜索、按照文件类型搜索、逻辑运算符、其他选项 (-exec,  -ok)
 

find 查找文件或者目录

(1)按文件名:根据名称查找/目录下的filename.txt文件。
  [root@hadoop101 ~]# find xiyou/ -name “*.txt”
(2)按拥有者:查找/opt目录下,用户名称为-user的文件   [root@hadoop101 ~]# find xiyou/ -user kris
(3)按文件大小:在/home目录下查找大于200m的文件(+n 大于 -n小于 n等于)   [root@hadoop101 ~]find /home -size +204800

管道符

1) 行提取命令 grep

[kris@hadoop101 ~]$ grep "/bin/bash" /etc/passwd #查找用户信息文件/etc/passwd 中,有多少可以登录的用户    

[kris@hadoop101 ~]$ grep -A 3 "root" /etc/passwd #查找包含root的行,并列出后序的3行

[kris@hadoop101 ~]$ grep -n "/bin/bash" /etc/passwd #查找可以登录的用户,并显示行号

[kris@hadoop101 ~]$ grep -v "/bin/bash" /etc/passwd #查找不含有/bin/bash 的行,其实就是列出所有的伪用户

grep的作用是在文件中提取和匹配符合条件的字符串行。

格式: grep [选项] "搜索内容" 文件名

选项:
  -A 数字 #列出符合条件的行,并列出后序的n行
  -B 数字 #列出符合条件的行,并列出前面的n行
  -c    #统计找到符合条件的字符串的次数   
-i   #忽略大小写   -n    #输出行号   -v    #反向查找   --colors=auto #搜索出的关键字用颜色显示

2) find和grep命令的区别 

find命令用于在系统中搜索符合条件的文件名,如果需要模糊查询,则使用通配符进行匹配,搜索时文件名是完全匹配

grep命令用于在文件中搜索符合条件的字符串,如果需要模糊查询,则使用正则表达式进行匹配,正则表达式是包含匹配

find . -name "abc"  #在当前目录.下搜索文件名是abc的文件,只会找到abc文件,find是完全匹配,abcd文件虽包含但也不匹配
grep "abc" test.txt #只要数据行中包含abc, 就会都列出

3) 管道符

ll -a /etc/ more

netstat -an | grep "ESTABLISHED"   #查询下本地所有网络连接,提取包含ESTABLISHED的行;

命令格式: 命令1 | 命令2 表示命令1的正确输出作为命令2的操作对象

例如: 

ll -a /etc/ > /kris/testFile  #用输出重定向,把ll命令的输出保存到/kris/testFile文件中
more /kris/testFile  #分屏显示 
ll -a /etc/ | more  #利用管道符 
ll -a /etc/ | grep yum  #在/etc/的结果中搜索yum的文件名
netstat -an | grep "ESTABLISHED" #查询下本地所有网络连接,提取包含ESTABLISHED(已建立连接的行),就可以知道服务器上有多少已经成功连接的网络连接
netstat -an | grep "ESTABLISHED" | wc -l  #想知道具体的网络连接数量,使用wc命令来统计行数

 

通配符和正则表达式

通配符:用于匹配符合条件的文件名,完全匹配;

正则表达式:用于在文件中匹配符合条件的字符串,包含匹配。

 他们的区别只在shell中适用,因为用来在文件当中搜索字符串的命令,如grep、 awk、 sed等命令可以支持正则,而在系统当中搜索文件的命令如ls、 find、 cp这些不支持正则,

所以只能使用shell自己的通配符来进行匹配。

通配符

通配符

含义

*

匹配 0 个或任意多个任意字符,即匹配任何内容。

.

匹配除了换行符外任意一个字符。

^

匹配行首。例如 ^hello会匹配以hello开头的行

$

匹配行尾。例如 hello$ 会匹配以hello结尾的行。

?

匹配一个任意字符

[]

匹配中括号中指定的任意一个字符,只匹配一个字符。

例如[abc] 代表一定匹配一个字符,或者是a,或者是b,或者是c

[-]

匹配中括号中任意一个字符,-代表一个范围。例如 [a-z] 代表匹配一个小写字母。

[^]

逻辑非,表示匹配除不是中括号内的一个字符。例如 [^0-9] 代表匹配一个不是数字的字符。
ls *       # "*"代表所有文件;
012  0abc  abc  abcd
ls ?abc # "?"匹配任意一个字符,所以会匹配0abc, 但是不能匹配abc文件,因为"?"不能匹配空 0abc
ls [0-9]* # 匹配任何以数字开头的文件 012 0abc
ls [^0-9]* # 匹配不以数字开头的文件 abc abcd

 

正则符

 

正则符  作用
 ?  

匹配前一个字符重复0次,或1次(?是扩展正则,需要使用egrep命令)

 * 匹配前一个字符重复0次,或任意多次 
[]   

匹配中括号中任意一个字符,例如[abc] 代表一定匹配一个字符,或者是a,或者是b,或者是c

[-]

 

匹配中括号中任意一个字符,-代表一个范围。例如 [a-z] 代表匹配一个小写字母。

[^]

逻辑非,表示匹配不是中括号内的一个字符。例如 [^0-9] 代表匹配一个不是数字的字符。

^

匹配行首

$

匹配行尾

.

任意单个字符

[]

字符范围。如[a-z]

Bash中的其他特殊符号

符号 作用
\' \' 单引号。在单引号中所有的特殊符号,如"$" 和"`" (反引号)都没有特殊含义。
" " 双引号。在双引号中特殊符号都没有特殊含义,但是"$"、"`"和"\\"是例外,拥有"调用变量的值"、"引用命令"和"转义符"的特殊含义。
`` 反引号。反引号括起来的内容是系统命令,在Bash中会先执行它。和$()作用一样,不过推荐使用$(),因为反引号非常容易看错。
$() 和反引号作用一样,用来引用系统命令。
() 用于一串命令执行时,()中的命令会在子shell中运行。
{} 用于一串命令执行时,()中的命令会在当前shell中执行。也可以用于变量变形与替换。
[] 用于变量的测试。
# 在shell脚本中,#开头的行代表注释。
$ 用于调用变量的值,如需要调用变量name的值时,需要用$name的方式得到变量的值。
\\ 转义符,跟在\\之后的特殊符号将失去特殊含义,变为普通字符。如\\$将输出"$"符号,而不是当做是变量的引用。
1)单引号和双引号
[kris@hadoop101 test]$ name=sc #定义变量name的值是sc
[kris@hadoop101 test]$ echo \'$name\' #如果输出时用单引号,则$name原封不动的输出
$name
[kris@hadoop101 test]$ echo "$name" #如果输出时用双引号,则会输出变量name的值
sc
[kris@hadoop101 test]$ echo `date`  #反引号括起来的命令会正常执行
2021年 03月 28日 星期日 09:36:16 CST
[kris@hadoop101 test]$ echo \'`date`\' #如果反引号命令被单引号括起来,那么这个命令不会执行,`date`会被当做普通字符输出
`date`
[kris@hadoop101 test]$ echo "`date`" #如果是双引号括起来,那么这个命令又会正常执行。
2021年 03月 28日 星期日 09:36:43 CST


2)反引号
[kris@hadoop101 test]$ echo ls
ls

[kris@hadoop101 test]$ echo `ls`
012 0abc abc abcd

[kris@hadoop101 test]$ echo $(date)
2021年 03月 28日 星期日 09:38:02 CST


3)小括号、中括号和大括号 
  父子Shell,在Bash中, 可以调用新的Bash如:
  bash
  通过pstree命令查看进程数:

     ├─sshd───sshd───sshd───bash───pstree
     
[kris@hadoop101 test]$ bash
[kris@hadoop101 test]$ pstree
init─┬─ManagementAgent───2*[{ManagementAgen}]
...
     ├─sshd───sshd───sshd───bash───bash───pstree

小括号和大括号的区别:
如果是用于一串命令的执行,那么小括号和大括号的主要区别在于:
()执行一串命令时,需要重新开一个子shell进行执行;
{}执行一串命令时,是在当前shell执行;
()和{}都是把一串的命令放在括号里面,并且命令之间用;号隔开;
()最后一个命令可以不用分号, {}最后一个命令要用分号;
{}的第一个命令和左括号执行必须要有一个空格; ()里的各命令不必和括号有空格;
()和{}中括号里面的某个命令的重定向只影响该命令,但括号外的重定向则影响到括号里的所有命令。

例子:
[kris@hadoop101 test]$ echo $name #父shell中定义变量name的值是sc
sc
[kris@hadoop101 test]$ (name=kris;echo $name) #如果用()括起来一串命令,这些命令都可以执行; 给name变量重新赋值,但是这个值只在子shell中生效
kris
[kris@hadoop101 test]$ echo $name #父shell中的name值还是sc,而不是kris
sc

[kris@hadoop101 test]$ { name=kris;echo $name; }  #注意{}里面的格式,用大括号来进行一串命令执行时,name变量的修改是直接在父shell当中 
kris
[kris@hadoop101 test]$ echo $name #name变量的值已经被修改
kris

 

netstat [选项]

选项:

  • -a 列出所有网络状态,包含socket程序
  • -c 秒数 指定每隔几秒刷新一次网络状态
  • -n 使用ip地址和端口号显示,不使用域名与服务名
  • -p 显示PID和程序名
  • -t 显示使用TCP协议端口的连接状况
  • -u 显示使用UDP协议端口的连接状况
  • -l 仅显示监听状态的连接
  • -r 显示路由表

命令的别名

命令的别名,就是命令的小名

alias #查询命令别名

alias 别名=\'原命令\' #设定命令别名

例如: alias ser=\'service network restart\'
用命令定义的别名,是临时生效的,要想永久生效,需要写入环境变量配置文件 ~/.bashrc (vim /root/.bashrc)

别名的优先级比命令高,命令的执行顺序是:

① 第一顺位执行用绝对路径或相对路径执行的命令;② 第二顺位执行别名;

③ 第三顺位执行Bash的内部命令; ④ 第四顺位执行$PATH环境变量定义的目录查找顺序找到的第一个命令。

常用快捷键

Tab键  命令或文件补全
ctrl+A  把光标移动到命令行开头。如果我们输入的命令过长,想要把光标移动到命令行开头时使用。
ctrl+E 把命令移动到命令行结尾。
ctrl+C 强制终止当前命令
ctrl+L 清屏,相当于clear命令
ctrl+U 删除或剪切光标之前的命令。
ctrl+K 删除或剪切光标之后的内容
ctrl+Y 粘贴ctrl+U剪切的内容。
ctrl+R 在历史命令中搜索,按下ctrl+R之后,就会出现搜索界面,只要输入搜索内容,就会从历史命令中搜索。
ctrl+D 退出当前终端。
ctrl+Z 暂停,并放入后台。
ctrl+S 暂停屏幕输出。
ctrl+Q 恢复屏幕输出。

 输入输出重定向

1)输入重定向

wc [选项] [文件名] 

选项:-c  统计字节数;

           -w 统计单词树;

           -l 统计行数;

2)输出重定向

类型 符号 作用
标准输出重定向 命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定文件中
命令 >> 文件 以追加的方式,把命令的正确输出输出到指定文件中
标准错误输出重定向 错误命令 2> 文件 以覆盖的方式,把命令的错误输出输出到指定文件中
错误命令 2>> 文件 以追加的方式,把命令的错误输出输出到指定文件中 
正确输出和错误输出都保存到文件 命令 > 文件 2>&1 以覆盖的方式,把正确输出和错误输出都保存到同一个文件当中
命令 >> 文件 2>&1 以追加的方式,把正确输出和错误输出都保存到同一个文件当中 

3)Bash的标准输入输出

设备 设备文件名 文件描述符 类型
键盘 /dev/stdin 0 标准输入
显示器 /dev/stdout 1 标准输出
显示器 /dev/stderr 2 标准错误输出

多命令顺序执行

多命令执行符 格式 作用
; 命令1;命令2 多个命令顺序执行
&& 命令1 && 命令2

当命令1正确执行($?=0),则命令2才会执行

当命令1执行不正确($?!=0),则命令2不会执行

|| 命令1 || 命令2

当命令1执行不正确($?!=0),则命令2才会执行

当命令1正确执行($?=0),则命令2不会执行

 

2. 压缩和解压缩命令

-z    打包同时压缩
-c    产生.tar打包文件
-v    显示详细信息
-f    指定压缩后的文件名
-x    解包.tar文件

[root@kris ~]# tar -zcvf 12.tar.gz 1.txt 2.txt
1.txt
2.txt

[root@kris ~]# tar -zxvf 12.tar.gz -C xi  (解压,-C是可以指定解压的路径,默认是本目录)
1.txt
2.txt

 

1、 .zip 是windows常用的压缩格式,linux也可以正确识别。

zip -r test #压缩test目录 -r为压缩目录
unzip -d /tmp/ test.zip #把压缩包解压到指定位置 -d是指定压缩位置

2、.gz 格式是linux中最常用的压缩格式

压缩
gzip [选项] 源文件 
选项:
-c 将压缩数据输出到标准输出中,可以用于保留源文件
-d 解压缩 
-r 压缩目录 
如 gzip -c anaconda.cfg > anaconda.cfg.gz

解压缩命令 
gzip -d 压缩包 
gunzip 压缩包

3、 .bz2格式 算法更先进、压缩比更好,而.gz格式相对来讲压缩的时间更快。

压缩 
bzip2 [选项] 源文件 
选项:
-d 解压缩 
-k 压缩时,保留源文件 
-v 显示压缩的详细信息

解压缩 
bzip2 -d 压缩包 
bunzip2 压缩包

4、.tar 格式 打包不会压缩

压缩 
tar [选项] [-f 压缩包名] 源文件或目录 
选项:
  -c 打包 
  -f 指定压缩包的文件名。压缩包的扩展名是用来给管理员识别格式的,所以一定要正确指定扩展名 
  -v 显示打包文件过程 
如:tar -cvf anaconda.cfg.tar anaconda.cfg

解压 
tar [选项] 压缩包    
选项:
  -x 解打包
  -f 指定压缩包的文件名 
  -v 显示解打包文件过程 
  -t 测试,不解打包,只是查看包中有哪些文件 
  -C 目录,指定解打包位置 
tar -xvf anaconda.cfg.tar #解打包到当前目录

5、.tar.gz 和.tar.bz2 格式

tar [选项] 压缩包 源文件或目录 
选项:
-z 压缩和解压缩 .tar.gz格式 
-j 压缩和解压缩 .tar.gz2格式 

3. 关机和重启命令

sync数据同步,刷新文件系统缓冲区
shutdown # -h 关机 、-r重启 
reboot #重启 是安全的
下面这两个命令不会完整关闭和保存系统的服务
halt #关机 
poweroff #关机 
init是修改linux运行级别的命令,也可以用于关机和重启。这个命令并不安全。 
init 0 #关机,调用系统的0级别 
init 6 #重启,调用系统的6级别

4. 常用网络命令

1. 配置IP地址

IP地址是计算机在互联网中唯一的地址编码,每台计算机如果需要接入网络和其他计算机进行数据通信,就必须配置唯一的公网IP地址

配置IP地址2中方法:1)setup工具; 2) vim /etc/sysconfig/network-scripts/ifcfg-eth0

重启网络服务:service network restart

复制镜像有可能需要重置UUID(唯一识别符)

vim /etc/sysconfig/network-scripts/ifcfg-eth0 #删除MAC地址行

rm -rf /etc/udev/rules.d/70-persistent-net.rules #删除MAC地址和UUID绑定文件

reboot #重启linux

 

2. ifconfig命令 配置网络接口 ,查看IP地址的信息

$ ifconfig 
   #标志                        最大传输单元 eth0: flags
=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
     #IP地址          子网掩码          广播地址 inet 192.168.100.63 netmask 255.255.255.128 broadcast 192.168.100.127
     # MAC 地址 ether 00:16:3e:16:4e:b2 txqueuelen 1000 (Ethernet)
     #接收的数据包情况 RX packets
14101775622 bytes 15809704448269 (14.3 TiB) RX errors 0 dropped 0 overruns 0 frame 0
      #发送的数据包情况 TX packets 5770236322 bytes 16347053707483 (14.8 TiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
#本地回环网卡 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 610672765 bytes 668247392578 (622.3 GiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 610672765 bytes 668247392578 (622.3 GiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

3. ping命令

主要通过ICMP协议进行网络探测,测试网络中主机的通信情况。
ping [选项] IP 
选项:
-b 后面加入广播地址,用于对整个网段进行探测(知道整个网络中有多少个主机是可以和我们通信,而不是一个一个IP地址地进行探测)
-c 次数 用于指定ping的次数 
-s字节 指定探测包的大小 
如 ping -b -c 3 192.168.103.255

4. netstat

netstat [选项]
选项:

  • -a 列出所有网络状态,包含socket程序
  • -c 秒数 指定每隔几秒刷新一次网络状态
  • -n 使用ip地址和端口号显示,不使用域名与服务名
  • -p 显示PID和程序名
  • -t 显示使用TCP协议端口的连接状况
  • -u 显示使用UDP协议端口的连接状况
  • -l 仅显示监听状态的连接
  • -r 显示路由表

例如:查看本机开启的端口
netstat -tuln # -l只能看到监听状态的连接,而不能看到已经建立连接状态的连接 

$ netstat -tuln
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State    
#协议  接收队列  发生队列 本机的IP地址及端口号  远程主机的IP地址及端口号  状态  
tcp        0      0 0.0.0.0:2181            0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:9095            0.0.0.0:*               LISTEN     
tcp        0      0 192.168.100.63:9000     0.0.0.0:*               LISTEN     
tcp        0      0 0.0.0.0:9994            0.0.0.0:*               LISTEN     
.... 
udp        0      0 0.0.0.0:68              0.0.0.0:*                          
udp        0      0 127.0.0.1:323           0.0.0.0:*                          
udp        0      0 0.0.0.0:7191            0.0.0.0:*                          
udp6       0      0 ::1:323                 :::*                               
udp6       0      0 :::7191                 :::* 
Proto: 网络连接的协议, 一般就是TCP协议或者UDP协议。
Recv-Q: 表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走。
Send-Q: 表示从本机发送,对方还没收到的数据,依然在本地的缓冲中,一般是不具备ACK标志的数据包。
LocalAddress: 本机的IP地址和端口号 
ForeignAddress: 远程主机的IP地址和端口号 
State: 状态。常见的状态主要有:
-LISTEN: 监听状态,只有TCP协议需要监听,而UDP协议不需要监听。
-ESTABLISHEN: 已经建立连接的状态。如果使用-l选项,则看不到已经建立连接的状态。
-SYN_SENT: SYN发起包,就是主动发送连接的数据包 
-SYN_RECV: 接收到主动连接的数据包。
-FIN_WAIT1: 正在中断的连接。
-FIN_WAIT2: 已经中断的连接,但是正在等待对方主机进行确认。
-TIME_WAIT: 连接已经中断,但是套接字依然在网络中等待结束。
-CLOSED: 套接字没有被使用。
这些状态中常用的就是LISTEN和ESTABLISHED状态,一种代表正在监听,另一种代表已经建立连接。

查看本机有哪些程序开启的端口
-p 看到哪个程序占用了端口,且可以知道这个程序的PID

netstat -tulnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
#比之前的命令多了一个 -p选项,结果多了"PID/程序名",可以知道是哪个程序占用了端口 
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      2359/mysqlld                   
tcp        0      0 0.0.0.0:11211           0.0.0.0:*               LISTEN      1563/memcached                   

$ netstat -an

  

从"Active UNIX domain sockets "开始,之后的内容就是Socket程序产生的连接,之前的内容都是网络服务产生的连接。

-an选项的输出看到各种网络连接状态。 之前的 -tuln 选项只能看到监听状况。

 

Linux文件与目录结构 

Linux系统中一切皆文件。

 Linux目录结构

 

 /bin      (/usr/bin 、 /usr/local/bin)
是Binary的缩写, 这个目录存放着最经常使用的命令 
 /sbin    (/usr/sbin 、 /usr/local/sbin)
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
 /home
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
 /root
该目录为系统管理员,也称作超级权限者的用户主目录。
 /lib
系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
 /lost+found
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。
 /etc
所有的系统管理所需要的配置文件和子目录
/usr
 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。
 /boot
这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里
 /proc
这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
 /srv
service缩写,该目录存放一些服务启动之后需要提取的数据。
 /sys
 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
 /tmp
这个目录是用来存放一些临时文件的。
 /dev
类似于windows的设备管理器,把所有的硬件用文件的形式存储。
 /media
linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
 /mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。
 /opt       
这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
 /usr/local 
这是另一个给主机额外安装软件所摆放的目录。一般是通过编译源码方式安装的程序。
/var
这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
 /selinux
SELinux是一种安全子系统,它能控制程序只能访问特定文件。

VI/VIM编辑器

VI是Unix操作系统和类Unix操作系统中最通用的文本编辑器。

VIM编辑器是从VI发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM与VI编辑器完全兼容。

修改主机名

# vi /etc/sysconfig/network
ETWORKING=yes
HOSTNAME=kris

一般模式

以vi打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。