目录
一、配置虚拟机网络
1、桥接模式:虚拟机与主机共享一个路由,在同一个网段,相当于做主机的局域网中多了一台电脑
2、NAT模式:虚拟机与主机共享一个专网,这个专网只有两台机器主机与虚拟机,可以相互通讯,
主机路由网络中不存在此电脑,虚拟机要访问外网必须靠主机IP进行转发
3、仅主机模式:虚拟机与主机共享一个专网,这个专网只有两台机器主机与虚拟机,只能相互通讯,
二、网络信息
子网掩码:组局域网使用,一个网段最多使用255个IP,如果不够需要增加其他网段,
DNS:解析域名 江西电信DNS:202.101.224.68或202.101.224.69
三、配置NAT模式
1、在虚拟网络编辑器中选择VMnet8 NAT模式,点击NAT设置,把网关设置一下,
2、在DHCP服务中设置子网IP、子网掩码,所有的设置必须在同一个网段
3、选择虚拟机右键,选择设置,选择网络适配器,从自定义中选择对应的虚拟网络
四、Linux设置IP地址
a、命令:cd /etc/sysconfig/network-scripts
d、保存退出,重启网络服务,命令:systemctl restart network.service
五、Linux简介
Linux 英文解释为 Linux is not Unix。
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的,
Linux 是一套免费使用和自由传播的类似 Unix 操作系统,是一个多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux是建立在 Unix之上的,所以Linux命令适用Unix,两种操作系统的命令有细微的差异,Linux命令严格区分大小写
六、Linux目录结构
Linux没有分盘的概念,所有的目录结构成一个树状结构,根目录是/,根下目录分别如下:
1、bin:是Binary的缩写, 这个目录存放着最经常使用的命令。
2、boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。
3、dev :dev是Device(设备)的缩写, 该目录下存放的是Linux的外部设备。
4、etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
5、home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
6、lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
7、media:linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
8、mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
9、opt:这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
10、proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
11、root:该目录为系统管理员,也称作超级权限者的用户主目录。
12、sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
13、selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
15、sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。
该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
17、usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
18、var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
七、命令格式
登录系统后,第一眼看到的内容是:
[root@localhost ~]#
[]:这是提示符的分隔符号,没有特殊含义。
root:显示的是当前的登录用户,笔者现在使用的是 root 用户登录。
@:分隔符号,没有特殊含义。
localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。
~:代表用户当前所在的目录,此例中用户当前所在的目录是家目录。
#:命令提示符,Linux 用这个符号标识登录的用户权限等级。如果是超级用户,提示符就是 #;
八、重启与关机
Shutdown –h 20:25 系统会在今天20:25关机
reboot 就是重启,等同于 shutdown –r now
halt 关闭系统,等同于shutdown –h now 和 poweroff
九、改变路径命名
十、当前路径命令
十一、查看目录下的内容
-a 显示所有文件及目录 (ls内定将文件名或目录名称开头为"."的视为隐藏档,不会列出)(常用)
-l 除文件名称外,亦将文件型态、权限、拥有者、文件大小等资讯详细列出(常用)
-A 同 -a ,但不列出 "." (目前目录) 及 ".." (父目录)
-F 在列出的文件名称后加一符号;例如可执行档则加 "*", 目录则加 "/"
选项可以组合使用,例如:ls -al 显示所有文件及目录,并且按详细列表列出
命令中路径不写,显示当前目录下的文件
十二、创建新目录
-m :配置文件的权限喔!直接配置,不需要看默认权限 (umask) 的脸色~
-p :帮助你直接将所需要的目录(包含上一级目录)递归创建起来!
十三、创建空文件
十四、删除空的目录
-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
例如:rmdir -p aaa/bbb 如果aaa目录是空的,一并会被删除,递归删除空目录
十五、删除文件或目录
十六、复制文件或目录
-a:相当於 -pdr 的意思,至於 pdr 请参考下列说明;(常用)
-d:若来源档为连结档的属性(link file),则复制连结档属性而非文件本身;
-f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次;
-i:若目标档(destination)已经存在时,在覆盖时会先询问动作的进行(常用)
-l:进行硬式连结(hard link)的连结档创建,而非复制文件本身;
-p:连同文件的属性一起复制过去,而非使用默认属性(备份常用);
-s:复制成为符号连结档 (symbolic link),亦即『捷径』文件;
-u:若 destination 比 source 旧才升级 destination !
案例
1、把ifcfg-nes33复制到/opt目录
-f :force 强制的意思,如果目标文件已经存在,不会询问而直接覆盖;
-i :若目标文件 (destination) 已经存在时,就会询问是否覆盖!
-u :若目标文件已经存在,且 source 比较新,才会升级 (update)
命令格式 运行结果
mv 文件名 文件名 将源文件名改为目标文件名
mv 文件名 目录名 将文件移动到目标目录
mv 目录名 目录名 目标目录已存在,将源目录移动到目标目录;
目标目录不存在则改名
mv 目录名 文件名 出错
实例
将文件 aaa 更名为 bbb :
mv aaa bbb
将info目录放入logs目录中。注意,如果logs目录不存在,则该命令将info改名为logs。
mv info/ logs
再如将/usr/student下的所有文件和目录移到当前目录下,命令行为:
十八、查看文件内容
tac 从最后一行开始显示,可以看出 tac 是 cat 的倒著写!
less 与 more 类似,但是比 more 更好的是,他可以往前翻页!
命令:cat 文件名
十九、查找文件
规则表达式 中可使用的选项有二三十个之多,在此只介绍最常用的部份。
-mount, -xdev : 只检查和指定目录在同一个文件系统下的文件,避免列出其它文件系统中的文件
-amin n : 在过去 n 分钟内被读取过
-anewer file : 比文件 file 更晚被读取过的文件
-atime n : 在过去n天内被读取过的文件
-cmin n : 在过去 n 分钟内被修改过
-cnewer file :比文件 file 更新的文件
-ctime n : 在过去n天内被修改过的文件
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-name name, -iname name : 文件名称符合 name 的文件。iname 会忽略大小写
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组。
-type c : 文件类型是 c 的文件,文件类型如下:
d: 目录
c: 字型装置文件
b: 区块装置文件
p: 具名贮列
f: 一般文件
l: 符号连结
实例
1、查找/ home目录以及子目录下的所有文件,名称为test。
find /home -name test
2、查找/ home目录以及子目录下的所有文件,名称为test。
find /home -name test
3、查找/home目录以及子目录下的所有文件,名称为test,不区分大小写
find /home -iname test
4、在/home目录中查找名称为test的所有目录。
find /home -type d -name test
5、在/home目录中查找名称为test的所有文件。
find /home -type f -name test
6、在/home目录中查找所有目录。
find /home -type d
7、在/home目录中查找所有文件。
find /home -type f
8、在/home目录中查找所有.txt文件。
find /home -name *.txt
9、在home目录中查找所有空文件
find /home -type f -empty
10、在home目录中查找所有空目录
find /home -type d -empty
11、在home目录中查找最近 20 天内更新过的文件
find /home -ctime -20
12、在home目录中查找最近 20 天内读取过的文件
find /home -atime -20
13、在home目录中查找最近 1小时内更新过的文件
find /home -cmin -60
14、在home目录中查找最近 1小时内读取过的文件
find /home -amin -60
15、在home目录中查找小于50M的文件
find /home -size -50M
16、在home目录中查找大于50M小于100M的文件
find /home -size +50M-size -100M
二十、编辑器
命令模式:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符,
以下是常用的几个命令:
i 切换到输入模式,以输入字符。
x 删除当前光标所在处的字符。
: 切换到底线命令模式,以在最底一行输入命令。
输入模式:
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
字符按键以及Shift组合,输入字符
ENTER,回车键,换行
BACK SPACE,退格键,删除光标前一个字符
DEL,删除键,删除光标后一个字符
方向键,在文本中移动光标
HOME/END,移动光标到行首/行尾
Page Up/Page Down,上/下翻页
Insert,切换光标为输入/替换模式,光标将变成竖线/下划线
ESC,退出输入模式,切换到命令模式
/关键字,在内容中搜索关键字
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多
在底线命令模式中,基本的命令有(已经省略了冒号):
:q! 退出程序,但不保存
:w! 保存文件,但不退出程序
:wq!保存文件,并退出程序
按ESC键可随时退出底线命令模式
:q! 退而不保
:w! 保而不退
二十一、压缩文件(.tar.gz)
实例:
1、把test目录打包成test.tar.gz
tar -czvf test.tar.gz test/
2、查看test.tar.gz压缩包中的内容
tar -tzvf test.tar.gz
.
3、解压test.tar.gz压缩包
二十二、压缩文件(.zip)
1、把test目录打包成test.zip
zip -r test.zip test/
2、解压test.zip压缩包
二十三、创建用户组
-o 一般与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同
实例
1、增加了一个新组ztkj,新组的组标识号是在当前已有的最大组标识号的基础上加1
groupadd ztkj
2、增加了一个新组yup,同时指定新组的组标识号是101
groupadd -g 101 yup
3、增加一个新组yup,与root组id相同
groupadd -o -g 0 yup
注:group Id前面999个被系统占用,自定义的组从1000开始
二十四、删除用户组
二十五、修改用户组
-o 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同
实例
1、此命令将组ztkj的组标识号修改为102。
groupmod -g 102 ztkj
2、此命令将组yup的标识号改为10000,组名修改为gsyx。
二十六、查看组信息
用户组的所有信息都存放在/etc/group文件中,所以查看此文件信息就能查看到创建组的信息,命令如下:
二十七、创建用户
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
实例
1、创建用户test,并且设置用户主目录(/home/test)
useradd –d /home/test -m test
2、创建用户test,该用户的登录Shell是 /bin/sh,它属于group用户组,同时又属于admin和root用户组,
其中group用户组是其主组。
useradd -s /bin/sh -g group –G adm,root test
3、创建用户test,设置用户主目录(/home/test),用户的登录Shell是 /bin/sh,所属组是group
useradd -g group -d /home/test -s /bin/sh -m test1
4、最简单的创建test用户
useradd -m test
注:如果创建用户不指定组,那么创建用户时同时也会创建一个新的组,组名与用户名相同
创建新用户不指定login shell,而默认的是/bin/bash。
login shell 指的是系统给用户的运行环境,用户登录后,要启动一个进程,负责将用户的操作传给内核,
这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
二十八、删除用户
-r,它的作用是用户在系统文件中(主要是/etc/passwd, /etc/shadow, /etc/group等)的记录,同时删除用户的主目录。
实例
1、删除用户名test,并且在系统中删除用户所有相关信息
二十九、修改用户
-d 目录 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-u 用户号 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。
实例
1、用户test的登录Shell修改为ksh,主目录改为/home/z,用户组改为developer
usermod -s /bin/ksh -d /home/z –g developer test
2、用户test名称改成ztkj,部分系统支持
三十、用户口令的管理
实例
1、当前用户是test,则下面的命令修改该用户自己的口令
$ passwd
Old password:******
New password:*******
Re-enter new password:*******
2、当前用户是root,修改任何用户的口令
# passwd test
New password:*******
Re-enter new password:*******
3、当前用户是root,修改test用户为空口令,下次登录系统就不再允许该用户登录了
# passwd -d test
4、当前用户是root,锁定test用户使其不能登录
# passwd -l test
5、当前用户是root,解锁test用户
# passwd -u test
6、当前用户是root,强迫test用户下次登录时修改口令
三十一、查看用户信息
Linux系统中的每个用户都在/etc/passwd文件中有一个对应的记录行,它记录了这个用户的一些基本属性。
与用户相关的三个系统文件:
/etc/group 用户组信息文件
/etc/passwd 用户信息文件
/etc/shadow 用户口令信息文件,只用root用户才有权限查看
一个用户会在/etc/passwd文件中占一行,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
系统中有一类用户称为伪用户,这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,
因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
如下:
bin 拥有可执行的用户命令文件
sys 拥有系统文件
adm 拥有帐户文件
uucp UUCP使用
lp lp或lpd子系统使用
三十二、切换用户
普通用户切换root用户,需要输入root用户的密码,命令如下:
su root
三十三、文件基本属性与权限
drwxr-xr-x. 2 root root 4096 Sep 15 04:15 javajpg
drwxr-xr-x. 3 root root 71 Dec 28 2017 libevent
drwxr-xr-x. 2 root root 141 Jan 4 2018 magent
drwxr-xr-x. 3 root root 59 Dec 28 2017 memcached
drwxr-xr-x. 2 root root 51 Jan 10 2018 mongodb
drwxr-xr-x. 3 root root 53 Jan 3 2018 reids3
-rw-r--r--. 1 root root 7566034 Sep 15 04:30 test.zip
文件信息主要分为:
-rw-r--r--. 1 root root 7566034 Sep 15 04:30 test.zip
#权限 引用计数 所有者 所属组 大小 文件修改时间 文件名
1、文件权限
权限的第一字符代表这个文件是目录、文件或链接文件等等
当为[ d ]则是目录
当为[ - ]则是文件;
若是[ l ]则表示为链接文档(link file);
若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)
接下来的字符中,以三个为一组,且均为『rwx』 的三个参数的组合,如下:
文件类型 属主权限 属组权限 其他用户权限
0 1 2 3 4 5 6 7 8 9
d r w x r w x r w x
目录 读 写 执行 读 写 执行 读 写 执行
2、更改文件9个属性
命令格式: chmod [参数] 模式 文件或目录
参数:
-c : 若该文件权限确实已经更改,才显示其更改动作
-f : 若该文件权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)
模式分两种:一种是数字,一种是符号。
a、数字模式:
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,
各权限的分数对照表如下:
r:4
w:2
x:1
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为: [-rwxrwx---] 分数则是:
owner = rwx = 4+2+1 = 7
group = rwx = 4+2+1 = 7
others= --- = 0+0+0 = 0
命令:
chmod -R 770 test.zip
b、符号模式:
使用u/g/o来代表owner/group/others三种身份,比如把test.zip权限设置为[-rwxrwx---],
命令如下:
chmod -R u=rwx,g=rwx,o=- test.zip
注:拥有执行权限,才能进入文件夹
3、更改文件属组
命令格式:chgrp -R 属组名 文件名
4、更改文件属主
命令格式:chown –R 属主名 文件名
注:普通用户不能更改其他用户的所属主与所属组,root用户可以,但是原来的所属用户编辑文件时,
会把所属主与所属组还原成原始的所属主与所属组
文件权限可以通过vi更改所属主与所属组,文件不能控制权限,可以通过上级的文件夹控制,一般
三十四、shell编程
#! 是一个约定的标记,它告诉系统这个脚本需要什么解释器来执行,即使用哪一种 Shell。
echo 命令用于向窗口输出文本
执行脚本:
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行脚本
sh test.sh #执行脚本
2、使用变量
变量名的命名须遵循如下规则:
命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。
中间不能有空格,可以使用下划线(_)。
不能使用标点符号。
不能使用bash里的关键字(可用help命令查看保留关键字)。
使用vi命令创建var.sh文件,内容如下:
your_name="qinjx"
echo $your_name
echo ${your_name}
变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界,比如下面这种情况:
your_name="qinjx"
echo "I am good at $your_nameScript"
echo "I am good at ${your_name}Script"
推荐给所有变量加上花括号,这是个好的编程习惯。
3、传递参数
echo "Shell Parameter Instance"
echo "file name:$0"
echo "parameter one:$1"
echo "parameter two:$2"
echo "parameter three:$3"
echo "parameter number:$#"
4、运算符
a=10
b=20
val=$(($a + $b))
echo "a + b : $val"
val=$(($a - $b))
echo "a - b : $val"
val=$(($a * $b))
echo "a * b : $val"
val=$(($b / $a))
echo "b / a : $val"
val=$(($b % $a))
echo "b % a : $val"
if [ $a == $b ]
then
echo "a 等于 b"
fi
if [ $a != $b ]
then
echo "a 不等于 b"
fi
小数运算必须使用bc计算器,首先需要安装bc计算器,命令如下:
yum -y install bc
小数运算表达式
val=$(echo "options; expression" | bc) 例如:val=$(echo "scale=2; $a + $b" |bc)
options:用于定义变量,如果没有变量,直接用;隔开,scale=4,表示保留四位小数
expression:运算表达式
5、分支语句(if elif else)
a=10
b=20
if [ $a != $b ]
then
echo "$a != $b : a 不等于 b"
else
echo "$a == $b: a 等于 b"
fi
if [ $a -lt 100 -a $b -gt 15 ]
then
echo "$a 小于 100 且 $b 大于 15 : 返回 true"
else
echo "$a 小于 100 且 $b 大于 15 : 返回 false"
fi
if [ $a -lt 100 -o $b -gt 100 ]
then
echo "$a 小于 100 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 100 或 $b 大于 100 : 返回 false"
fi
if [ $a -lt 5 -o $b -gt 100 ]
then
echo "$a 小于 5 或 $b 大于 100 : 返回 true"
else
echo "$a 小于 5 或 $b 大于 100 : 返回 false"
fi
if [ $a != $b -a $a -lt $b ]
then
echo "aaaaaa"
elif [ $a == $b -a $a -le $b ]
then
echo "bbbbb"
else
echo "cccccc"
fi
语法提示:
a、if与[之间必须要有空格
b、[与变量之间必须要有空格
c、变量与符号必须要有空格
d、]与then必须换行
e、then与代码块必须换行
f、elif与上一个代码块必须换行
g、elif与[之间必须要有空格
6、循环语句(for)
从1加到100
sum = 0
for i in {1..100}
do
sum=$(($sum+$i ))
done
echo $sum
7、循环语句(while)
从1加到100
sum = 0
i=1
while [ $i -le 100 ]
do
sum=$(($sum+$i ))
i=$(($i+1 ))
done
三十五、设置防火墙
关闭防火墙:systemctl stop firewalld.service
开启防火墙: systemctl start firewalld.service
增加开放端口(增加开发端口需要重启防火墙):firewall-cmd --zone=public --add-port=端口号/tcp --permanent
三十六、设置linux系统时间
2、设置系统的年月日,命名:date -s 月/日/年 例如:date -s 07/22/2021
3、设置系统的时分秒,命令:date -s 时:分:秒 例如:date -s 16:56:12
4、设置系统的年月日时分秒,命令:date -s "年月日 时:分:秒" 例如:date -s "20210722 16:56:12"
设置完时间后,重启还是会恢复到以前的时间,设置完时间后一定要进行写入,使用以下命令进行写入:
1、hwclock --systohc
2、clock -w
三十七、设置时区
2、设置时区,中国是东八区,命令:timedatectl set-timezone Asia/Shanghai
3、查看时区状态:命令:timedatectl status
三十八、linux同步网络时间
1、同步网络时间要使用到ntp命令,如果没有此命令,执行以下命令进行安装
2、同步网络时间,命令:ntpdate cn.pool.ntp.org
ntpdate ntp1.aliyun.com
3、保存同步的时间,命令:hwclock --systohc
clock -w