Ubuntu是一个以桌面应用为主的Linux操作系统.一般叫做乌班图   

什么叫操作系统?

widows,用于个人桌面

macOS,用于个人桌面

Linux,主要用于服务器,商务部署

创建虚拟机安装Ubuntu网络安全学习笔记——创建虚拟机_不知天文,不知地理的博客

创建虚拟机的硬件条件

CPU:i5/i7

内存:8G

硬盘:固体

安装完毕有俩个虚拟网卡

乌班图硬件虚拟化 乌班图硬件要求_ubuntu

 提示:按Ctrl+Alt可以令虚拟机释放鼠标,回到你的主系统中

宿主机必须保持联网:因为在安装的过程中,需要联网下载一些软件包

如果Ubuntu有问题,如何重装

直接删除目录

虚拟机内的操作,不会影响到宿主机

启动关机:power off关机

挂起/恢复:将当前状态冻结,以便快速恢复

乌班图硬件虚拟化 乌班图硬件要求_乌班图硬件虚拟化_02

更多的虚拟机操作

硬件参数设置Ctrl+D或者在虚拟机菜单栏上的设置进行修改

注意:先关机后设置

状态栏

右下角一排状态按钮,表示硬件状态

乌班图硬件虚拟化 乌班图硬件要求_linux_03

快照与系统恢复

重装系统(目录下的文件全删掉,然后重新装一个)

使用系统快照(备份)

乌班图硬件虚拟化 乌班图硬件要求_学习_04

桌面环境

Ubuntu的桌面环境和Windows相似

上部:状态栏

左侧:收藏夹,常用的应用程序

左上角:查看正在 活动的程序activities

左下角:查看所有的应用程序

右上角:系统状态,用户,系统设置,关机与注销

Ubuntu上可以看视频,听音乐都可以

Linux可以作为个人桌面,但主要用于服务器环境

收藏夹

收藏一些常用的程序

以下三个程序

文件管理器

命运行终端

文本编辑器 常用 放进收藏夹

文件系统

对于Linux来说,使用统一的目录树结构

/

/home/shaofa

/root

/bin

/mnt

/usr

/etc

注意:Linux下没有C:D:这个盘符的概念

乌班图硬件虚拟化 乌班图硬件要求_ubuntu_05

一级子目录

用户目录,就是用户自己的目录

Linux系统上支持多个用户,每个用户一个目录

乌班图硬件虚拟化 乌班图硬件要求_环境变量_06

特例:超级用户root,其用户目录为/root 

权限机制:对于普通用户来说,他能操作的目录就只有用户目录

root用户没有权限,可以操作任意文件和目录

创建目录和文件

目录操作:创建目录/删除/重命名

文件操作:编辑文本文件

以上所有的操作,都是在用户目录下操作的

文件列表

ls,即list,列出目录下的所以项

示例

参看目录

参看/home/buzhitianwenbuzhidili 目录

ls /home/buzhitianwenbuzhidili

乌班图硬件虚拟化 乌班图硬件要求_乌班图硬件虚拟化_07

注意ls空格然后目录

乌班图硬件虚拟化 乌班图硬件要求_linux_08

 以详细模式参看

ls -l /home/shaofa

其中,

        -l为参数,参数一般以-开头 

乌班图硬件虚拟化 乌班图硬件要求_linux_09

权限  子文件夹的内容 创建者 组 大小 最后一个表示项目名字

细节:在输入命令和路径时,按tab键都可以自动补全

ls/ho > ls /home

2.输入历史可以翻阅

按↑,↓箭头键可以上下翻阅

3.宿主机与虚拟机之间可以拷贝粘贴

一般情况下,文本和文件都可以拷贝的

虚拟机Ctrl+V不行,要右击

切换目录

pwd,即print working directory 显示当前工作目录

cd,即change directory,切换目录

切换到某个目录

cd /home/buzhitianwendili/Downloads/

几个特殊的目录写法:

~代表当前用户的主目录

.代表当前目录

..代表上一级目录

cd ~ 切换到主目录

cd ~/example 切换到主目录下的example目录

cd ../www 切换到上级目录,再到www子目录

在ls命令中,也可以使用~. ..表示目录

在Ubuntu下打不出~可以使用shift+|键输出~

乌班图硬件虚拟化 乌班图硬件要求_学习_10

目录操作

mkdir,即make directory创建目录

mkdir abc

mkdir -p abc/123/test

使用-p参数,可以将路径的层次目录全部创建

rmdir,即remove directory删除空目录

rmdir abc 

如果目录非空,则删除失败

rm,即remove删除文件或目录

rm -rf abc

删除abc目录,和子项一并删除

其中,r表示recursive(递归删除),f表示force(强制删除)

使用这个rm -rf 命令时要小心这是强制删除的

一个程序员界的玩笑:rm -rf /* 删库跑路?

cp,即copy复制文件或者目录

cp -rf example example2

mv,即mover,移动文件或目录(重命名)

move hello hellowirld

对于文件,rm/cp/mv这三个命令同样适用

乌班图硬件虚拟化 乌班图硬件要求_环境变量_11

归档压缩

tar,即tape(磁带) archive(档案)档案打包

创建档案包

tar -cvf example.tar example

其中,

c,表示create创建档案

v,表示verbose显示详情

f,表示file

也可以多个目录打包 tar-cvf xxx.tar file1 file2 file3

乌班图硬件虚拟化 乌班图硬件要求_学习_12

还原档案包

tar -xvf example.tar

taar -xvf example.tar -C outdir

其中,-C参数指定目标目录,默认解到当前目录下 

先前的tar格式并没有压缩,体积较大

并档并压缩

tar -czvf example.tar.gz example

解压缩

tar -xzvf example.tar.gz

tar -xzcf example.tar.gz -C outdir

通常我们所见的,都是*。tar.gz这种格式

软链接

软链接,即Windows下的快捷方式

使用ln命令(link)来创建软链接

ln -s source link

其中,-s表示soft软链接(默认为硬)

比如

ln -s example example2

软链接的特点:

删除软链接,对原文件没有影响

删除原文件,则软链接失效

以ls -l 查看文件详情时,可以看到目标路径

比如:ls -l /

可以发现,/bin实际指向的是/usr/bin目录

首字母是d表示目录;l表示快捷方式;-表示文件

添加用户(需要管理员权限)

添加一个用户

sudo useradd -m test1

其中,sudo表示以管理员身份执行

添加用户

useradd -m test1

其中,-m参数表示在/home下添加用户目录

2.修改用户密码

passwd test1

3.删除用户

userdel test1

注意在Linux下输入密码是不显示的

乌班图硬件虚拟化 乌班图硬件要求_环境变量_13

乌班图硬件虚拟化 乌班图硬件要求_环境变量_14

1.在登陆系统时,默认不允许以root用户登录

2.只有特殊的用户,才能执行sudo

比如,buzhitianwendili可以执行sudo,但test1不行

Linux下,把能执行sudo命令的用户叫sudoer

超级用户

超级用户root

类似于Windows下的administrator用户

切换到root用户,有全部权限,可以直接useradd等命令

1.首次使用时,需要给root设置密码

sudo passwd root

2.切换到root用户

su root

其中,su表示switch user

3.退出

exit

乌班图硬件虚拟化 乌班图硬件要求_学习_15

su root 仅仅对当前会话(终端)有效不影响当前桌面环境

root权力太大,需要小心使用 

用户和组

Linux下可以创建多个用户,可以用组进行管理用户。

比如:

男生组boys

ming bo gang qiang

女生组girls

fang hong yue yuan

创建组

groupadd boys

创建用户

useradd -m -g boys ming

其中,-g表示在添加用户,同时将用户加到boys组

修改现有用户到新的组

usermod -g boys shaofa

其中,usermod表示修改用户信息

如何查看用户和组?

cat /etd/group

每一行表示一个group的信息,名称+ID

如何查看用户列表?

cat /etc/passwd

每一行表示一个用户的信息

乌班图硬件虚拟化 乌班图硬件要求_环境变量_16

后面的数字表示id

用户不多时,管理的时候并不使用组的概念

useradd a1

useradd b1

一个root,俩个普通用户a1,b1,够用了!

默认的,会给a1用户建立一个同名的组a1,也就是说这个组里只有他一个人

以root登陆桌面

默认的,Ubuntu不允许以root登陆桌面环境。(root已经设置了密码)

1:su root

2:gedit /etc/pam.d/gdm-autologin

加# #auth    required    pam_succeed_if.so user != root quiet_success保存,在Linux下#相当于注释行

乌班图硬件虚拟化 乌班图硬件要求_环境变量_17

3.:gedit /etc/pam.d/gdm-password

注释这个行#auth    required    pam_succeed_if.so user != root quiet_success

4.关闭虚拟机,重启后生效

在登陆界面,点下面的未列出

乌班图硬件虚拟化 乌班图硬件要求_乌班图硬件虚拟化_18

手动输入用户名root,登陆

文件的权限:

-owner:文件的属主owner

-r:文件是否可读read

-w:文件是否可写write

-x:文件是否可以执行excute

使用ls命令参看一个文件

ls -l simple.txt

乌班图硬件虚拟化 乌班图硬件要求_环境变量_19

乌班图硬件虚拟化 乌班图硬件要求_学习_20

乌班图硬件虚拟化 乌班图硬件要求_环境变量_21

d:目录 l:软链接 -:文件

修改文件权限 

chmod,即change file mode修改文件的访问权限

比如,一个文件simple.txt,想让别人也能修改chmod o+w simple.txt

其中,

o,表示other别人

+w,表示增写write权限

减权限chmod o-w simple.txt

chmod a+w simple.txt

所有人all添加w权限

chmod a-w simple.txt

所有人减去w权限

chmod u+w simple.txt

仅用户user自己的权限+w

修改别other的权限-w

只要文件的属主或者root可以修改文件权限

省略写法

chmod +w simple.txt

chmod -w simple.txt

默认是修改自己和本组的权限

修改文件的属主

chown,即change owner修改文件的属主

一般来说,每个用户只操作自己的用户目录所以chown命令并常用

示例:

1在/opt目录下建立一个文件夹software

2将software目录分配给用户buzhitianendili

su root

mkdir /opt/software

chown -R(递归,如果目录下有子文件就一并修改了) buzhitianwendili

/opt/software/

只有文件的owner和root才有权更改属主

可执行脚本

脚本script,一种解释执行的程序

Linux下常见的三种脚本程序

shell脚本 *.sh

Perl脚本 *.pl

python脚本 *.py

脚本程序,本质是一个文本文件

1它是一个文本文件

2它具有可执行权限

脚本程序都是由解释器来执行的

shell脚本解释器:/bin/sh

perl脚本解释器:/bin/perl

python脚本解释器:/bin/python3

执行一个脚本,以下俩种方式等效

./hello.py

/bin/python3 hello.py

shell脚本

shell脚本,按shell的语法写出来的脚本

是linux自带的脚本语言

相当于Windows下的dos批处理脚本

1.编辑一个文本文件,保存为hello.sh

# !/bin/sh

echo "hello,word"

1.添加可执行权限

chmod +x hello.sh

3.执行程序

./hello.sh

1第一行必须声明解释器

# !/bin/sh

2必须有x权限,才能够执行

比如,一个程序只有自己执行,别人不能执行

rwxr--r--

3.执行程序时,必须加上路径

./hello.sh

python脚本,比shell要强大一些

对于C/java工程师,3天可以学会python

跟shell一样的步骤

SHELL中的变量--环境变量

SHELL,是一个脚本编程语言

1.定义变量

2.执行命令echo ls cd cp

3.if判断逻辑,while循环逻辑

4.自定义的函数

#!/bin/sh

#定义变量

OUTDIR=/opt

#使用变量

echo "output to : ${OUTDIR}"

IS ${OUTDIR}

1.定义一个变量

NAME=value

等号左右俩侧不要多加空格

2.使用一个变量

${NSME}

如果已经有了定界符,则可以简写为$NSME

例如echo ${NSME}/build/

环境变量

环境变量,就是存在当前环境中的变量

无论Linux,还是Windows,都是环境变量

比如,最常用的环境变量path,java_hcme

定义环境变量

export OUTDIR=/opt/

显示环境变量

echo ${OUTDIR}

查看所有环境变量

printenv

环境变量的使用

可以在当前终端中使用

可以在shell脚本中调用

演示:在shell脚本中调用一个环境变量

在命令行中定义的环境变量,只有对当前shell终端有效

用户环境变量

定义在~/.profile中

在主目录下

ls -la

其中,a表示all,显示所有文件

在Linux下,以.开头的文件为隐藏文件

1.在文本编辑器打开-/.profile

gedit ~/.profile

2.添加

export Java_HOME=/opt/jdk1.8

保存并关闭

3.注销,重新登录后生效

echo $Java_HOME

原理:当用户打开终端时,会自动运行.profile,将变量注入到当前环境中。

1.以点号.开头的文件为隐藏文件

ls -a 查看所有文件

2.此配置只对当前用户有效,因此每个用户都有自己的配置文件.profile

3.有的Linux系统上,使用.bash_profile

系统环境变量

系统环境变量:定义在/etc/profile中

此中的环境变量对所有用户有效

以root身份执行

gedit /etc/profile

但是,一般不直接修改/etc/profile

而是在/etc/profile.d/创建一个自定义的脚本

1用gedit创建一个脚本

gedit /etc/profile.d/myprofile.sh

2定义环境变量

export TOMCAT=/opt/tomcat

3注销并重新登录

重新登录后,环境变量生效

PATH环境变量

先来看一个问题,创建一个可执行脚本hello.sh

直接执行:

明明就在当前目录下,为什么提示找不到?

乌班图硬件虚拟化 乌班图硬件要求_乌班图硬件虚拟化_22

PATH,是最常见的一个环境变量用于描述可执行程序的搜索路径

echo $PATH

多个路径之间以冒号分隔

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin

乌班图硬件虚拟化 乌班图硬件要求_环境变量_23

1编辑/etc/profile.d/myprofile.sh

乌班图硬件虚拟化 乌班图硬件要求_乌班图硬件虚拟化_24

设定PATH环境变量

export PATH=$PATH:/opt/tomcat/bin 

2.注销重启

乌班图硬件虚拟化 乌班图硬件要求_乌班图硬件虚拟化_25

VMware网络环境

1检查虚拟网络编辑器

        以管理员方式运行VMware

        打开(编辑)虚拟网络编辑器

        查看NAT方式下,虚拟子网的网段 如

乌班图硬件虚拟化 乌班图硬件要求_学习_26

 检查虚拟网卡

控制面板,“网络与共享中心|更改适配器设置”默认地,有VMnet1和VMnet8俩个虚拟网卡

如果没有找到VMnet1和VMnet8俩个虚拟网卡,请卸载VMware重装

注意:以管理员方式运行安装程序,会更好

乌班图硬件虚拟化 乌班图硬件要求_ubuntu_27

3检查虚拟机的网络配置:NAT模式

乌班图硬件虚拟化 乌班图硬件要求_乌班图硬件虚拟化_28

虚拟机联网

虚拟机联网设置:

1检查虚拟机硬件是否为NAT方式

2登陆Ubuntu系统,右上角设置

设置面板左侧,“网络”

检查IPv4/DHCP设置(默认设置即可,不需要更改)

3.检查IP地址

我的演示环境IP:192.168.43.129

4.访问外网测试

ping www.baidu.com

按CTRL+C中断

注意:宿主机本身必须已经连接外网

乌班图硬件虚拟化 乌班图硬件要求_linux_29

可以在图形界面下设置网络,也可以在终端里用命令行方式设置

与宿主机互联

参看宿主机的IP地址

乌班图硬件虚拟化 乌班图硬件要求_环境变量_30

乌班图硬件虚拟化 乌班图硬件要求_linux_31

 

乌班图硬件虚拟化 乌班图硬件要求_环境变量_32

手动配置网络

在终端里,以命令行方式来配置网络

常见命令:ifconfig,netstat等

默认地,Ubuntu下面不带ifconfig命令

需要使用apt软件包管理器

apt install net-tools 安装一个软件包

apt remove net-tools 移除一个软件包

apt search xxx 搜索

apt list  | grep xxx 列表

乌班图硬件虚拟化 乌班图硬件要求_linux_33

这样就可以使用ifconfig命令了

1.查看网络配置

ifconfig(winds下的是ipconfig)

其中,if表示interface网络接口

会列出所有的网络接口,及各个接口的状态

2.开启/禁用网络

sudo ifconfig xxx up

sudo ifconfig xxx down

FTP服务器

思考:怎么把文件传到Ubuntu主机上?

1U盘拷贝

2网络传输

FTP

SFTP

使用FTP来传输文件。

客户机FileZilla(windows)

服务器vsftpd(ubuntu)\

乌班图硬件虚拟化 乌班图硬件要求_环境变量_34

SSH服务器

使用ssh协议,可以实现

1远程终端

2文件传输

1使用Xshell远程登录

2使用Xftp传输文件

vim文本编辑

vi / vim,一个基于控制台的文本编辑器

gedit,一个基于GUI的文本编辑器

其中,vim是vi的升级版,演示使用vim命令

1打开文本编辑

vim abc.txt

如果目标文件存在,则打开编辑;如果不存在,会新建一个文件

如果系统上没有vim,就安装一下:

sudo spt install vim

2切换模式

编辑模式Insert Mode :按i键

命令模式Command Mode:按ESC键

3退出编辑

(1)按ESC键,退出命令模式

(2)输入:wq 保存并退出

输入:q 退出

输入:q! 强制退出(放弃保存)

vim更多的用法

VIM的完全用法非常复杂

花样繁多,几乎键盘上的每一个都是快捷键        

不建议深入研究,vim本身是一个低效率的工具

Linux文本文件的编辑

1桌面环境:gedit

2终端环境:

少量修改:vim

大量修改:在Windows上编辑,然后传到Linux

文本文件的上传

推荐:在Windows上编辑,然后上传到Linux

使用notepad++或者其他的专业编辑器

文本文件的换行符

Windows:\r\n

linux:\n

可以在notepad++里观察到此区别

视图 | 显示符号 | 显示行尾符

换行符的转换:

编辑 | 文档格式转换 | 转换为Unix格式

注意:只要在编辑shell脚本时,才需要转换

其他格式的文件一般都不需要转换,如*.xml,*.java

Java的安装

先安装java的软件包

JRE:

openjdk-8-jre-headless

JDK:

openjdk-8-jdk-headless

其中,openjdk是jdk的免费版本,推荐jdk8

乌班图硬件虚拟化 乌班图硬件要求_linux_35

运行java程序

安装openjdk-8-jre-headless

ls /usr/bin/java

默认放在/usr/bin下,不需要额外设置PATH

提示:如果放在自定义位置,需要设置PATH

export PATH=$PATH:/opt/jdk8/bin

运行java程序

1在Windows上开发和调试

2发布

-class文件

-普通jar文件/可执行jar文件

俩种jar文件的运行方式不同:

java -cp your_program.jar your.MainClass

java -jar your_program.jar

3上传至Linux:FTP/SFTP

4运行程序

        java -jar simple.jar

5权限因素,自行检查

-程序里需要访问系统文件,如/etc/,

-程序里需要开启TCP端口,如80,得用root运行。。。

注意,javaGUI的程序不能在终端里运行

java启动脚本

一般地,需要创建一个脚本,以便快键地启动程序

参考run_java.sh

-设置工作目录

-设置必要的环境变量

-设置JVM运行参数

-运行程序

创建运行脚本

使用run_java.sh来运行java程序

1修改run_java.sh

2转换为Unix风格

3上传到Linux

4添加+x权限,运行脚本

在Windows上编辑shell脚本时,记得设置换行符

Windows:\r\n

linux:\n

Tomcat的服务器

Tomcat本身是一个Java程序,必须要有java的运行环境

下载Tomcat的Linux版本

http://tomcat.apache.org/

apche-tomcat-8.5.54.tar.gz

注意,Tomcat的版本和jdk版本有对应关系

tomcat8.5<>jdk8

以下操作到root身份执行

1上传到Ubuntu

2解压缩

tar -zxvf apache-tomcat-8.5.54.tar.gz

mv apache-tomcat-8.5.54 tomcat

运行Tomcat

Tomcat/bin.startup.sh

4检查tomcat进程是否在运行

ps -ef | grep java

netstat -anp | grep 8080

6关闭防火墙 ufw disable

7访问网站http://192.168.43.128:8080

8关闭Tomcat:

tomcat/bin/shutdown.sh

Tomcat需要有java的运行环境

Tomcat作为网络服务器,应该以root执行

启动startup.sh

关闭shutdown.sh

Tomcat的配置

Tomcat的配置文件:

/opt/tomcat/conf/server.xml

至少需要修改:端口,应用目录

1可以部署在/opt下,也可以部署在/root下

2网站的跟目录:ROOT,区分大小写

/opt/www_your_com/ROOT

3观察Tomcat的启动日志

cat /root/tomcat/logs/catalina.out

Tomcat启动日志

cat tomcat/logs/catalina.out

启动Tomcat服务后,应该观察一下日志,看有没有错误提示

认识catalina.sh

1启动Tomcat,相当于starup.sh

tomcat/bin/catalina.sh start

2停止Tomcat

tomcat/bin/catalina.sh.stop

3前台运行Tomcat(用于调试)

tomcat/bin/catalina.sh run

Tomcat启动脚本

Tomcat自带的脚本

starup.sh

shutdown.sh

catalina.sh

实际上,starup.sh和shutdown.sh的内部,都是调用了catalina.sh

创建一个脚本run_tomcat.sh

以后台方式运行服务

./run_tomcat.sh start

停止服务

./run_tomcat.sh stop

在前台方式运行(当前窗口运行,方便打印调试)

./run_tomcat.sh run

其中,参数star/stop/run会间接地传给catalina.sh

程序与进程

程序program:指一个程序文件,如notepad.exe

进程Process:当一个程序运行起来,在操作系统内创建一条记录,用于描述和控制它的运行

比如:打开多个notepad.exe,则得到多个进程

ps -ef

其中,各个字段的含义:

User:执行者

PID:进程ID

PPID:父进程ID

STIME:启动时间

CMD:启动时调用的命令行

按名称 查找某个进程

ps -ef | grep java

其中,将前者输出的信息,重定向给grep命令过滤处理

进程管理

top命令,相当于Windows的任务管理器

查看所有进程

top

按上下键翻阅

按q或Ctrl+C中止退出

查看某个进程

top -p NNN

其中,NNN为目标进程的PID

所有,可以先用PS命令查找目标进程的PID 

使用kill命令,杀死一个进程

kill-9 NNN

或者

pkill name_of_progress

进程管理的几个命令:

ps -ef

ps -ef | grep xxx

top

top -p NNN

kill -9 NNN

pkill name_of_program

ctrl + c 中止当前进程(前台进程)

前台与后台进程

前台进程:运行在前台

后台进程:运行在后台

./run_tomcat run 以前台方式运行(ctrl+c中止)

./run_tomcat start 以后台方式运行

区别1:有无控制台

前台进程:

有控制台,输出至当前终端

后台进程:

无控制台,看不到输出

区别2:有无父进程

前台进程:

有父进程,父进程即为当前终端

当终端关闭时,前台进程被一同关闭

后台进程:

父进程为系统进程(1号进程)

当终端关闭时,后台进程不守影响

区别3:强行终止

前台进程:

使用Ctrl+c强行终止

后台进程:

使用kill-9NNN强行终止

前台进程:

1控制台:有控制台,输出至当前终端

2关闭终端时将关闭前台进程

3使用Ctrl+C强行终止

后台进程:

1无控制台,看不到输出

2关闭终端对后台进程没有影响

3使用kill-9NNN强行终止

Redis服务器

Redis,一款基于内存的key-value型数据库

MySQL服务器

MySQL,一款常见的数据库服务器