一、安装vm+centos7时注意
1、其中宿主机和虚拟机的网络选择:
在配置虚拟机的时候,一般有三种网络连接的方式:NAT、桥接、主机模式1)、NAT模式。
现在假设在同一网段中有机器A、B、C。此时在C中建立一个虚拟机d。如果d和C的网络模式选择为NAT时,此时d能访问到A、B和外网(假设该内网有接外网),而A、B不能访问到d。C和d能互通。
2)、桥接模式
将虚拟机d看着是网段的又一个主机(虚拟机和其他机器处于同一网段,可以互相ping通)
3)、主机模式
虚拟机相对于一个独立的主机。
2、对虚拟机的分区
主要会被分为swap、boot、/ 等三个区。
其中boot分区(也称引导分区):一般1个G
swap(交换分区):一般和分配给虚拟机的内存大小一致(例如2G)(swap即虚拟内存:当真实内存满了的时候,而又有其他程序要加载数据到内存时,此时因为实际内存满了无法再进去了就先加载这些数据到虚拟内存中,等到实际内存空出来了再将其挪到实际内存中)(毕竟swap是虚拟出来的,所以其速度还是赶不上真实内存的速度的)
/(根分区):剩余的空间都给到根分区分区中。(我们后面安装的一些文件软件等都会安装到根分区中。例如/home、/etc等)
3、kdump模式
开启了kdump模式后,如果机器宕机时会保存一些数据。一般在生产环境中建议开启。
二、linux的目录结构
1、进入根目录/。然后查看根目录下的各个子目录
就像/etc下面主要存放·配置文件。
/home下每个用户会对应一个目录,目录下一般又存该用户的一些软件、web项目等。
在linux中一切皆文件,即即使是个u盘都会被实例化为一个u盘描述文件存放起来。
下面对于一些常用的目录做一些说明:
bin:存放一些常使用的命令(注意:在linux中一切皆文件,故此命令也会被实例化为文件)
sbin:系统管理员使用的系统管理程序。
home:存放普通用户的主目录,每个用户对应一个子目录(目录名以账号名称命名)。其子目录可以存放自己相应项目(例如部署一些web项目)等。
root:该目录为系统管理员(超级权限用户的主目录)
lib:开机时需要的基本动态连接共享库。很多应用程序都会用到这个共享库。
lost+found:一般是空的,用于存放机器非法关闭后的一些文件
etc:一些软件或者系统的配置文件和子目录
usr:用户安装的一些应用程序和文件都会默认放到这个目录(类似于windows下的program files目录)
boot:存放启动linux时的一些核心文件。
tmp:存放一些临时文件的
dev:类似于设备管理器,将所有硬件用文件的形式存储起来。
mnt:让用户挂载到别的文件系统的。
opt:一些安装包就可以放在这里。(例如mysql、tomcat等)(注意这里一般就是存放安装包的地方)
/usr/local:也是给用户安装软件的一个目录,安装软件的目录就可以放在这里。
proc、srv、sys这几个目录都是和内核、系统相关的,注意不要动他,不然可以会导致系统不能用。
var:存放经常扩充变化内容的目录
selinux:安全子系统,能控制程序只能访问特定文件,有三种工作模式,可以自行设置。
主要要记住的就是home、etc、root、usr、usr/local、opt这几个常用的目录。
三、vi、vim工具
建立远程连接可以用xshell、文件交互可以用xftp。
1、vi、vim
linux会内置vi文本编辑器,vim则可以看作是vi的增强版(可以用字体颜色辨别语法的正确性,补全、跳转等功能)。
2、vi、 vim的三种模式
(1)正常(一般)模式:打开一个文件后默认就是一般模式,此模式可以上下左右来移动光标,也可以使用删除字符或删除整行来修改文件,也可以复制粘贴文本。
(2)插入模式:可以按下i、I、o、O、a、A、r、R的任意一个字母进入插入模式。(一般的文件编辑都是在这个模式下进行的)
如果编辑完后想保存退出:先按esc键,然后再输入:wq (其中w代表write写入,q代表quit退出)
如果写完不想保存:先按esc键,然后再输入:q!(即强制退出并不保存)。如输入:q则表示普通退出(也是退出不保存)
(3)命令行模式:可以提供用指令来操作,完成读取、存盘、替换、离开、显示行号等动作。
从插入模式转换为命令行模式:先按esc键退出,然后输入:或者/ 符号。(从一般模式到命令行模式直接输入:或者 / 即可)
3、快捷键
快捷键图:
四、开机、重启、登录注销
1、关机:
shutdown -h now :立刻进行关机(h表示halt即停止的意思)
shutdown -h 1 :一分钟后进行关机
halt:关机,和上面作用一样
2、重启
shutdown -r now :立刻进行重启(r代表reboot即重启的意思 )
reboot:立刻进行重启
sync:将内存的数据同步到磁盘中(进行刷盘操作)
注意:虽然现在的shutdown、reboot、halt等命令在关机前都进行了sync操作,不过为了保证万无一失还是建议在开机或者重启前先调用sync命令。
3、登录注销(注销即登出)
登录尽量少用root账户登,因为这是系统管理员,有着最大的权限,少用root登录可以尽量的避免误操作。所以我们一般可以登录普通用户。
(创建普通用户等下面用户管理中会说明)
登录到普通用户后想要切换到root用户。使用 su - root 即可切换(后面需要输入密码)
注销用户:输入logout即可注销用户(注意logout在图形运行级别是无效的,在运行级别3下有效。即在xshel非图形界面就可以生效)
五、用户管理
1、添加用户
useradd 用户名
(用户创建成功后会自动在/home下创建同名的目录,也可以通过” useradd -d 指定目录 用户名 “ 来自定义目录)(且创建成功后登录该用户会自动切换到相应的目录下)
此时还没有给这个用户设置密码,此时需要自己再手动设置密码: 先输入” passwd 用户名 “,然后提示输入密码即可
(pwd:显示当前所在目录)
2、删除用户
userdel 用户名(注意不能自己删自己,权限不够,可以切到root再去删除)
此时有两种删除方式:(1)删除用户但不删除home目录下的用户目录:userdel 用户名。(2)删除用户和home目录下的用户目录: userdel -r 用户名。
(一般情况下建议保留,防止该用户下一些有用的数据文件的丢失)
3、查询用户信息
id 用户名(可以显示用户的id、组等信息)
4、切换用户
su - 用户名(权限高的到权限低的用户不需要输入密码,反之需要密码。想返回原来的用户可以用登出命令logout)
5、查看当前用户
who am i或者whoami(这个只显示你第一次登录的那个用户,如果中间切换了用户显示的还是原来的用户信息)
6、用户组(类似于角色,用于对多个类似用户的权限等的管理)
创建一个用户组:groupadd 组名
删除组:groupdel 组名
此时我们增加用户就可以指定他为哪个组:useradd -g 用户组 用户名。(此时我们给组赋予权限,此时这个用户组的用户就会拥有这个组的权限)
(注意如果增加用户没有指定组,此时在创建用户时会默认会创建和用户名一致的组)
将已经创建了的用户加入到用户组中:usermod -G 组名 用户名(这样这个用户会退出原来的组)
如果要保留原来的组+后面要加入的组:usermod -a -G 组名 用户名(加上-a)
7、运行级别
可以通过” init 运行级别 “ 来切换运行级别。例如输入init 0 此时机器就会关机。我们重新启动后就会进入默认的运行级别。
我们可以通过systemctl get-default查看当前的运行级别。也可以使用systemctl set-defalut 指定的运行级别(注意这个指定的运行级别就不是上面的0-6表示了,例如在centos7中对3级别用multi-user.target代替,而5用graphical.target代替)(一般工作中都是用3这个级别)
8、找回root密码(centos7)
注意第五步中需要输入两次密码:
9、帮助指令
man 命令或者配置文件(获取帮助信息)
例如输入man ls(查看ls指令的帮助信息)
help 命令(获取shell内置命令的帮助信息)
例如help cd (查看cd的帮助指令)
(在linux中隐藏文件是以” . “开头的)
(ls -al /home :此时就会显示/home目录下的列表)
六、文件目录指令
1、pwd:显示当前工作目录的绝对路径。
2、ls 或者 (ls 目录或者文件):显示当前目录/指定目录的文件和目录
如果加上-a :例如ls -a 表示显示当前目录下的所有文件和目录,包括隐藏的。
如果加上-l:则是以列表的形式显示信息
3、cd指令
cd 指定目录:表示切换到指定的目录下
cd ..:表示回到上一级目录
cd ~:表示回到该用户对应home目录下的目录(例如root用户就切换会/root,test用户就切回/home/test)
4、mkdir指令
mkdir 要创建的目录 :表示创建指定的目录
如果加上-p则表示创建多级目录(即创建两个及以上的不存在的目录):例如现在只有/home目录,然后我要创建/home/aaa/bbb/ccc。此时要创建aaa、bbb、ccc这个多级目录,此时就要用到 mkdir -p /home/aaa/bbb/ccc。
5、rmdir指令
rmdir 指定空目录:删除指定的空目录(注意这个目录下不能有内容,需要是空目录)
如果要删除非空目录:rm -rf 指定的目录
6、touch指令
touch 文件名:创建空的文件(可以用vim直接创建)
7、cp指令(拷贝指令)
cp 源文件 目标文件:拷贝源文件到目标文件那里。例如:cp /home/hello.txt /home/bbb 此时就是将hello.txt文件拷贝到/home/bbb目录下
加上-r:表示递归的复制整个文件夹。例如: cp -r /home/bbb /home/opt
如果这个cp -r /home/bbb /home/opt指令执行了两次,第二次就会覆盖旧文件,但需需要提示后输入y才会覆盖,此时如果不需要提示强制覆盖可以将命令改为
\cp -r /home/bbb /home/opt
8、rm指令
rm 指定的文件或者目录:表示删除指定的文件或者目录
加上-r :表示递归删除; 加上-f:表示强制删除不提示。 (-rf即是-r加上-f)
9、mv指令(移动文件或者重命名)、
mv 旧名 新名:重命名文件或者目录
mv 指定文件或文件夹 移动到的目录:将某个文件或目录移动到某个目录下。
10、cat指令
cat 文件:表示查看某个文件
加上-n:会显示文件内容的时候加上行号
11、more指令
12、less指令(less 文件名)
13、echo指令(输出内容到控制台)
例如:echo $PATH :就会在控制太打印相应的环境变量
echo helloworld!:就会输出helloworld!
14、head指令
head -n 5 文件名:显示指定文件的前五行内容。(head 文件:则默认看前10行)
15、tail指令
tail -n 5 文件名:查看末尾的5行内容。(tail 文件:则默认看最后10行)
tail -f 文件:实时追踪该文档的更新(实时更新后面10行内容)
16、>和>>指令(覆盖写和追加写到文件)(重要)
17、ln指令(软连接,也称符号连接,类似于windows中的快捷方式)
ln -s 源文件或目录 软连接名:给文件或目录创建一个软连接
要删除软连接直接使用 rm 软连接 即可。
18、history
查看已经执行过的命令(查看这个系统之前执行过什么命令)
history 10 或者:查看最近的10条。
!5:执行编号为5的指令。
七、日期、查找、压缩解压指令
1、时间日期类指令
(1)显示当前时间:date
(2)显示当前年份:date +%y (月份Y改为m,天改为d即可)
(3)显示年月日时分秒:date "+%Y-%m-%d %H:%M:%S" (要哪个在+号后面接上即可)
(4)设置日期:date -s “要设置的时间” (例如date -s “2020-03-22 20:02:55”)
(5)显示日历:cal (显示本月的日历) cal 2020 (显示2020年的日历)
2、搜索查找指令
(1)find指令:从指定目录向下遍历各个子目录,将满足条件的文件或者目录显示在终端.。
find指令后可接一些参数:-name(按文件名进行查找) -user(按所属用户进行查找)
-size(按文件大小进行查找)
ls -l (详细显示列表) ls -lh(人性化的显示信息,例如会换算字节为m等)
(2)locate指令(locate 文件名)
linux系统中有一个locate数据库用来记录各个文件。此时使用locate就是基于这个数据库进行查找。
使用locate指令前,一定要先执行updatedb指令去更新这个库。然后再执行locate指令才能搜索到。
(3)which指令
查看某个指令在哪个目录下。例如查看ls这个指令在哪个目录下:which ls
(4)grep指令和管道符号 |
grep即过滤查找,一般配合管道符号
例如:/home/hello.txt文件中,查找“yes”所在行,并且显示行号
cat /home/hello.txx | grep -n "yes" 这个的意思就是管道符 | 前面得到的结果通过管道流到后面去,然后grep在管道后拿到cat的结果,此时使用grep过滤查找根据含“yes”的行显示出来。
还有一种写法就是: grep -n "yes" /home/hello.txt
意思就是根据“yes”添加从hello.txt文件中过滤筛选出符合的行
其中-n显示行号。 -i 表示忽略大小写
(我们开发中常见的查找出java的进程就用jps或者 ps -ef | grep java (这个就是获取进程并过滤筛选出java的进程))
3、压缩和解压指令
(1)、gzip/gunzip指令
分别对应压缩/解压指令: gzip 文件(此时将文件压缩为.gz压缩包)
gunzip 文件.gz (解压gz格式的压缩包)
(2)、zip/unzip指令(常用)
适用于zip格式的文件的压缩和解压
其中zip可加参数 -r 表示递归压缩,即压缩目录
unzip可加-d 表示解压后的文件放于某目录
(3)tar指令(最常用),即可用来压缩,也可用来解压
适用于.tar.gz压缩包。对应的参数如下:
其中 -z(表示压缩或者解压,不是指打包同时压缩(上面的图片说错了))
-C表示将压缩文件解压到哪个路径下