工作中实用的Linux命令

前言

记录工作中最常用到的Linux命令和常用的组合用法。欢迎大家来补充哦~!(ps:本文不是一篇Linux命令大全哟,只是按自己的工作内容来列举一些常用的命令而已!高手点完赞就可以绕道啦!)

文件系统管理类

ls

基本语法 说明
ls [选项] [路径或文件] 显示指定工作目录下的内容,列出工作目录所含的文件及子目录

举例说明:

1)ls :列出文件和目录

2)ls -l :列出文件列表

1
2
3
4
5
6
-bash-4.1$ ls -l
total 16
drwxr-xr-x 2 root root 4096 Apr 9 09:01 root_file
-rw-r--r--. 1 root root 4 Mar 22 17:58 tmp
drwx------. 2 cloud cloud 4096 Feb 16 2015 logs
drwxr-xr-x. 3 root root 4096 Feb 24 21:32 tomcat-it

total表示当前目录下所有文件所占的空间总和,单位是kb,列表分别代表的意思是文件属性,子目录个数,文件拥有者,拥有者所在组,文件占用空间,最近修改时间,文件名。

3) ls -ld /tmp :表示只列出/tmp目录的信息。

4) ls -lS :能按文件从大到小的次序显示。

5) ls -l |grep “^d”|wc -l :计算当前目录下的文件数”^-“ 和目录数”^d”

1
2
3
4
-bash-4.1$ ls -l  |grep "^d"|wc -l
40
-bash-4.1$ ls -l |grep "^-"|wc -l
10

6)ls -a :列出所有文件包括以‘.’开头的隐藏文件

1
2
-bash-4.1$ ls -a
. anaconda-ks.cfg .bash_logout .bashrc

7)ls tmp* :列出当前目录中所有以“tmp”开头的目录和文件的详细内容

pwd

基本语法 说明
pwd 显示当前的工作目录,执行pwd指令可立刻得知目前所在的工作目录的绝对路径名称

举例说明:

1
2
-bash-4.1$ pwd
/usr/local/tomcat

cd

基本语法 说明
cd [目录名] 改变当前工作目录

举例说明:

1)cd ~ :进入用户主目录

1
2
3
-bash-4.1$ cd ~
-bash-4.1$ pwd
/usr/local/tomcat

2) cd .. :返回上级目录

1
2
3
4
5
-bash-4.1$ pwd
/usr/local/tomcat/logs
-bash-4.1$ cd ..
-bash-4.1$ pwd
/usr/local/tomcat

3)cd ../.. :返回上两级目录

1
2
3
4
5
-bash-4.1$ pwd
/usr/local/tomcat/logs
-bash-4.1$ cd ../..
-bash-4.1$ pwd
/usr/local

4)cd !$ :把上个命令的参数作为cd参数使用

1
2
3
4
-bash-4.1$ ls center/logs/
catalina.2018-10-08.log catalina.out
-bash-4.1$ cd !$
cd center/logs/

cp

基本语法 说明
cp [选项] 源文件复制至目标文件,或将多个源文件复制至目标目录

举例说明:

1)cp a.txt b.txt :将文件a.txt复制成文件b.txt,cp命令后加-v参数,可以显示详细信息

1
2
-bash-4.1$ cp -v a.txt  b.txt
`a.txt' -> `b.txt'

2)cp -rv dir1 dir2 :递归将目录dir1复制到目录dir2下面,dir2不存在时创建新文件夹复制dir1下的所有文件到dir2,dir2存在时在dir2文件夹下复制整个dir1文件夹。

who

基本语法 说明
who [选项] [file] 显示目前登录到系统的用户

举例说明:

1
2
3
4
5
6
7
-bash-4.1$ who
lcpub pts/0 2018-10-10 09:41 (172.22.44.24)
lcpub pts/1 2018-10-12 09:00 (172.22.41.11)
lcpub pts/2 2018-10-12 15:27 (172.22.41.73)
lcpub pts/3 2018-10-12 15:32 (172.22.41.16)
lcpub pts/4 2018-10-10 11:10 (172.22.41.183)
lcpub pts/7 2018-10-12 14:26 (172.22.114.36)

who命令的一般输出格式如下。

名称[状态] 终端 时间[活动] 主机名[进程标识]

名称:用户的登录名。
状态:表明终端是否对用户都是可写的。
终端:类似于pts/1、pts/2等,此终端标识在/dev目录中可找到。
时间:用户登录系统的时间。
活动:某个用户在自己的终端上最后一次活动发生以来到现在的时间,如果此项是个“.”,就表示一分钟内的终端活动;如果终端保持静止已经超过24小时或自从系统启动以来还没有被使用过,那么此项标记为“old”。
进程标识:用户登录shell的进程id。
主机名:登录到Linux系统上的客户端机器标识。

1) 查看系统处于什么运行级别

1
2
-bash-4.1$ who -r
run-level 3 2018-05-18 17:57

2)显示系统最近启动日期,以及当前每个用户的登录详情、终端状态

1
2
3
4
5
6
7
8
-bash-4.1$ who -buT
system boot 2018-05-18 17:57
lcpub + pts/0 2018-10-10 09:41 05:35 5851 (172.22.44.24)
lcpub + pts/1 2018-10-12 09:00 06:13 13434 (172.22.41.11)
lcpub + pts/2 2018-10-12 15:27 00:06 4631 (172.22.41.73)
lcpub + pts/3 2018-10-12 15:32 . 5331 (172.22.41.16)
lcpub + pts/4 2018-10-10 11:10 01:18 22361 (172.22.41.183)
lcpub + pts/7 2018-10-12 14:26 00:24 28750 (172.22.114.36)

touch

基本语法 说明
touch [选项] [参数] 将已存在的文件的时间标签修改为系统当前的时间(默认),或创建空文件

举例说明:

1
2
3
4
5
6
7
8
9
-bash-4.1$ touch a.log         #在当前目录下建立一个空文件a.log
-bash-4.1$ ll
总用量 0
-rw-r--r-- 1 root root 0 4月 16 21:06 a.log
-bash-4.1$ touch a.log #更新a.log的修改时间为当前时间
-bash-4.1$ ll
总用量 0
-rw-r--r-- 1 root root 0 4月 16 21:08 a.log
-bash-4.1$ touch -t 201601011200.50 a.log #设定文件的时间戳

rm

基本语法 说明
rm [选项]文件 删除文件,对于链接文件,只是删除整个链接文件,而原有文件保持不变

举例说明:

1)rm -f dir1 :强制删除文件,忽略不存在的文件,不提示确认(若文件是一个链接,则删除该链接,原有文件保持不变)

2)rm -r dir2 :递归删除目录及其内容

3)rm -rf dir3 :组合使用,表示强制性的递归删除目录及其子目录等内容,比较常用这种组合方式。

mv

基本语法 说明
mv [选项] 源文件 目标文件(目录) 将源文件重命名为目标文件,或将源文件移动至指定目录

举例说明:

1)mv a.txt b.txt :重命名a.txt为b.txt

2)mv -fv a.txt b.txt :将文件a.txt改名为b.txt,即使b.txt存在,也是直接覆盖掉

3)mv -v a.txt dir2/ :移动a.txt到目录dir2下,显示详细信息

文本内容查看类

cat

基本语法 说明
cat [选项] [参数] 将文件或标准输入组合输出到标准输出,如果没有指定文件,或者文件为”-“,则从标准输入读取

举例说明:

1)cat a.log :显示文件内容,命令后面加-b/-n/-ns可显示文件内容和行号

1
2
3
4
5
-bash-4.1$ cat -ns a.log 
1 2011
2
3 2014
4 2015

2)cat a.log >test.log :将标准输入的内容定向输出到文件,按ctrl+D结束输入

3)tac a.log :反向输出文件内容

more

基本语法 说明
more [-dlfpcsu ] [-num ] [+/ pattern] [+ linenum] [file … ] 从前向后一页一页读取文件

常用操作命令:

操作 说明
Enter 向下n行,需要定义。默认为1行
Ctrl+F 向下滚动一屏
空格键 向下滚动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前行的行号
V 调用vi编辑器
!命令 调用Shell,并执行命令
q 退出more
n/N 查找符合模式的内容,按n为下一个,N为上一个

举例说明:

1)more -5 boot.log 显示boot.log文件,每次显示5行内容

2)more -p -5 boot.log 每次显示5行内容,清屏显示

组合用法: cat boot.log | more -5 也可达到同样的目的。

less

基本语法 说明
less [参数] 文件 对文件或其它输出进行分页显示

常用操作命令:

操作 说明
-b <缓冲区大小> 设置缓冲区的大小
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-g 只标志最后搜索的关键词
-i 忽略搜索时的大小写
-m 显示类似more命令的百分比
-N 显示每行的行号
-o <文件名> 将less 输出的内容在指定文件中保存起来
-Q 不使用警告音
-s 显示连续空行为一行
-S 行过长时间将超出部分舍弃
-x <数字> 将“tab”键显示为规定的数字空格
/字符串 向下搜索“字符串”的功能
?字符串 向上搜索“字符串”的功能
n: 重复前一个搜索(与 / 或 ? 有关)
N: 反向重复前一个搜索(与 / 或 ? 有关)
b 向后翻一页
d 向后翻半页
h 显示帮助界面
Q 退出less 命令
u 向前滚动半页
y 向前滚动一行
空格键 滚动一行
回车键 滚动一页
[pagedown]: 向下翻动一页
[pageup]: 向上翻动一页

举例说明:

1)ps -ef|less -N :ps查看进程信息并通过less分页显示,同时显示行号

1
2
3
4
5
6
7
-bash-4.1$ ps -ef|less -N

显示:
1 1 UID PID PPID C STIME TTY TIME CMD
2 2 root 1 0 0 Aug08 ? 00:00:00 /sbin/init
3 3 root 2 0 0 Aug08 ? 00:00:00 [kthreadd]
4 4 root 3 2 0 Aug08 ? 00:00:02 [ksoftirqd/0]

2)less test1.log test2.log :浏览多个文件,输入 :n后,切换到 test2.log,输入 :p 后,切换到test1.log。当正在浏览一个文件时,也可以使用 :e 命令,打开另一个文件。

1
2
3
less file1

:e file2

3)附加导航说明:
| 操作 | 说明 |
| ——– | ——– |
|ctrl + F | 向前移动一屏|
|ctrl + B | 向后移动一屏|
|j | 向前移动一行|
|k | 向后移动一行|
|G | 移动到最后一行|
|g | 移动到第一行|
|q / ZZ | 退出 less 命令|
| /字符串 或 ?字符串 | 按 n往下找,大写的 N 则是往回(上)找 |

基本语法 说明
head [参数] 文件 显示档案的开头至标准输出中。如果指定了多于一个文件,在每一段输出前会给出文件名作为文件头。如果不指定文件,或者文件为”-“,则从标准输入读取数据

举例说明:

1)head -n 5 log.txt :显示文件的前n行

2)head -c 30 log.txt :显示文件前n个字节

3)head log1.txt log2.txt :一次显示多个文件

tail

基本语法 说明
tail [ -f ] [ -c Number / -n Number / -m Number / -b Number / -k Number ] [ File ] 实时跟踪日志文件

举例说明:

1)tail -f test.log :动态显示文件内容, tailf test.log 与其作用相同,按ctrl+c/ctrl+z结束退出。

2)tailf -100 test.log :与第一条命令区别是每次动态显示n行内容。

3)tail -n 100 test.log :显示文件的后n行

4)tailf test.log | grep ‘关键词’ :动态的显示含有关键词的日志内容,可以很好的定位到想要观察的信息。

文件查找类

locate

基本语法 说明
locate [选择参数] [样式] 快速的搜寻档案系统内是否有指定的档案

举例说明:

1
2
3
4
5
-bash-4.1$ locate logs/sh
/etc/shadow
/etc/shadow-
/etc/shells
-bash-4.1$

查找logs目录下以sh开头的文件,若文件是新添加的,会存在找不到新文件的情况,使用命令“updatedb -v”可以手工更新使用的locatedb数据库,保证刚刚更新的文件可以查出来。
可以使用特殊字元(如 或?等)来指定范本样式,如指定范本为kcpaner, locate会找出所有起始字串为kcpa且结尾为ner的档案或目录。

find

基本语法 说明
find [文件] [选项] 在目录结构中搜索文件,并执行指定的操作

文件名选项是find命令最常用的选项,要么单独使用该选项,要么和其他选项一起使用。可以使用某种文件名模式来匹配文件,记住要用引号将文件名模式引起来。

举例说明:

1)find ~ -name “*.log” -print

不管当前路径是什么,如果想要在自己的根目录$HOME中查找文件名符合*.log的文件,使用 ~ 作为’pathname’参数,波浪号~代表了你的$HOME目录。

2)find . -name “*.log” -print

在当前目录及子目录中查找所有的‘ *.log‘文件

3)find . -name “[A-Z]*” -print

在当前目录及子目录中查找文件名以一个大写字母开头的文件

4)find /etc -name “host*” -print

在/etc目录中查找文件名以host开头的文件

5)find ~ -name “*” -print 或 find . -print

查找$HOME目录中的文件

6)find / -name “*” -print

让系统高负荷运行,就从根目录开始查找所有的文件

7)find . -name “[a-z]*[4-9].log” -print

在当前目录查找文件名以一个个小写字母开头,最后是4到9加上.log结束的文件

性能监控类

ps

基本语法 说明
ps [选项] 显示系统进程在瞬间的运行动态

ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的。

举例说明:

1) ps -ef:显示所有进程信息,连同命令行,用标准的格式显示进程,显示的项目有:UID,PID,PPID,C,STIME,TTY,TIME,CMD,与grep常用组合用法,用来查找特定进程,如 ps -ef|grep ssh

1
2
3
4
5
6
7
-bash-4.1$ ps -ef|grep ssh
root 1488 1 0 Oct15 ? 00:00:01 /usr/sbin/sshd
root 8297 1488 0 Oct29 ? 00:00:00 sshd: lcpub [priv]
lcpub 8301 8297 0 Oct29 ? 00:00:00 sshd: lcpub@notty
root 10039 1488 0 Oct29 ? 00:00:00 sshd: lcpub [priv]
lcpub 10041 10039 0 Oct29 ? 00:00:14 sshd: lcpub@pts/3
lcpub 28682 28656 0 09:59 pts/4 00:00:00 grep ssh

2) ps aux :列出目前所有的正在内存当中的程序,用BSD的格式来显示进程,显示的项目有:USER , PID , %CPU , %MEM , VSZ , RSS , TTY , STAT , START , TIME , COMMAND,也可配合grep使用

STAT表示该程序目前的状态,主要的状态有

R :该程序目前正在运作,或者是可被运作

S :该程序目前正在睡眠当中 (可说是 idle 状态),但可被某些讯号 (signal) 唤醒。

T :该程序目前正在侦测或者是停止了

Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态

注:以上两者结合grep使用时,推荐使用-ef,因为aux会截断command列。

top

基本语法 说明
top [参数] 实时显示系统中各个进程的资源占用状况

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
-bash-4.1$ top
top - 17:26:12 up 146 days, 23:28, 8 users, load average: 0.80, 0.92, 0.94
Tasks: 276 total, 1 running, 270 sleeping, 5 stopped, 0 zombie
Cpu(s): 9.9%us, 4.3%sy, 0.0%ni, 85.0%id, 0.0%wa, 0.0%hi, 0.1%si, 0.7%st
Mem: 11904800k total, 11498700k used, 406100k free, 8676k buffers
Swap: 8191996k total, 3127832k used, 5064164k free, 1986860k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
18272 lcpub 20 0 5380m 498m 5268 S 65.9 4.3 850:52.55 java
24574 lcpub 20 0 5512m 518m 5152 S 11.9 4.5 7998:10 java
4341 lcpub 20 0 5249m 427m 5436 S 11.3 3.7 552:13.72 java
30255 lcpub 20 0 5635m 759m 4956 S 6.3 6.5 9313:58 java
27720 lcpub 20 0 7965m 274m 5084 S 4.0 2.4 5462:28 java

第一行,任务队列信息,load average后面三个数表示1分钟、5分钟、15分钟的负载情况,load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。

第二行,任务或进程信息。

第三行,cpu状态信息,us - 用户空间占用CPU百分比,sy - 系统空间占用CPU百分比,id — 空闲CPU百分比。

第四行,内存状态,

第五行,swap交换分区信息,对于内存监控,在top里我们要时刻监控第五行swap交换分区的used,如果这个数值在不断的变化,说明内核在不断进行内存和swap的数据交换,这是真正的内存不够用了。

从例子可以看出,PID为18272占用CPU空间最高,此时可以用ps命令来查找该进程号对应的应用程序有哪些,使用kill命令将其杀掉,释放内存。

free

基本语法 说明
free [选项] [-s (间隔秒数)] 显示系统使用和空闲的内存情况,包括物理内存、交互区内存(swap)和内核缓冲区内存。共享内存将被忽略

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-bash-4.1$ free
total used free shared buffers cached
Mem: 11904800 11759764 145036 28 10080 1880064
-/+ buffers/cache: 9869620 2035180
Swap: 8191996 3117692 5074304

数值解释:
total:总计物理内存的大小。
used:已使用多大。
free:可用有多少。
Shared:多个进程共享的内存总额。
Buffers/cached:磁盘缓存的大小。
第三行(-/+ buffers/cached):
used:已使用多大。
free:可用有多少。
第四行是交换分区SWAP的,也就是我们通常所说的虚拟内存。

注:free后可带上-g(以GB为单位显示内存使用情况),-m(以MB为单位显示内存使用情况)

vmstat

基本语法 说明
vmstat [选项] 用来显示虚拟内存的信息

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
-bash-4.1$ vmstat 5 5
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
0 0 4010172 452052 1952 184452 10 6 67 81 2 3 7 3 88 1 1
1 0 4010136 450284 1960 185096 51 0 51 521 11345 22543 5 2 92 1 1
2 0 4010112 449928 1968 185524 32 0 32 389 10827 21193 6 2 89 2 1
1 0 4010112 449680 1976 186256 0 0 0 53 11188 22372 4 2 93 0 1
2 0 4010112 449456 1988 186696 0 0 1 93 10736 21189 3 2 95 0 0

数值说明:
procs:进程,r: 运行队列中进程数量,b: 等待IO的进程数量(进程阻塞)
memory:内存,swpd: 使用虚拟内存大小,free: 可用内存大小,buff: 用作缓冲的内存大小,cache: 用作缓存的内存大小
swap:交换区,si: 每秒从交换区写到内存的大小,so: 每秒写入交换区的内存大小
io:(现在的Linux版本块的大小为1024bytes),bi: 每秒读取的块数,bo: 每秒写入的块数
system:系统,in: 每秒中断数,包括时钟中断,cs: 每秒上下文切换数。
cpu(以百分比表示):us: 用户进程执行时间(user time),sy: 系统进程执行时间(system time),id: 空闲时间(包括IO等待时间),中央处理器的空闲时间,以百分比表示,wa: 等待IO时间

vmstat 5 5:表示在5秒时间内进行5次采样

1)swpd的数值不为0,说明机器此时的物理内存不足了,需要使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。

2)si或so的数值不为0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。

3)bi或bo的数值不为0,表示IO操作过于频繁,需要调整。

iostat

基本语法 说明
iostat[参数] [时间] [次数] 对系统的磁盘操作活动进行监视

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
-bash-4.1$ iostat -x -k -d 2 2
Linux 2.6.32-642.el6.x86_64 (sz-5-centos139) 11/01/2018 _x86_64_ (8 CPU)

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 16.13 148.20 10.15 11.91 529.75 640.59 106.11 0.82 37.17 16.62 54.68 1.83 4.04
dm-0 0.00 0.00 6.27 148.27 449.66 593.09 13.49 0.48 3.11 18.21 2.47 0.16 2.47
dm-1 0.00 0.00 20.02 11.87 80.08 47.50 8.00 2.52 79.04 25.25 169.71 0.77 2.44

Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await r_await w_await svctm %util
sda 0.00 28.50 3.00 5.00 24.00 134.00 39.50 0.05 6.31 13.33 2.10 2.19 1.75
dm-0 0.00 0.00 2.50 33.50 20.00 134.00 8.56 0.09 2.58 12.80 1.82 0.26 0.95
dm-1 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

iostat 2 2:表示每隔2S输出磁盘IO的详细信息,总共采样2次

1)iowait% 表示CPU等待IO时间占整个CPU周期的百分比,如果iowait值超过50%,或者明显大于%system、%user以及%idle,表示IO可能存在问题。

2)avgqu-sz 表示磁盘IO队列长度,即IO等待个数。

3)await 表示每次IO请求等待时间,包括等待时间和处理时间

4)svctm 表示每次IO请求处理的时间

5)%util 表示磁盘忙碌情况,一般该值超过80%表示该磁盘可能处于繁忙状态。

lsof

基本语法 说明
lsof [参数] [文件] 查看文件的打开状况,用于调试程序,查看系统情况

举例说明:

1)lsof -p 3245 :列出pid=3245所打开的文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-bash-4.1$ lsof -p 11545
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 11545 lcpub cwd DIR 253,0 20480 1706557 /usr/local/tomcat
java 11545 lcpub txt REG 253,0 7734 2495575 /usr/jdk1.8.0_51/bin/java

参数说明:
COMMAND:进程的名称
PID:进程标识符
USER:进程所有者
FD:文件描述符,应用程序通过文件描述符识别该文件。每个进程都有自己的文件描述符表,因此FD可能会重名
TYPE:文件类型
DEVICE:指定磁盘的名称
SIZE:文件的大小
NODE:索引节点(文件在磁盘上的标识)
NAME:打开文件的确切名称

2)lsof -i 4 :查看IpV4网络文件的打开情况(参数是6则是查看IpV6)

3)lsof -c java -c sh :显示command列中以java开头或以sh开头的打开的文件

4)lsof -i @192.168.20.31 :查看与192.168.20.31连接的情况(在@前可以指定是TCP/UDP)

1
2
3
4
5
-bash-4.1$ lsof -i @10.201.5.139
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 6849 lcpub 217u IPv6 1842151043 0t0 TCP 10.201.5.129:21804->10.201.5.139:20338 (ESTABLISHED)
java 6849 lcpub 219u IPv6 1846413922 0t0 TCP 10.201.5.129:14786->10.201.5.139:38889 (ESTABLISHED)
java 11545 lcpub 134u IPv6 1864334046 0t0 TCP 10.201.5.129:37614->10.201.5.139:17439 (ESTABLISHED)

4)lsof -i:1883,1885 :可以查看1883,1885端口使用情况

1
2
3
COMMAND   PID USER   FD   TYPE    DEVICE SIZE/OFF NODE NAME
java 8743 root 49u IPv4 771370268 0t0 TCP *:1883 (LISTEN)
main 16184 root 13u IPv4 225274829 0t0 TCP localhost:w1884 (LISTEN)

网络操作类

ifconfig

基本语法 说明
ifconfig [网络设备] [参数] 获取网络接口配置信息并对此进行修改

举例说明:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
-bash-4.1$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:16:3E:4D:1C:CE
inet addr:10.201.5.139 Bcast:10.201.5.255 Mask:255.255.255.0
inet6 addr: fe80::216:3eff:fe4d:1cce/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:9917904378 errors:0 dropped:0 overruns:0 frame:0
TX packets:10614597211 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:1965689508995 (1.7 TiB) TX bytes:1938435367086 (1.7 TiB)

lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:65536 Metric:1
RX packets:66852917 errors:0 dropped:0 overruns:0 frame:0
TX packets:66852917 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:21017708123 (19.5 GiB) TX bytes:21017708123 (19.5 GiB)

说明:
1.eth0:表示第一块网卡,其中 HWaddr 表示网卡的物理地址,可以看到目前这个网卡的物理地址(MAC地址)是00:16:3E:4D:1C:CE
2.inet addr 用来表示网卡的IP地址,此网卡的 IP地址是 10.201.5.139,广播地址,Bcast:10.201.5.255,掩码地址Mask:255.255.255.0
3.lo 是表示主机的回坏地址,这个一般是用来测试一个网络程序,但又不想让局域网或外网的用户能够查看,只能在此台主机上
运行和查看所用的网络接口。比如把 HTTPD服务器的指定到回坏地址,在浏览器输入 127.0.0.1 就能看到你所架WEB网站了。但只是您能
看得到,局域网的其它主机或用户无从知道。

netstat

基本语法 说明
netstat [-A<网络类型>] [–ip] 用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况

举例说明:

1)netstat -ntlp :查看当前所有tcp端口。

2)netstat -antp|grep 8080 :查找占用8080端口的程序(需要root权限)

1
2
3
4
5
6
7
8
9
10
11
12
参数说明:
-a show both listening and none-listening sockets.默认是不显示listening sockets
-t 仅显示tcp相关 默认是都显示
-u 仅显示udp相关 默认是都显示
-n 拒绝显示别名,显示数字
-l 仅列出有在Listen(监听)的服务状态
-p 显示建立相关连接的程序名 需要sudo才能看到其他用户起动的程序pid

-r 显示路由表
-c 每隔一段时间(秒),执行该netstat命令
-i 显示各个网络接口的状况
-s 按照协议进行统计

其它命令

grep

基本语法 说明
grep [参数] 文本搜索工具,可用正则式进行匹配(查找日志最常用)

举例说明:

1)grep -A 10 ‘关键字’ test.log :表示找到所有匹配行,并显示所有匹配行后的十行

2)grep -B 1 ‘关键字’ test.log :表示找到所有匹配行,并显示所有匹配行的前面一行

3)grep -C 1 ‘关键字’ test.log :表示找到所有匹配行,并显示所有匹配行的前一行,后一行

4)grep -c ‘关键字’ test.log :表示查找关键字有多少行匹配

5)grep –color ‘关键字’ test.log :把查找到的关键字用颜色标识

6)grep -e [a-c] -e [0-2] test.log :-e后面跟正则,表示匹配正则里面的内容

7)grep -f pattern.txt test.log :表示在test.log指定查找和pattern.txt内容一样的信息

8)test.log | grep “^a.d$” :表示匹配出以a开头d结尾的关键字内容,分开匹配也可以

9)tailf test.log | grep “abc” :表示在test.log中匹配出关键字为“abc“的日志内容

注:正则表达式需要另行学习。

wget

基本语法 说明
wget [参数] [文件命名] [下载地址] 下载文件,支持HTTP,HTTPS和FTP协议

举例说明:

1)wget http://www.xxxxxx.com/xx.zip :从网络下载一个文件并保存在当前目录,在下载的过程中会显示进度条

2)wget -O test.zip http://www.xxxxxx.com/xx.zip :下载以test.zip文件名重命名

1
2
3
4
5
参数说明:
–limit -rate:限速下载
-c:断点续传,重新启动下载中断的文件,对于我们下载大文件时突然由于网络等原因中断非常有帮助
-b:后台下载,下载非常大的文件的时候,我们可以使用参数-b进行后台下载
-i:下载多个文件,后面一般跟txt文件,txt内容是多个下载地址

tar/zip/rar/gz

基本语法 说明
tar/zip/rar/gz [参数] [文件命名] [重命名] 解压或压缩文件

举例说明:

解压命令 压缩命令
tar xvf FileName.tar tar cvf FileName.tar DirName (打包文件(非压缩))
unzip FileName.zip zip FileName.zip DirName
rar x FileName.rar rar a FileName.rar DirName
gzip -d FileName.gz gzip FileName

sftp/ftp

基本语法 说明
sftp -oPort=[远程端口号] [user]@[ip] 使用sftp协议来远程连接
ftp [hostname/ ip-address] 使用ftp协议来远程连接

举例说明:

1)sftp> get /var/index.txt /home/myfile/ :将远程主机的/var/目录下的index.txt文件下载到本地/home/myfile/下

2)sftp> put /home/downloads/my.pdf /var/user/ :将本地的/home/downloads/目录下的my.pdf上传到远程主机/var/user/下

注:以上命令对ftp同样适用。

未完待续~~~

欢迎大家来补充你们的Linux命令骚操作~

0%