关于本网站
blogs
Description
MyBlogs
Software Architecture
这是我的博客汇总
MyBlogs
这是我的博客汇总
@(笔记-初稿)[Linux]
[TOC]
记录我对于Linux的学习,网络相关的命令:
ps:“~” 表示为 home 目录,“.” 则是表示目前所在的目录,“…” 则表示当前目录的上一层目录
-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
ping 用于检测主机。ping 使用 ICMP 协议规定的 ECHO_REQUEST 数据报引发一个来自主机或网管的 ICMP ECHO_RESPONSE 回应。 ECHO_REQUEST 数据报(“ping”信
息)有一个 IP 和 ICMP 头部, 其后跟随了一个结构,包含一个时间相关的值以及一个任意的“pad” 字节的随机数用以填充数据包。
格式:ping [选项] 目标主机
常用选项:
1 | ping www.baidu.com #需要手动ctrl+c |
ifconfig 配置网络接口
格式:ifconfig [接口]
ifconfig 接口 [aftype] options | address …
常用选项:
1 | ifconfig #查看当前系统有几个网卡信息 |
netstat 显示网络状态包括网络连接,路由表,接口状态,伪装连接,网络链路信息和组播成员组。
格式: netstat [DESCRIPTION] [OPTIONS]
DESCRIPTION netstat 程序显示Linux网络子系统的信息。 输出信息的类型是由第一个参数控制的
选项
1 | netstat -a #列出所有端口 会显示很多信息 |
@(笔记-初稿)[Linux]
[TOC]
记录我对于Linux的学习,系统相关的命令:
ps:“~” 表示为 home 目录,“.” 则是表示目前所在的目录,“…” 则表示当前目录的上一层目录
-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
uptime 打印系统总共运行了多长时间和系统的平均负载
用法: uptime [选项]
选项:
1 | #uptime |
1 | 22:15:57 //系统当前时间 |
ps:系统平均负载是指运行时间内系统处于可运行与不可中断状态(比如等待disk IO)的平均进程数。
free 用于显示内存状态,包括物理内存、交换内存(swap)和内核缓冲区内存
用法: free [选项]
选项:
1 | #free |
1 | Mem 一行指的是内存的使用情况 |
不过在新的内核中,free命令的输出发生了变化,比如:
1 | #free |
1 | 没有了-/+ buffers/cache,并且buff/cache列合并了 |
vmstat 显示虚拟内存状态(“Virtual Memory Statistics”)的统计信息,但是它可以报告关于进程、内存、I/O等系统整体运行状态
用法: vmstat [选项]
1 | vmstat |
1 | 在vm模式中 |
pidstat 是一个常用的进程性能分析工具,用来实时查看进程的 CPU、内存、I/O 以及上下文切换等性能指标,还可以看线程的信息。
用法: pidstat [选项]
常用选项:
1 | pidstat -p 1 #显示进程1的 cpu 统计信息 |
1 | pidstat -d -p 1 |
vmstat只能查看总的cpu上下文切换,pidstat可以查看每个进程的上下文切换
1 | pidstat -w -p 1 |
ps:
1 | pidstat -r -p 1 |
以查看 cpu 上下文切换为例,查看线程相关信息
1 | pidstat -wt -p 541859 |
ps: pidstat 只能看到进程(也就是主线程)的信息,如果要仔细分析,还需要查看线程的相关信息。
top 用来监控Linux系统状况,比如cpu、内存的使用等
用法: top [选项]
常用选项:
选项:
在 top 命令的显示窗口中,还可以使用如下按键,进行一下交互操作:
以下时top命令的输出:
1 | top - 20:42:01 up 4 days, 3:52, 3 users, load average: 0.93, 1.26, 1.45 |
1~5行显示的系统整体信息:
从第6行开始,显示的是系统中进程的信息:
这只是默认显示的信息,top可显示的信息还有很多,可以使用快捷键切换。
还可以使用htop,可以说是top的增强版本。
ps 显示了每个进程的资源使用情况
用法: ps [options]
不过因为历史原因,在不同的Linux系统还有Unix系统上,ps的命令语法各不相同,所以目前的ps命令融合了不同派系的使用方法,ps命令支持三种使用的语法格式
一般情况下可以混用,但是可能会有冲突
常用选项:
从上面的描述我们能看到 aux
与 -aux
这两种参数组合的意义完全不同,在man文档中有如下描述:
1 | Note that “ps -aux” is distinct from “ps aux”. The POSIX and UNIX standards require that “ps -aux” print all processes owned by a user named “x”, as well as printing all processes that would be selected by the -a option. If the user named “x” does not exist, this ps may interpret the command as “ps aux” instead and print a warning. |
1 | ps #默认情况 |
结果默认会显示4列信息。
PID: 运行着的命令(CMD)的进程编号
TTY: 命令所运行的位置(终端)
TIME: 运行着的该命令所占用的CPU处理时间
CMD: 该进程所运行的命令
1 | #显示用户进程 标准风格: |
@(笔记-初稿)[Linux]
[TOC]
记录我对于Linux的学习,备份相关的命令:
ps:“~” 表示为 home 目录,“.” 则是表示目前所在的目录,“…” 则表示当前目录的上一层目录
-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
tar 命令用于备份文件,本身不做压缩
格式:tar <操作参数> [选项] 文件或者目录
操作参数是指要做的动作,必选至少有一个,有:
常用选项:
1 | 解包:tar xvf FileName.tar |
zip 用于压缩文件。在window平台中rar是常用的压缩文件格式,但是在linux平台中zip是个使用广泛的压缩文件格式。
格式:zip [参数] [打包后的文件名] [打包的目录路径]
常用参数:
1 | #将 /var/www/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip: |
unzip 用于解压缩zip文件
格式:unzip [-Z] [-cflptTuvz[abjnoqsCDKLMUVWX$/:^]] file[.zip] [file(s) …] [-x xfile(s) …] [-d exdir]
常用参数:
1 | #将压缩文件html.zip在当前目录下解压缩。 |
gzip 用于压缩或解压缩文件,用它压缩文件后,其名称后面会多出".gz"的扩展名
格式:gzip [OPTION]… [FILE]…
常用选项:
1 | ls * |
bzip2 是.bz2文件的压缩程序。
bunzip2 bzip2 bzcat是同一个程序,bunzip2 == bzip2 -d
格式:
ps:
bunzip2 (以及 bzip2 -d) 对所有指定的文件进行解压缩处理。不是由 bzip2 产生的文件将被忽略,同时发出一个警告信息。 bzip2 按下
列方式由压缩文件名确定解压后的文件名:
filename.bz2 解压成 filename
filename.bz 解压成 filename
filename.tbz2 解压成 filename.tar
filename.tbz 解压成 filename.tar
anyothername 解压成 anyothername.out
如果文件名的后缀不是下列之一: .bz2, .bz, .tbz2 或 .tbz, .bzip2 将抱怨无法确定原始文件名,并采用原文件名加 .out 作为解压缩
文件名。
1 | bzip2 add.c add.s # 将原文件删除并压缩,后缀名为.bz2 |
bzip2recover - 恢复损坏的 bzip2 文件
格式:bzip2recover filename
@(笔记-初稿)[Linux]
[TOC]
记录我对于Linux的学习,文件相关的命令:
ps:“~” 表示为 home 目录,“.” 则是表示目前所在的目录,“…” 则表示当前目录的上一层目录
-h 用人类可读的格式展示(G(千兆字节),M(兆字节),K(千字节)),大部分命令有这个参数
touch 常用于将每个文件的访问和修改时间更新为当前时间,不过当直接跟一个不存在的文件名时,会创建一个空文件,大小为0
1 | touch tody.txt |
>
通常用于重定向一个命令的输出到一个新文件中,如果之前没有命令,则会创建一个新文件,大小为0,比如可以用echo,print等命令结合>
将输出重定向到一个新文件
1 | ll dody.txt |
ps:如果你不是想创建新的,而是想追加内容到已有的文件,那么可以使用
>>
vi/vim Vi是Unix及Linux系统下标准的编辑器,Vim是一个类似于Vi的著名的功能强大、高度可定制的文本编辑器,在Vi的基础上改进和增加了很多特性。可以使用vi/vim创建新文件。
1 | #以下命令打开一个文件,需要保存,否则修改不生效 |
cat 最常用的方式是将文件一次性全部输出到标准输出,或者将几个文件合并为一个文件
cat [-AbeEnstTuv] [–help] [–version] fileName
1 | cat b.txt |
more 与cat类似,不过是以分页的形式输出,按空格可以向前,按b可以退后,
格式:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [fileNames…]
常用参数:
-num 一次显示的行数
+num 从第 num 行开始显示
-s 当遇到有连续两行以上的空白行,就代换为一行的空白行
1 | more b.txt |
less 与 more 类似,但使用 less 可以随意浏览文件,可以使用方向键控制方向,而且 less 在查看之前不会加载整个文件。
格式:less [options] filename
常用参数:
-e 当文件显示结束后,自动离开
-f 强迫打开特殊文件,例如外围设备代号、目录和二进制文件
-i 忽略搜索时的大小写
-m 显示类似 more 命令的百分比
-N 显示每行的行号
-s 显示连续空行为一行
1 | #显示行号 |
ps: more 与less的不同
- less提供了更丰富的控制方式,比如可以按键盘上下方向键显示上下内容,more不能通过上下方向键控制显示
- less不必读整个文件,加载速度会比more更快
- less退出后shell不会留下刚显示的内容,而more退出后会在shell上留下刚显示的内容
head 查看文件的开头部分的内容
格式:head [options] filename
常用参数:
-q 隐藏文件名
-v 显示文件名
-c<数目> 显示的字节数。
-n<行数> 显示的行数,默认为 10,即显示 10 行的内容
1 | head b.txt |
tail 查看文件的最后的内容,常用于查阅正在改变的日志文件
格式:tail [options] filename
-f 循环读取 常用于查阅正在改变的日志文件
-q 不显示处理信息
-v 显示详细的处理信息
-c<数目> 显示的字节数
-n<行数> 显示文件的尾部 n 行内容
1 | tail -f xxx.log |
rm 用于删除一个文件或者目录
格式:rm [options] name…
常用参数:
1 | rm tody.txt |
mv 可以将文件或目录改名、或将文件或目录移入其它位置
格式:
mv [选项]… 源文件 目标文件
mv [选项]… 源文件… 目录
常用命令:
1 | # 重命名 |
ps: mv 源目录名 目标目录名 目标目录已存在,将源目录移动到目标目录;目标目录不存在则将源目录改名
cp 主要用于复制文件或目录
格式:
cp [选项]… 源文件 目标文件
cp [选项]… 源文件… 目录
常用命令:
1 | cp -r test/ newtest |
file 用于辨识文件类型
格式:file [ -bcnsvzL ] [ -f 命名文件 ] [ -m 幻数文件 ] file …
常用命令:
1 | file add.c |
touch 于修改文件或者目录的时间属性。比如访问时间、修改时间。
格式:touch [选项]… 文件列表…
1 | # ls -l 查看最后时间 |
chown 将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。
ps:这个命令只有root才能执行。
格式:chown [选项]… [所有者][:[组]] 文件…
chown [选项]… --reference=参考文件 文件…
ps:如果没有指定所有者,则不会更改所有者信息。若所属组若没有指定也不会对其更改,但当加上’:’ 时 GROUP 会更改为指定所有者的主要组。所有者和所属组可以是数字或名称。
1 | # 递归修改文件夹的组和所有者 |
chgrp 与chown命令类似,不过只用于变更文件或目录的所属群组。
格式: chgrp [选项列表]… 组 文件…
chgrp [选项列表]… --reference=参考文件 文件…
1 | # 递归修改文件夹的组 |
chmod
格式:chmod [选项]… 模式[,模式]… 文件列表…
chmod [选项]… 八进制模式字符串 文件列表…
chmod [选项]… --reference=参考文件 文件列表…
其中模式(mode)的格式如下:[ugoa]*([-+=]([rwxXst]*|[ugo]))+|[-+=][0-7]+
其中:
1 | # 设置一个文件的权限有多种写法,比如将file.txt设置为自己可读可写,组可读可写,其他人可读可写 |
ps: chown、chgrp与chmod都是由同样的程序员编写的,所以它们的参数与使用方式都很类似
find 用来在指定目录下查找文件
格式:find [path…] [expression]
常用的expression:
;' 组成的参数为止。命令的参数中,字符串
{}’ 将以正在处理的文件名替换。所有的{}'都会被替换,不仅是在单独的一个参数中.有些版本的 find不是这样做的。 这些参数可能需要用
' 来escape 或者用括号括住,防止它们被shell展开。命令是从起始目录执行的y' 或
Y’ 起始则不会运行 command 而是返回false。1 | # 查找当前目录及子目录下以.s结尾的文件 |
diff 以逐行的方式,比较文本文件的异同处
格式: diff [选项] 源文件 目标文件
diff选项有很多,可以访问如下路径查看diff中文文档
有两个文件,a.txt如下
1 | a |
b.txt如下:
1 | a |
当使用diff a.txt b.txt
时,输出如下结果:
1 | 2,3d1 |
现在让我们来解释一下该输出的结果
首先介绍一些概念:
所以
1 | 2,3d1 #源文件中删除第2,3行 |
cmp 按字节比较两个文件是否有差异。当相互比较的两个文件完全一样时,则该指令不会显示任何信息。若发现有所差异,预设会标示出第一个不同之处的字符和列数编号
格式: cmp [选项]… 文件1 文件2
1 | cmp aa.txt bb.txt |
split 用于将一个文件分割成数个。
格式:split [OPTION] [INPUT [PREFIX]]
参数
[PREFIX] : 设置切割后文件的前置文件名, split会自动在前置文件名后再加上编号
ps: 该指令将大文件分割成较小的文件,在默认情况下将按照每1000行切割成一个小文件。
如果没有设置[PREFIX]则默认以"x"开头,
如果没有指定INPUT,或INPUT是-,就从标准输入读取数据.
1 | split -6 a.c |
csplit 用于将文件依照指定的范本样式分割
格式:csplit [OPTION]… FILE PATTERN…
选项:
格式:
1 |
|
wc 用于计算字数,如果没有给出文件名,则从标准输入读取。wc同时也给出所有指定文件的总统计数。字是由空格字符区分开的最大字符串。
格式: wc [选项]… [文件列表]
选项:
1 |
|
sort 用于将文本文件内容加以排序。它以行为单位来排序。
格式:[OPTION]… [FILE]…
常用选项:
1 | cat testsort.txt |
uniq 用于检查及删除文本文件中重复出现的行列,一般与 sort 命令结合使用
选项:uniq [选项]… [输入 [输出]]
常用选项:
域指一个由空字符(通常是空格和/或制表符)和紧随的非空字符组成的序列。同时使用跳过域和跳过字符选项时,先跳过域再跳过字符。
ps:uniq只对相邻的重复行进行处理,所以需要提前使用sort进行排序。
1 | cat testuniq.txt |
grep 命令用于查找文件里符合条件的字符串,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。
grep 有两个变种变种,egrep 和 fgrep 。 Egrep 与 grep -E 相同。 Fgrep 与 grep -F 相同。
格式:grep [options] PATTERN [FILE…]
常用选项:
1 | grep match_pattern file_name # 在文件中搜索一个单词 |