基础命令如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,这两个会在后文介绍到,此处就暂不介绍了,感兴趣的可以先问谷歌。
文章出处:傻东の学习笔记
相关文章
ROOT权限下删除文件提示:permission denied2018-07-03
转:《linux运维步步为营》第二章 初阶技能 2.1 系统准备2014-07-04
转:《linux运维步步为营》第一章 linux基础 1.1 linux发行版2014-07-04