虚拟机基础
虚拟机克隆
使用虚拟机克隆,可以直接使用VM自带的克隆功能,但是要注意得关闭你要克隆的Linux系统。
虚拟机快照
如果你在使用虚拟机系统的时候,你想回到原先的一个状态,也就是说你担心可能有些误操作造成系统异常,需要回到原先某个正常运行的状态,VM也提供了这样的功能,叫做快照管理
- 先做一个快照A
- 就进入系统创建一个文件夹后再保存一个快照B
- 然后回到快照A即可
点快照A初始状态后进入初始状态
虚拟机的迁徙和删除
虚拟机系统本质上是在文件夹当中的,因此进行虚拟机的迁移只需要将这个安装好后的虚拟机系统整个文件夹整体拷贝或者剪切到另外的位置使用就可以。删除也很简单,使用VM进行移除,点击菜单进行磁盘删除即可,或者直接手动删除他所在的文件夹即可。
Xshell 7 与 Xftp 7
下载后这两个软件之后,就可以连接到Linux虚拟机上,输入Linux虚拟机的ip地址,端口号22。
连接后,Xshell可以远程登录Linux,并进行操作
Xftp可以进行文件的传输,连接Linux后,可以将Windows系统的文件和Linux的文件进行快捷操作。
基本操作命令
正常模式
使用VIM打开一个档案,就进入了一般模式,可以使用上下左右按键来移动光标,可以删除字符,复制粘贴来处理文件数据
编辑插入模式
按下i,I,o,O,a,A,r,R等任何一个字符就会会进入编辑模式
命令行模式
在当前模式下,可以提供你相关指令,完成读取,存盘,替换,离开vim,显示行号当前达成。
:wq 保存退出
:q 退出
:q!强制退出不保存
复制删除指令
复制指令:yyp 若是想要复制多行,比如复制五行,就输入5yyp。
删除指令:dd,若是想删除向下的几行,就输入5dd……
查找字符指令
命令行输/,回车查找,输入n就是查找下一个
设置文件的行号,取消文件行号
命令行下输入:set nu 设置文件行号
输入 set nonu 取消文件分号
快速定位行号
在一般模式下,若是想要移动到第二十行,就输入20,再输入shift+g即可
关机&重启命令
shutdown -h now 立刻进行关机
shutdown -h 1 1分钟后关机
shutdown -r now 重新启动虚拟机
halt 关机
reboot 重启计算机
sync 把内存的数据同步到磁盘当中
用户登录和注销
在提示符喜爱输入logout就可以注销用户
su tom 就会切换到tom用户当中,要想进入root当中,输入密码即可。
用户管理
用户添加
基本用法
useradd 用户名
案例
添加用户 milan ,默认该用户的家目录在/home/milan
设置密码
给刚刚创建的milan创建password
passwd milan,然后输入即可
删除用户
基本语法
userdel 用户名
若是删除用户后保留他的家目录以milan举例 userdel milan
若是和他的家目录一起删除掉 userdel -r milan
查询用户信息
基本语法
id 用户名
切换用户
基本语法
su 用户名
用户组
类似于角色,系统可以对用共性(权限)的多个用户进行统一管理
新增组
groupadd 组名
删除组
groupdel 组名
添加用户的时候直接加上组
useradd -g 用户组 用户名
用户组相关文件
etc/passwd
用户的配置文件,用于记录用户的各种信息。
etc/shadow
口令的配置文件。
etc/group
组的配置文件,记录Linux包含的组的信息。
实用指令
指定运行级别
0:关机
1:单用户(找回丢失密码)
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
init 数字来切换运行级别
帮助指令
man获得帮助信息
基本语法:man【命令或配置文件】(功能描述:获得帮助信息)
输入man ls可以看ls命令的帮助信息。
help指令
基本语法:help命令(获得shell内置命令的帮助信息)ls
文件目录类指令
pwd指令
显示当前工作目录的绝对路径
ls指令
ls -a 【目录或是文件】:显示当前目录所有的文件和目录,包括隐藏的
ls -l 【目录或是文件】:以列表的方式显示信息
cd指令
cd 【参数】 切换到指定目录
cd ~ 是回到自己的家目录
cd … 是回到当前目录的上一级目录
mkdir指令
用于创建目录
基本语法:mkdir 【选项】要创建的目录
不写-p的话就是创建一级目录
-p 创建多级目录
rmdir指令
rmdir 【选项】 要删除的空目录
如果要删除非空目录,要使用 rm -f 【要删除的目录】,目录有内容的情况下使用rmdir是无法删除的
cp指令
cp指令拷贝文件到指定目录
cp 【选项】 source dest 从source 当中拷贝到 dest当中去
常用选项: -r 指递归的复制整个文件夹
在复制的时候会出现覆盖的情况,要想强制覆盖就输入 \cp 。。。。即可
rm指令
rm指令是移除指令或目录
rm【选项】 要删除的文件或目录
-r 递归删除整个文件夹
-f 强制删除不提示
mv指令
mv移动文件与目录或重命名
如果俩文件在一个目录当中,就是重命名
如果俩文件不在一个目录当中,就是移动文件
cat指令
cat查看文件内容
cat【选项】 要查看的文件
-n显示行号
more指令
more是以全屏幕按页来显示文本文件的内容
more 【要查看的文件】
less指令
less指令用于分屏查看文件的内容。对大型文件具有较高的效率
less 【要查看的文件】
echo指令
echo输出内容到控制台
echo 【选项】 【输出内容】
head指令
head用于显示文件的开头部分内容,默认情况下head指令显示文件的前十行内容
head 文件
head -n 5 文件 查看文件头五内容
tail指令
输出文件末尾的指令,基本操作与head指令一样
有一个不同点在选项上有一个-f ,他可以实时追踪文件的所有更新
> 指令和>>指令
>输出重定向
ls -l >文件 将列表的内容写入到文件当中(覆盖写)
cat 文件1 > 文件2 将文件1的内容覆盖到文件2当中
>>追加
ls -al >>文件 将列表的内容追加到文件的末尾
echo”内容” >> 文件 追加到文件当中
ln指令
软连接也叫做符号链接,类似于Windows里的快捷方式,主要存放了链接其他文件的路径
基本语法
ln -s 【原文件或目录】 【软连接名】 给原文件创建一个软连接
ln -s /root/ /home/myroot
这就给root创建了一个软连接为myroot
我现在进入到myroot当中,就是进入到了root当中。相当于是一个快捷方式。
history
查看已经执行过的历史命令,也可以执行历史指令
要是!5就是执行曾经执行过的第五号指令。
时间日期类
date指令
date 显示当前时间
date +%Y 显示当前年份
date +%m 显示当前月份
date + %d显示当前日期
date “+%Y-%m-%d%H:%M:%S”显示年月日时分秒
date -s 是显示字符串时间
cal指令
查看日历指令
cal
搜索查找类
find指令
find指令将从指定的目录向下递归地遍历各个子目录,直到搜索到。
find 【搜索范围】 【选项】
比如说搜索范围是root开始,他就会搜索root下所有的目录。
locate指令
locate可以快速定位文件路径。locate指令是不用遍历文件系统的,他是创建自己的一个数据库,然后去数据库里面查,所以查询速度比较快。
在第一次使用locate质量的时候 必须使用updatedb,来创建locate数据库
然后使用 locate 【搜索文件】 来定位路径。
grep指令与管道符号
grep是过滤查找,管道符号:| 表示将前一个命令的处理结果传输给后面的命令处理
grep 【选项】 查找内容 源文件
下面是查找Hello的行号实例(使用管道符号)
下面是不使用管道符号的例子
grep + 选项 +源文件
压缩和解压类
gzip 和 gunzip
基本语法
gzip 文件 (压缩文件,将文件压缩为.gz文件)
gunzip 文件.gz (解压文件)
zip 和 unzip指令
zip用于压缩文件 unzip用于解压
基本语法
zip 【选项】 XXX.zip 将要压缩的内容
-r 递归压缩,即压缩目录
unzip 【选项】 XXX.zip 解压缩文件
-d<目录> 指定解压后文件的存放目录
tar指令
tar指令是打包指令 最后打包的文件是 .tar.gz的文件
tar【选项】 XXX.tar.gz 打包的内容
Linux组
所有者
查看文件的所有者
ls -ahl
修改文件所有者
比如我现在要把root所有的Hello.java修改为jack所有
就写 chown jack Hello.java
可以看到文件所有者变成了jack
所在组
创建组
基本指令
groupadd 组名
例子
创建一个组monster ,然后创建一个用户fox ,并把他放进去
当用户创建了一个文件之后,这个文件所在组就是该用户所在的组
可以看到该文件在的位置是monster组
修改文件所在组
基本指令
chgrp 组名 文件名
例子
使用root创建文件orange.txt,然后看这个文件是哪个组的,然后将这个文件所在组移动到fruit组
其他组
除文件的所有者和所在者的用户外,系统的其他用户都是文件的其他组
在添加用户的时候,可以指定将该用户添加到哪个组当中,同样使用root的管理权限可以改变某个用户所在的组
基本指令
usermod -g 新组名 用户名
usermod -d 目录名 用户名 <—改变该用户登录的初始目录
权限
权限的基本介绍
ls -l 显示的内容如上图所示
前面的那串乱码是什么意思呢??
0-9位说明
- 第0位是确定文件类型(d,-,l,c,b)
- l是链接相当于Windows的快捷方式
- -是普通文件
- d是目录,相当于Windows的文件夹
- c是字符设备文件,键盘,鼠标
- b是块设置,比如硬盘。
- 第1-3位是确定该文件所有者拥有该文件的权限
- 4-6位是确定所属组也就是同文件组拥有该文件的权限
- 7-9是确定其他用户拥有该文件的权限
rwx
rwx作用在文件上代表 r:可以查看 w :可以修改 x: 可以执行
rwx作用到目录上代表 r:可以读取 ls 可以查看目录内容
w: 可以对该目录进行修改
x:可以进入该目录
修改权限
基本指令
chmod指令修改权限
第一种方式:+ - = 变更权限
u:所有者 o其他人 a 所有人 g所有组
- 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 u=rwx,g=rx,o=x 文件/目录名 相当于 chmod 751 文件/目录名
修改文件所有者
基本介绍
chown newowner 文件/目录 改变所有者
chown newowner:newgroup 文件/目录 改变所有者和所在组
-R 选项,如果是目录,就使得其目录下所有的文件和目录所有者递归生效
修改文件/目录所在组
chgrp newgroup 文件/目录
定时任务调度
crontab 任务调度
概述
任务调度:是系统在某个时间执行的特定的命令或程序
任务调度分类: 1. 系统工作:有些重要的工作必须周而复始的执行
2. 个别用户工作:个别用户可能希望执行某些程序
语法
crontab [选项]
快速入门
设置任务调度文件
设置个人任务调度我,执行 crontab -e 命令
接着输入任务到调度文件
比如:*/1****ls-l /etc/ > /tmp/to.txt
*占位符说明
第一个是代表一小时当中的第几分钟 0-59
第二个是一天当中的第几个小时 0-23
第三个一个月当中的第几天 1-31
第四个是一年当中的第几个月 1-12
第五个是一周的星期几 0-7
特殊符号说明
* 代表任何时间
, 代表不连续的时间 比如0 8,12,16 ***就代表每天的8,12,16时执行
, 代表连续的时间范围
*/n 代表每隔n就执行一次
快速入门案例
每隔一分钟,就将当前日期和日历都追加到/home/mycal文件当中
- 创建脚本文件,后缀为.sh ,这里我称之为my.sh
- 第二步进入脚本文件进行写入,cal >> /home/mycal date >> /home/mycal
- 写完后我发现该文件的权限没有执行权限,就设置为了744
- 最后打开crond -e 任务调度,写上每分钟执行一次/home/my.sh即可
这样就会每分钟执行一次脚本。
相关指令
crontab - r 终止任务调度
crontab -l 列出当前有那些任务调度
service crond restart 重启任务调度
at定时任务
基本介绍
at命令是一次性定时计划任务 ,at的守护线程atd会以后台模式运行
默认情况下,atd守护进程每60,检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,就运行该作业
at命令是一次性定时计划任务,执行完一个后就不再执行此任务了
在使用at命令的时候,要保证atd进程的启动
at命令格式
at 【选项】 【时间】
Ctrl+D 结束at命令输入
ps -ef | grep atd 可以看atd进程是否启动
Linux磁盘分区
原理
Linux使用了载入的处理方法,它的整个文件系统当中包括了一整套的文件和目录,并且将一个分区和一个目录联系起来,这个时候要载入的一个分区将使得它的存储空间在一个目录下获得。
可以看到不同的分区挂载到不同的目录下。
增加硬盘
增加一块sdb 然后将分区挂到一个新建的目录下
增加硬盘具体步骤
- 虚拟机添加硬盘
- 分区
- 格式化
- 挂载
- 设置可以自动挂载
添加新硬盘sdb
输入fdisk /dev/sdb进行分区
可以看到分区成功
接下来进行格式化 mkfs -t ext4 /dev/sdb1
其中的ext4是分区类型
可以看到UUID已经出现了,这代表着格式化成功。
然后进行挂载
挂载成功
但是在使用命令行挂载后,重启之后就会失效
这种情况下去更改文件/etc/fstab 即可。
磁盘情况查询
基本语法
df -h
进程管理
显示系统执行的进程
ps命令来查看
ps显示的信息选项:PID 进程识别号
TTY 终端机号
TIME 此进程所消耗的CPU时间
CMD 正在执行的命令或者进程名
ps -a 显示当前终端所有进程信息
ps -u以用户的格式显示进程信息
ps -x 显示后台进程运行的参数
输入 ps -aux得到以上的信息 其中的User 是进程执行用户 ,VSZ是占用虚拟内存的百分比。
RSS是物理内存的百分比,其他的上面介绍过。
ps详解
指令 ps -aux | grep xxx ,比如我看看有没有sshd服务
ps -aux|grep sshd
指令说明:System V 展示风格
USER 用户名称
PID 进程号
%CPU 进程占用CPU的百分比
%MEM 进程占用物理内存的百分比
%VSZ 进程占用虚拟内存大小
RSS 进程占用物理内存的大小
TT 终端名称,缩写
STAT 进程状态 S- 睡眠 s-表示该进程是会话的先到进程 N- 表示进程拥有比普通优先级更低的优先级,R- 正在运行 D-短期等待 Z-僵死进程 T- 被跟踪或者被停止
STARTED 进程的启动时间
TIME :CPU时间,即为进程使用CPU的总时间
COMMAND:启动进程所用的命令和参数,如果过长就会被截断显示。
查看父进程
ps -ef是以全格式显示当前所有进程的 -e是显示所有进程的, -f是全格式
PPID显示的是父进程的ID PID是自己进程的ID
终止进程kill和killall
若是某个进程执行到一半需要停止时,或者是已经消耗了很大的系统资源的时候,可以使用kill命令来完成该任务。
基本语法
kill 【选项】 进程号
killall 进程名称 通过进程名称来杀死进程,也支持通配符,这在系统因负载过大而变得很慢时有用
常用选项
-9 表示强迫进程立即停止
服务管理
介绍
服务(service)本质就是进程,但是是运行在后台的,通常都会监听两个端口,等待其他程序的请求,比如mysql sshd 防火墙等等,因此我们又称其为守护进程。
Service管理指令
service 服务名 【start|stop|restart|reload|status】
在CentOS7.0之后,很多服务不再使用service,而是使用systemctl
我们可以使用ls -l /etc/init.d/ 来查看
这些就可以使用service来进行管理
服务的运行级别
0 :系统停机状态
1 :单用户工作状态
2 :多用户状态(没有NFS),不支持网络
3 :完全的多用户状态(有NFS) 登录后进入控制台命令行模式
4 :系统未使用,保留
5 :X11控制台,登录后进入图形GUI模式
6 :系统正常关闭后重启,默认级别不能为6,否则不能正常启动
开机流程
开机,BIOS,/boot,systemd 进程1,运行级别,运行级对应的服务。
chkconfig指令
介绍
通过chkconfig指令可以给服务的各个运行级别设置 启动或者关闭
chkconfig指令管理的服务可以在/etc/init.d上查看
chkconfig基本语法
查看服务
chkconfig - -list 【|grep 服务】
chkconfig 服务名 - -list
chkconfig - - level 5 服务名 on/off 对服务器进行级别的设置,设置自启动或是什么。
systemctl管理指令
基本语法
systemctl 【start| stop| restart|status】服务名
systemctl指令管理的服务在/usr/systemd/system 查看
systemctl设置服务的自启动状态
systemctl list-unit-files【|grep 服务名】查看服务开机启动状态,grep可以进行过滤
systemctl enable 服务名(设置服务开机启动)
systemctl disable 服务名(关闭服务开机启动)
systemctl is-enable 服务名(查询某个服务是否为自启动的)
firewall指令
加入我现在打开了防火墙,要想让一个外部程序去连接一个端口,我们就需要去打开这个端口,就是下面这些指令来完成
打开端口 firewall-cmd- -permanent- -add-port=端口号/协议
firewall-cmd- -add-port=111/tcp
tcp协议的111端口
关闭端口 firewall-cmd- -permanent- -remove-port=端口号/协议
重新载入,才能生效 firewall-cmd- -reload
不管你是打开还是关闭端口,你都需要操作后再重新载入防火墙才能生效。
查询端口是否开放 firewall-cmd- -query-port=端口/协议
动态监控进程
介绍
top与ps命令详细,都是用于显示正在执行的进程,top与ps不同之处在于top执行一旦时间可以更新正在运行的进程。
基本语法
top 【选项】
选项说明
-d 指定top命令每隔几秒更新,默认三秒
-i 使top不显示任何闲置或是僵死进程
-p 通过指定监控进程ID来仅仅监控某个进程的状态
交互操作说明
我们在进行监控的时候,需要一些指定操作的命令,我们就可以使用下面的选项
上图就是我在进入了top命令之后,输入了大写的P,让他以CPU进行排序,得出的结果。
要想根据内存排序,输入大写的M即可,要退出top指令就输入q即可。
应用实例
监控特定用户
进入top之后,输入u之后再输入要监控的用户即可,然后回车
监控网络状态
查看系统网络情况netstat
基本语法
netstat【选项】
-an 按一定顺序排列输出
-p 显示哪个进程在调用
进入后,首先左边是协议名称,然后就是本地端口和外部端口的信息,最后是连接状态。
案例
比如我现在想看一个服务名为sshd的信息
RPM与YUM
RPM
rpm用于互联网下载包的打包以及安装工具,它包含在某些Linux的分发版当中,他可以生成具有.RPM扩展名的文件。RPM是RedHat Package Manager的缩写也就是RedHat软件包管理工具,类似于Windows的setup.exe文件。
指令
rpm -qa:查询所安装的所有rpm软件包。
rpm -qa | more
rpm -q 软件包名 ,查询软件包是否安装
rpm -qi 软件包名 查询软件包信息
rpm -ql 软件包名 查询软件包当中的文件
rmp -qf 文件全路径名 查询文件夹所属的软件包
rmp 的卸载
基本语法
rpm -e RPM软件包的名称
细节问题
如果其他软件包依赖于我要卸载的软件包,卸载的时候会产生错误信息。
我们就可以添加参数- -nodeps,就可以强制删除。比如 rpm -e - -nodeps foo 这里就是强制删除foo这个软件包
安装rmp包
基本语法
rpm -ivh RPM包全路径名称
参数说明: i =install 安装
v=verbose 提示
h=hash 进度条
YUM
Yum是一款Shell前端软件包管理器,基于RPM 包管理,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。
基本指令
查询yum服务器是否有需要安装的软件
yum list | grep xx软件列表
安装指定的yum包
yum install | xxx 下载安装
监控网络状态
查看系统网络情况netstat
基本语法
netstat【选项】
-an 按一定顺序排列输出
-p 显示哪个进程在调用
[外链图片转存中…(img-f9xUbV92-1728372608238)]
进入后,首先左边是协议名称,然后就是本地端口和外部端口的信息,最后是连接状态。
案例
比如我现在想看一个服务名为sshd的信息
[外链图片转存中…(img-qdGMvTW3-1728372608238)]
RPM与YUM
RPM
rpm用于互联网下载包的打包以及安装工具,它包含在某些Linux的分发版当中,他可以生成具有.RPM扩展名的文件。RPM是RedHat Package Manager的缩写也就是RedHat软件包管理工具,类似于Windows的setup.exe文件。
指令
rpm -qa:查询所安装的所有rpm软件包。
rpm -qa | more
rpm -q 软件包名 ,查询软件包是否安装
rpm -qi 软件包名 查询软件包信息
rpm -ql 软件包名 查询软件包当中的文件
rmp -qf 文件全路径名 查询文件夹所属的软件包
rmp 的卸载
基本语法
rpm -e RPM软件包的名称
细节问题
如果其他软件包依赖于我要卸载的软件包,卸载的时候会产生错误信息。
我们就可以添加参数- -nodeps,就可以强制删除。比如 rpm -e - -nodeps foo 这里就是强制删除foo这个软件包
安装rmp包
基本语法
rpm -ivh RPM包全路径名称
参数说明: i =install 安装
v=verbose 提示
h=hash 进度条
YUM
Yum是一款Shell前端软件包管理器,基于RPM 包管理,可以从指定的服务器自动下载RPM包并且安装,可以自动处理依赖关系,并且一次安装所有依赖的软件包。
基本指令
查询yum服务器是否有需要安装的软件
yum list | grep xx软件列表
安装指定的yum包
yum install | xxx 下载安装