转:《linux运维步步为营》第一章 linux基础 1.2 linux命令

2014-07-04 浏览:2425
转:《linux运维步步为营》第一章 linux基础 1.2 linux命令
评论:(0)复制地址

基础命令如cd、ls和rm就不赘述了,此处说几个很有用的命令。


find

查找文件。一般格式为:

find 指定目录 指定条件 指定操作

意指在指定目录下按照指定条件搜索文件,搜到后进行指定操作。find支持的条件表达式和命令可以通过find —help查看。介绍一下常见的指令

find ./ -name “\*.log” 在当前目录下查找所有log扩展名的文件或文件夹

find ./ -type f -name “\*.log” 在当前目录下查找所有log扩展名的文件

find ./ -type f -name “\*.log” -exec file '{}' \; 对当前目录下找到的log文件执行file程序,后面的转义分号是必须的

find可以根据时间查找文件,有三个相关参数

atime n : access_time,读取或执行时间

crime n : change_time,文件状态改变时间

mtime n : modify_time,文件内容修改时间

这三个参数的n指的是24n,有两种表达方式n、+n

find ./ -mtime n 表示最后一次修改发生在距当前时间 n24小时内

find ./ -mtime +n 表示最后一次修改发生在n天前,即距离当前时间n*24小时以上


grep

强大的文本搜索工具,支持正则表达式。

有几个常用的参数

-c 只输出匹配的行数

-I 忽略大小写

-h 查询多个文件不显示文件名

-l 查询多个文件只输出包含条件的文件名

-n 显示匹配行及行号

-s 不显示不存在或无匹配的错误信息

-v 显示不包含指定条件的所有行

-r 递归搜索

-E 使用正则表达式

-F 不使用正则表达式,在搜索大文件时比较有效率

正则的写法就不赘述了,内容很多,并且需要积累才能灵活运用。


sed和awk

两者都是强大的文本处理工具。sed主要以行为单位进行处理,可以对数据进行增删改等操作。awk将文件逐行读入,默认以空格将每行切片,然后对切开部分进行分析处理,其对数据进行处理分析的能力极其强大。

这两个文本处理工具的操作相当复杂,读者可以自行谷歌或百度搜索阅读。


top

查看系统当前状态,包括负载,部分进程,CPU和内存使用等情况。

top前五行是系统整体的统计信息。第一行为任务队列信息,包含启动时间,当前用户,以及系统负载。第二三行为进程和CPU信息,在键盘上敲1可以将CPU按内核分别显示。第四五行尾内存信息。往下都是进程信息。具体解释一下负载、CPU、内存和进程。

负载load average后有三个数字,分别表示1分钟、5分钟、15分钟内的任务队列平均长度,即负载。平常我们说负载高,说的就是此处显示的数值偏高。一般来说,1分钟的负载应该在CPU核数左右为可承受范围,超过这个范围就要查看一下系统了。

CPU的表示中有一些缩写,此处解释一下。us,用户占用CPU百分比。sy,内核占用CPU百分比。ni用户进程空间内改变过优先级的进程占用CPU百分比。id,空间百分比。wa,等待输入输出的CPU百分比。

内存区的信息有时候会让人迷糊。total表示总的物理内存,used表示使用的物理内存,free表示空闲内存,buffers表示内核缓存的内存,swap是交换分区大小,cached表示缓存的交换区总量。这里内存有有一些计算公式

total=used+free

实际使用=used-buffers-cache

实际空闲=free+buffers+cache

因为buffers和cache是随时变动的,可以挪用。


ps

查看当前进程,可以看到执行ps命令的时刻,系统中有哪些进程,进程的状态是怎样的,占用的各种资源信息。具体参数意义可以通过man查看,这里介绍几种常用的参数组合。

ps -A 简短的显示所有进程信息

ps -u user 显示指定用户的进程信息

ps -ef 显示略详细的进程信息,包含执行进程的命令行

ps aux 显示详细的进程信息,包括CPU和内存等的占用以及耗时,包含执行进程的命令行,比上面一个命令多了资源占用信息

ps -axjf 以树方式显示进程,可以查看进程的父子关系

这些命令执行后的返回内容使用了各种缩写,这里解释一下常见几列的意义。

S指的是状态(STAT),包含五种状态:D(不可中断)R(运行中)S(睡眠中)T(停止状态)Z(僵死状态)

UID:程序拥有者的用户ID

PPID:父进程的ID

C或%CPU:CPU占用百分比

PRI:进程优先级

SZ:占用掉的内存大小

%MEM:物理内存占用百分比

VSZ:占用的虚拟内存量,单位为KB

RSS:占用的固定内存量,单位为KB

TTY:执行终端

CMD或COMMAND:执行命令

TIME:占用的CPU时间

START:启动时间

ps命令与grep命令结合起来可以过滤出指定程序的进程信息,比如ps aux | grep php可以看到包含php的命令的信息。


which

查找指定内容在PATH中的位置。比如你想知道ps命令在系统的什么位置,可以执行which ps,得到结果一般是/bin/ps,就可以去/bin下寻找ps执行文件。


netstat

查看网络信息,可以用来检查网络端口及连接情况。强大的netstat有很多参数,此处依然是介绍几个常用的组合。

netstat -s 按照协议分别统计数据,包括IP,ICMP,ICMPMSG,TCP,UDP,UDPLITE,TCPEXTIPEXT。比如我们觉得服务器网络慢了,或者响应慢了,可以通过这个命令,查看一下各协议的连接状态,比如TCP有多少已连接,多少坏包。

netstat -r 显示路由表的信息

netstat -a 显示所有有效连接的信息,包括已建立的连接(ESTABLISHED)和监听中的连接(LISTENING)

netstat -n 显示所有已建立的有效连接

netstat -tulnp 显示所有TPC和UDP使用的端口及占用该端口的进程ID和程序名,此处会直接显示数字而不显示主机名,端口名或用户名,这样更直观一点。

netstat -c 可以每隔一秒输出一下网络信息

有几个和其他命令组合使用的如下

netstat -plan | grep ":80" | wc -l 查看连接80端口的IP总数

netstat -plan | grep ":80" | grep -v "\*" | awk {'print $5'} | sed 's/:\*f\*:\*\(.\*\)$/\1/p' | cut -d: -f 1 | sort | uniq -c | sort -nrk 1 | head -20 将80端口连接IP分组查看连接数从多到少的前20个IP和它的连接数量,这个可以用来看是不是有IP恶意请求


ifconfig

查看和进行网络配置。一般拿到系统我们主要用这个命令来查看网卡IP,可以在参数中指定网卡或显示所有网卡的信息。反馈的信息包含连接类型,mac地址,IP地址,子网掩码,网卡开启状态,网线连接状态,组播,最大传输单元,收发数据包的统计,收发数据字节数统计这些信息。使用ifconfig配置网卡可以设置静态地址或伪造mac地址,具体用法可以自行谷歌。设置网卡自动获取ip一般dhclient来做。


xargs

这个命令用来将参数列表分段传递给其他命令,避免参数列表过长问题。一个可能的场景就是目录中有超级多的文件,此时直接使用rm命令可能返回“参数列表过长”的错误,结合xargs使用find ./ -type f -print0 | xargs -0 rm -f可以避免报错。-print0表示输出以null分隔,-0表示输入以null分隔。


crontab

用来设置计划任务,可以对时间进行各种组合。打开crontab其实是编辑文件,每一行为一个任务,格式为“* * * * * command”,每个字段以空格分隔,前面五个是对时间的设置,后面为任务命令。5个时间字段从前到后意义分别是分钟(0-59)、小时(0-23)、日期(1-31)、月份(1-12)、星期(0-6,0为星期天)。除了括号中数字的表示,还有几个特殊符号表示,“”、“/”、“-”和“,(英文逗号)”。代表所有取值范围内的数字,/代表每,比如“/5”表示每5个单位,-代表数字范围,,(英文逗号)表示几个指定数字。

举几个例子:

0 12,13 * * * command表示在12:00和13:00分别执行一次命令

0 */2 * * * command表示每2个小时执行一次命令

0 23-7/2,8 * * * command表示晚上11点到早上7点之间每两小时执行一次命令,附带早上8点也执行一次

0 11 4 * 1-3 command 每个月4号和每个星期的星期一到星期三早上11点执行一次命令

一般我们会将执行反馈重定向到文件中,以便事后查看命令执行了没,执行过程有没有报什么内容,是否报错。


此处附带讲一下linux的重定向规则

command > filename 把标准输出重定向到一个新文件中

command >> filename 把标准输出重定向到一个文件中(追加)

command 1 > fielname 把标准输出重定向到一个文件中

command > filename 2>&1 把标准输出和标准错误一起重定向到一个文件中

command 2 > filename 把标准错误重定向到一个文件中

command 2 >> filename 把标准输出重定向到一个文件中(追加)

command >> filename 2>&1 把标准输出和标准错误一起重定向到一个文件中(追加)

command < filename >filename2 把command命令以filename文件作为标准输入,以filename2文件作为标准输出

command < filename 把command命令以filename文件作为标准输入

command << delimiter 把从标准输入中读入,直至遇到delimiter分界符

command <&m 把文件描述符m作为标准输入

command >&m 把标准输出重定向到文件描述符m中

command <&- 把关闭标准输入

command 2>&1 把command命令标准错误重定向到标准输出


head

获取文件从前向后指定量的内容。简单但有用的命令,可以指定长度数量,单位包括字节和行。在预览大文件内容时可以使用。


tail

获取文件从后向前指定量的内容。同head类似,不过tail多一个功能,使用-f参数可以让tail跟踪文件的更改,文件有更改时立即显示出来。


cut

截取内容,对付大文件,从中提取一段内容很有用。使用组合很多,就不具体说了,读者可以搜一下。


sort

对内容一行为一个单位进行排序,比如前面对网络信息的处理就用到了它。比较原则为从首字符向后,依次按ASCII码值比较。几个常用参数有:

-r sort默认是按照升序排列的,使用这个参数可以转为降序排列

-u 可以去重

-o 当需要将结果写入到原文件中时,此处不能用重定向,需要使用这个参数。

-n sort可能会认为10比2小,因为1小于2。用这个参数告诉sort,要按照数值来排序,于是10大于2了

-k 指定列数

-t 指定分列的分隔符


wc

这个不是指厕所,是统计指定内容的字节数、字数或行数的命令。

-c 统计字节数

-l 统计行数

-m 统计字符数,不能与-c一起使用

-w 统计字数,有空格、tab或换行分隔

-L 最长行的长度


uniq

去重。常用下面三个参数

-c 显示重复次数

-d 仅显示重复出现的行

-u 仅显示没重复出现的行


ln

建立链接文件,也就是晕到死上的快捷方式。链接分软链接和硬链接,软链接会在指定位置生成一个文件镜像,不占用磁盘空间,硬链接在选定位置生成一个和源文件大小相同的文件,无论哪种链接,文件变化会保持同步。建立软链接用参数-s,如ln -s 源文件 目标文件,不使用参数则默认硬链接。


who

显示当前有哪些人连接本机,包含用户、终端、时间和IP信息


history

显示当前用户执行命令的历史记录


scp

用于在主机间通过ssh通道复制文件和目录,分本地到远程(scp localfile username@host:remotefile)和远程到本地(scp username@host:remotefile localfile)两种方式。

如果需要指定端口,使用-P 端口参数,使用-r参数递归复制内容


tar

打包命令,可以配合压缩解压使用,具体参数就让谷歌告诉你吧。


除了上文列出的命令之外,还有一些其他有用的命令,比如iostat和vmstat,这两个会在后文介绍到,此处就暂不介绍了,感兴趣的可以先问谷歌。


文章出处:傻东の学习笔记


评论:(0)复制地址
发布:zpblog | 分类:Linux | Tags:运维

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。