目录
Linux基础知识
Linux命令的通用格式为
命令字 【命令选项】 【命令参数】
Linux文件类型:
f #普通文件 l #符号连接 d #目录 c #字符设备 b #块设备 s #套接字 p #Fifo
每天一个 Linux 命令
1、xargs
xargs可以将stdin中以空格或换行符进行分隔的数据,形成以空格分隔的参数(arguments),传递给其他命令。因为以空格作为分隔符,所以有一些文件名或者其他意义的字符串内含有空格的时候,xargs可能会误判。简单来说, xargs的作用是给其他命令传递参数,是构建单行命令的重要组件之一。
常用示例 1、与ps、grep、awk和kill结合,强制终止指定进程。
ps -ef | grep spp | awk '{printf "%s ",$2}' | xargs kill -9
ps -ef|grep spp用于查找包含 spp 的进程,awk '{printf "%s ",$2,FNR}将目标进程 ID 打印输出,xargs kill -9则将目标进程 ID 作为参数传递给kill -9用于杀死进程。
2、ping命令:
ping命令
-c #指定ping多少次 -I #指定网卡 -w #最后期限,等待多久结束本次ping -i #设定间隔几秒发送一个ping包,默认一秒ping一次
3、cd
cd切换目录,可以从当前目录切换到另一级目录下 1、切换到指定目录:cd tmp
dir为指定目录的路径,可以是绝对路径也可以是相对路径 如:cd /tmp/
2.、cd / 是跳转到根目录
根目录是所有用户共享的目录
3、cd ~ 和cd $HOME 是跳转到当前用户的家目录
root用户,cd ~ 相当于 cd /root 普通用户,cd ~ 相当于cd /home/当前用户名 注:cd - 返回进入此目录之前所在目录
4、cd …/ 返回上一层目录
四剑客
1、四剑客grep命令
grep命令是文本搜索命令,它可以正则表达式搜索文本,也可从一个文件中的内容作为搜索关键字。 grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看作文件名。搜索的结果被送到标准输出,不影响原文件内容。
-i #不区分大小写 -E #-E是指定多个关键字,以管道分隔、 -n #找出后显示行号 -v #取反,过滤指定字符外的 -o #显示grep每一次的匹配过程,都会拿出单个一行去显示匹配到的字符 -w #只输出单词绝对匹配的字符,两边有(两边空格、两边符号)为单词 -c #统计匹配到的字符一共有多少行,类似于wc -l。#显示查找指定进程个数 -r #递归过滤,可以过滤*号 -l #与-r一起用,只显示匹配到的文件 -A #显示匹配后和它后面的n行 -B #显示匹配行和它前面的n行 -C #匹配行和它前后各n行
规则表达式:
^ #锚定行的开始 如:'^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 #匹配文字和数字字符,也就是[A-Za-z0-9],如:'G\w*p'匹配以G后跟零个或多个文字或数字字符,然后是p。 \W #\w的反置形式,匹配一个或多个非单词字符,如点号句号等。 \b #单词锁定符,如: '\bgrep\b'只匹配grep。
使用实例:
实例1:查找指定进程
命令:ps -ef | grep nginx
说明:
第一条记录是查找出的进程;第三条结果是grep进程本身,并非真正要找的进程。
实例2:grep不显示本身进程
命令:ps -ef | grep svn | grep -v “grep” #-v的意思是取反,不显示带有grep的进程
2、四剑客find命令
find 命令在文件系统中搜索文件和目录。
find 命令用来在指定目录下查找文件,在参数之前的任何字符串都会当作是目录名。使用 find 命令时,如何不设置任何参数,则 find 命令将在当前目录下查找子目录与文件,并且将查找到的子目录和文件全部显示出来。
find 还是一个功能非常强大的用于处理 Linux 系统上文件的工具,它可以单独查找文件,也可以与其他程序(命令)结合对需要处理的文件进行操作。
find与xargs和管道符配合”
find -exec 必须有{} \;
xargs不支持别名
语法: find(选项)(参数)
-type #根据文件类型查找,f与d
-name #根据名称查找,”名称”
-iname #不区分大小写,名称查找,”名称”
-size #按大小查找,大于用+,小于用-
-mtime #按修改时间查找(+7是7天前,-7是7天后)
-exec #查询后的数据输出到后面的命令(后面必须有{} \;)
find / -type f -name "hosts" #从根下找名称为“hosts”的文件
find /etc/ -size +1M #查找/etc/下大于1M的文件或目录
find /olda/ -name '*.log' |xargs ls -l #查看搜索到的文件详细信息
find /olda/ -name '*.log' -exec ls -l {} \; #查看搜索到的文件详细信息
find /etc/ -name "*.conf" -type f |xargs tar zcfP /tmp/conf_$(date +%F).tar.gz #压缩查询后的文件
find /etc/ -name "*.conf" -type f -exec tar zcfP conf__$(date +%F).tar.gz {} \; #压缩查询后的文件
find /olda/ -type f -mtime +7 -exec rm -f {} \; #查找一个删除一个
find /olda/ -name "*.log" -exec cp {} /opt/ \; #查找一个复制一个
使用实例:
根据文件或者正则表达式进行匹配
在/home目录下查找以.txt结尾的文件名
find /home -name "*.txt"
同上,但忽略大小写
find /home -iname "*.txt"
当前目录及子目录下查找所有以.txt和.pdf结尾的文件
find . \( -name "*.txt" -o -name "*.pdf" \)
或
find . -name "*.txt" -o -name "*.pdf"
匹配文件路径或者文件
find /usr/ -path "*local*"
基于正则表达式匹配文件路径
find . -regex ".*\(\.txt\|\.pdf\)$"
同上,但忽略大小写
find . -iregex ".*\(\.txt\|\.pdf\)$"
根据文件类型进行搜索
find . -type 类型参数
类型参数列表:
f 普通文件
l 符号连接
d 目录
c 字符设备
b 块设备
s 套接字
p Fifo
借助-exec
选项与其他命令结合使用
找出当前目录下所有root的文件,并把所有权更改为用户tom
find .-type f -user root -exec chown tom {} \;
上例中,{} 用于与-exec选项结合使用来匹配所有文件,然后会被替换为相应的文件名。
找出自己家目录下所有的.txt文件并删除
find $HOME/. -name "*.txt" -ok rm {} \;
上例中,-ok和-exec行为一样,不过它会给出提示,是否执行相应的操作。
查找当前目录下所有.txt文件并把他们拼接起来写入到all.txt文件中
find . -type f -name "*.txt" -exec cat {} \;> all.txt
将30天前的.log文件移动到old目录中
find . -type f -mtime +30 -name "*.log" -exec cp {} old \;
3、四剑客sed命令
sed命令:(增加、删除、修改、查询)
-e #允许多项编辑
-n: #取消sed默认输出
-i: #直接写入到源文件
-r #支持扩展正则
a :追加
i :插入
c :替换行
d :删除
s :替换
p :打印
w :匹配到的行另存文件
h :复制指定行
g :全局
& :在sed中表示前面匹配到什么,&符号就是什么值
sed -i 's#jd.com#one#g' /etc/hosts #替换hosts文件的jd.com为one主机名,可以匹配字符串
sed -n '3p' num.txt #查看第3行
sed -n '3,5p' num.txt #查看第3到5行
sed '1h;$g' hosts.test #复制第1行,覆盖最后一行
ip a s eth0 |sed -nr '3s#^.*inet (.*)/.*$#\1#gp' #取出IP地址
sed -r 's#(.*)(:x.*:)/(.*)#\3\2\1#g' passwd #把passwd文件最后1列与第1列替换位置
增加:
增加 (参数:a与i,....a是在第2行后面追加信息,i是在第2行前面插入信息)
单行增加:
sed '3c 10,wsp,CTO' sed.txt #替换第3行为10,wsp,CTO信息
sed '2a 06,dandan,CSO' sedfile.txt #在第2行后追加一行‘06,dandan,CSO’信息进去(后面)
sed '2i 06,dandan,CSO' sedfile.txt #在第2行前面插入‘06,dandan,CSO’信息进去(前面)
多行增加:
sed '2i 06,dandan,CSO\n07,bingbing,CCO' sedfile.txt #在第2行前面插入‘06,dandan,CSO与07,bingbing,CCO’信息进去,并为多行
sed '2a 06,dandan,CSO\n07,bingbing,CCO' sedfile.txt #在第2行后面追加‘06,dandan,CSO与07,bingbing,CCO’信息进去,并为多行
范例:增加ssh服务优化参数进入配置文件
sed '12a Port 52113\nPermitRootLogin no\npermitEmptyPasswords no\nUseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config
删除:
删除(d是删除一行,不加行数字样是删除文件内所有内容)
sed '1d' sedfile.tx #删除文件的第1行
sed '2,4d' sedfile.txt #删除文件的第2行到第4行,输出第1行和第5行; (10,20这是10到20行)
sed '1~2d' sedfile.txt #(1~2的意思是从第1行开始,每次都跳两行,目标行也就是1、3、5、7、9这样)
sed '2,$d' sedfile.txt #从第2行删除到最后一行
正则匹配删除:
sed '/yy/d' sedfile.txt #匹配yy字样,删除文本中所有带有yy的行
sed -n '/zhangyao/,/wsp/p' sedfile.txt #是最小匹配,从zhangyao字样开始匹配,当匹配到最近的一个wsp字样时,就算文件下方还有wsp字样也会停止以下的匹配,
范例:(打印文件内容,当不包含olda这一行)
sed '/olda/d' sedfile.txt
修改:
替换(c:替换,但是很少用到,s:替换,经常用到)
单行替换:c
sed '2c 111,wsp,niubi' sedfile.txt #第2行替换为'111,wsp,niubi'
多行替换: c
sed '2,3c 111,wsp,niubi\n112,test' sedfile.txt #从第2行到第3行替换成111,wsp,niubi行和112,test行,一共两行
文本替换: s(在sed中使用g是标志全局替换)
sed 's#zhangyao#wangshaopeng#g' sedfile.txt #把带有zhangyao字样的全部改为wangshaopeng字样
sed '2s#zhangyao#wangshaopeng#g' sedfile.txt #指定第2行数替换字符
变量替换:
cat zimu.txt
a
b
a
x=a
y=b
sed "s#$x#$y#" zimu.txt #变量替换$x的值替换为$y的值
查找:
查找:(p参数,一般与-n选项一起用)
指定行查找:
sed -n '2p' sedfile.txt #查看文件内的第2行的字符 (单行)
sed -n '2,3p' sedfile.txt ##查看文件内的第2行到第3行的字符 (多行)
sed -n '1p;3p;5p' sed.txt #用;符号打印指定多行 (单行)(多行)
sed -n '1~2p' sed.txt #从第1行开始查询,每次跳2行行 (多行)
指定字符查找:
sed -n '/wsp/p' sedfile.txt #匹配wsp字样查找输出
sed -n '/olda/,5p' sedfile.txt #匹配olda字样的行到第5行中间的输出
sed -n '/olda/,/yy/p' sed.txt #匹配从olda所在行到yy所在行
正则查找:
ip a s eth0 |sed -nr '3s#^.*inet (.*)/.*$#\1#gp' #取出IP
一条命令批量创建多个用户:
echo test{1..3} |xargs -n1|sed -r 's#(.*)#useradd & |echo 'redhat'|passwd --stdin &#g' |bash
sed配合正则取IP地址:
ip a s eth0 |sed -nr '3s#.*et (.*)/.*#\1#gp'
sed配合正则更改passwd文第1列与最后1列:
sed -rn '1,2s#(^.*)(:x.*:)(.*$)#\3\2\1#gp' passwd
试题:
ll /etc/rc.d/init.d/functions |sed -rn 's#.*(/e.*)/.*#\1#gp' #取出/etc/rc.d/init.d/functions的路径的目录名(采用正则将路径取出来)
4、四剑客awk命令
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。
-F #指定分隔符
-v #更改内置函数值
gsub #内置替换函数,格式:gsub(/找谁/,”替换为什么”,在哪一列?)
ORS #输出时候的分割符
RS #记录每一行的换行符,默认是\n,使用-v可更改
NR #代表行号(Number of Record)
NF #代表最后一列
FS #表示分隔符,-F可以修改
OFS #-v修改指定输出分隔符
$0 #一整行的内容
$数字 #代表指定某一列
NR==1,NR==3 #取第1到第3行
$(NF-1) #代表倒数第二行
~ #波浪线是包含,$2~/^4/,$2中包含开头为4的行与列
!~ #不包含什么
BEGIN{} #在awk读取文件之前执行
END{} #在awk读取文件之后执行,统计瞒住条件的次数
使用方法:awk [参数] [脚本] [文件]。
参数 | 说明 |
-F fs | 指定以fs作为输入行的分隔符,awk 命令默认分隔符为空格或制表符 |
-f file | 读取awk脚本 |
-v val=val | 在执行处理过程之前,设置一个变量var,并给其设置初始值为val |
awk中还可以指定脚本命令的运行时机。默认情况下,awk会从输入中读取一行文本,然后针对该行的数据执行程序脚本,但有时可能需要在处理数据前运行一些脚本命令,这就需要使用BEGIN关键字,BEGIN会在awsk读取数据前强制执行该关键字后指定的脚本命令。
和BEGIN关键字相对应,END关键字允许我们指定一些脚本命令,awk会在读完数据后执行它们。
用法一: awk '{[pattern] action}' {filenames} # 行匹配语句 awk '' 只能用单引号
用法二: awk -F #-F相当于内置变量FS, 指定分割字符
用法三: awk -v # 设置变量 用法四: awk -f {awk脚本} {文件名}
运算符
awk 正则
目录操作命令
1、ls命令
ls显示指定工作目录下的内容及属性信息
命令名称:ls
所在路径:usr/bin/ls
执行权限:所有用户
命令格式:ls [选项] [文件名或目录名]
选项:
选项 | 描述 |
---|---|
-a | 显示所有文件(包括隐藏文件) |
--color=when | 支持颜色输出,when的值默认是always (总显示颜色),也可以是never (从不显示颜色)和auto (自动) |
-ld | 显示目录信息,而不是目录下的文件 |
-lh | 人性化显示,按照我们习惯的单位显示文件大小 |
-i | 显示文件的i节点号 |
-l | 长格式显示(详细信息)。ls -l 等同于ll |
2、cd
-切换所在目录
所在路径:Shell内置命令
功能:切换所在目录
命令格式:cd [目录名]
cd命令只要两个选项:
-P | 指如果切换的目录是软链接目录,则进入其原始的物理目录 |
---|---|
-L | 指如果切换的目录是软链接目录,则直接进入软链接目录 |
~ | 代表用户的家目录。cd命令直接回车效果是一样的。 |
- | 代表上次所在目录 |
. | 代表当前目录 |
.. | 代表上级目录 |
3、mkdir
-创建目录命令
功能描述:创建一个空目录
命令格式:mkdir [选项] 目录名
选项只有一个:-p
递归建立所需目录。
就是当需要创建多级目录时,需要-p
选项,不加则无法创建多级目录。如:mkdir -p test/test/test
4、rmdir
-删除目录命令
命令格式:rmdir [选项] 目录名
rmdir也可以递归删除目录,不过只能删除空目录,一旦目录中有内容就会报错。
5、tree
-显示目录树
命令格式:tree 目录名
tree命令的全称即是“tree”,该命令作用是用于以树状图形式列出目录的内容。 执行tree命令,它会以树状图的方式列出指定目录下的所有文件,包括目录里的文件,显示出指定目录的文件目录结构。
权限管理命令
r 可读 ;w 可写 ;x 可执行 ;- 无权限
r、w、x、- 权限字符还可分别表示为8进制数字4、2、1、0
1、chmod
-修改文件的权限
命令格式:chmod [选项] 权限模式 文件名
选项只有一个-R
,递归设置权限,也就是给子目录中的所有文件设定权限。
权限模式:chmod命令的权限模式的格式是[用户身份][[赋予方式][权限]]
。
r read 是否可读文件内容 4
w write 是否修改文件内容 2
x execute 是否可执行这个文件 1
属主:u
属组:g
所有人:o
读、写、执行对文件:
r #只能cat查看
w #只能写,可以强制保存,会覆盖原文件,不能看,要与r配合
x #什么都不能操作,执行也不行,要与r配合
如:
chmod o=rwx 文件名
给其他人设置读写和执行权限。
chmod u+x,g+w 文件名
给所有者执行权限,和所属组写权限。
2、chattr文件锁定操作:
lsattr pass.txt #查看是否锁定文件
chattr +a pass.txt #设置文件只能追加输入,不能删除或清空
chattr -a pass.txt #删除append这个锁定
chattr +i pass.txt #什么都不能干了,只能cat查看
chattr -i pass.txt #删除immutable这个无敌锁定
umask
-默认权限
主要让Linux中的新建文件和目录拥有默认权限。
查看系统的umask 默认权限
:
umask -S
直接使用字母来表示默认权限。
修改系统的umask
默认权限:
umask 002
修改默认权限为002
3、chown
-修改所有者和所有组
执行权限:所有用户
功能描述:修改文件和目录的所有者和所属组
命令格式:chown [选项] 所有者:所属组 文件(目录)
选项:-R
递归设置权限,给子目录中的所有文件设置权限。
修改文件的所有者:chown user 文件名
修改文件的所属组:chown user:user 文件名
用户命令
1、useradd
-创建用户
执行权限:超级用户
命令格式:useradd [选项] 用户名
选项:
useradd
-u #指定uid号
-s #指定解释器,也就是可否登录
-M #不创建家目录
-g #指定主要组属于谁
-c #修改用户描述信息
第一步:添加用户useradd user
第二部:设置用户密码passwd user
,输入两次密码确认
修改用户的组 命令格式:
2、passwd
-修改用户密码
命令格式:passwd [选项] 用户名
选项:
选项 | 描述 |
---|---|
-S | 查询用户密码的状态 |
-l | 暂时锁定用户 |
-u | 解锁用户 |
3、su
-切换用户
命令格式:su - user
切换到指定用户
4、usermod
-修改用户信息
命令格式:usermod [选项] 用户名
修改用户:
usermod
-s #修改解释器,也就是可否登录
-c #修改用户描述信息
-g #指定用户主要的主要组
-G #指定用户属于多个附属组
5、userdel
-删除用户
命令格式:userdel [-r] 用户名
userdel
-r #删除时连家目录干掉
目录和文件都能操作的命令
1、mv
-移动文件或改名
命令格式:mv[格式] 源文件 目标文件
选项:
选项 | 描述 |
---|---|
-f | 强制覆盖,如果目标文件已经存在,则不询问,直接强制覆盖 |
-i | 交互移动,默认选项 |
-n | 如果目标文件已经存在,则不会覆盖移动,而是不询问用户 |
-v | 显示详细信息 |
2、cp
-复制文件和目录
命令格式:cp [选项] 源文件 目标文件
选项:
选项 | 描述 |
---|---|
-a | 相当于-dpr选项的集合 |
-d | 如果源文件为软链接(对硬链接无效),则复制出的目标文件也为软链接 |
-i | 询问,如果目标文件已经存在,则会询问是否覆盖 |
-l | 把目标文件建立为源文件的硬链接文件,而不是复制源文件 |
-s | 把目标文件建立为源文件的软链接文件,而不是复制源文件 |
-p | 复制后目标文件保留源文件的属性(包括所有者、所属组、权限、时间) |
-r | 递归复制,用于复制目录 |
不改名复制:cp test /tmp/
改名复制:cp test /tmp/test
如需要复制目录,则需要使用-r
选项。
3、rm
-删除文件或目录
命令格式:rm [选项] 文件或目录
选项:
选项 | 描述 |
---|---|
-f | 强制删除 |
-i | 这个选项是默认的,交互删除,在删除之前会询问用户 |
-r | 可以递归删除,可以删除目录 |
如果被删除的路径是一个目录,则必须有-r
选项,否则会报错。
一般要强制删除一个文件时,用rm -rf 文件路径
。
文件操作命令
1、cat
-查看文件内容
语法格式:cat [参数] [文件]
常用参数:
-n | 显示行数(空行也编号) |
-s | 显示行数(多个空行算一个编号) |
-b | 显示行数(空行不编号) |
-E | 每行结束处显示$符号 |
-T | 将TAB字符显示为 ^I符号 |
-v | 使用 ^ 和 M- 引用,除了 LFD 和 TAB 之外 |
-e | 等价于”-vE”组合 |
-t | 等价于”-vT”组合 |
-A | 等价于 -vET组合 |
--help | 显示帮助信息 |
--version | 显示版本信息 |
2、more
-分屏显示内容
功能描述:分屏显示文件内容
命令格式:more 文件名
常用的交互命令:
命令 | 描述 |
---|---|
空格键 | 向下翻页 |
b | 向上翻页 |
回车键 | 向下滚动一页 |
/字符串 | 搜索指定的字符串 |
q | 退出 |
3、less
-分行显示文件内容
执行权限:全部用户
功能描述:分行显示文件内容
命令格式:less 文件名
进入显示文件后,使用上
、下
箭头键,用于分行查看文件内容。(每按一次会向上、下显示一行)。
4、head
-显示文件开头的内容
执行权限:全部用户
命令格式:head [选项] 文件名
选项:
选项 | 描述 |
---|---|
-n | 行数:从文件开头开始,显示指定行数,-n20 与-20 效果一样 |
-v | 显示文件名 |
命令默认显示文件前十行内容。
5、tail
-显示文件结尾内容
执行权限:所有用户
命令格式:tail [选项] 文件名
选项
选项 | 描述 |
---|---|
-n | 行数:从文件结尾开始,显示指定行数,-n20 与-20 效果一样 |
-f | 监听文件的新增内容 |
使用-f
选项会显示最后10行内容,而且光标不会退出文件,会一直监听文件的新增内容,这个时候使用echo
命令向该文件追加内容,在原始的正在监听的终端中就会显示追加的内容。
6、ln
-在文件之间建立链接
执行权限:所有用户
命令格式:ln [选项] 源文件 目标文件
选项:
选项 | 描述 |
---|---|
-s | 建立软链接文件。默认建立硬链接文件 |
-f | 强制。如果目标文件已经存在,则删除目标文件后再建立链接文件 |
建立硬链接:ln /root/test /tmp/test-hard
建立软链接:ln -s /root/test /tmp/test-hard
7、chattr文件锁定操作:
lsattr pass.txt #查看是否锁定文件
chattr +a pass.txt #设置文件只能追加输入,不能删除或清空
chattr -a pass.txt #删除append这个锁定
chattr +i pass.txt #什么都不能干了,只能cat查看
chattr -i pass.txt #删除immutable这个无敌锁定
Linux常用文件:
文件:
/etc目录:
/etc/shells #存放linux解释器
/etc/resolv.conf #配置域名解析
/etc/hostname #配置主机名
/etc/locale.conf #配置字符集
/etc/inittab #运行级别(CentOS6.X)# systemctl get-default CentOS7.X
/etc/passwd #存放用户与密码占位符等
/etc/shadow #存放用户密码
/etc/group #存放用户组信息
/etc/gshaow #存放用户组密码
/etc/hosts #用于本地解析,测试环境
/etc/profile #配置系统环境变量或别名
/etc/bashrc #配置别名
/etc/motd #文件的内容在登录后显示出来
/etc/issue #文件内容在登录之前显示出来
/etc/fatab #开机自动挂载
/etc/rc.local #全称/etc/rc.d/rc.local,开机自动运行命令
/proc
/proc/cpuinfo #CPU详细信息
/proc/meminfo #内存详细信息
/proc/loadavg #负载信息
/proc/mounts #挂载信息
/usr/local/目录:
编译安装软件默认安装这里
/var/目录:
/var/log/secure #用户登录成功或失败存储日志文件
var/log/messages #系统日志
/dev
/dev/cdrom #光盘文件
/dev/urandom #字符文件
/dev/null #空,黑洞
/dev/zero #非空,白洞
系统基本信息命令
uname -a**:查看所有内核信息**
uname -s:查看内核名称
uname -r:查看内核发行版
uname -v:查看内核版本
uname -n:查看主机名字
uname -m:查看硬件信息
uname -p:查看处理器类型
uname -o:查看操作系统
系统监控、进程管理
后台挂起进程:
Ctrl + z #把当前前台进程在后台挂起(暂停)
fg #恢复后台挂起在前台运行
bg #持续让命令在后台运行
jobs #查看后台所有挂起的命令及后台进程ID
kill %1 #杀掉后台Ctrl +z挂起的第一个进程
杀手三人组:
kill #通过pid进程关闭
kill -9 #强制杀死进程
killall #根据进程名字(命令)关闭
killall sleep #杀死sleep睡眠命令的进程
pkill #模糊杀死进程,杀得太对(危险)
进程四人组:
ps
-ef #显示详细进程信息
aux #显示更加详细的信息(cpu、mem)
pstree #以树形显示所有进程的关系
-a #显示更加详细进程信息
-p #显示pid
top #默认3秒钟实时更新一次进程信息
空格 #立刻更新,默认按照cpu使用率排序
按M #按照MEM使用率排序
按C #按照CPU使用率排序
按1 #展开CPU列表
按q #退出
htop #类似于图形化,可以用鼠标点击操作排序
root 1661 1551 0 10:44 pts/1 00:00:00 grep --color=auto ssh
用户 Pid 父进程Pid NO 执行时间 NO 命令
1、top命令
top命令可以实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具,TOP命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况,有点像window系统的任务管理器
top #默认3秒钟实时更新一次进程信息
空格 #立刻更新,默认按照cpu使用率排序
按M #按照MEM使用率排序
按C #按照CPU使用率排序
按1 #展开CPU列表
按q #退出
第一行为任务队列信息,具体内容如表所示:
内 容 | 说 明 |
21:17:00 | 系统当前时间 |
up 9:47 | 系统的运行时间.本机己经运行 0 天 9 小时 47 分钟 |
2 users | 当前系统的登录用户数 |
load average: 0.00,0.01,0.05 | 系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数) |
第二行为进程信息,具体内容如表所示:
内 容 | 说 明 |
Tasks: 150 total | 当前系统中的进程总数 |
1 running | 正在运行的进程数 |
149 sleeping | 睡眠的进程数 |
0 stopped | 正在停止的进程数 |
0 zombie | 僵尸进程数。如果不是 0,则需要手工检査僵尸进程 |
第三行为 CPU 信息,具体内容如表所示:
内 容 | 说 明 |
0.1 us | 用户进程占用的 CPU 百分比 |
0.1 sy | 系统内核进程占用的 CPU 百分比 |
0.0 ni | 改变过优先级的用户进程占用的 CPU 百分比 |
99.7 id | 空闲 CPU 占用的 CPU 百分比 |
0.1 wa | 等待输入/输出的进程占用的 CPU 百分比 |
0.0 hi | 硬中断请求服务占用的 CPU 百分比 |
0.1 si | 软中断请求服务占用的 CPU 百分比 |
0.0 st | st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU等待实际CPU的时间百分比 |
第四行为物理内存信息,具体内容如表所示:
内 容 | 说 明 |
Mem: 1863252 total | 物理内存的总量,单位为KB |
172208 used | 己经使用的物理内存数量 |
1429964 free | 空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存 |
261080 buff/cache | 作为缓冲的内存数量 |
第五行为交换分区(swap虚拟内存)信息,如表所示:
内 容 | 说 明 |
Swap: 2097148 total | 交换分区(虚拟内存)的总大小 |
Ok used | 已经使用的交换分区的大小 |
2097148 free | 空闲交换分区的大小 |
1481544 avail Mem | 被提前加载的内存量 |
top 命令的第二部分输出
- PID:进程的 ID。
- USER:该进程所属的用户。
- PR:优先级,数值越小优先级越高。
- NI:优先级,数值越小、优先级越高。
- VIRT:该进程使用的虚拟内存的大小,单位为 KB。
- RES:该进程使用的物理内存的大小,单位为 KB。
- SHR:共享内存大小,单位为 KB。
- S:进程状态。
D - 不可中断的睡眠态。
R – 运行态
S – 睡眠态
T – 被跟踪或已停止
Z – 僵尸态
- %CPU:该进程占用 CPU 的百分比。
- %MEM:该进程占用内存的百分比。
- TIME+:该进程共占用的 CPU 时间。
- COMMAND:进程的命令名。
2、free显示系统内存情况
free 命令能够显示系统中物理上的空闲和已用内存,还有交换内存,同时,也能显示被内核使用的缓冲和缓存。这些信息是通过解析文件 /proc/meminfo 而收集到的。
语法格式:free [参数]
常用参数:
-b | 以Byte显示内存使用情况 |
-k | 以kb为单位显示内存使用情况 |
-m | 以mb为单位显示内存使用情况 |
-g | 以gb为单位显示内存使用情况 |
-s | 持续显示内存 |
-t | 显示内存使用总合 |
Mem
行是物理内存使用情况Swap
行是虚拟内存作用情况used
列为已分配内存free
列为未分配的内存total
列为物理内存总量shared
列为共享内存available
列为可用内存
3、df命令
df命令用于显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法格式:du [参数] [文件]
常用参数:
-a | 显示目录中所有文件大小 |
-k | 以KB为单位显示文件大小 |
-m | 以MB为单位显示文件大小 |
-g | 以GB为单位显示文件大小 |
-h | 以易读方式显示文件大小 |
-s | 仅显示总计 |
4、PS命令
ps命令用于查看进程统计信息
常用参数:
- a:显示当前终端下的所有进程信息,包括其他用户的进程。
- u:使用以用户为主的格式输出进程信息。
- x:显示当前用户在所有终端下的进程。
- -e:显示系统内的所有进程信息。
- -l:使用长(long)格式显示进程信息。
- -f:使用完整的(full)格式显示进程信息。
5、crond定时任务
定时任务软件分类:
crond(crontab) 定时任务软件包(cronie)
atd (只运行一次)
anacron (非7*24小时运行的服务器)
crond分类:
系统定时任务:
/etc/cron.hourly/ #每小时运行一次
/etc/cron.daily/ #每日运行一次
/etc/cron.weekly/ #每周运行一次
/etc/cron.monthly/ #每月运行一次
/etc/cron.deny #定时任务黑名单文件
/etc/crontab #系统定时任务配置文件之一
定时任务+logrotate命令,完成日志切割
用户定时任务:
crontab -e #list #编译定时任务,==修改 /var/spool/cron/root
crontab -l #list #查看定时任务,==查看 /var/spool/cron/root
crontab -r #delete #清空所有的定时任务
crond相关文件:
/var/spool/cron/root #用户配置文件,默认是root执行
/var/log/cron #crond的日志文件(是否执行)
crond格式:
分时日月周
cat /etc/crontab
时间数值的特殊表示方法
* 表示该范围内的任意时间
, 表示间隔的多个不连续时间点
- 表示一个连续的时间范围
/ 指定间隔的时间频率
网络通信
1、netstat命令 – 显示网络状态
netstat 命令用于显示各种网络相关信息,如网络连接,路由表
语法格式:netstat [参数]
常用参数:
-a | 显示所有连线中的Socket |
-p | 显示正在使用Socket的程序识别码和程序名称 |
-u | 显示UDP传输协议的连线状况 |
-i | 显示网络界面信息表单 |
-r | 显示路由表 |
-n | 直接使用IP地址,不通过域名服务器 |
例:找出运行在指定端口的进程
netstat -anp | grep ':3306'
2、curl命令
curl命令是一个利用URL规则在shell终端命令行下工作的文件传输工具;curl命令作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征;
语法:语法格式:curl [参数] [网址]