目录
1、Linux的目录结构
linux的文件系统是采用级层式的树状目录结构,在此结构中的最上层是根目录“/”,然后在此目录下再创建其他的目录。在Linux中,一切皆文件
/(根目录) | |
/bin | 用来存放二进制可执行命令的目录,用户常用的命令都存在该目录下。例如:mkdir(创建目录)、cat(查看文件)、find(查找文件)等。 |
/sbin | 同样用来存放二进制可执行文件,只是这里面的命令只供系统管理员,管理系统使用(root用户)。例如:iptables(防护墙)、ifconfig(查看网卡信息)、init(设置启动级别)等。 |
/dev | 设备文件存放的目录,因为linux中一切皆文件,所以就像鼠标、键盘、光驱,对linux来说也都是一个个的文件。例如/dev/cdrom(光驱)、/dev/sda1(硬盘)等。 |
/tmp | 临时文件存放的地方,由于这个目录的权限为1777,所有用户对这个目录都有可读可写可执行的权限,所以其他人也可以删除你的文件。(可以当作windows的回收站来用,不用的东西先放这里)。 |
/home | 普通用户的家目录,用来存放普通用户的文件。比如我们新建一个用户(useradd)会在/home下创建和这个用户同名的家目录。 |
/boot | 存放内核文件和系统引导程序 |
/lib | 存放二进制库文件,库文件一般以.so|lib*|ld*。 |
/mnt | 一般用来临时挂载临时存储设备的目录 |
/opt | 该目录是可选的,一般是给第三方厂家开发的程序的安装目录。现在一般不用了。 |
/media | 用于挂载可移动设备的临时目录。 |
/root | 系统管理员的家目录。 |
/sys(*) | 与/proc一样,存放系统运行过程中的信息文件。 |
/etc | yum/rpm安装的软件配置文件所在的目录。 |
/usr | 安装除操作系统本身外的一些应用程序或组件的目录,一般可以认为是linux系统上安装的应用程序默认都安装在此目录中; |
/proc(*) | 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息 |
/srv(*) | service缩写,该目录存放一些服务启动之后需要提取的数据 |
/var | 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件 |
2、vim(vi)编辑器
vim有三种模式
- 正常模式:以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用「上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容,也可以使用「复制、粘贴」来处理你的文件数据。
- 插入模式:按下i,1, o, O, a,A, r,R等任何一个字母之后才会进入编辑模式,一般来说按i即可.
- 命令行模式:插入模式下输入esc再输入:在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim 、显示行号等的动作则是在此模式中达成的!
(n)yy | 拷贝向下的(n)一行 |
(n)dd | 删除向下的(n)一行 |
[命令行模式下] /关键字 | 查找某个单词,继续输入n查找下一个 |
[命令行模式下]:set nu或:set nonu | 设置文件行号 |
G | 到达文件尾行 |
gg | 到达文件首行 |
:w :q :q! | 保存 退出 不保存退出 |
u | 撤销上一步 |
:%s/x/y/g | y全局替换x |
3、开机、重启、用户操作
3.1 开关机、重启命令
shutdown -h now | 立刻关机 |
shutdown -h 1 | 1分钟后关机 |
shutdown -r now | 立刻重启 |
halt | 关机 |
reboot | 立刻重启 |
sync | 把内存数据同步到磁盘 |
一般在关机或重启前,可以先进性sync同步数据,目前的shutdown/reboot/halt等命令均已经在关机前进行了sync 。
3.2 用户的相关操作
su - username | 切换到某一用户,由高权限切换成低权限用户不需要密码,反之需要 |
logout | 注销用户,在图形运行级别无效,在级别3下有效 |
useradd (-d dir -g groupname) username | 添加用户,用户创建后会自动在/home下创建同名的家目录(-d:指定新用户的家文件夹名称。-g:将当前用户添加到groupname组) |
passwd username | 修改密码 eg:给milan指定密码 passwd milan |
pwd | 显示当前用户所在目录 |
userdel (-r) username | 删除用户(-r:将家目录一并删除) eg:删除用户milan,但是要保留家目录, userdel milan eg:删除用户以及用户主目录,比如tom, userdel -r tom |
id username | 查询用户,当不存在时返回无此用户 |
whoami who am i | 查看当前用户,如果首先登录了一个用户(如tom),然后使用su命令切换到另一个用户(如Jerry)那么该命令会显示最初始的登录用户tom |
3.3 用户组
groupadd groupname | 新增组 eg:增加一个用户 zwj,直接将他指定到wudang groupadd wudang |
groupdel groupname | 删除组 |
usermod -g groupname username | 修改username的组为groupname eg:创建一个组mojiao把zwj放入到mojiao指令: usermod -g mojiao zwj |
usermod -d 目录名 username | 改变该用户登陆的初始目录。特别说明:用户需要有进入到新目录的权限。 |
注意:用户创建时,如果不指定分组,那么会自动分配到一个与该用户同名的新建的组
4、运行级别
0 :关机
1 :单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3和5,也可以指定默认运行级别
init 0(123456) | 切换到不同运行级别,如 init 0 表示关机 |
systemctl get-default | 获取当前运行级别(CentOS7以后) |
systemctl set-default graphical.targer | 设置默认运行级别(CentOS7以后) |
man (命令或配置文件) | 获得帮助信息 eg:查看ls命令的帮助信息 man ls |
help (命令) | 获得帮助信息 |
5、文件目录类常用指令
pwd | 显示当前工作目录的绝对路径 |
ls (-al)(目录或文件) | 查看当前(对应)目录的所以文件和目录(-a:显示隐藏的目录 -l:以列表方式显示信息,一个目录或文件对应一行) |
cd (~)(..) 绝对路径或相对路径 | 切换到指定目录(cd ~:回到家目录 cd ..:回到当前目录的上一级) eg:使用绝对路径切换到root目录, cd /root |
mkdir (-p) 要创建的目录 | 创建指定目录,默认只能创建单级目录(-p:创建多级目录) eg:创建一个目录/homeldog mkdir /homeldog |
rmdir (-rf) 要删除的目录 | 删除指定文件(或空目录)(-r:删除整个目录及其包含的目录和文件 -f:强制删除,无需确认) eg:删除animal目录(该目录下包含其他文件) rm -rf /homelanimal |
touch 文件名 | 创建空文件 |
cp (-r) source dest | 复制文件,从source到dest(-r:复制整个文件夹及其内部的文件) eg:将/home/bbb 整个目录,拷贝到 /opt cp -r /home/bbb /opt |
rm (-rf) 要删除的文件或目录 | 删除文件或目录(-r:删除整个文件夹及其内部的文件 -f:强制删除,无需询问) eg:递归删除整个文件夹/home/bbb, rm-rf /home/bbb[删除整个文件夹,不提示] |
mv 移动文件 对应目录 | 移动文件或重命名,当source和dest中没指定对应其他目录,也就是从本目录文件移动到本目录。mv oldNameFile newNameFile(功能描述:重命名) eg:将/opt/bbb移动到/home 下 mv /opt/bbb /home/ |
cat (-n) 要查看的文件名 | 查看文件。(-n:显示行号) |
命令 | 命令 | 将前面命令得到的结果传递给后面的命令进行操作 eg:cat-n /etc/profile | more [进行交互] |
more | 用于查看文档,more指令操作说明见下图 eg:more /etc/profile |
less | 用于查看文档,less指令操作说明见下图 eg: less /etc/profile |
echo 输出内容 | 将指定内容输出到控制台,可以配合重定向符>,>>使用 |
head (-n 5) 文件名 | 查看文件前10(默认)行内容,(-n:指定查看前多少行) eg:查看/etc/profile的前面5行代码 head -n 5 letc/profile |
tail (-n 5)(-f) 文件名 | 输出文件尾10(默认)行内容,(-n:指定查看尾多少行 -f:实时跟踪该文档的所有更新) eg:查看/etc/profile最后5行的代码 tail -n 5 /etc/profile tail-f /home/mydate.txt |
> >> | >:输出重定向 >>:追加方式重定向 eg:1)ls -l > 文件(功能描述:列表的内容写入文件a.txt中(覆盖写)) 4) echo "内容" >> 文件 (追加) 将/home目录下的文件列表写入到/home/info.txt中,覆盖写入 ls -l /home > /home/info.txt [如果info.txt没有,则会创建] |
ln -s 源文件或目录 软连接名 | 相当于创建快捷方式 eg:在/home目录下创建一个软连接myroot,连接到/root目录 ln -s /root /home/myroot 删除软连接myroot rm/home/myroot 注意:进入软连接时使用pwd查看到的是软连接所在目录 |
history (n) | 查看已经执行过历史命令,也可以执行历史指令(n:显示最近n条记录) |
!指令编号 | 在history查询指令后,通过指令编号执行指令 |
more操作指令说明:
less操作指令说明:
6、时间日期类
date | 显示当前时间 |
date +%Y | 显示当前年份 |
date +%m | 显示当前月份 |
date +%d | 显示当前是哪天 |
date "+%Y-%m-%d %H:%M:%S" | 显示年月日时分秒 |
date -s 字符串时间 | 设置系统当前时间 eg:设置系统当前时间为2020-11-03 20:02:10 date -s “2020-11-03 20:02:10” |
cal (年份) | 显示当前日历(显示对应年份的日历) eg:显示2022年当前月的日历 cal 2022 |
7、搜索查找类
7.1 find指令
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端。
基本语法:find [搜索范围] [选项]
搜索范围可以是某个目录,选项说明如下:
案例1:按文件名:根据名称查找/home目录下的 hello.txt 文件
find /home -name hello.txt
案例2:按拥有者:查找/opt目录下,用户名称为nobody的文件
find /opt -user nobody
案例3:查找整个linux系统下大于200M的文件(+n大于 -n小于n等于,单位有k,M,G)
find / -size +200M
7.2 locate指令
locate指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
基本语法:locate [搜索文件]
注意:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库。
eg:第一次使用locate,查询hello.txt文件位置
updatedb locate hello.txt
7.3 which指令
which,哪一个的意思,作用是从PATH环境变量指定的路径中,搜索命令所在位置及命令别名。
基本语法:which 命令名
注意: 1) "which" 命令只能查找系统命令,不能搜索普通文件。
2) "which" 命令是从PATH环境变量指定的路径中,搜索某个系统命令的位置,
并且返回第一个搜索结果。
eg:查看ls指令 which ls
7.4 grep指令和管道符号 |
grep过滤查找,管道符,“"”,表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法:grep [选项] 查找内容 源文件
选项说明如下:
eg:请在hello.txt文件中,查找"yes”所在行,并且显示行号
写法1: cat /home/hello.txt l grep -n "yes"
写法2: grep -n "yes" /home/hello.txt
8、压缩解压类
gzip 文件名 | 将指定文件压缩成*.gz的压缩文件 eg:将/home下的hello.txt文件进行压缩 gzip /home/hello.txt |
gunzip 文件名.gz | 将.gz的文件解压 eg:将/home下的hello.txt.gz文件进行解压 gunzip /home/hello.txt.gz |
zip (-r) *.zip 待压缩内容 | 将待压缩内容压缩成*.zip的压缩包(-r:递归压缩,将对应目录及其内部所有内容打包) eg:将/home下的所有文件/文件夹进行压缩成myhome.zip |
unzip (-d <目录>) *.zip | 解压文件(-d:将压缩文件解压后保存到-d后面设置的目录中) eg:将myhome.zip解压到/opt/tmp目录下mkdir /opt/tmp |
tar [选项] *.tar.gz 打包内容或压缩包 | 将内容打包或者解压 |
对tar的补充:
-A 新增压缩文件到已存在的压缩
-B 设置区块大小
-c 建立新的压缩文件
-d 记录文件的差别
-r 添加文件到已经压缩的文件
-u 添加改变了和现有的文件到已经存在的压缩文件
-x 从压缩的文件中提取文件 (解包)
-t 显示压缩文件的内容
-z 支持gzip解压文件 (打包压缩)
-j 支持bzip2解压文件
-Z 支持compress解压文件
-v 显示操作过程
-l 文件系统边界设置
-k 保留原有文件不覆盖
-m 保留文件不被覆盖
-W 确认压缩文件的正确性
可选参数如下:
-b 设置区块数目
-C 切换到指定目录
-f 指定压缩文件
--help 显示帮助信息
--version 显示版本信息
eg:将压缩文件jdk-8u161-linux-x64.tar.gz解压到/usr/local/jdk1.8目录下
tar zxvf /usr/local/jdk-8u161-linux-x64.tar.gz -C /usr/local/jdk1.8
案例1:压缩多个文件,将/home/pig.txt和/home/cat.tst压缩成pc.tar. gz
tar -zevf pc.tar.gz/home/pig.txt /home/cat.txt
案例2:将/home 的文件夹压缩成 myhome.tar.gz
tar -zcvf myhome.tar.gz/homel
案例3:将pc.tar.gz解压到当前目录
tar -zxvf pc.tar.gz
案例4:将myhome.tar.gz,解压到/optmp2目录下
(1)mkdir /opt/mp2(2) tar -zxvf /home/myhome.tar.gz -C /opt/mp2
9、组管理与权限管理
9.1 文件/目录所有者
文件或目录都有其自己的所有者和组别,下面对一个目录的信息进行分析
如图为命令 ls -la显示的目录信息,其中第一个方框内为 该目录创建者(为root用户),第二个方框内为该目录所在的组别(为root组)
一般文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组(默认)。
chown 用户名 文件名 | 修改文件所有者 eg:要求:使用root创建一个文件apple.txt ,然后将其所有者修改成tom touch apple.txt chown tom apple.txt |
chown (-R) 用户名:组名 | 修改文件所有者和所在组(-R:对目录递归生效) |
groupadd 组名 | 创建组 |
chgrp (-R) 组名 文件名 | 修改文件所在组(-R:递归修改内部文件目录的所在组) eg:使用root用户创建文件orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 fruit组。 1 .groupadd fruit 4.chgrp fruit orange.txt |
9.2 权限介绍
对于上述一个目录,通过ls -la查询出其信息如下:
drwxr-xr-x. 3 root root 18 1月 13 03:44 .
- 第一位:d。d表示一个目录,相当于windows的一个文件夹
- l是链接,相当于windows的快捷方式
- d是目录,相当于windows的文件夹
- c是字符设备文件,鼠标,键盘
- b是块设备,比如硬盘。在/dev/下可以看到
- 第2-4位:rwx,表示所有者拥有的该文件的权限 --User
- 第5-7位:r-x,表示同组成员拥有的权限。--Group
- 第8-10位:r-x,表示其他用户(其他组成员)拥有的权限。--Other
- 第11位:文件:硬连接数或目录:子目录数
- root,root:表示当前目录或文件的所有者和所在组别
- 18:表示文件大小(字节)
9.3 rwx权限
对于文件上的rwx:
1) [r]:代表可读(read):可以读取,查看
2) [w]:代表可写(write)可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件 所在的目录有写权限,才能删除该文件.
3) [x]:代表可执行(execute);可以被执行
对于目录上的rwx:
1) [r]:代表可读(read):可以读取,ls查看目录内容
2) [w]:代表可写(write):可以修改,对目录内创建+删除+重命名目录
3) [x]:代表可执行(execute);可以进入该目录
对目录上的权限说明:
当用户只有x权限时,可以进入该文件夹,如果该文件夹内有文件hello.txt,那么该用户可以对其进行修改,但是不能在当前文件夹下进行ls的操作(该操作属于对该文件夹的r操作),也不可以删除或者新建当前文件夹下的内容(该操作属于对该文件夹的w操作)
对用户只有r权限时,对于文件夹无法进入其内部,如对a文件夹,赋予拥有者r权限,无wx权限,那么无法进行cd a操作,对于文件而言,可以对文件进行只读操作
9.4 修改权限
通过chmod指令,可以修改文件或者目录的权限。
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
1) chmod u=rwx,g=rx,o=x 文件/目录名 --给用户所有者rwx权限,同组rx权限,其他组x权限
2) chmod o+w 文件/目录名 --给其他人添加w权限
3) chmod a-x 文件/目录名 --给所有人去除x权限
1)给abc文件的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限。
chmod u=rwx,g-rx,o=rx abc
2)给abc文件的所有者除去执行的权限,增加组写的权限
chmod u-x,g+w abc
3)给abc文件的所有用户添加读的权限
chmod atr abc
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名 == chmod 751 文件目录名
将/home/abc.txt文件的权限修改成rWXr-XI-x,使用给数字的方式实现:
chmod755/home/abc.txt
10、定时任务调度
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。
10.1 crontab指令
基本语法:crontab [选项]
选项说明如下:
service crond restart 重启调度任务
实践:
设置任务调度文件:/etc/crontab
设置个人任务调度。执行crontab-e命令。
接着输入任务到调度文件
如:*/1 * * * * ls -l /etc/ > /tmp/to.txt 意思说每小时的每分钟执行Is -l /etc/ > /tmp/to.txt命令
对五个*占位符说明:
示例:
案例1:每隔1分钟,就将当前的日期信息,追加到/tmp/mydate文件中
*/1 * * * * date > /tmp/mydate
案例2:每隔1分钟,将当前日期和日历都追加到/home/mycal文件中
(1) vim /home/my.sh 写入内容 date >> /home/mycal和 cal >> /home/mycal
(2)给 my.sh增加执行权限,chmod utx /home/my.sh
(3) crontab -e 增加 */1 * * * * /home/my.sh
案例3:每天凌晨2:00将mysq1数据库testdb,备份到文件中。提示:指令为
mysqldump -u root -p 密码 数据库 > /home/db.bak
步骤(1) crontab -e
步骤(2) 0 2 * * * mysqldump -u root-proot testdb > /home/db.bak
10.2 at指令
- at 命令是一次性定时计划任务,at 的守护进程atd会以后台模式运行,检查作业队列来运行。默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业。
- at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了
- 在使用at命令的时候,一定要保证atd进程的启动,可以使用相关指令来查看ps -ef l grep atd 可以检测atd是否在运行
基本语法:at [选项] [时间] -->输入指令 -->输入两次Ctrl+D结束命令的输入
选项说明如下:
时间说明如下:
- 接受在当天的 hh;mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。例如: 04:00
- 使用midnight(深夜),noon(中午) ,teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
- 采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。例如: 12pm
- 指定命令执行的具体日期,指定格式为month day(月日)或mmddyy(月日/年)或dd.mm.yy (日.月.年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-03-1
- 使用相对计时法。指定格式为: now + count time-units ,now就是当前时间, time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、 weeks (星期)。count是时间的数量,几天,几小时。例如: now + 5 minutes
- 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
案例1:2天后的下午5点执行/bin/ls /home
at 5pm+2days
at> /bin/ls /home
案例2: atq命令来查看系统中没有执行的工作任务
atq
案例3:明天17点钟,输出时间到指定文件内比如 /root/date100.log
at 5pm tomorrow
at> date > /root/date100.log
案例4:2分钟后,输出时间到指定文件内比如/root/date200.log
at now + 2 minutes
at> date > /root/date200.log
案例5:删除已经设置的任务, atrm 编号
atrm 4 //表示将job队列,编号为4的job删除.
11、磁盘分区,挂载
Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。Linux 采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
11.1 硬盘分类
Linux硬盘分IDE硬盘和sCSI硬盘,目前基本上是SCSI硬盘
IDE硬盘:驱动器标识符为"hdx~",其中"hd"表明分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
SCSI硬盘:驱动器标识符为"“sdx~",SCSl硬盘是用“sd"来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
11.2 挂载
查看设备挂载情况:lsblk 或lsblk -f(显示详细信息)
对于Linux虚拟机增加硬盘来说,分为以下几个步骤:
- 虚拟机添加硬盘:在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)!
- 进行分区:命令为 fdisk /dev/sdb(sdb项视情况而言,要先检查好自己虚拟机上的分区和挂载情况,因为之前查询到当前虚拟机的硬盘为1块,sda,三个分区,sda1,sda2,sda3,要新增下一块硬盘,即sdb)。在设置分区时有如下参数:m---显示命令列表。p---显示磁盘分区同 fdisk -l。n---新增分区。d---删除分区。w---写入并退出
说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。 - 格式化硬盘:命令为 mkfs -t ext4 /dev/sdb1,其中ext4为分区类型,sdb1为设置1块分区
- 挂载:命令为 mount 设备名称 挂载目录。如mount /dev/sdb1 /newdisk,将sdb1分区挂载到/newdisk目录。此时用命令行设置完挂载后,重启会使得本次挂载失效
- 永久挂载:修改/etc/fstab(vim /etc/fstab)。添加完成后执行mount -a即刻生效
注意:一个目录仅能挂载一个分区,一个目录下的子目录可以挂载其他分区,但是对相同的一个目录不能挂在多个分区。
11.3 磁盘查询
基本语法:df -h 查询系统整体磁盘使用情况
du -h 查询指定目录的磁盘占用情况,默认为当前目录
选项说明如下:
案例:查询lopt目录的磁盘占用情况,深度为1
du -hac --max-depth=1 /opt
11.4 磁盘使用情况常用指令
1)统计/opt文件夹下文件的个数(grep后可以识别正则表达式)
ls -l /opt | grep "^-" | wc -l (wc统计个数)
2)统计/opt文件夹下目录的个数
ls -l /opt | grep "^d" | wc -1
3)统计/opt文件夹下文件的个数,包括子文件夹里的
ls -IR /opt | grep "^-" | wc -l
4)统计/opt文件夹下目录的个数,包括子文件夹里的
ls -lR /opt | grep "^d" | wc -l
5)以树状显示目录结构 tree目录,注意:如果没有tree ,则使用yum install tree安装
12、网络配置
对于虚拟机的.net模式的网络访问路径如下图
11.1 ip地址查询
Windows:ipconfig
Linux:ifconfig
对于Linux网络配置问题可以参考下面博客
原文链接:https://blog.csdn.net/weixin_43800761/article/details/106742945
11.2 域名解析过程
下面以访问百度为例,分析域名解析访问过程:
- 浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用这个IP完成解析。
- 如果没有,就检查DNS解析器缓存,如果有直接返回IP完成解析。以上这两个缓存,可以理解为本地解析器缓存
- 一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录).如在cmd窗口中输入 ipconfig /displaydns(DNS域名解析缓存)
ipconfig /flushdns(手动清理dns缓存) - 如果本地解析器缓存没有找到对应映射,检查系统中 hosts文件中有没有配置对应的域名IP映射,如果有,则完成解析并返回。
- 如果本地DNS解析器缓存和 hosts文件中均没有找到对应的IP,则到域名服务DNS进行解析域。
12、进程管理
在LINUX中,每个执行的程序都称为一个进程。(没有被执行时称为程序,进入内存执行时称作进程)每一个进程都分配一个ID号(pid,进程号)。每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
12.1 进程查询指令
基本语法:ps [选项]
选项说明如下:
ps -e:显示所有进程
ps -f:全格式显示
通常如果想查询某个进程可以通过管道命令进行查询,如查询sshd服务:ps -aux | grep sshd
参数说明:
System V-----展示风格
USER-----用户名称
PID-----进程号
%CPU-----进程占用CPU的百分比
%MEM-----进程占用物理内存的百分比
VSZ-----进程占用的虚拟内存大小(单位:KB)
RSS-----进程占用的物理内存大小(单位:KB)
TT-----终端名称,缩写
STAT-----进程状态,其中:S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T被跟踪或者被停止等等
STARTED-----进程的启动时间
TIME-----CPU时间,即进程使用CPU的总时间
COMMAND-----启动进程所用的命令和参数,如果过长会被截断显示
案例:以全格式显示当前所有的进程,查看进程的父进程。查看sshd 的父进程信息
ps -ef | grep sshd
参数说明:
UID-----用户ID
PID-----进程ID
PPID-----父进程ID
C-----CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是IO密集型运算,执行优先级会提高
STIME-----进程启动的时间
TTY-----完整的终端名称
TIME-----CPU时间
CMD-----启动进程所用的命令和参数
查看进程树:pstree [选项]
选项说明如下:
-p 显示进程的PID
-u 显示进程的所属用户
案例1:请你树状的形式显示进程的pid
pstree -p
案例2:请你树状的形式进程的用户
pstree -u
12.2 进程终止
基本语法:kill [选项] 进程号(功能描述:通过进程号杀死/终止进程)
killall 进程名称(功能描述:通过进程名称杀死进程)
选项通常为-9:表示强迫进程立即停止。有时用户尝试终止某个进程时,操作系统会阻止这次操作,这时可以使用-9强行终止。
案例1:踢掉某个非法登录用户kill进程号,比如 kill 11421
案例2:终止远程登录服务sshd,在适当时候再次重启sshd 服务kill sshd 对应的进程号;
/bin/systemctl start sshd.service
案例3:终止多个gedit。 killall gedit
案例4:强制杀掉一个终端,指令:kill -9 bash 对应的进程号
13、服务管理
服务(service)本质就是进程,但是是运行在后台的,通常都会监听某个端口,等待其它程序的请求,比如(mysqld , sshd,防火墙等),因此我们又称为守护进程,是Linux中非常重要的知识点。
13.1 service管理指令
基本语法:service 服务名 [start|stop|reload|status]
说明:在CentOS7.0后很多服务不再使用service ,而是 systemctl。service指令管理的服务在letc/init.d查看
案例:请使用service指令,查看,关闭,启动network
service network status service network stop service network start
13.2 服务与运行级别
同一服务在不同的运行级别下开机时的状态可能不同,如在3运行状态下为关闭状态,在5状态下为开启状态。开机启动流程如下:
通过chkconfig命令可以给服务的各个运行级别设置自启动/关闭。chkconfig指令管理的服务在letc/init.d查看
基本语法:chkconfig --list [l grep xxx] 查看服务
chkconfig 服务名 --list
chkconfig --level 5 服务名 on/off 给运行状态5设置某个服务设置是否自启动
案例演示:对network 服务,各种操作,把network在3运行级别,关闭自启动
chkconfig --level 3 network off
chkconfig --level 3 network on
注意:chkconfig 重新设置服务后自启动或关闭,需要重启机器reboot生效.
13.2 systemctl指令
基本语法:systemctl [start|stop|restart|status] 服务名
systemctl指令管理的服务在/usr/liblsystemd/system查看
systemctl设置服务自启动状态:
systemctl list-unit-files [l grep 服务名](查看服务开机启动状态, grep可以进行过滤)
systemctl enable 服务名(设置服务开机启动)
systemctl disable服务名(关闭服务开机启动)
systemctl is-enabled 服务名(查询某个服务是否是自启动的)
案例:查看当前防火墙的状况,关闭防火墙和重启防火墙。=> firewalld.service
systemctl status firewalld; systemctl stop firewalld; systemctl start firewalld
注意:关闭或者启用防火墙后,立即生效。[telnet测试某个端口即可]这种方式只是临时生效,当重启系统后,还是回归以前对服务的设置。如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable l disable]服务名
13.3 防火墙设置
在真正的生产环境,往往需要将防火墙打开,如果我们把防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。这时,需要打开指定的端口。比如 80、22、8080等,这个又怎么做呢?
打开指定端口:firewall-cmd --permanent --add-port=端口号/协议
关闭指定端口:firewall-cmd --permanent --remove-port=端口号/协议
设置完端口后需要重新载入生效:firewall-cmd -reload
查询端口是否开放:firewall-cmd --query-port=端口号/协议
其中,协议可以通过netstat -anp查询:
案例:开放111端口:
firewall-cmd --permanent --add-port=111/tcp
firewall-cmd -reload
关闭111端口:
firewall-cmd -permanent --remove-port=111/tcp
firewall-cmd -reload
13.4 动态监控进程
基本语法:top [选项]
选项说明如下:
top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的的进程。默认三秒更新一次状态。
在使用top指令进行监控时,可以通过以下指令进行交互:
案例1.监视特定用户,比如监控tom用户
top:输入此命令,按回车键,查看执行的进程。
u:然后输入“u”回车,再输入用户名
案例2:终止指定的进程,比如我们要结束tom登录
top:输入此命令,按回车键,查看执行的进程。
k:输入“k”回车,再输入要结束的进程ID号
案例3:指定系统状态更新的时间(每隔10秒自动更新),默认是3秒
top-d 10
13.5 监控网络状态
基本语法:netstat [选项]
选项说明:
-an 按一定顺序排列输出
-p 显示哪个进程在调用
案例:请查看服务名为sshd的服务信息
netstat -anp | grep sshd
14、RPM与YAM
14.1 RPM
rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。RPM是RedHat Package Manager(RedHat软件包管理工具)的缩写,类似 windows的 setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。
基本语法:rpm -qa [| grep firefox] 查询所有已安装的rpm包(查询已安装的firefox)
rpm -q 软件包名 查询软件包是否已安装
rpm -qi 软件包名 查询软件包信息
rpm -ql 软件包名 查询软件包中的文件
rpm -qf 文件全路径名 查询文件所属安装包(如:rpm -qf /etc/passwd)
rpm -e rpm包名 卸载rmp包(如rpm -e firefox)
rpm -ivh rpm包全路径名 安装rpm包(-i:安装 -v:提示 -h:进度条)
注意:如果要删除的包被其他软件包所依赖,则卸载时会产生错误信息,如果要强制删除该软件包,则可以使用命令 rpm -e --nodeps 软件包名
对于rpm包:firefox-60.2.2-1.el7.centos.x86_64
名称:firefox
版本号:60.2.2-1
适用操作系统: el7.centos.x86_64,表示centos7.x的64位系统,如果是i686、i386表示32位系统,noarch表示通用
14.2 YUM
Yum是一个 Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。类似Maven仓库。
基本语法:yum list [| grep xx] 查询yum软件列表(查询指定某个软件)
yum install xxx 安装yum包(需要联网)