大家好,我是山猫
最近山猫花了三天三夜?无敌篇 Linux 万字总结
从 linux 基础、三剑客(grep\sed\awk)、shell 脚本编程、文件管理命令、磁盘管理命令、网络通讯命令、系统备份命令 以及 高频面试题角度出发的呕心力作(呵呵呵 *2)
只为助你拿下高薪 offer
建议小伙伴先一键三连 点赞、关注、收藏(其实收藏对你们帮助大,你点赞 + 关注就当是山猫的朋友啦,日后朋友有难山猫第一个站出来帮你哟,当然文末也有小卡片可以点击进去领文档,咱们拒绝白嫖)
目录
3.12 rm 命令(万恶之源 - 多少程序员因为敲了它而跑路)
Linux 和 Unix 都是功能强大的操作系统,都是应用广泛的服务器操作系统,有很多相似之处,甚至有一部分人错误地认为 Unix 和 Linux 操作系统是一样的,然而,事实并非如此,以下是两者的区别。
开源性 Linux 是一款开源操作系统,不需要付费,即可使用;Unix 是一款对源码实行知识产权保护的传统商业软件,使用需要付费授权使用。
跨平台性 Linux 操作系统具有良好的跨平台性能,可运行在多种硬件平台上;Unix 操作系统跨平台性能较弱,大多需与硬件配套使用。
可视化界面 Linux 除了进行命令行操作,还有窗体管理系统;Unix 只是命令行下的系统。
硬件环境 Linux 操作系统对硬件的要求较低,安装方法更易掌握;Unix 对硬件要求比较苛刻,按照难度较大。
用户群体 Linux 的用户群体很广泛,个人和企业均可使用;Unix 的用户群体比较窄,多是安全性要求高的大型企业使用,如银行、电信部门等,或者 Unix 硬件厂商使用,如 Sun 等。
相比于 Unix 操作系统,Linux 操作系统更受广大计算机爱好者的喜爱,主要原因是 Linux 操作系统具有 Unix 操作系统的全部功能,并且能够在普通 PC 计算机上实现全部的 Unix 特性,开源免费的特性,更容易普及使用!
Linux 系统的核心是内核。内核控制着计算机系统上的所有硬件和软件,在必要时分配硬件,并根据需要执行软件。
系统内存管理
应用程序管理
硬件设备管理
文件系统管理
从大的方面讲,Linux 体系结构可以分为两块:
为什么 Linux 体系结构要分为用户空间和内核空间的原因?
BASH 和 DOS 控制台之间的主要区别在于 3 个方面:
了解即可
1、主机加电自检,加载 BIOS 硬件信息。
2、读取 MBR 的引导文件 (GRUB、LILO)。
3、引导 Linux 内核。
4、运行第一个进程 init (进程号永远为 1 )。
5、进入相应的运行级别。
6、运行终端,输入用户名和密码。
了解即可
比较重要的是 /var/log/messages 日志文件。
该日志文件是许多进程日志文件的汇总,从该文件可以看出任何入侵企图或成功的入侵。
另外,如果胖友的系统里有 ELK 日志集中收集,它也会被收集进去。
命令行界面(英语:command-line interface,缩写]:CLI)是在图形用户界面得到普及之前使用最为广泛的用户界面,它通常不支持鼠标,用户通过键盘输入指令,计算机接收到指令后,予以执行。也有人称之为字符用户界面(CUI)。
通常认为,命令行界面(CLI)没有图形用户界面(GUI)那么方便用户操作。因为,命令行界面的软件通常需要用户记忆操作的命令,但是,由于其本身的特点,命令行界面要较图形用户界面节约计算机系统的资源。在熟记命令的前提下,使用命令行界面往往要较使用图形用户界面的操作速度要快。所以,图形用户界面的操作系统中,都保留着可选的命令行界面。
图形用户界面(Graphical User Interface,简称 GUI,又称图形用户接口)是指采用图形方式显示的计算机操作用户界面。
图形用户界面是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。
grep?[OPTIONS]?PATTERN?[FILE...]
--color=auto?对匹配到的文本着色显示
-v?显示不被pattern匹配到的行
-i?忽略字符大小写
-n?显示匹配的行号
-c?统计匹配的行数
-o?仅显示匹配到的字符串
-q?静默模式,不输出任何信息
-A?#?after,?后#行
-B?#?before,?前#行
-C?#?context,?前后各#行
-e?实现多个选项间的逻辑or关系
grep?–e?‘cat?’?-e?‘dog’?file
-w?匹配整个单词
-E?使用ERE,相当于egrep
-F?相当于fgrep,不支持正则表达式
例:
1、包含 root: grep -n root
2、不包含 root: grep -nv root
3、s 开头: grep ^s
4、以 n 结尾: grep -n n$
sed?[option]...?'script'?inputfile
选项
-n?不输出模式空间内容到屏幕,即不自动打印
-e?多点编辑
-f?/PATH/SCRIPT_FILE:?从指定文件中读取编辑脚本
-r?支持使用扩展正则表达式
-i?直接编辑文件
-i.bak?备份文件并原处编辑
script?地址定界
不给地址:对全文进行处理
单地址:
#:?指定的行,$:最后一行
/pattern/:被此处模式所能够匹配到的每一行
地址范围:
#,#
#,+#
/pat1/,/pat2/
`#,/pat1/
~:步进
1~2?奇数行
2~2?偶数行
编辑命令:
d?删除模式空间匹配的行,并立即启用下一轮循环
p?打印当前模式空间内容,追加到默认输出之后
a?[\]text1?在指定行后面追加文本,支持使用\n实现多行追加
i?[\]text?在行前面插入文本
c?[\]text?替换行为单行或多行文本
w?/path/somefile?保存模式匹配的行至指定文件
r?/path/somefile?读取指定文件的文本至模式空间中匹配到的行后
=?为模式空间中的行打印行号
!?模式空间中匹配行取反处理
s///:查找替换,支持使用其它分隔符,s@@@,s###
替换标记:
g?行内全局替换
p?显示替换成功的行
w?/PATH/TO/SOMEFILE?将替换成功的行保存至文件中
举例子:
1、打印第 2 行: sed -n 2p passwd
2、打印 2-5 行: sed -n 2,5p passwd
3、root 全替换 abc: sed -i 's/root/abc/g' passwd
直接修改读取的文件内容,而不是输出到终端。
s :取代,可以直接进行取代的工作。
g: 是全局的意思。其中 # 是格式符,他也可以是 @ 或者别的/。
Sed 替换格式是:sed -i ‘s/要替换的内容/替换成的内容/g' 文件名。
[root@debugresetreset54142x1?~]#?awk?--help
Usage:?awk?[POSIX?or?GNU?style?options]?-f?
progfile?[--]?file?...
Usage:?awk?[POSIX?or?GNU?style?options]?
[--]?'program'?file?...
POSIX?options:??????????GNU?long?options:?(standard)
????????-f?progfile?????????????--file=progfile
????????-F?fs???????????????????--field-separator=fs
????????-v?var=val??????????????--assign=var=val
Short?options:??????????GNU?long?options:?(extensions)
????????-b??????????????????????--characters-as-bytes
????????-c??????????????????????--traditional
????????-C??????????????????????--copyright
????????-d[file]????????????????--dump-variables[=file]
????????-e?'program-text'???????--source='program-text'
????????-E?file?????????????????--exec=file
????????-g??????????????????????--gen-pot
????????-h??????????????????????--help
????????-L?[fatal]??????????????--lint[=fatal]
????????-n??????????????????????--non-decimal-data
????????-N??????????????????????--use-lc-numeric
????????-O??????????????????????--optimize
????????-p[file]????????????????--profile[=file]
????????-P??????????????????????--posix
????????-r??????????????????????--re-interval
????????-S??????????????????????--sandbox
????????-t??????????????????????--lint-old
????????-V??????????????????????--version
举例子:
1、打印文件第一列:
这里的分隔符是冒号 ,然后 print 打印第一列
2、输出字段 1,3,6,以制表符作为分隔符
1 个 Shell 脚本是一个文本文件,包含一个或多个命令。作为系统管理员,我们经常需要使用多个命令来完成一项任务,我们可以添加这些所有命令在一个文本文件 (Shell 脚本) 来完成这些日常工作任务。
什么是默认登录 Shell ?
在 Linux 操作系统,"/bin/bash" 是默认登录 Shell,是在创建用户时分配的。
在 Shell 脚本,我们可以使用两种类型的变量:
系统定义变量
系统变量是由系统系统自己创建的。这些变量通常由大写字母组成,可以通过 set 命令查看。
用户定义变量
用户变量由系统用户来生成和定义,变量的值可以通过命令 "echo $<变量名>" 查看。
在写一个 Shell 脚本时,如果你想要检查前一命令是否执行成功,在 if 条件中使用 $? 可以来检查前一命令的结束状态。
root@localhost:~##?ls?/usr/bin/shar
/usr/bin/shar
root@localhost:~##?echo?$?
0
root@localhost:~##?ls?/usr/bin/share
ls:?cannot?access?/usr/bin/share:?No?such?file?or?directory
root@localhost:~##?echo?$?
2
if
?语法如何嵌套?if?[?条件?]
then
命令1
命令2
…..
else
if?[?条件?]
then
命令1
命令2
….
else
命令1
命令2
…..
fi
fi
在 Shell 脚本中如何比较两个数字?
在 if-then 中使用测试命令( -gt 等)来比较两个数字。例如:
#!/bin/bash
x=10
y=20
if?[?$x?-gt?$y?]
then
echo?“x?is?greater?than?y”
else
echo?“y?is?greater?than?x”
fi
case
?语句的语法?case?变量?in
值1)
命令1
命令2
…..
最后命令
!!
值2)
命令1
命令2
……
最后命令
;;
esac
for
?循环语法?for?变量?in?循环列表
do
命令1
命令2
….
最后命令
done
while
?循环语法?如同 for 循环,while 循环只要条件成立就重复它的命令块。
不同于 for 循环,while 循环会不断迭代,直到它的条件不为真。
语法:
while?[?条件?]
do
命令…
done
do-while 语句的基本格式?
do-while 语句类似于 while 语句,但检查条件语句之前先执行命令(LCTT 译注:意即至少执行一次。)。下面是用 do-while 语句的语法:
do
{
命令
}?while?(条件)
使用 chmod 命令来使脚本可执行。例子如下:chmod a+x myscript.sh 。
#!/bin/bash 的作用?
#!/bin/bash 是 Shell 脚本的第一行,称为释伴(shebang)行。
这里 # 符号叫做 hash ,而 ! 叫做 bang。
它的意思是命令通过 /bin/bash 来执行。
有两种方法来执行算术运算:
1、使用 expr 命令:## expr 5 + 2 。
2、用一个美元符号和方括号([16 + 4] ; test=$[16 + 4] 。
cat 简介
cat?filename
cat?>?filename
cat?file1?file2?>?file
chmod 简介
Linux/Unix 的文件调用权限分为三级 : 文件拥有者、群组、其他。利用 chmod 可以控制文件如何被他人所调用。
用于改变 linux 系统文件或目录的访问权限。用它控制文件或目录的访问权限。该命令有两种用法。一种是包含字母和操作符表达式的文字设定法;另一种是包含数字的数字设定法。
每一文件或目录的访问权限都有三组,每组用三位表示,分别为文件属主的读、写和执行权限;与属主同组的用户的读、写和执行权限;系统中其他用户的读、写和执行权限。可使用 ls -l test.txt 查找。
chmod 权限说明:
-rw-r--r--?1?root?root?296K?11-13?06:03?log2012.log
chmod 常用参数:
-c?当发生改变时,报告处理信息
-R?处理指定目录以及其子目录下所有文件
chmod 权限范围:
u?:目录或者文件的当前的用户
g?:目录或者文件的当前的群组
o?:除了目录或者文件的当前用户或群组之外的用户或者群组
a?:所有的用户及群组
chmod 权限代号:
r?:读权限,用数字4表示
w?:写权限,用数字2表示
x?:执行权限,用数字1表示
-?:删除权限,用数字0表示
s?:特殊权限
chmod 实例:
chmod?a+x?t.log
chmod?u=r?t.log?
chmod?751?t.log?-c(或者:chmod?u=rwx,g=rx,o=x?t.log)
chown 简介
-c?显示更改的部分的信息
-R?处理指定目录及子目录
实例:
chown?-c?mail:mail?log2012.log
chown?-c?:mail?t.log
chown?-cR?mail:?test/
cp 简介
-i?提示
-r?复制目录及目录内所有项目
-a?复制的文件与原文件时间一样
实例:
cp?-ai?a.txt?test
cp?-s?a.txt?link_a.txt
find 命令
命令格式:
find?pathname?-options?[-print?-exec?-ok?...]
命令参数:
pathname:?find命令所查找的目录路径。例如用.来表示当前目录,用/来表示系统根目录。
-print:?find命令将匹配的文件输出到标准输出。
-exec:?find命令对匹配的文件执行该参数所给出的shell命令。相应命令的形式为'command'?{??}?\;,注意{???}和\;之间的空格。
-ok:?和-exec的作用相同,只不过以一种更为安全的模式来执行该参数所给出的shell命令,在执行每一个命令之前,都会给出提示,让用户来确定是否执行。
命令选项:
-name?按照文件名查找文件
-perm?按文件权限查找文件
-user?按文件属主查找文件
-group??按照文件所属的组来查找文件。
-type??查找某一类型的文件,诸如:
???b?-?块设备文件
???d?-?目录
???c?-?字符设备文件
???l?-?符号链接文件
???p?-?管道文件
???f?-?普通文件
实例:
find?-atime?-2
find?./?-name?'*.log'
find?/opt?-perm?777
find?-size?+1000c
find?-size?1000c?
常用参数:
-n<行数>?显示的行数(行数为复数表示从最后向前数)
实例:
head?1.log?-n?20
head?-c?20?log2014.log
head?-n?-10?t.log
常用命令参数:
-i??忽略搜索时的大小写
-N??显示每行的行号
-o??<文件名>?将less?输出的内容在指定文件中保存起来
-s??显示连续空行为一行
/字符串:向下搜索“字符串”的功能
?字符串:向上搜索“字符串”的功能
n:重复前一个搜索(与?/?或???有关)
N:反向重复前一个搜索(与?/?或???有关)
-x?<数字>?将“tab”键显示为规定的数字空格
b??向后翻一页
d??向后翻半页
h??显示帮助界面
Q??退出less?命令
u??向前滚动半页
y??向前滚动一行
空格键?滚动一行
回车键?滚动一页
[pagedown]:?向下翻动一页
[pageup]:???向上翻动一页
实例:
ps?-aux?|?less?-N
less?1.log?2.log
ln 命令
链接分类
软链接
硬链接
常用参数:
实例:
ln?-sv?source.log?link.log
ln?-v?source.log?link1.log
ln?-sv?/opt/soft/test/test3?/opt/soft/test/test5
常用参数:
-l?num(要显示的行数)
-f???将特定的档案系统排除在外,如将proc排除在外
-r???使用正则运算式做为寻找条件
实例:
locate?pwd
locate?/etc/sh
locate?-r?'^/var.*reason$'(其中.表示一个字符,*表示任务多个;.*表示任意多个字符)
命令参数:
+n??????从笫?n?行开始显示
-n???????定义屏幕大小为n行
+/pattern?在每个档案显示前搜寻该字串(pattern),然后从该字串前两行之后开始显示?
-c???????从顶部清屏,然后显示
-d???????提示“Press?space?to?continue,’q’?to?quit(按空格键继续,按q键退出)”,禁用响铃功能
-l????????忽略Ctrl+l(换页)字符
-p???????通过清除窗口而不是滚屏来对文件进行换页,与-c选项相似
-s???????把连续的多个空行显示为一行
-u???????把文件内容中的下画线去掉
常用操作命令:
Enter????向下?n?行,需要定义。默认为?1?行
Ctrl+F???向下滚动一屏
空格键??向下滚动一屏
Ctrl+B??返回上一屏
=???????输出当前行的行号
:f?????输出文件名和当前行的行号
V??????调用vi编辑器
!命令???调用Shell,并执行命令
q???????退出more
实例:
more?+3?text.txt
ls?-l?|?more?-5
mv 命令
移动文件或修改文件名,根据第二参数类型(如目录,则移动文件;如为文件则重命令该文件)。
当第二个参数为目录时,第一个参数可以是多个以空格分隔的文件或目录,然后移动第一个参数指定的多个文件到第二个参数指定的目录中。
实例:
mv?test.log?test1.txt
mv?llog1.txt?log2.txt?log3.txt?/test3
mv?-i?log1.txt?log2.txt
mv?*?../
rm?[选项]?文件…
实例:
rm?-i?*.log
rm?-rf?test
rm?--?-f*
常用参数:
-f?循环读取(常用于查看递增的日志文件)
-n<行数>?显示行数(从后向前)
例子
tail?-f?ping.log
Linux touch 命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
ls -l 可以显示档案的时间记录。
语法
touch?[-acfm][-d<日期时间>][-r<参考文件或目录>]?[-t<日期时间>][--help][--version][文件或目录…]
参数说明:
a?改变档案的读取时间记录。
m?改变档案的修改时间记录。
c?假如目的档案不存在,不会建立新的档案。与?--no-create?的效果一样。
f?不使用,是为了与其他?unix?系统的相容性而保留。
r?使用参考档的时间记录,与?--file?的效果一样。
d?设定时间与日期,可以使用各种不同的格式。
t?设定档案的时间记录,格式与?date?指令相同。
–no-create?不会建立新档案。
–help?列出指令格式。
–version?列出版本讯息。
实例
$?touch?testfile????????????????#修改文件的时间属性?
$?ls?-l?testfile????????????????#查看文件的时间属性??
#原来文件的修改时间为16:09??
-rw-r--r--?1?hdd?hdd?55?2011-08-22?16:09?testfile??
$?touch?testfile????????????????#修改文件时间属性为当前系统时间??
$?ls?-l?testfile????????????????#查看文件的时间属性??
#修改后文件的时间属性为当前系统时间??
-rw-r--r--?1?hdd?hdd?55?2011-08-22?19:53?testfile??
$?touch?file????????????#创建一个名为“file”的新的空白文件?
Vim 是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
一图胜千言:
whereis 命令
常用参数:
-b???定位可执行文件。
-m???定位帮助文件。
-s???定位源代码文件。
-u???搜索默认路径下除可执行文件、源代码文件、帮助文件以外的其它文件。
实例:
whereis?locate
whereis?-s?locate
whereis?-m?locate
在 linux 要查找某个文件,但不知道放在哪里了,可以使用下面的一些命令来搜索:
which?????查看可执行文件的位置。
whereis?查看文件的位置。
locate??配合数据库查看文件位置。
find????????实际搜寻硬盘查询文件名称。
常用参数:
-n??指定文件名长度,指定的长度必须大于或等于所有文件中最长的文件名。
实例:
which?ls
which?which
which?cd(显示不存在,因为?cd?是内建命令,而?which?查找显示是?PATH?中的命令)
强大的文本搜索命令,grep
命令格式:
grep?[option]?pattern?file|dir
常用参数:
-A?n?--after-context显示匹配字符后n行
-B?n?--before-context显示匹配字符前n行
-C?n?--context?显示匹配字符前后n行
-c?--count?计算符合样式的列数
-i?忽略大小写
-l?只列出文件内容符合指定的样式的文件名称
-f?从文件中读取关键词
-n?显示匹配内容的所在文件中行数
-R?递归查找文件夹
grep 的规则表达式:
^??#?如:'^grep'匹配所有以grep开头的行。?
$??#?如:'grep$'匹配所有以grep结尾的行。?
.??#?如:'gr.p'匹配gr后接一个任意字符,然后是p。??
*??#?如:'*grep'匹配所有一个或多个空格后紧跟grep的行。
.*???#?任意字符。??
[]???#匹配指定字符,如'[Gg]rep'匹配Grep和grep。?
[^]??#匹配不在指定字符,如:'[^A-FH-Z]rep'匹配不包含A-R和T-Z的一个字母开头,紧跟rep的行。??
\(..\)??#标记匹配字符,如'\(love\)',love被标记为1。???
\<??????#锚定单词的开始,如:'\<grep'匹配包含以grep开头的单词的行。
\>??????#锚定单词的结束,如'grep\>'匹配包含以grep结尾的单词的行。
x\{m\}??#重复字符x,m次,如:'0\{5\}'匹配包含5个o的行。?
x\{m,\}??#重复字符x,至少m次,如:'o\{5,\}'匹配至少有5个o的行。??
x\{m,n\}??#重复字符x,至少m次,不多于n次,如:'o\{5,10\}'匹配5--10个o的行。??
\w????#匹配文字和数字,如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。??
\W????#\w的反置形式,匹配一个或多个非单词字符,如点号句号等。??
\b????#单词锁定符,如:?'\bgrep\b'只匹配grep。
实例:
ps?-ef?|?grep?svn
ps?-ef?|?grep?svn?-c
cat?test1.txt?|?grep?-f?key.log
grep?-lR?'^grep'?/tmp
grep?'^[^x]'?test.txt
grep?-E?'ed|at'?test.txt
wc(word count) 功能为统计指定的文件中字节数、字数、行数,并将统计结果输出
命令格式:
wc?[option]?file..
命令参数:
-c?统计字节数
-l?统计行数
-m?统计字符数
-w?统计词数,一个字被定义为由空白、跳格或换行字符分隔的字符串
实例:
wc?text.txt
结果:
7?????8?????70?????test.txt
cat?test.txt?|?wc?-l
实例:
cd?/
cd?~
cd?-
cd?!$
df 命令
-a?全部文件系统列表
-h?以方便阅读的方式显示信息
-i?显示inode信息
-k?区块为1024字节
-l?只显示本地磁盘
-T?列出文件系统类型
实例:
df?-l
df?-haT
命令格式:
du?[选项]?[文件]
常用参数:
-a?显示目录中所有文件大小
-k?以KB为单位显示文件大小
-m?以MB为单位显示文件大小
-g?以GB为单位显示文件大小
-h?以易读方式显示文件大小
-s?仅显示总计
-c或--total??除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和
实例:
du?-h?scf/
du?-ah?scf/
du?-hc?test/?scf/
du?-hc?--max-depth=1?scf/
常用参数搭配:
ls?-a?列出目录所有文件,包含以.开始的隐藏文件
ls?-A?列出除.及..的其它文件
ls?-r?反序排列
ls?-t?以文件修改时间排序
ls?-S?以文件大小排序
ls?-h?以易读大小显示
ls?-l?除了文件名之外,还将文件的权限、所有者、文件大小等信息详细列出来
实例:
ls?-lhrt
ls?-lrS
ls?-l?t*
ls?|?sed?"s:^:`pwd`/:"
find?$pwd?-maxdepth?1?|?xargs?ls?-ld
mkdir 命令用于创建文件夹。
可用选项:
-m:?对新建目录设置存取权限,也可以用?chmod?命令设置;
-p:?可以是一个路径名称。此时若路径中的某些目录尚不存在,加上此选项后,系统将自动建立好那些尚不在的目录,即一次可以建立多个目录。
实例:
mkdir?t
mkdir?-p?/tmp/test/t1/t
pwd 命令用于查看当前工作目录路径。
实例:
pwd
pwd?-P
从一个目录中删除一个或多个子目录项,删除某目录时也必须具有对其父目录的写权限。
注意:不能删除非空目录
实例:
rmdir?-p?parent/child/child11
ifconfig 命令
iptables 命令
iptables ,是一个配置 Linux 内核防火墙的命令行工具。功能非常强大,对于我们开发来说,主要掌握如何开放端口即可。例如:
把来源 IP 为 192.168.1.101 访问本机 80 端口的包直接拒绝:iptables -I INPUT -s 192.168.1.101 -p tcp --dport 80 -j REJECT 。
开启 80 端口,因为 web 对外都是这个端口
iptables?-A?INPUT?-p?tcp?--dport?80?-j?ACCEP
另外,要注意使用?iptables?save?命令,进行保存。否则,服务器重启后,配置的规则将丢失。
netstat 命令
Linux netstat 命令用于显示网络状态。
利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
语法
netstat?[-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
参数说明:
-a或–all?显示所有连线中的Socket。
-A<网络类型>或–<网络类型>?列出该网络类型连线中的相关地址。
-c或–continuous?持续列出网络状态。
-C或–cache?显示路由器配置的快取信息。
-e或–extend?显示网络其他相关信息。
-F或–fib?显示FIB。
-g或–groups?显示多重广播功能群组组员名单。
-h或–help?在线帮助。
-i或–interfaces?显示网络界面信息表单。
-l或–listening?显示监控中的服务器的Socket。
-M或–masquerade?显示伪装的网络连线。
-n或–numeric?直接使用IP地址,而不通过域名服务器。
-N或–netlink或–symbolic?显示网络硬件外围设备的符号连接名称。
-o或–timers?显示计时器。
-p或–programs?显示正在使用Socket的程序识别码和程序名称。
-r或–route?显示Routing?Table。
-s或–statistice?显示网络工作信息统计表。
-t或–tcp?显示TCP传输协议的连线状况。
-u或–udp?显示UDP传输协议的连线状况。
-v或–verbose?显示指令执行过程。
-V或–version?显示版本信息。
-w或–raw?显示RAW传输协议的连线状况。
-x或–unix?此参数的效果和指定"-A?unix"参数相同。
–ip或–inet?此参数的效果和指定"-A?inet"参数相同。
实例
[root@centos6?~?13:20?#55]#?netstat?-lnp
Active?Internet?connections?(only?servers)
Proto?Recv-Q?Send-Q?Local?Address???????????????Foreign?Address?????????????State???????PID/Program?name
tcp????????0??????0?0.0.0.0:22??????????????????0.0.0.0:*???????????????????LISTEN??????1035/sshd
tcp????????0??????0?:::22???????????????????????:::*????????????????????????LISTEN??????1035/sshd
udp????????0??????0?0.0.0.0:68??????????????????0.0.0.0:*???????????????????????????????931/dhclient
Active?UNIX?domain?sockets?(only?servers)
Proto?RefCnt?Flags???????Type???????State?????????I-Node?PID/Program?name????Path
unix??2??????[?ACC?]?????STREAM?????LISTENING?????6825???1/init??????????????@/com/ubuntu/upstart
unix??2??????[?ACC?]?????STREAM?????LISTENING?????8429???1003/dbus-daemon????/var/run/dbus/system_bus_socket
[root@centos6?~?13:22?#58]#?netstat?-an
Active?Internet?connections?(servers?and?established)
Proto?Recv-Q?Send-Q?Local?Address???????????????Foreign?Address?????????????State
tcp????????0??????0?0.0.0.0:22??????????????????0.0.0.0:*???????????????????LISTEN
tcp????????0??????0?192.168.147.130:22??????????192.168.147.1:23893?????????ESTABLISHED
tcp????????0??????0?:::22???????????????????????:::*????????????????????????LISTEN
udp????????0??????0?0.0.0.0:68??????????????????0.0.0.0:*
输入命令?netstat?-an?|?grep?ESTABLISHED?|?wc?-l?。
输出结果?177?。一共有?177?连接数。
ping 命令
Linux ping 命令用于检测主机。
执行 ping 指令会使用 ICMP 传输协议,发出要求回应的信息,若远端主机的网络功能没有问题,就会回应该信息,因而得知该主机运作正常。
指定接收包的次数
ping?-c?2?www.baidu.com
telnet 命令
Linux telnet 命令用于远端登入。
执行 telnet 指令开启终端机阶段作业,并登入远端主机。
语法
telnet?[-8acdEfFKLrx][-b<主机别名>][-e<脱离字符>][-k<域名>][-l<用户名称>][-n<记录文件>][-S<服务类型>][-X<认证形态>][主机名称或IP地址<通信端口>]
参数说明:
-8?允许使用8位字符资料,包括输入与输出。
-a?尝试自动登入远端系统。
-b<主机别名>?使用别名指定远端主机名称。
-c?不读取用户专属目录里的.telnetrc文件。
-d?启动排错模式。
-e<脱离字符>?设置脱离字符。
-E?滤除脱离字符。
-f?此参数的效果和指定"-F"参数相同。
-F?使用Kerberos?V5认证时,加上此参数可把本地主机的认证数据上传到远端主机。
-k<域名>?使用Kerberos认证时,加上此参数让远端主机采用指定的领域名,而非该主机的域名。
-K?不自动登入远端主机。
-l<用户名称>?指定要登入远端主机的用户名称。
-L?允许输出8位字符资料。
-n<记录文件>?指定文件记录相关信息。
-r?使用类似rlogin指令的用户界面。
-S<服务类型>?设置telnet连线所需的IP?TOS信息。
-x?假设主机有支持数据加密的功能,就使用它。
-X<认证形态>?关闭指定的认证形态。
实例
#?登录IP为?192.168.0.5?的远程主机
telnet?192.168.0.5?
date 命令
命令参数:
-d<字符串>??显示字符串所指的日期与时间。字符串前后必须加上双引号。
-s<字符串>??根据字符串来设置日期与时间。字符串前后必须加上双引号。
-u??显示GMT。
%H?小时(00-23)
%I?小时(00-12)
%M?分钟(以00-59来表示)
%s?总秒数。起算时间为1970-01-01?00:00:00?UTC。
%S?秒(以本地的惯用法来表示)
%a?星期的缩写。
%A?星期的完整名称。
%d?日期(以01-31来表示)。
%D?日期(含年月日)。
%m?月份(以01-12来表示)。
%y?年份(以00-99来表示)。
%Y?年份(以四位数来表示)。
实例:
date?+%Y%m%d?--date="+1?day"??//显示下一天的日期
date?-d?"nov?22"??今年的?11?月?22?日是星期三
date?-d?'2?weeks'?2周后的日期
date?-d?'next?monday'?(下周一的日期)
date?-d?next-day?+%Y%m%d(明天的日期)或者:date?-d?tomorrow?+%Y%m%d
date?-d?last-day?+%Y%m%d(昨天的日期)?或者:date?-d?yesterday?+%Y%m%d
date?-d?last-month?+%Y%m(上个月是几月)
date?-d?next-month?+%Y%m(下个月是几月)
free 命令
命令参数:
-b?以Byte显示内存使用情况
-k?以kb为单位显示内存使用情况
-m?以mb为单位显示内存使用情况
-g?以gb为单位显示内存使用情况
-s<间隔秒数>?持续显示内存
-t?显示内存使用总合
实例:
free
free?-k
free?-m
free?-t
free?-s?10
kill 命令
常用参数:
-l??信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a??当处理当前进程时,不限制命令名和进程号的对应关系
-p??指定kill?命令只打印相关进程的进程号,而不发送任何信号
-s??指定发送信号
-u??指定用户
实例:
kill?-9?$(ps?-ef?|?grep?pro1)
ps 查看进程状态
linux 上进程有 5 种状态:
运行 (正在运行或在运行队列中等待)
中断 (休眠中, 受阻, 在等待某个条件的形成或接受到信号)
不可中断 (收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
僵死 (进程已终止, 但进程描述符存在, 直到父进程调用 wait4() 系统调用后释放)
停止 (进程收到 SIGSTOP, SIGSTP, SIGTIN, SIGTOU 信号后停止运行运行)
5 种状态码:
D?不可中断?uninterruptible?sleep?(usually?IO)
R?运行?runnable?(on?run?queue)
S?中断?sleeping
T?停止?traced?or?stopped
Z?僵死?a?defunct?(”zombie”)?process
命令参数:
-A?显示所有进程
a?显示所有进程
-a?显示同一终端下所有进程
c?显示进程真实名称
e?显示环境变量
f?显示进程间的关系
r?显示当前终端运行的进程
-aux?显示所有包含其它使用的进程
实例:
ps?-ef
ps?-A
ps?-aux?|?grep?apache
ps?aux?|?grep?'(cron|syslog)'
rpm 命令
Linux rpm 命令用于管理套件。
rpm(redhat package manager) 原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。
#?查看系统自带jdk
rpm?-qa?|?grep?jdk
#?删除系统自带jdk
rpm?-e?--nodeps?查看jdk显示的数据
#?安装jdk
rpm?-ivh?jdk-7u80-linux-x64.rpm
top 命令
常用参数:
-c?显示完整的进程命令
-s?保密模式
-p?<进程号>?指定进程显示
-n?<次数>循环显示次数
实例:
top?-?14:06:23?up?70?days,?16:44,??2?users,??load?average:?1.25,?1.32,?1.35
Tasks:?206?total,???1?running,?205?sleeping,???0?stopped,???0?zombie
Cpu(s):??5.9%us,??3.4%sy,??0.0%ni,?90.4%id,??0.0%wa,??0.0%hi,??0.2%si,??0.0%st
Mem:??32949016k?total,?14411180k?used,?18537836k?free,???169884k?buffers
Swap:?32764556k?total,????????0k?used,?32764556k?free,??3612636k?cached
PID?USER??????PR??NI??VIRT??RES??SHR?S?%CPU?%MEM????TIME+??COMMAND??
28894?root??????22???0?1501m?405m??10m?S?52.2??1.3???2534:16?java??
前五行是当前系统情况整体的统计信息区。
第一行,任务队列信息,同 uptime 命令的执行结果,具体参数说明情况如下:
14:06:23 — 当前系统时间
up 70 days, 16:44 — 系统已经运行了 70 天 16 小时 44 分钟(在这期间系统没有重启过的)
2 users — 当前有 2 个用户登录系统
load average: 1.15, 1.42, 1.44 — load average 后面的三个数分别是 1 分钟、5 分钟、15 分钟的负载情况。
load average 数据是每隔 5 秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑 CPU 的数量,结果高于 5 的时候就表明系统在超负荷运转了。
第二行,Tasks — 任务(进程),具体信息说明如下:
系统现在共有 206 个进程,其中处于运行中的有 1 个,205 个在休眠(sleep),stoped 状态的有 0 个,zombie 状态(僵尸)的有 0 个。
5.9%us?—?用户空间占用CPU的百分比。
3.4%?sy?—?内核空间占用CPU的百分比。
0.0%?ni?—?改变过优先级的进程占用CPU的百分比
90.4%?id?—?空闲CPU百分比
0.0%?wa?—?IO等待占用CPU的百分比
0.0%?hi?—?硬中断(Hardware?IRQ)占用CPU的百分比
0.2%?si?—?软中断(Software?Interrupts)占用CPU的百分比
32949016k?total?—?物理内存总量(32GB)
14411180k?used?—?使用中的内存总量(14GB)
18537836k?free?—?空闲内存总量(18GB)
169884k?buffers?—?缓存的内存量?(169M)
32764556k?total?—?交换区总量(32GB)
0k?used?—?使用的交换区总量(0K)
32764556k?free?—?空闲交换区总量(32GB)
3612636k?cached?—?缓冲的交换区总量(3.6GB)
第六行,空行。
第七行以下:各进程(任务)的状态监控,项目列信息说明如下:
PID?—?进程id
USER?—?进程所有者
PR?—?进程优先级
NI?—?nice值。负值表示高优先级,正值表示低优先级
VIRT?—?进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES?—?进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR?—?共享内存大小,单位kb
S?—?进程状态。D=不可中断的睡眠状态?R=运行?S=睡眠?T=跟踪/停止?Z=僵尸进程
%CPU?—?上次更新到现在的CPU时间占用百分比
%MEM?—?进程使用的物理内存百分比
TIME+?—?进程使用的CPU时间总计,单位1/100秒
COMMAND?—?进程名称(命令名/命令行)
top 交互命令
h?显示top交互命令帮助信息
c?切换显示命令名称和完整命令行
m?以内存使用率排序
P?根据CPU使用百分比大小进行排序
T?根据时间/累计时间进行排序
W?将当前设置写入~/.toprc文件中
o或者O?改变显示项目的顺序
yum 命令
1.列出所有可更新的软件清单命令:yum?check-update
2.更新所有软件命令:yum?update
3.仅安装指定的软件命令:yum?install?<package_name>
4.仅更新指定的软件命令:yum?update?<package_name>
5.列出所有可安裝的软件清单命令:yum?list
6.删除软件包命令:yum?remove?<package_name>
7.查找软件包?命令:yum?search
8.清除缓存命令:
yum?clean?packages:?清除缓存目录下的软件包
yum?clean?headers:?清除缓存目录下的?headers
yum?clean?oldheaders:?清除缓存目录下旧的?headers
yum?clean,?yum?clean?all?(=?yum?clean?packages;?yum?clean?oldheaders)?:清除缓存目录下的软件包及旧的headers
实例
[root@www?~]#?yum?install?pam-devel
gzip 命令
tar 命令
用来压缩和解压文件。tar 本身不具有压缩功能,只具有打包功能,有关压缩及解压是调用其它的功能来完成。
弄清两个概念:打包和压缩。
打包是指将一大堆文件或目录变成一个总的文件;
压缩则是将一个大的文件通过一些压缩算法变成一个小文件
常用参数:
-c?建立新的压缩文件
-f?指定压缩文件
-r?添加文件到已经压缩文件包中
-u?添加改了和现有的文件到压缩包中
-x?从压缩包中抽取文件
-t?显示压缩文件中的内容
-z?支持gzip压缩
-j?支持bzip2压缩
-Z?支持compress解压文件
-v?显示操作过程
有关 gzip 及 bzip2 压缩:
gzip 实例:
bz2 实例:
实例:
tar?-cvf?log.tar?1.log,2.log?或tar?-cvf?log.*
tar?-zcvf?/tmp/etc.tar.gz?/etc
tar?-ztvf?/tmp/etc.tar.gz
tar?--exclude?/home/dmtsai?-zcvf?myfile.tar.gz?/home/*?/etc
unzip 命令
感谢每一个认真阅读我文章的人!!!
?这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……