Linux常用命令

工作常用,在此记录,一来总结,便于快速查询,二来分享交流。

 

1.tail

最常用的是tail -f a.log 或者是 tail -f -n 100 a.log

 

2.vmstat

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况.相比top,我可以看到整个机器的CPU,内存,IO的使用情况,而不是单单看到各个进程的CPU使用率和内存使用率(使用场景不一样)

一般vmstat工具的使用是通过两个数字参数来完成的,第一个参数是采样的时间间隔数,单位是秒,第二个参数是采样的次数,如:

vmstat 2 1 或vmstat 2

参考:http://www.cnblogs.com/ggjucheng/archive/2012/01/05/2312625.html

 

3.free

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

-b  以Byte为单位显示内存使用情况。

-k  以KB为单位显示内存使用情况。

-m  以MB为单位显示内存使用情况。

-g 以GB为单位显示内存使用情况。

-o  不显示缓冲区调节列。

-s<间隔秒数>  持续观察内存使用状况。

-t  显示内存总和列。

-V  显示版本信息。

参考:http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html

 

4.grep

grep "abc" a.log --color

grep "abc" a.log b.log --color

grep "abc" a.log -C 3 #上下都3行

grep "abc" /home/admin -r -n #指定目录下查找文件

cat a.log | grep -i abc #ingnore case

cat a.log | grep -c "abc" #

cat a.log | grep -E "a|b|c" #多模式

grep "abc" /home/admin -r -n --include *.{log,java} #指定文件后缀名称

grep "abc" /home/admin -r -n --exclude *.{log,java}

grep 7001 *

它能使用正则表达式搜索文本,并把匹配的行打印出来。-v 反转查找。

5.hexdump

hexdump命令一般用来查看”二进制“文件的十六进制编码,它能查看任何文件,而不只限于二进制文件了

选项

-n length 只格式化输入文件的前length个字节。

-C 输出规范的十六进制和ASCII码。

-b 单字节八进制显示。

-c 单字节字符显示。

-d 双字节十进制显示。

-o 双字节八进制显示。

-x 双字节十六进制显示。

-s 从偏移量开始输出。

-e 指定格式字符串,格式字符串包含在一对单引号中,形如:'a/b "format1""format2"'。

 

6.awk

其中单引号中的被大括号括着的就是awk的语句,注意,其只能被单引号包含。

其中的$1..$n表示第几例。注:$0表示整个行。

awk '{print $2,$3}' a.log

awk '{print NR,$0}' a.log b.log

awk '{print FNR,$0}' a.log b.log

awk '{print FNR,FILENAME,$0}' a.log b.log

awk '{print FILENAME,"NR="NR,"FNR="FNR,"$"NF"="$NF}' a.log b.log

 

NF:当前记录中的字段个数,就是有多少列 Number of Field

NR:已经读出的记录数(按照记录分隔符读取的数据次数,默认的记录分隔符为换行符,因此默认的就是读取的数据行数),就是行号,从1开始,如果有多个文件话,这个值也是不断累加中 Number of Record

FNR:当前记录数,与NR不同的是,这个值会是各个文件自己的行号 File Number of Record

FILENAME:当前输入文件的名字

 

7.find

find是最常见和最强大的查找命令,你可以用它找到任何你想找的文件。

find的使用格式如下:

  $ find <指定目录> <指定条件> <指定动作>

  - <指定目录>: 所要搜索的目录及其所有子目录。默认为当前目录。

  - <指定条件>: 所要搜索的文件的特征。

  - <指定动作>: 对搜索结果进行特定的处理。

如果什么参数也不加,find默认搜索当前目录及其子目录,并且不过滤任何结果(也就是返回所有文件),将它们全都显示在屏幕上。

find的使用实例:

  $ find . -name 'my*'

搜索当前目录(含子目录,以下同)中,所有文件名以my开头的文件。

  $ find . -name 'my*' -ls

搜索当前目录中,所有文件名以my开头的文件,并显示它们的详细信息。

  $ find . -type f -mmin -10

搜索当前目录中,所有过去10分钟中更新过的普通文件。如果不加-type f参数,则搜索普通文件+特殊文件+目录。

 

8.top

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

多U多核CPU监控:在top基本视图中,按键盘数字“1”,可监控每个逻辑CPU的状况

高亮显示当前运行进程:敲击键盘“b”(打开/关闭加亮效果),可以通过敲击“y”键关闭或打开运行态(runing)进程的加亮效果。

进程字段排序: 敲击键盘“x”(打开/关闭排序列的加亮效果)

通过”shift + >”或”shift + <”可以向右或左改变排序列

 

开发中最常用的是

ps -ef | grep java

top -Hp pid

获得10进制的线程,转为16进制后就可以用jstack查看这个线程在干啥

 

9.scp

scp [参数] [原路径] [目标路径]

从本地服务器复制到远程服务器

复制文件:

$scp local_file remote_username@remote_ip:remote_folder

$scp local_file remote_username@remote_ip:remote_file

$scp local_file remote_ip:remote_folder

$scp local_file remote_ip:remote_file

指定了用户名,命令执行后需要输入用户密码;如果不指定用户名,命令执行后需要输入用户名和密码;

复制目录:

$scp -r local_folder remote_username@remote_ip:remote_folder

$scp -r local_folder remote_ip:remote_folder

从远程复制到本地的scp命令与上面的命令一样,只要将从本地复制到远程的命令后面2个参数互换顺序就行了。

 

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

$scp /opt/soft/demo.tar root@10.6.159.147:/opt/soft/scptest

 

10. netstat -tpln(sudo)

Netstat 是一款命令行工具,可用于列出系统上所有的网络套接字连接情况,包括 tcp, udp 以及 unix 套接字,另外它还能列出处于监听状态(即等待接入请求)的套接字。如果你想确认系统上的 Web 服务有没有起来,你可以查看80端口有没有打开。

netstat -a 列出所有当前的连接。使用 -a 选项即可。

netstat -at 使用 -t 选项列出 TCP 协议的连接

netstat -au 使用 -u 选项列出 UDP 协议的连接

netstat -ant 默认情况下 netstat 会通过反向域名解析技术查找每个 IP 地址对应的主机名。这会降低查找速度。如果你觉得 IP 地址已经足够,而没有必要知道主机名,就使用 -n 选项禁用域名解析功能。这样列出所有 TCP 协议的连接,没有使用域名解析技术。

netstat -tnl 任何网络服务的后台进程都会打开一个端口,用于监听接入的请求。这些正在监听的套接字也和连接的套接字一样,也能被 netstat 列出来。使用 -l 选项列出正在监听的套接字。现在我们可以看到处于监听状态的 TCP 端口和连接。如果你查看所有监听端口,去掉 -t 选项。如果你只想查看 UDP 端口,使用 -u 选项,代替 -t 选项。

注意:不要使用 -a 选项,否则 netstat 会列出所有连接,而不仅仅是监听端口。

sudo netstat -tpln(最常用) 查看端口和连接的信息时,能查看到它们对应的进程名和进程号对系统管理员来说是非常有帮助的。举个栗子,Apache 的 httpd 服务开启80端口,如果你要查看 http 服务是否已经启动,或者 http 服务是由 apache 还是 nginx 启动的,这时候你可以看看进程名。

使用 -p 选项查看进程信息。使用 -p 选项时,netstat 必须运行在 root 权限之下,不然它就不能得到运行在 root 权限下的进程名,而很多服务包括 http 和 ftp 都运行在 root 权限之下。

nestat -nat | awk '{print $6}'

netstat -tpln

https://linux.cn/article-2434-1.html

 

11.df

最常用的是df -lh

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

1.命令格式:

df [选项] [文件]

2.命令功能:

显示指定磁盘文件的可用空间。如果没有文件名被指定,则所有当前被挂载的文件系统的可用空间将被显示。默认情况下,磁盘空间将以 1KB 为单位进行显示,除非环境变量 POSIXLY_CORRECT 被指定,那样将以512字节为单位进行显示

3.命令参数:

必要参数:

-a 全部文件系统列表

-h 方便阅读方式显示

-H 等于“-h”,但是计算式,1K=1000,而不是1K=1024

-i 显示inode信息

-k 区块为1024字节

-l 只显示本地文件系统

-m 区块为1048576字节

参考:http://www.cnblogs.com/peida/archive/2012/12/07/2806483.html

 

12.du

最常用的是du -sh *

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

1.命令格式:

du [选项][文件]

2.命令功能:

显示每个文件和目录的磁盘使用空间。

3.命令参数:

-a或-all 显示目录中个别文件的大小。

-b或-bytes 显示目录或文件大小时,以byte为单位。

-c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。

-k或--kilobytes 以KB(1024bytes)为单位输出。

-m或--megabytes 以MB为单位输出。

-s或--summarize 仅显示总计,只列出最后加总的值。

-h或--human-readable 以K,M,G为单位,提高信息的可读性。

参考:http://www.cnblogs.com/peida/archive/2012/12/10/2810755.html

 

13. wc

统计指定文件中的字节数、字数、行数,并将统计结果显示输出。该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。wc同时也给出所指定文件的总统计数

命令参数:

-c 统计字节数。

-l 统计行数。

-m 统计字符数。这个标志不能与 -c 标志一起使用。

-w 统计字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。

-L 打印最长行的长度。

-help 显示帮助信息

--version 显示版本信息

 

14.nl

nl命令在linux系统中用来计算文件中行号。nl 可以将输出的文件内容自动的加上行号!其默认的结果与 cat -n 有点不太一样, nl 可以将行号做比较多的显示设计,包括位数与是否自动补齐 0 等等的功能。

命令格式:

nl [选项]... [文件]...

 

15.sort

sort将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按ASCII码值进行比较,最后将他们按升序输出。

sort -r: 默认的排序方式是升序,如果想改成降序,就加个-r就搞定了。

sort -n:你有没有遇到过10比2小的情况。想改变这种现状,就要使用-n选项,来告诉sort,“要以数值来排序”!

sort -t :提供了-t选项,后面可以设定间隔符。(是不是想起了cut和paste的-d选项,共鸣~~)

sort -k : 指定了间隔符之后,就可以用-k来指定列数了。

sort -u:它的作用很简单,就是在输出行中去除重复行。

 

16. uniq

文本中的重复行,基本上不是我们所要的,所以就要去除掉。使用uniq的时候要注意以下二点:

1,对文本操作时,它一般会和sort命令进行组合使用,因为uniq检查重复行的时候,只会检查相邻的行。如果您想先对输入排序,使用sort -u。

2,对文本操作时,若域中为先空字符(通常包括空格以及制表符),然后非空字符,域中字符前的空字符将被跳过

sort -c 在输出行前面加上每行在输入文件中出现的次数。

 

17.xargs

之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有这个必要,所以就有了xargs命令,例如:

find /sbin -perm +700 |ls -l 这个命令是错误的

find /sbin -perm +700 |xargs ls -l 这样才是正确的

xargs 可以读入 stdin 的资料,并且以空白字元或断行字元作为分辨,将 stdin 的资料分隔成为 arguments 。

xargs也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs的默认命令是echo,空格是默认定界符。

 

18. ll -rth

非常有用

-t 以文件修改时间排序

-r, –reverse 依相反次序排列

-h, –human-readable 以容易理解的格式列出文件大小 (例如 1K 234M 2G)

 

19. telnet 192.168.1.1 7001

可以用telnet命令来测试端口号是否正常打开还是关闭状态

 

20.curl

curl是一种命令行工具,作用是发出网络请求,然后得到和提取数据,显示在"标准输出"(stdout)上面

`-v`参数可以显示一次http通信的整个过程,包括端口连接和http request头信息。

`-i`参数可以显示http response的头信息,连同网页代码一起。

curl默认的HTTP动词是GET,使用`-X`参数可以支持其他动词。

发送表单信息有GET和POST两种方法。

curl 'http://192.168.1.1:7001' -vv

http://www.ruanyifeng.com/blog/2011/09/curl.html

 

21. /etc/hosts 文件

比如文件中有这样的定义

192.168.1.100 linumu100 test100

假设192.168.1.100是一台网站服务器,在网页中输入http://linumu100或http://test100就会打开192.168.1.100的网页。

hosts文件的格式如下:

IP地址 主机名/域名

第一部份:网络IP地址;

第二部份:主机名或域名;

第三部份:主机名别名;

 

22. ifconfig

许多windows非常熟悉ipconfig命令行工具,它被用来获取网络接口配置信息并对此进行修改。Linux系统拥有一个类似的工具,也就是ifconfig(interfaces config)。通常需要以root身份登录或使用sudo以便在Linux机器上使用ifconfig工具。

ip route

 

23.kill

kill -9 pid

pgrep的p表明了这个命令是专门用于进程查询的grep pgrep firefox

ps -ef | grep firefox | grep -v grep | cut -c 9-15 | xargs kill -s 9 <=> pgrep firefox | xargs kill -s 9

“grep -v grep”是在列出的进程中去除含有关键字“grep”的进程。

“cut -c 9-15”是截取输入行的第9个字符到第15个字符,而这正好是进程号PID。

“xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。

ps -ef | grep firefox | awk '{print $2}' | xargs kill -9 <=> kill -s 9 `ps -aux | grep firefox | awk '{print $2}'`

其中awk '{print $2}' 的作用就是打印(print)出第二列的内容

pkill -9 firefox pkill=pgrep+kill。

killall -9 firefox

killall和pkill是相似的,不过如果给出的进程名不完整,killall会报错。pkill或者pgrep只要给出进程名的一部分就可以终止进程。

http://blog.csdn.net/andy572633/article/details/7211546

 

24. 非常简单的PYTHON HTTP服务

这是一个可以用来共享文件的非常有用的方式。实现一个微型的HTTP服务程序来说是很简单的事情,在Python下,只需要一个命令行。下面是这个命令行:(假设我们需要共享我们的目录 /home/haoel 而IP地址是192.168.1.1)

$ cd /home/haoel

$ python -m SimpleHTTPServer

这就行了,而我们的HTTP服务在8000号端口上侦听。你会得到下面的信息:

Serving HTTP on 0.0.0.0 port 8000 ...

你可以打开你的浏览器(IE或Firefox),然后输入下面的URL:

http://192.168.1.1:8000

如果你的目录下有一个叫 index.html 的文件名的文件,那么这个文件就会成为一个默认页,如果没有这个文件,那么,目录列表就会显示出来。

如果你想改变端口号,你可以使用如下的命令:

$ python -m SimpleHTTPServer 8080

 

25. wget/>/hostname -i/seq/w

wget命令用来从指定的URL下载文件

使用wget下载单个文件

wget http://www.linuxde.net/testfile.zip

 

>用来清空日志而不用重启来释放占用的空间

 

hostname -i 用来查看本机的ip地址

 

seq : 用于产生从某个数到另外一个数之间的所有整数

seq 15 | grep 5 -A 5

 

w : 目前登入系统的用户有那些人,以及他们正在执行的程序。

 

 

 

 

 

 

 

posted @ 2017-02-12 20:18  john8169  阅读(260)  评论(0编辑  收藏  举报