linux 中一切皆文件
执行指令时没有消息反而是好消息
笔记来源于B站 2021韩顺平一周学会linux
linux笔记
linux目录结构
- /bin (/usr/bin、/usr/local/bin)
- 是Binary的缩写,这个目录存放着最经常使用的命令
- /sbin (/usr/sbin、/usr/local/sbin)
- s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
- /home
- 存放普通用户的主目录,在Linux中每一个用户都有一个自己的目录,一般该目录是以用户的账号命名
- /root
- 该目录为系统管理员,也称作超级权限者的用户主目录
- /lib
- 系统开机所需要最基本的动态权限共享库,其作用类似于windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
- /lost+found
- 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。(直接在文件夹里面查看这个文件夹是看不到的,可以在终端里面查看)
- /etc
- 所有的系统管理所需要的配置文件和子目录 比如mysql数据库、my.conf
- /usr
- 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
- /boot
- 存放的是启动linux时使用的一些核心文件,包括一些连接文件以及镜像文件
- /proc [不能动]
- 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
- /src [不能动]
- service缩写,该目录存放一些服务启动之后需要提取的数据
- /sys [不能动]
- 这是linux2.6内核的一个很大变换,该目录下安装了2.6内核中新出现的一个文件系统sysfs
- /tmp
- 这个目录是用来存放一些临时文件的
- /dev
- 类似于windows的设备管理器,把所有的硬件用文件的形式存储
- /media
- linux系统会识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下
- /mnt
- 系统提供该目录是为了让用户临时挂载别的系统文件,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。d:/VMwareFileShare
- /opt
- 这是给主机额外安装软件摆放的目录。如安装ORACLE数据库就可以放到该目录下。默认为空(安装文件放这)
- /usr/local
- 这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。(安装以后的目录)
- /var
- 这个目录中存放着在不断扩充着的东西,习惯将经常修改的目录放在这个目录下。包括各种日志文件
- /selinux [security-enhanced linux]
- SELinux是一种安全子系统,他能控制程序只能访问特定文件,有三种工作方式,可以自行设置。
vi和vim
linux系统内置vi文本编辑器
vim具有程序编辑的能力,可以看成vi的增强版本。
- vi和vim三种模式相互切换
- 在命令行下 # vim xxx 到一般模式
- 一般模式输入i或a进入编辑模式
- 编辑模式按ESC返回一般模式
- 一般模式下
- 输入:或/ 进入命令行模式,在命令行下:wq(保存退出)、:q(退出)、:q!(强制退出,不保存)
- 输入ESC 返回一般模式
- 快捷键使用
- 拷贝当前行 yy,拷贝当前行向下的5行 5yy,并粘贴(输入p)
- 删除当前行 dd,删除当前行向下的5行 5dd
- 在文件中查找某个单词[命令行下/关键字,回车 查找,输入n就是查找下一个]
- 设置文件的行号,取消文件的行号[命令行下:set nu 和 :set nonu]
- 编辑/ect/profile 文件,使用快捷键到该文档的最末行[G]和最首行[gg]
- 在一个文件中输入"hello",然后又撤销这个动作 u
- 编辑 /etc/profile 文件,在一般模式下,并将光标移动到 20行,输入 20再输入 shift+g:
- 更多的看整理的文档
关机和重启命令
基本介绍
- shutdown -h now 立刻进行关机
- shutdown -h 1 “hello,1分钟后会关机了”
- shutdown -r now 现在重新启动计算机
- halt 关机,作用和上面一样
- reboot 重启计算机:
- sync 把内存的数据同步到磁盘
注意细节
- 不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中
- 目前的shutdown/reboot/halt等命令均已在关机前进行了sync,,小心驶得万年船
用户登录和注销
基本介绍
- 登录时尽量少用root账户登录,因为他是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登陆后再用"su - 用户名"命令来切换成系统管理员身份
- 在提示符下输入logout即可注销用户
使用细节
- logout注销指令在图形运行级别无效,在运行级别 3及以下有效
- 运行级别概念:看后面使用指令
用户管理
- 添加用户
- 节本语法 useradd 用户名
- 细节说明
- 当创建用户成功之后,会自动的创建和用户名同名的家目录
- 也可以通过 useradd -d 指定目录 新的用户名,给创建的用户指定家目录
- 指定/修改密码
- passwd 用户名
- 显示当前用户所在的目录 pwd
- passwd 用户名
- 删除用户
- 基本语法 userdel 用户名
- 删除用户msk,但是保留家目录,userdel msk
- 删除用户以及用户主目录(这个操作要慎重),userdel -r msk
- 一般情况下建议保留家目录,该账户工作是保留的资料在里面,可能还是有用的
- 基本语法 userdel 用户名
- 查询用户信息指令
- 基本语法: id 用户名
- 例查询root信息,id root
- 细节:当没有该用户时返回 no such user
- 基本语法: id 用户名
- 切换用户
- 在操作linux中,如果当前用户的权限不够,可以通过 su - 指令,切换到高权限用户,比如root
- 基本语法 su - 切换用户名
- 细节说明
- 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要
- 当需要返回原来用户时,使用exit/logout指令
- 查看当前用户/登录用户
- 基本语法 who am i
- 用户组
- 介绍
- 类似于角色,系统可以对有共性的/权限的多个用户进行统一管理
- 新增组
- groupadd 组名
- 删除组
- groupdel 组名
- 增加用户时直接加上组
- useradd -g 用户组 用户名
- 修改用户的组
- usermod -g 用户组 用户名
- 默认增加的用户都有一个以用户名命名的组
- 用户和组相关文件
- /ect/passwd文件
- 用户(user)的配置文件,记录用户的各种信息。每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录shell
- /etc/shadow文件
- 口令的配置文件。每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
- /etc/group文件
- 组(group)的配置文件,记录linux包含的组的信息。每行含义:组名:口令:组标识符:组内用户列表
- /ect/passwd文件
- 介绍
实用指令
1、指定运行级别
-
基本介绍
- 0:关机
- 1:单用户[找回丢失密码]
- 2:多用户状态没有网络服务
- 3:多用户状态有网络服务
- 4:系统未使用保留给用户
- 5:图形界面(graphical)
- 6:系统重启
常用运行级别是3和5,也可以指定默认运行级别
应用实例
- 命令:init [0123456] 应用案例:通过init来切换不同的运行级别,比如 5-3,然后关机
-
CentOS7后运行级别说明
- 在centos7以前,/etc/inittab文件中,进行了简化,multi-user.target:analogous to runlevel 3 graphical.target:analogous to runlevel 5
- # To view current default target,run: systemctl get-default
- # To set a default target,run: systemctl set-default 级别单词.target
2、找回root密码
- 看韩老师视频
3、帮助指令
- man获得帮助指令
- 基本语法:man [命令或配置文件](功能描述:过的帮助信息)
- 比如查看ls命令的帮助信息 man ls
- 在linux下,隐藏文件是以.开头的,选项可以组合使用 比如ls -al,ls -al /root
- help指令
- 基本语法:help 命令(功能描述:获得shell内置命令的帮助信息)
- 英语不好直接百度也行
4、文件目录类
-
pwd指令
- 基本语法 :pwd (功能描述:显示当前工作目录的绝对路径)
-
ls指令
- 基本语法:ls [选项] (目录或文件)
- 常见选项
- -a:显示当前目录所有的文件和目录,包括隐藏的
- -l:以列表的方式显示详细信息
- ls -lh (功能描述:h表示human,文件大小可以用M,G显示)
-
cd指令
- 基本语法:cd [参数] (功能描述:切换到指定目录)
- 理解:绝对路径(由根目录开始)和相对路径(从现在位置出发)
- cd ~或cd :回到自己的家目录
- cd… :回到当前目录的上一级目录
-
mkdir指令
- mkdir指令用于创建目录
- 基本语法:mkdir [选项] 要创建的目录
- 常用选线 -p:创建多级目录
- 一级目录 mkdir /home/dog
- 多级目录 mkdir -p /home/animal/dog
-
rmdir指令
- rmdir指令删除空目录
- 基本语法:rmdir [选项] 要删除的空目录
- 使用细节:rmdir删除的目录是空目录,如果目录下面有内容删不掉
- 提示:删除非空目录,需要使用 rm -rf 要删除的目录
- 强制删除不提醒的方法:带上-f参数即可
-
touch指令
- 创建空文件
- touch 文件名称
-
cp指令
- cp 指令拷贝文件到指定目录
- cp [选项] source dest
- 常用选项 -r:递归复制整个文件夹;egg:cp -r /home/bbb/ /opt/
- \cp覆盖文件不提醒
-
rm指令
- rm指令移除文件或目录
- 基本语法:rm [选项] 要删除的文件或目录
- 常用选项 -r:递归删除整个文件夹; -f:强制删除不提示
-
mv指令
- 移动文件与目录或重命名
- mv oldNameFile newNameFile (功能描述:重命名)
- mv /temp/movefile /targetFolder (功能描述:移动文件)
-
cat指令
- cat查看文件内容
- 基本语法:cat [选项] 要查看的文件
- 常用选项 -n:显示行号
- 使用细节 cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more
-
more指令
-
more指令是一个基于VI编辑器的文本过滤器,他以全屏幕的方式按页显示文本文件的内容。more指令中内置了若干快捷键,常见操作说明
-
基本语法 more 要查看的文件
操作 功能说明 空白键(space) 代表向下翻一页 Enter 代表向下翻一行 q 代表立刻离开more,不再显示该文件内容 Ctrl+F 向下滚动一屏 Ctrl+B 返回上一屏 = 输出当前的行号 :f 输出文件名和当前行的行号
-
-
less指令
-
less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率
-
基本语法 less 要查看的文件
操作 功能说明 空白键 向下翻一页 pagedown 向下翻一页 pageup 向上翻一页 /字串 向下搜寻 字串 的功能;n:向下查找;N:向上查找 ?字串 向上搜寻 字串的功能;n:向上查找;N向下查找 q 离开less这个程序
-
-
echo指令
- 输出内容到控制台
- 基本语法 echo [选项] [输出内容]
-
head指令
- head用于显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
- 基本语法 head 文件 (功能描述:查看文件前10行内容)
- head -n 5 文件(查看文件前5行,5可以更改)
-
tail指令
- tail指令用于输出文件尾部的内容,默认情况下tail指令显示文件的前10行内容
- 基本语法
- tail 文件 (功能描述:查看文件尾10行内容)
- tail -n 5 文件 (功能描述:查看文件尾5行内容,5可以是任意数字)
- tail -f 文件 (功能描述:实时追踪该文档的所有更新 Ctrl + C退出)
-
> 指令 和 >>指令
- > 输出重定向 和 >> 追加
- Is -l > 文件(功能描述:列表的内容写入文件a.txt文件中(覆盖写))
- ls -al >> 文件 (功能描述:列表的内容追加到文件的末尾)
- cat 文件1 > 文件2 (功能描述:将文件1中的内容覆盖到文件2)
- echo “内容” >> 文件 (追加)
- > 输出重定向 和 >> 追加
-
ln指令
-
软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径
-
基本语法:**ln -s [原文件或目录] [软链接名] **(功能描述:给原文件创建一个软链接)
-
案例1:在/home目录下创建一个软链接 myroot,连接到/root目录
ln -s /root /home/myroot
-
案例2:删除软连接 myroot
rm /home/myroot
-
细节说明 :当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录
-
-
history指令
-
查看已经执行过历史命令,也可以执行历史指令
-
基本语法 history (功能描述:查看已经执行过历史命令)
-
案例
-
显示所有的历史命令
history
-
显示最近使用过的10个指令
history 10
-
执行历史编号为5的指令
!5
-
-
5、时间日期类
-
date指令-显示当前日期
- 基本语法
- date (功能描述:显示当前时间)
- date “+%Y” (功能描述:显示当前年份)
- date “+%m”(月份)
- date “+%d” (天)
- date “+%Y-%m-%d %H:%M:%S” (年月日时分秒)
- 基本语法
-
date指令-设置日期
-
基本语法
date -s 字符串时间
-
-
cal指令
- 查看日历指令
- 基本语法 cal [选项] (功能描述:不加选项,显示月日历)
6、搜索查找类
-
find指令
-
find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端
-
基本语法
find [搜索范围] [选项]
- 选项说明
-
选项 | 功能 |
---|---|
-name 查询方式 | 按照指定的文件名查找模式查找文件 |
-user 用户名 | 查找属于指定用户名所有文件 |
-size 文件大小 | 按照指定的文件大小查找文件(+表示大于、-表示小于、直接大小表示等于,单位有k,M,G) |
-
locate指令
-
locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定文件。locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻
-
基本语法
locate 搜索文件
- 特别说明:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库
-
which指令
- 可以查看某个指令在哪个目录下
-
-
grep指令和管道符号 |
-
grep过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
-
基本语法
grep [选项] 查找内容 源文件
-
常用选项
-
选项 功能 -n 显示匹配行及行号 -i 忽略字母大小写 -
案例:在hello.txt 文件中,查找“yes”所在行,并显示行号
方式一:cat /home/hello.txt | grep -n “yes”
方式二:grep -n “yes” /home/hello.txt
-
-
7、压缩和解压
-
gzip/gunzip指令
-
基本语法
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
-
-
zip/unzip指令
-
zip用于压缩文件,unzip用于解压的,这个在项目打包发布中很有用
-
基本语法
zip [选项] XXX.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
-
zip常用选项
-r:递归压缩,即压缩目录
unzip [选项] XXX.zip (功能描述:解压缩文件)
-
unzip常用选项
-d <目录> :指定解压后文件存放目录
-
-
案例
1.将/home下的所有文件压缩成 myhome.zip
zip -r myhome.zip /home/ [将home及其包含的文件及子文件夹压缩]
2.将myhome.zip解压到/opt/tmp目录下
unzip -d /opt/tmp/ /home/myhome.zip
-
-
tar指令
-
tar指令是打包指令,最后打包后的文件是.tar.gz的文件
-
基本语法
tar [选项] XXX.tar.gz 打包的内容
(功能描述:打包目录,压缩后的文件格式.tar.gz)选项 功能 -c 产生.tar打包文件,建立一个压缩文件(create) -v 显示详细信息,压缩的过程中显示文件 -f 指定压缩后的文件名 -z 打包同时压缩 -x 解包.tar文件,解开一个压缩文件 -
案例
-
压缩多个文件,将/home/pig/txt 和/home/cat.txt 压缩成pc.tar.gz
tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
-
将/home的文件夹压缩成myhome.tar.gz
tar -zcvf myhome.tar.gz /home/
-
将pc.tar.gz解压到当前目录,切换到/opt/
tar -zxvf pc.tar
-
将没有home.tar.gz 解压到 /opt/tmp2目录下
tar -zxvf /home/myhome.tar.gz -C /opt/tmp2
-
-
8、关闭正在执行的程序
- Ctrl + C 终止
- Ctrl + D 退出
- Ctrl + S 挂起
- Ctrl + Q 解挂
- Ctrl + Z 放在后端运行
组管理和权限管理
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者,所在组,其他组的概念。
-
文件/目录所有者
一般为文件的创造者,创造者即为所有者
- 查看文件的所有者 指令:ls -ahl
- 修改文件所有者 指令: chown 用户名 文件名
-
文件/目录 所在组
- 创建组:groupadd 组名
- 查看文件/目录所在组 指令:ls -ahl
- 修改文件所在组 指令:chgrp 组名 文件名
-
其他组
除文件所有者和所在组的用户外,系统的其它用户都是文件的其他组
-
改变用户的所在组 指令:
usermod -g 组名 用户名
usermod -d 目录名 用户名 (功能描述:改变该用户登录的初始目录,前提:用户要有进入该目录的权限)
-
-
权限的基本介绍
-rw-r–r–. 1 maoshikai root 0 1月 24 11:51 apple.txt
-
第0位确定文件类型(d,-,l,c,b)
l是链接,相当于windows的快捷方式
d是目录,相当于windows的文件夹
c是字符设备文件,鼠标,键盘
b是块设备,比如硬盘
-
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。—User
-
第4-6位确定所属组(同用户组的)拥有该文件的权限。—Group
-
第7-9位确定其他用户拥有该文件的权限。----Other
-
-
rwx权限详解
- rwx作用到文件
- 【r】代表可读
- 【w】代表可写:可以修改,但不是代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有 写权限,才能删除该文件
- 【x】代表可执行:可以被执行
- rwx作用到目录
- 【r】代表可读
- 【w】可写:对目录内创建+删除+重命名目录
- 【x】代表可执行:可以进到该目录
- rwx作用到文件
-
修改权限chmod指令
-
第一种方式:+,-,= 变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
- chmod u=rwx,g=rx,o=x 文件/目录名
- chmod o + w 文件/目录名
- chmod a - x 文件/目录名
-
第二种方式:通过数字变更权限
r=4 , w=2 , x=1 , rwx=4+2=1=7
相当于
chmod 751 文件目录名
-
案例
-
给abc文件的所有者读、写、执行权限,给所在组读、执行权限,给其他组读执行权限
chmod u=rwx,g=rx,o=rx
-
给abc文件所有者除去执行权利,增加写的权限
chmod u-x,g+w abc
-
给文件的所有用户添加读的权限
chmod a+r abc
-
-
-
修改文件所有者
-
基本介绍
-
chown newowner 文件/目录
(改变所有者) -
chown newowner:newgroup 文件/目录
(改变所有者和所在组) -
-R 如果是目录 则使其下所有子文件或目录递归生效
-
案例
-
将/home/abc.txt 文件的所有者改成msk
chown msk /home/abc.txt
-
将/home/kkk 目录下所有文件和目录的所有者都修改成msk
chown -R msk /home/kkk
-
-
-
修改文件/目录所在组 chgrp
-
chgrp newgroup 文件/目录 (改变所有组)
-
例将/home/abc.txt文件所在组修改成shaolin
chgrp shaolin /home/abc.txt
-
定时任务调度
crontab 进行 定时任务的设置
-
概述
任务调度:是指系统在某个时间执行的特定的命令或程序
任务调度分类:1. 系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
- 个别用户工作:个别用户可能希望执行某些程序,比如对mydql数据库的备份
-
基本语法
crontab [选项]
-e 编辑crontab定时任务 -l 查询crontab任务 -r 删除当前所有的crontab任务 5占位符含义
项目 含义 范围 第一个“*” 一小时中的第几分钟 0-59 第二个“*” 一天中的第几小时 0-23 第三个“*” 一个月中的第几天 1-31 第四个“*” 一年中的第几月 1-12 第五个“*” 一周中的周几 0-7(0和7都代表星期日) 特殊符号说明
特殊符号 含义 * 代表任何时间,比如第一个*,就代表一小时中每分钟都执行一次的意思 , 代表不连续的时间。“0 8,12,16 * * *”代表每天的8点零分,12点零分,16点零分都执行一次 - 代表连续的时间范围,“0 5 * * 1-6”代表在周一到周六的凌晨5点0分执行命令 */n 代表没个多久执行一次,“*/1 * * * *”代表每隔1分钟执行一遍命令
at定时任务
基本介绍
-
at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行
-
默认情况下,atd守护进程每60秒检查作业队列。有作业时会检查作业运行时间,如果与当前时间匹配,则运行此作业。
-
at命令是一次性定时计划任务,执行完一个任务之后不再执行任务
-
在使用at命令时,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef | grep atd //检车atd是否在运行
at命令格式
at [选项] [时间]
Ctrl + D 输两次 结束at命令的输入
选项 | 含义 |
---|---|
-m | 当指定任务被完成后,将给用户发送邮件,即使没有标准输出 |
-I | atq的别名 |
-d | atrm的别名 |
-v | 显示任务将被执行的时间 |
-c | 打印任务的内容到标准输出 |
-V | 显示版本信息 |
-q<队列> | 使用指定的队列 |
-f<文件> | 从指定文集爱你读入任务而不是从标准输入读入 |
-t<时间参数> | 以时间参数的形式提交要运行的任务 |
at时间指定的方法:
- 接受在当天的hh:mm(小时:分钟)式的时间指定。假如改时间已过去。那么就放在第二天执行
- 使用midnight(深夜)、noon(中午)、teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
- 采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。
- 指定命令执行的具体时间,指定格式为month day (月 日或mm/dd/yy (月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间后面。
- 使用相对计时法。指定格式为:now + count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hour(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。例如:now + 5 minutes
- 直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
案例:
- 两天后下午5点执行/bin/Ls/home
at 5pm + 2days [回车输入/bin/Ls/home]
-
atq命令查看系统中有没有执行的工作任务
-
明天17点钟,输出时间到指定文件内, 比如/root/date100.log
at 5pm tomorrow [回车输入 date > date100.log]
-
2分钟后,输出时间到指定文件内 比如/root/date200.log
now + 2 minutes [回车输入date > date200.log]
-
删除已经设置的任务,atrm编号
atrm 5 <删除编号为5的任务>
Linux磁盘分区、挂载
Linux分区
原理介绍:
- Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分。
- Linux采取了一种叫“载入”的处理方法。它的整个文件系统中包含了一整套的文件和目录。且将一个分区和一个目录联系起来。这时要载入一个分区将使它的存储空间在一个目录下获取。
硬盘说明:
- Linux硬盘分为IDE硬盘和SCSI硬盘,目前基本上时SCSI硬盘
- 对于IDE硬盘,驱动器标识符为“hdx”(SCSI硬盘标识为“sdx”),其中hd表明分区所在设备的类型,这里是指IDE硬盘。x为盘号(a为基本盘、b为基本从属盘、c为主盘、d为辅助从属盘),表示分区,前四个分区分别用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。
查看所有设备挂载情况:
命令:lsblk 或者 lsblk -f
如何增加一块硬盘
1、虚拟机添加硬盘 2、分区 3、格式化 4、挂载 5、设置可以自动挂载
分区命令:fdisk /dev/sdb 开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
格式化硬盘:mkfs -t ext4 /dev/sdb1 (其中ext4是分区类型)
挂载:mount 设备名称 挂载目录
取消挂载:unmount 设备名称或挂载目录
**注意:用命令行挂载,重启后会失效**
永久挂载:通过修改/ect/fstab实现挂载
添加完成后 执行 mount -a 立即生效
磁盘情况查询
-
查询系统整体磁盘使用情况
命令:df -h
-
查询指定目录的磁盘占用情况
命令:du -h
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总 -h 带计量单位 -a 含文件 --max-depth=1 子目录的深度 -c 列出明细的同时,增加汇总值
例如:查询/opt目录的磁盘占用情况,深度为1
du -hac --max-depth=1 /opt
-
磁盘情况-工作实用指令
1.统计/opt文件夹下文件的个数 ls -l /opt | grep "^-" | wc -l 2.统计/opt文件夹下目录的个数 ls -l /opt | grep "^d" |wc -l 3.统计/opt文件夹下文件的个数,包括子文件夹里 ls -lR /opt | grep "^-" | wc -l 4.统计/opt文件夹下目录的个数,包含子文件夹里 ls -lR /opt | grep "^d" | wc -l 5.以树状显示目录结构: tree 目录,注意,如果没有tree,使用yum install tree安装
linux网络配置
常见指令
查看网络ip和网关:在虚拟网络编辑器中
查看windows环境中网络配置:ipconfig
查看linux环境中网络配置:ifconfig
ping 测试主机之间的网络连通性
基本语法:ping 目的主机(功能描述:测试当前服务器是否可以连接目的主机)
网络环境配置
- 第一种方式(自动获取)
登录linux后,通过界面的来设置自动获取ip,特点:linux启动之后会自动获取ip,缺点是每次自动获取的ip地址可能不一样
-
第二种方式(指定ip)
说明:直接修改配置文件来指定IP,并可以连接到外网
编辑:vim /etc/sysconfig/network-scripts/ifcfg-ens33
要求:将ip地址配置为静态的,比如ip地址为192.168.232.130
TYPE="Ethernet" #网络类型(通常是Ethernet) PROXY_METHOD="none" BROWSER_ONLY="no" #ip的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配ip|BOOTP协议|DHCP协议) BOOTPROTO="static" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="yes" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="ens33" UUID="3030bfaf-aa32-45a6-9111-fa89ddc14a13" #随机id DEVICE="ens33" #接口名(设备、网卡) #系统启动的时候网络接口是否有效(yes/no) ONBOOT="yes" #IP地址 IPADDR=192.168.232.130 #网关 GATEWAY=192.168.232.2 #域名解析器 DNS1=192.168.232.2
重启网络服务或重启系统生效
serive network restart 或者 reboot
设置主机名和hosts映射
-
设置主机名
方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名
指令:hostname : 查看主机名
修改文件在 /etc/hostname 指定。修改后,重启生效
-
设置hosts映射
windows
在C:\Windows\System32\drivers\etc\hosts 文件中指定
例:192.168.232.130 localhost01
linux
在/etc/hosts 文件中指定
例:192.168.200.1 ThinkPad-e14
主机名解析过程分析(Host、DNS)
-
hosts是什么
一个文本文件,用来记录 ip 和 hostname(主机名)的映射关系
-
DNS
DNS,就是domain name system的缩写,翻译:域名系统
是互联网上作为域名和ip地址相互映射的一个分布式数据库
在浏览器访问网站过程中DNS域名解析过程
a)首先会搜索浏览器自身的DNS缓存(缓存时间比较短,大概只有1分钟,且只能容纳1000条缓存)
b)如果浏览器自身的缓存里面没有找到,那么浏览器会搜索系统自身的DNS缓存
在cmd窗口中输入
ipconfig /displaydns //DNS域名解析缓存
ipconfig /flushdns //手动清理dns缓存
c)如果还没有找到,那么尝试从 hosts文件里面去找
d)在前面三个过程都没获取到的情况下,就递归地去域名服务器去查找,具体过程如下
linux进程管理
基本介绍:
- linux中每个执行的程序都称为一个进程。每一个进程都分配一个ID号(PID,进程号)
- 每个进程都可能以两种方式存在的。前台与后台
- 一般系统的服务都是以后台进程的方式存在的,而且都常驻在系统中,直到关机才会结束
显示系统执行的进程
指令:ps [选项],可以不加参数。
-a:显示当前终端的所有进程信息
-u:以用户格式显示进程信息
-x:显示后台进程运行的参数
- USER: 行程拥有者
- PID: pid
- %CPU: 占用的 CPU 使用率
- %MEM: 占用的记忆体使用率
- VSZ: 占用的虚拟记忆体大小
- RSS: 占用的记忆体大小
- TTY: 终端的次要装置号码 (minor device number of tty)
- STAT: 该行程的状态:
- D: 无法中断的休眠状态 (通常 IO 的进程)
- R: 正在执行中
- S: 睡眠
- s:表示该进程是会话的先导进程
- T: 被跟踪或者被停止
- Z: 僵死进程,不存在但暂时无法消除
- W: 没有足够的记忆体分页可分配
- <: 高优先序的行程
- N: 低优先序的行程
- L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
- START: 进程的启动时间
- TIME: 执行的时间。CPU时间,即进程使用CPU的总时间
- COMMAND:所执行的指令。启动进程所用的命令和参数,如果过长会被截断显示
以全格式显示当前所有进程
ps -ef
-e 显示所有进程
-f 全格式
可以带上管道符号 | ,grep筛选指定进程
UID:用户ID
PID:进程ID
PPID:父进程ID
终止进程kill和killall
kill [选项] 进程号 (功能描述:通过进程号杀死/终止进程)
-9 :表示强迫进程立即停止
killall 进程名称 (功能描述:通过进程名称杀死进程,支持通配符,在系统因负载过大而很慢时很有用)
查看进程树pstree
pstree [选项],可以更直观的来看进程信息
-p:显示进程的PID
-u:显示进程的所属用户
服务管理
服务(service)本质就是进程,但是运行在后台,通常都会监听某个端口,等待其他程序的请求(比如:mysqld、sshd、防火墙等),因此又称为守护进程
service管理指令
-
指令:service 服务名 [start|stop|restart|reload|status]
-
在centos7.0之后 很多服务不再使用service,而是systemctl
-
service 指令管理的服务在 /etc/init.d 查看
[root@localhost01 ~]# ls -l /etc/init.d/ 总用量 40 -rw-r--r--. 1 root root 18281 5月 22 2020 functions -rwxr-xr-x. 1 root root 4569 5月 22 2020 netconsole -rwxr-xr-x. 1 root root 7928 5月 22 2020 network -rw-r--r--. 1 root root 1160 1月 14 00:54 README
查看服务名
setup -> 系统服务 ,就可以看到全部服务。有*的是自启动的
服务的运行级别
linux有7种运行级别,常用的是3和5
级别 | 描述 |
---|---|
0 | 系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动,机器关闭 |
1 | 单用户工作状态,root权限,用于系统维护,禁止远程登陆,就像Windows下的安全模式登录 |
2 | 多用户状态,没有NFS支持,不支持网络 |
3 | 完整的多用户模式,有NFS,登陆后进入控制台命令行模式 |
4 | 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置 |
5 | X11控制台,登陆后进入图形GUI模式,X Window系统 |
6 | 系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动。运行init 6机器就会重启 |
centos7后运行级别说明
在/etc/initab,进行了简化
multi-user.target ; graphical.target
#To view current default target,run
systemctl get-default
#To set a default target,run --> 设置启动级别
systemctl set-default TARGET.target
chkconfig指令
通过chkconfig命令可以给服务的各个运行级别设置 启动/关闭
chkconfig指令的管理在 /etc/init.d 查看
基本语法:
-
chkconfig --list [|grep xxx]
-
chkconfig 服务名 --list
-
chkconfig --level 5 服务名 on/off
注意:使用chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效
systemctl指令
基本语法:systemctl [start|stop|restart|status] 服务名
systemctl指令管理的服务在/usr/lib/systemd/system 查看
systemctl设置服务的自启动状态:
- systemctl list-unit-files [| grep 服务名] (查看服务开机启动状态,grep可以进行过滤)
- systemctl enable 服务名 (设置服务开机启动)
- systemctl disable 服务名 (关闭服务开启启动)
- systemctl is-enabled 服务名 (查询某个服务是否是自启动的)
- 应用案例:
查看当前防火墙的状况,关闭防火墙和重启防火墙。(防火墙是 firewalld.service)
systemctl status firewalld; systemctl stop firewalld; systemctl start firewalld
- 细节讨论:
- 关闭或启用防火墙后,立即生效。 [telnet 测试 某个端口即可]
- 这种方式只是临时生效,当重启系统之后,还是回归到以前对某个服务的设置
- 如果希望设置某个服务自启动或关闭永久生效,要使用 systemctl [enable | disable] 服务名
firewall指令
在真正的生产环境下,往往需要将防火墙打开,但如果打开防火墙,那么外部请求数据就不能跟服务器监听端口通讯。这时就需要打开指定的端口
firewall指令
-
打开端口: firewall-cmd --permanent --add-port=端口号/协议
-
关闭端口: firewall-cmd --permanent --remove-port=端口号/协议
- 重新载入才能生效:firewall-cmd --reload
-
查询端口是否开放: firewall-cmd -query-port=端口/协议
top指令
top与ps指令相似。他们都用来显示正在执行的进程。top与ps最大不同,在于top在执行一段时间之后可以更新正在运行的进程。
基本语法:top [选项] 输入q退出
-d 秒数 :指定top指令每隔几秒更新,默认是3秒
-i:使top不显示任何闲置或僵死进程
-p:通过指定监控进程ID来仅仅监控某个进程的状态
前五行信息:
第一行:当前时间, 系统运行时间,连接用户,系统负载:1分钟,5分钟,15分钟
第二行:进程总数,正在运行数,睡眠的进程数,停止的,僵尸进程
第三行:用户空间占CPU百分比,内核占CPU百分比,用户进程空间内改变过优先级的进程占用CPU百分比,空闲CPU百分比,hi是硬件中断等待输入输出百分比,si是软件中断CPU百分比,st是分配给运行在其它虚拟机上的任务的实际 CPU 时间
第四行:物理内存总量,空闲内存,使用的内存,用作内核缓存的内存量
第五行:交换区总量,空闲交换区量,使用量,缓冲的交换区总量:内存中的内容被换出到交换区,而后又被换入到内存,但使用过的交换区尚未被覆盖, 该数值即为这些内容已存在于内存中的交换区的大小。相应的内存再次被换出时可不必再对交换区写入。
进程信息:
PID:进程id USER:用户 PR:优先级 NI:nice值 负值表示高优先级,正值低优先级 VIRT:进程使用虚拟内存总量(kb单位)VIRT=SWAP+RES ( SWAP:使用的虚拟内存,被换出大小 ) RES:进程使用,未被换出的大小 SHR:共享内存大小,单位kb S:进程状态(S:sleep R:running T:trace/stop Z:僵尸进程 D:不可中断的睡眠状态) %CPU:CPU利用率 %MEM:内存利用率 TIME+:进程运行时间总计 COMMAND:命令名/命令行
实时交互操作说明
操作 | 功能 |
---|---|
P | 以CPU使用率排序,默认就是此项 |
M | 以内存使用率排序 |
N | 以PID排序 |
q | 退出top |
netstat
监控系统网络情况netstat
基本语法:netstat [选项]
-an 按一定顺序排列输出
-p 显示哪个进程在调用
检测主机连接命令ping:
是一种网络连接检测工具,主要是用来检测远程主机是否正常,或是两部主机间的网线或网卡故障
rpm指令与yum指令
rpm包的管理
rpm是用于互联网下载包的打包及安装工具,它包含在某些linux分发版中。它生成具有.RPM扩展名的文件。是Red-Hat Package Manager(红帽软件包管理器)的缩写,类似于windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,Linux的分发版本都有采用,可以算是公认的行业标准了。
- rpm包的简单查询指令
- 查询已安装的rpm列表: rpm -qa | grep xx
- 查看当前系统是否安装了firefox : rpm -qa | grep firefox
- 查询已安装的rpm列表: rpm -qa | grep xx
- rpm包名基本格式
- 一个rpm包名:firefox-60.2.2-1.e17.centos.x86_64
- 名称:firefox
- 版本号:60.2.2-1
- 适用操作系统:e17.centos.x86_64(表示centos7.x的64位系统,如果是i686、i386表示32位系统,noarch表示通用)
- 一个rpm包名:firefox-60.2.2-1.e17.centos.x86_64
- rpm包的其他指令
- rpm -qa :查询安装的所有rpm软件包
- rpm -qa | more
- rpm -qa | grep X [rpm -qa |grep firefox]
- rpm -q 软件包名:查询软件包是否安装
- rpm -qi 软件包名:查询软件包信息
- rpm -ql 软件包名:查询软件包中的文件
- rpm -qf 文件全路径名 查询文件所属的软件包
- 卸载rpm包
- 基本语法:rpm -e RPM 包的名称
- 删除firefox 软件包 : rpm -e firefox
- 基本语法:rpm -e RPM 包的名称
- 细节讨论
- 如果其他软件包依赖于要卸载的软件包,卸载时会产生错误信息
- 如果我们要删除的就是foo这个rpm包,可以增加参数 --nodeps,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能会无法运行
- 安装rpm包
- 基本语法:rpm -ivh RPM 包全路径名称
- 参数说明:
- i = install 安装
- v = verbose 提示
- h = hash 进度条
- 应用实例
- 演示卸载和安装浏览器
- rpm -e firefox
- rpm -ivh firefox
- 演示卸载和安装浏览器
yum指令
yum是一个Shell前端软件包管理器,基于RPM包管理,能从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。
- yum基本指令
- 查询yum服务器是否有需要安装的软件
- yum list | grep xx 软件列表
- 查询yum服务器是否有需要安装的软件
- 安装指定的yum包
- yum install xxx
- yum应用实例
- 使用yum的方式来安装firefox
- rpm -e firefox
- yum list | grep firefox
- yum install firefox
- 使用yum的方式来安装firefox