Linux知识点
Linux基础篇
1.桥接模式:虚拟系统可以和外部系统相互通讯,但是容易造成ip冲突,只能使用与物理机同一个网段
2.nat模式:NAT模式与外界通话需要经过物理机(的NAT转换),不会多占一个局域网IP,可以与外部系统相互通讯,不会造成ip冲突,但是外部设备也无法访问虚拟设备
3.主机模式:不和外部通讯
4.Linux会把所有硬件映射成文件的形式存储在dev文件夹中
在Linux系统中,一切皆为文件
5.常用目录
/bin /usr/bin /usr/local/bin
是binary的缩写,存放着常用指令,比如ls,yum
/sbin /usr/sbin /usr/local/sbin
s是super,这里存放的是系统管理员使用的程序或命令
/home
存放普通用户的文件夹
/root
系统管理员root用户的主目录
/lib
系统开机所需要的动态共享库,类似Windows系统的dll文件,几乎所有应用程序都要使用这些共享库
/lost+found
这个目录一般是空的,当系统非法关机以后就会存放一些文件
/etc
所有系统管理需要的配置文件和子目录,比如安装MySQL数据库的my.conf
/usr
这是一个非常重要的目录,用户安装的程序默认安装在这里,就像windows目录下的program files目录
/boot(不能动)
Linux启动的核心目录,不要动,动了就启动不了
/proc(不能动)
是一个虚拟目录,是系统内存的映射,访问这个目录可以看到系统信息
/srv(不能动)
service的缩写,存放一些服务启动以后需要提取的数据
/sys(不能动)
存放的文件夹系统,sysfs
/tmp
临时文件的存放目录
/dev
类似windows的设备管理器,把所有硬件用文件的形式存储在这里
/media
Linux自动识别的设备,比如U盘,光驱,识别后Linux会把识别到的设备挂载到这个目录
/mnt
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录查看里边的内容
/opt
给主机额外安装软件所存放的目录,比如Oracle数据库,默认为空
/usr/local
软件安装完以后,存放的目录,以源码安装的方式安装的程序一般存放在这了
/var
不断扩充的的目录,习惯将经常被修改的目录放在这个目录,包括日志文件
/selinux
类似Linux的杀毒软件
6.vim的用法
7.关机开机以及登录注销指令
shutdown -h now | 立刻进行关机 |
shutdown | 1分钟后会关机(等同下面) |
shutdown -h 1 | 1分钟后会关机 |
shutdown -r now | 现在重新启动计算机 |
halt | 关机,作用和上面一样 |
reboot | 现在重新启动计算机 |
sync | 将内存数据同步到磁盘 |
在执行关机之前一定要先运行一次sync,防止翻车
注销账号:logout,在图形界面下无法使用logout
8.用户操作
通过useradd命令来创建用户,会在/home文件夹下生成一个同名的家目录
useradd -d 可以指定目录
user -d /home/test king
在/home 文件夹下创建一个test目录,test目录属于用户king
passwd 用户名
一定要加用户名,否则是给当前登录的账户设置密码
userdel 用户名
代表删除某个用户,但是并不删除他的家目录
userdel -r 用户名
代表删除某个用户的同时,删除用户的家目录
一定要谨慎
报错**userdel: user xxx is currently used by process xxx**
代表该用户占用了进程,需要先su到目标账户,输入exit退出用户后,再删除
从账号权限高的用户切换到用户权限低的用户不需要输入密码,反之则需要输入密码
退出到原来账号可以用exit/logout命令
查看目前使用的用户可以使用who am i命令
9.用户组
类似于角色,系统可以对有共性(相同的权限)的多个用户进行统一管理
groupadd 组名
用groupadd命令来添加组别
groupdel 组名
用groupdel命令来删除组
useradd -g 组名 用户名
未指定组名会自动创建一个与用户名相同的组名
usermod -g 组名 用户名
usermod 命令可以将某个用户切换到别的组中
10.用户和组相关文件
etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令(X或空白,加密的):用户标识号(uid):组标识号(gid):注释行描述:主目录(用户家目录):登录shell
etc/shadow文件
口令的配置文件
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件
组group的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
passwd 用户名
给某个用户指定密码
11.常用命令
运行级别
0 关机
1单用户(用于找回密码)
2多用户状态没有网络服务(一般不用)
3多用户状态有网络服务(用的最多,不带图形界面)
4系统未使用保留给用户(不用)
5图形界面
6系统重启
常用运行级别3和5
可以用init命令来切换运行级别
systemctl get-default利用查看当前运行级别
利用systemctl set-default切换默认运行级别
12.帮助命令
man获取帮助信息
基本语法:man [命令或配置文件] (功能:获取帮助信息)
例如man ls
linux隐藏文件以 . 开头,如果文件起名为 . 开头会变成隐藏文件
选项可以组合使用,如 ls -la
help获得shell命令的帮助信息
基本用法:help 命令,如help cd
13.文件指令
pwd指令
基本语法:pwd (显示当前工作文件夹的绝对路径)
ls指令
基本语法:ls [选项] [目录或是文件]
常用选项
-a 显示当前目录所有文件和目录。包括隐藏文件
-i 以列表的形式显示信息
-h 将单位转化为适合人看的
cd指令
基本语法:cd [参数] (功能描述:切换到指定目录)
cd~ 或者cd 回到自己的家目录
cd.. 回到当前目录的上一级目录
mkdir指令
mkdir用于创建目录
基本语法:mkdir[选项]要创建的目录
常用选项
-p创建多级目录
例如:mkdir -p /home/cat/tiger
rmdir指令
rmdir指令删除空目录
基本语法:
rmdir [选项] 要删除的空目录
使用细节:
rmdir删除的是空目录,如果目录下有内容时无法删除
如果要删除非空目录需要使用rm -rf(小心谨慎,慎用)
touch指令
touch指创建一个空文件
基本语法:
touch 文件名称
cp指令
cp指令拷贝文件到指定目录
基本语法
cp [选项] 文件名 要拷贝的位置
常用选项
-r:递归复制整个文件夹
实例:
cp hello.txt bbb/
cp -r bbb/ /opt/
使用细节:
强制覆盖不提示的方法:\cp
\cp -r bbb/ /opt/
rm指令
移除文件或目录
基本语法
rm [选项] 要删除的文件或目录
常用选项
-r :递归删除整个文件夹
-f :强制删除不提示
rm hello.txt
rm -rf ddd
mv指令
mv指令移动文件与目录或重命名
基本语法
mv 旧名字 新名字
mv /旧目录/ /新目录/
mv /home/hello1.txt /home/ddd (移动文件)
mv hello.txt hello1.txt(重命名)
cat指令
cat查看文件内容,但是无法修改
基本语法:
cat [选项] 要查看的文件
常用选项:
-n:显示行号
使用细节
cat只能浏览文件,不能修改文件,为了浏览方便一般带上管道命令|more(把前面得到的结果,交给下一个命令进行处理)
cat -n/etc/profile | 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输入内容到控制台
基本语法
echo [选项] [输出内容]
实例:
使用echo指令输出环境变量,比如输出$PATH
echo $PATH
使用echo输出hello,world
echo hello,world
head指令
head用于显示文件开头部分的内容,默认情况下head指令显示文件的前十行内容
基本语法
head 文件名 (查看某个文件的前十行内容)
head -n 5 文件名 (查看某个文件的前五行内容)
tail指令
tail用于显示文件尾部内容,默认情况下tail显示文件后十行
基本语法
tail 文件名 (查看文件后十行内容)
tail -n 5 文件名 (查看文件后五行内容)
tail -f 文件 (实时追踪该文档的所有更新)
实例
实时监控mydate.txt,看看文件有变化时,是否能看到,实时追加日期
>指令和>>指令
>为输出重定向(echo hello输出到终端,用>重定向后可输入到文件中,如txt,log文件,>为覆盖)
>>为追加(为追加)
基本语法
ls -l > 文件名 (列表的内容覆盖进文件里)
ls -la >> 文件名(列表的内容追加进文件的末尾)
cat 文件1>文件2 (将文件1的内容覆盖到文件2)
echo"内容">>文件 (echo打印的内容追加进文件末尾)
ln指令
软连接,也叫符号链接,类似windows里的快捷方式,主要存放了链接其他文件的路径
基本语法
ln -s [原文件或目录] [软链接名] (给原文件创建一个软连接)
在home文件夹下创建一个root的软连接
ln -s /root /home/myroot
删除软连接
rm /home/myroot
在软连接目录中使用pwd,看到的是myroot的路径,不是root的
history指令
查看曾经执行过的命令,也可以执行历史命令
基本语法
history(查看已执行过历史命令)
查看最近10个命令
history 10
执行编号5的指令
!5
14.时间日期类指令
date指令-显示当前日期
基本语法
date (显示当前时间)
date+%y(显示当前年份)
date+%m (显示当前月份)
date+%d (显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S" (显示年月日时分秒)
date指令-设置日期
基本语法
date -s 字符串时间
实例
设置系统时间,比如2021-11-11 11:22:22
date -s "2021-11-11 11:22:22"
cal指令-查看日历的指令
基本语法
cal [选项] (不加选项,显示本月日历)
实例
显示2020年日历
cal 2020
14.查找指令
find指令
find指令将从指定目录向下递归的遍历各个子目录,将满足条件的文件或目录显示在终端
基本语法
find [搜索范围] [选项]
选项说明
选项 | 功能 |
name<查询方式> | 按照指定的文件名查找模式查找文件 |
user<用户名> | 查找属于指定用户的所有文件 |
size<文件大小> | 按照指定文件大小查找文件 |
查找/home目录下的hello.txt文件
find /home -name hello.txt
查找/opt目录下的,用户名为root的文件
find /opt -user root
查找整个Linux下大于200mb的文件(+n 大于 -n小于 n等于)(单位 K M G)
find / -size +200M
locate指令
locate指令可以快速定位文件路径,locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。locate指令无需遍历整个文件系统,查询速度快,为了保证查询结果准确度,管理员必须定期更新locate时刻
特别说明
由于locate指令基于数据库进行查询,所以第一次运行之前,必须使用updatedb创建locate数据库
基本语法
locate 文件名
实例
用locate查询hello.txt
updatedb
locate hello.txt
which指令
可以查看某个指令在哪个目录下
比如ls
which ls
grep指令和管道符号 |
grep过滤查找,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
基本语法
grep [选项]查找内容 源文件
常用选项
-n 显示匹配行及行号
-i 忽略字母大小写
实例
在hello.txt文件中,查找yes所在行,显示行号
cat /home/hello.txt | grep "yes"
grep -n "柳" /opt/杂文.txt |more
15.压缩和解压类
gzip/gunzip指令
gzip用于压缩文件,gunzip用于解压文件
实例
gzip压缩bbb文件夹下hello.txt文件
gzip /home/bbb/hello.txt /home/bbb/hello2.txt
解压hello2文件
gunzip hello2.txt.gz
zip/unzip指令
zip用于压缩目录,unzip用于解压目录,在项目打包发布时很有用
基本语法
zip [选项] 目录名.zip 压缩文件和目录的命令
unzip [选项] 目录名.zip 解压缩文件
zip常用选项
-r 递归压缩
unzip常用选项
-d<目录>:指定解压后文件存放目录
实例
将ddd下所有文件压缩成ddd.zip
zip -r ddd.zip /home/ddd/ (将ddd目录和他包含的子文件夹都压缩)
将ddd.zip解压到/opt/tmp文件夹中
unzip -d /opt/tmp /home/ddd.zip
tar指令
tar指令是打包指令,最后打包的文件是tar.gz文件
基本语法
tar [选项] XXX.tar.gz 打包的内容 (打包目录,格式为XXX.tar.gz )
选项说明
-c 产生.tar打包文件
-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 pc.tar.gz /home/
将pc.tar.gz解压到当前目录,(先切换到opt)
tar -zxvf pc.tar.gz
将pc.tar.gz解压到opt/tmp文件夹
tar -zxvf /home/pc.tar.gz -C /opt/tmp/
15.Linux组
在Linux中每个用户必须属于一个组,不能独立于组外,在Linux中每个文件有所有者,所在组,其他组的概念。
1.所有者
一般文件的创建者,谁创建了文件,谁就是文件的所有者
查看文件所有者
ls -ahl
修改文件所有者
chown 用户名 文件名
将apple.txt的所有者改为baize
chown baize apple.txt
2.组的创建
基本指令
groupadd 组名
应用实例
创建一个组monster
groupadd monster
创建一个用户fox,把他放在monster中
useradd -g monster fox
3,文件/目录所在组
当某个用户创建了一个文件后,这个文件的所在组就是该用户的所在组
查看文件/目录所在组
ls -ll
用fox创建一个文件,看看该文件的所在组
-rw-r--r--. 1 fox monster 0 7月 16 16:55 1.txt
修改文件的所在组
基本指令
chgrp 组名 文件名
实例
用root创建一个文件,看看文件的所在组,再将文件修改到组fruit
-rw-r--r--. 1 root root 0 7月 16 16:58 orange.txt
chgrp fruit orange.txt
4.其他组
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其他组
改变用户所在组
在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限也可以改变某个用户的所在组
改变用户所有组
usermod -g 组名 用户名
usermod -d 目录名 用户名 改变该用户的初始目录 特别说明:用户需要有进入新目录的权限
实例
将zwj从原来的组改到wudang组
cat /etc/group //看目前系统拥有的所有组
cat /etc/group |grep wudang //可以用grep过滤只查看wudang
usermod -g wudang zwj
16.linux权限
ls -l中显示的内容如下
-rwxrw-r-- 1 root root 1213 feb 2 16:40 apple.txt
0123456789
1.第0位确定文件类型(d,-,l,c,b)
l是链接,相当于windows的快捷方式
d是目录,相当于Windows的文件夹
c是字符设备文件,如鼠标键盘
b是块设备,比如硬盘
2.第1-3位确定所有者(该文件的所有者)拥有的文件权限--user
3.第4-6位确定所有者所属组拥有该文件的权限--group
4.第7-9位确定其他用户拥有该文件的权限==other
rwx作用到文件
r表示可以读取(read),查看
w表示可写(write)可以修改,但是不代表可以删除该文件,删除一个文件的前提是对该文件所在目录有读写权限,才能删除该文件
x表示可以被执行(execute)
rwx作用到目录
r表示可以读取(read),可以读取。ls查看文件内容
w表示可写(write)可以修改,对目录内创建+删除+重命名目录
x表示可以被执行(execute),可以进入该目录
ls -l中显示的内容如下:
-rwxrw-r-- 1 root root 1213 feb 2 16:40 apple.txt
1.第0位确定文件类型(d,-,l,c,b)
2.其余字符每3个一组(rwx)读(r)写(w)执行(x)
3.
第一组rwx:文件拥有者的权限是读,写和执行
第二组rw-:与文件拥有者同一组的用户的权限是读写,但是不能执行
第三组r--:不与文件拥有者同组的其他用户的权限是读不能写和执行
4.可用数字表示为:r=4,w=2,x=1.所以rwx=4+2+1=7
其他说明
1 文件:硬连接数(如果是文件就1) 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示4096字节
feb 2 16:40 最后修改时间
apple.txt 文件名
权限修改
基本说明:
通过chmod指令,可以修改文件或者目录的权限
第一种方式:+ - =变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u,g,o的总和)
1.chmod u=rwx g=rx o=x 文件/目录名
2.chmod o+w 文件/目录名
3.chmod a-x 文件/目录名
实例
给文件赋予所有者读写执行权限,给文件赋予所在组读写执行权限,给文件赋予其他组读写执行权限
chmod u=rwx,g=rwx,o=rwx apple.txt
给文件所有者除去执行权限
chmod u-x apple.txt
给文件所有者加上执行权限
chmod u+x apple.txt
通过数字变更权限
r=4 w=2 x=1 rwx=7
chmod u=rwx g=rx o=x 文件/目录名相当于chmod 751 文件名/目录名
实例
将文件权限改为rwxr-xr-x
chmod 755 apple.txt
修改文件所有者
chown 新拥有者 文件/目录 改变所有者
chown 新拥有者:新所在组 文件/目录改变所有者和所在组
-R递归改变子文件夹和目录
实例
请将abc.txt所有者改为baize
chown baize abc.txt
将bbb下所有文件和目录都改为zwj wudang
chown -R zwj:wudang /home/bbb
修改文件所在组
chgrp 新的组 文件/目录 改变所在组
请将abc文件所在组改为shaolin
chgrp shaolin abc.txt
请将bbb文件夹下所有文件都改为shaolin
chgrp -R shaolin bbb
对目录rwx的讨论
x:表示可以进入到该目录,比如cd
r:表示可以ls,将目录的内容显示
w:表示可以在该目录下,删除或创建文件
17.crond任务调度
crontab进行定时任务的设置
概述
任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:
系统工作:如有些重要工作必须周而复始地执行
个别用户工作:个别用户可能希望执行某些程序,如对mysql数据库的备份
基本语法:
crontab[选项]
常用选项
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务
4.快速入门
设置一个任务调度文件:/etc/crontab
设置个人任务调度。执行:crontab -e 命令
接着输入任务到调度文件: */ 1 * * * * ls-l /etc /> /tmp/to.txt.命令
该命令意为:每小时的每分钟执行ls -l /etc/>/tmp/to.txt命令
注意上诉快速入门中的*/1表示每分钟执行一次
第一个“*” 一个小时当中的第几分钟 0~59,
第二个“*” 一天当中的第几小时 0~23,为*代表每小时的每分钟都执行
第三个“*” 一个月当中的第几天 1~31,
第四个“*” 一年当中的第几月 1~12,
第五个“*” 一周当中的星期几 0~7(0和7都代表星期日)
特殊符号说明
* 代表任何时间。比如第一个“*”代表一小时中每分钟都执行一次的意思
, 代表不连续时间。比如“0,8,12,16* * *命令”,代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令” ,代表每个十分钟就执行一次命令
45 22 * * * 在22点45分执行命令
0 17 * * 1 每周一的17点0分执行命令
0 5 1,15 * * 每月1号和15号的早上五点执行命令
40 4 * * 1-5 每周一到周五早上四点四十分执行命令
*/10 4 * * * 每天早上四点,每隔十分钟hi i选哪个一次命令
0 0 1,15 * 1 每月1号和15号,每周一的凌晨0点0分都会执行命令
案例
每隔一分钟,就将当前的日期信息,追加到/tmp/mydate文件中
*/1 * * * * date >>/tmp/mydate
每隔一分钟,就将当前日期和日历都追加到/home/mycal文件中
vim mysh.sh(创建一个shell脚本)
date >> /home/mycal.txt
cal >> /home/mycal.txt
(在shell脚本中写入如上内容)
chmod 777 mysh.sh
(添加执行权限)
crontab -e(打开定时任务编辑器)
*/1 * * * * /home/mysh.sh
(定时每分钟执行一次脚本)
18.at定时任务
at命令是一次性定时计划任务,原理是at的守护进程atd以后台模式运行,检查作业队列来运行。默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业
at命令是一次性定时计划任务,执行完一个任务后不再执行此任务
使用at命令,一定要保证atd进程的启动,可以使用相关指令来查看
ps -ef | grep atd 指令:该指令可以查看atd进程是否启动
ps -ef检测当前所有运行进程
at命令格式
at[选项] [时间]
ctrl+D 结束at命令的输入
选项
-m 当指定的任务被完成后,将给用户发送邮件,即使没有标准输出
-I atq的别名
-d atrm的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q<队列> 使用指定的队列
-f<文件> 从指定文件读入任务
-t<时间参数> 以时间参数的形式提交到运行的任务
at[选项][时间]:选项参照上面的表格,时间的定义有如下的定义:
1.接受当前的hh:mm(小时:分钟)式的时间指定。假如当前时间过去,会在第二天执行
2.使用midnight(深夜),noon(中午),teatime(饮茶时间,一般下午4点)等比较模糊的时间指定
3.采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。
4.指定命令执行的具体时间,指定格式为 month day (月日)或 mm / dd / yy (月/日/年)或 dd.mm.yy(日月年),指定的日期必须跟在指定时间的后面。例如:04:00 2021-01-01
5.使用相对计时法。指定格式为: now + count time-units , now 就是当前时间, time-units 是时间单位,这里能够是 minutes (分钟)、 hours (小时)、 days (天)、 weeks (星期)。 count 是时间的数量,几天,几小时。例如: now +5 minutes
6.直接使用 today (今天)、 tomorrow (明天)来指定完成命令的时间。
案例
案例一:2天后的下午5点执行/bin/ls /home
at 5pm+2 days
/bin/ls /home
案例二:atq命令查看系统中没有执行的工作任务
atq
案例三:明天17点钟,输出时间到指定文件内 比如 /root/date100.log
at 5pm tomorrow
at> date >> /root/date100.log
案例四:2分钟后,输出时间到指定文件内 比如/root/date200.log
at now + 2minutes
at> date >> /root/date100.log
案例五:删除已经设置的任务,atrm编号
atrm 1
案例六:执行一个shell脚本
at now + 2 minutes
at > my.sh
19.新建磁盘步骤
1. 原理介绍
Linux不论有几个分区,分给哪一个目录使用,它归根到底只有一个根目录,一个独立且唯一的文件结构,Linux中每个分区都是用来组成整个文件系统的一部分
Liunx采用一种“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得
2.硬盘说明
Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
IDE硬盘,驱动器标识符为“hdx ~ ”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘。“X”为盘号(a为基本盘,b为基础从属盘,c为辅助主盘,d为辅助从属盘)。“~ ”代表分区,前面四个分区用数字1到4标识,它们是主分区或拓展分区,从5开始就是逻辑分区。(不常用)
SCSI硬盘,驱动器标识符为“sdx~ ”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘表示方法一样
3.查看所有设备挂载情况
指令:lsblk 或 lsblk -f
4.分区挂载步骤
(1)新建硬盘并重启
(2)分区
分区命令 fdisk /dev/sdb
开始对/sdb分区
m 显示命令列表
p 显示磁盘分区 同 fdisk -l
n 新增分区
d 删除分区
w 写入并退出
(3)格式化代码
没有格式化是不能使用的,格式化之后会默认分配一个UUID
格式化命令:mkfs -t ext4 /dev/sdb1
其中ext4是分区类型
(4)挂载
就是将一个分区和一个目录联系起来
挂载指令:mount 设备名称 挂载目录
但是前提,我们得先创建一个目录
此时查看挂载点
注意
如果想要卸载挂载点,不想要进行挂载可以使用如下指令
unmount /newdisk
unmount /dev/sdb1
用命令行挂载,重启后会失效
(5)永久挂载
通过修改/etc/fstab实现挂载
添加完成后 执行mount -a 即刻生效
20.磁盘管理
1.磁盘情况查询
df -h
2.查询指定目录的占用情况
du -h /目录:查询指定目录的磁盘占用情况,默认为当前目录
du -s :指定目录占用大小汇总
du -h:带计量单位
du -a:把文件显示出来
du -max-depth = 1 :子目录的深度
du - c :列出明细的同时,增加汇总值
注意可以连起来用
3.工作常用命令
统计opt文件夹下的文件个数
ls -l /opt |grep "^-" | wc -l
ls opt目录|正则表达式过滤文件|统计数据
统计opt文件夹下的目录个数
ls -l /opt |grep "^d" | wc -l
ls opt目录|正则表达式过滤目录|统计数据
统计opt文件夹下的文件个数,包括子目录
ls -lR /opt |grep "^-" | wc -l
ls opt目录,R代表递归显示
统计opt文件夹下的目录个数,包括子目录
ls -lR /opt |grep "^d" | wc -l
以树状图显示目录结构
yum install tree安装
tree /opt
21.进程管理
Linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号)
每个进程都可以以两种方式存在。前台与后台。
前台进程就是用户目前的屏幕上可以进行操作的
后台进程则是实际在操作,但由于屏幕上无法看到进程,通常在后台方式执行
一般系统的服务器都是以后台进程的方式存在,而且都会常驻在系统中。直到关机结束。
ps命令
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数
常见命令
ps-a:显示当前终端的所有进程信息
ps-u:以用户的格式显示进程信息
ps-x:显示后台进程运行参数
USER——PID——%CPU——%MEM——VSZ——RSS——TTY——STAT——START——TIME——COMMAND
user 使用者
pid 进程号
%CPU cpu占用
%MEM 物理内存占用百分比
VSZ 虚拟内存占用情况
RSS 物理内存占用情况
TTY 终端机号
STAT S-睡眠。s-表示进程是会话先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或被停止
START 进程执行的开始时间
TIME 此进程所消耗CPU时间
COMMAND 正在执行的命令或进程名
通过ps -aux |grep XXXX指令来查看某一个进程的执行情况
父子进程
ps -ef:以全格式显示当前所有的进程
e 显示所有进程
f 全格式
ps-ef|grep XXX显示某一个进程
UID——PID——PPID——C——STIME——TTY——TIME——CMD
UID:用户进程
PPID:父进程PID
C:CPU用于计算执行优先级的因子,数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高
STIME:进程启动时间
TTY:完整的终端名称
TIME:CPU时间
CMD:启动进程所用的命令和参数
终止进程
若某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务
基本语法
kill [选项] 进程号(通过进程号杀死进程)
killall 进程名称(通过进程名杀死进程,也支持通配符,这里系统因负载过大而变得很慢时有用)
如果使用killall,那么所有子进程也会被杀死
常用选项
-9 :表示强制进程必须立即结束
案例
结束一个远程登陆用户
ps -aux | grep sshd
root 1028 0.0 0.2 112900 4344 ? Ss 09:26 0:00 /usr/sbin/sshd -D
root 2546 5.3 0.3 161304 6168 ? Ss 11:06 0:00 sshd: root@pts/2,pts/3
root 2761 0.0 0.0 112828 968 pts/0 S+ 11:07 0:00 grep --color=auto sshd
root 119325 0.7 0.3 161424 6236 ? Ss 10:58 0:03 sshd: root@pts/0,pts/1
kill 2546
结束sshd,在适当的时候重启
ps -aux | grep sshd
root 1028 0.0 0.2 112900 4344 ? Ss 09:26 0:00 /usr/sbin/sshd -D
kill 1028
(结束sshd)
systemctl start sshd.service
(启动sshd)
通过进程的名称关闭所有进程
killall gedit(gedit是文本编辑器)
强制杀掉一个终端
ps -aux |grep bash
root 28543 0.0 0.1 116972 3372 pts/2 Ss+ 11:25 0:00 bash
kill -9 28543
查看进程树
1. 基本语法
pstree [选项]:可以更加直观的查看进程信息
2.常用选项
选项 说明
-p 显示进程PID
-u 显示进程的所属用户
案例
以树状形式显示进程的pid
pstree -p
以树状的形式进程的用户id
pstree -u
22.服务管理
1. 概述
服务本质就是进程,但因为运行在后台,通常都会监听某个端口,等待其他程序的请求,比如(mysqld,sshd,防火墙等)。因此又称为守护进程
service管理指令
service服务名[ start | stop | restart | reload | status ]
在centos7.0之后,很多服务不再使用service。而是使用 systemctl
仍被service指令管理的服务在 /etc/init.d 查看
演示使用service指令,查看,关闭,启动network服务
1.service network stop
2.service network status
3.service network start
查看服务名
方式一:使用 setup ,系统服务就可以查看到全部
带有 * 的服务,Linux启动时自行启动
将光标移动到* 号前,输入空格即可取消自动启动的服务
方式二:/etc/init.d 看到service指令管理的服务
服务运行级别(常用的是3和5)
0 系统停机状态,系统默认运行级别不能设置为0,否则不能正常启动(几乎不用)
1 单用户工作状态,root权限,用于系统维护,禁止远程登陆(几乎不用)
2 多用户状态(没有NFS),不支持网络(很少使用)
3 完全的多用户状态(有NFS),无界面,登陆后进入控制台命令行模式
4 系统未使用,保留
5 X11控制台,登陆后进入图形GUI模式
6 系统正常关闭并重启,默认运行级别不能为6否则不能正常启动
开机流程
开机->bios->/boot->systemctl进程1->运行级别->运行级别对应的服务
查看当前运行级别
systemctl get-default
multi-user.target为运行级别3
graphical.target为运行级别5
systemctl set-default multi-user.target 设置级别3
systemctl set-default graphical.target 设置级别5
chkconfig指令
通过chkconfig命令对该指令可以给服务的各个运行级别设置自启动/关闭
chkconfig 指令管理的服务在 /etc/init.d查看
注意Centos7之后,很多服务使用systemctl管理
chkcofig基本语法
查看服务chkconfig --list | grep xxx(查看某一服务)
chkconfig --list(查看全部服务)
chkconfig --level 5 服务名 on/off(某一服务在某一运行级别的状态自动开启或关闭)
案例:对network服务进行操作,把network在运行级别3关闭自启动
chkconfig --level 3 network off
使用细节:chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效
systemctl指令
基本语法:
systemctl[start|stop|restart|status]服务名
systemctl指令管理的服务在 /usr/lib/systemd/system 查看
systemctl设置服务自启动状态
systemctl list-unit-files | grep XXX查看服务开机启动状态,grep可以进行过滤
systemctl enable xxx:设置服务开机启动
systemctl disable xxx:关闭服务开机启动
systemctl is-enabled xxx:查询某个服务是否是自启动的
案例:
查询当前防火墙状态,关闭和重启防火墙
systemctl status firewalld(查询防火墙运行状态)
systemctl stop firewalld(关闭防火墙)
systemctl start firewalld(开启防火墙)
讨论:
关闭或启用防火墙,立即生效
这种方式知识临时生效,当重启系统后,还是回归以前对服务的设置,即使用指令关闭一个服务,如果它是自启动,仍会启动
如果希望设置某个服务自启动或关闭永久生效,要使用systemctl [enable|disable] 服务名
firewall指令
概述
在真正的生产环境中,往往需要将防火墙打开,如果我们打开防火墙,外部请求数据包就不能跟服务器监听端口通讯,这时,需要打开指定的端口。
打开端口:firewall-cmd --permanent --add-port=端口号/协议
关闭端口:firewall-cmd --permanent --remove-port=端口号/协议
重新载入,才能生效:firewall-cmd --reload
查询端口是否开放:firewall-cmd --query-port=端口/协议
打开或关闭端口后,必须重新载入才能生效
启动防火墙,测试111端口是否能telnet,不行,开放端口
firewall-cmd --permanent --add-port=111/tcp(先开放111端口)
firewall-cmd --reload(重新载入)
再次关闭111端口
firewall-cmd --permanent --remove-port=111/tcp(关闭111端口)
firewall-cmd --reload(重新载入)
firewall-cmd --query-port=111/tcp(查询111端口情况)
23.动态监控进程
top指令
概述
top指令与ps指令相似。均用来显示正在执行的进程。Top与ps指令最大的不同之处在于top执行一段时间可以更新正在执行的进程
基本语法
top [选项]
选项说明
-d秒数 指定top命令每隔几秒更新。默认是3秒,例如 投top -d 5
i 使top不显示任何闲置或者僵死进程
p 通过指定监控进程ID来仅仅监控某个进程的状态
交互操作说明
P 以CPU使用率排序,默认就是此项
M 以内存的使用率排序
N 以PID排序
q 退出top
实例
监控特定用户,比如监控baize
首先top -d 5
然后按‘u’后输入baize
终止进程,比如结束jack登录
首先top -d 5
然后按'u'后输入jack
接着按‘k’
输入进程号54191结束进程
指定系统更新状态的时间(每隔十秒)
top -d 10
24.监控网络状态
基本语法
netstat [选项]
选项说明
-an 按一定顺序排列输出
-p 显示那个进程在调用
案例
查看服务名为sshd的服务信息
netstat -anp | grep sshd
25.红帽包管理
rpm用于互联网下载包的打包以及安装工具,它包含在某些Linux分发版中。它生成具有.RPM拓展名的文件。RPM是Red Package Manager(RedHat软件包管理工具)的缩写。类似于window的setup.exe
rpm的简单查询指令
查询已安装的rpm列表 :rpm -qa|grep xx
例如:查询系统是否安装火狐浏览器
rpm -qa|grep firefox
查询返回的结果为一个rpm包名:firefox-78.6.0-1.el7.centos.x86_64
名称:firefox
版本号:78.6.0-1
适用操作系统:el7.centos.x86_64(表示centos 7.x的64位操作系统)
如果是i686、i386表示32位操作系统,noarch表示通用
rpm -qa:查询所安装的所有rpm的软件包
rpm -qa | more:结合more指令分页查询
rpm -qa | grep X:管道过滤,查询是否有X的软件包
rpm - q | 软件包名:查询软件包是否安装
案例(rpm -qa|grep firefox)
rpm -qi 软件包名:查询软件包信息
案例(rpm -qi firefox)
rpm -ql 软件包名:查询软件包中的文件
案例(rpm -ql firefox)
rpm -qf 文件全路径名:查询文件所属的软件包
rpm -qf /etc/passwd
rpm -qf /root/install.log
卸载rpm包
rpm -e XXX
使用细节
如果其他软件包依赖于想要卸载的软件包,卸载时则会产生错误信息
如 rpm -e foo
提示removing these packages would break dependencies:foo is needed by bar-1.0-1
代表有其他软件依赖这个软件包,非常不建议删除
如果想要强制删除 则使用指令:rpm -e --nodeps 软件名
安装rpm包
rpm -ivh RPM包全路径名称
i:install 安装
v:verbose 提示
h:hash 进度条
案例
删除火狐
rpm -e firefox
安装火狐
rpm -ivh /opt/firefox
yum指令
yum是一个shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包
查询yum服务器是否有需要安装的软件
yum list|grep xx 软件列表
安装指定的yum包
yum install xxx 下载安装