复习Linux
入门概述
在服务器端,在开发领域linux越来越受欢迎
Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX(可移植操作系统接口)和UNIX的多用户,多任务,支持多线程和多CPU的操作系统
Linux发行版
就是将Linux内核与应用软件做一个打包
Xshell远程连接服务器
阿里云开启安全组:映射端口,获取外网ip,修改密码
xshell建立会话,开启连接
ctrl+鼠标滚轮 放大和缩小字体
开机关机和基本目录介绍
开机登录
开机会启动许多程序,他们在windows叫做服务(service),在Linux叫做守护进程(daemon)
用户的登录方式:
-
命令行登录
-
ssh登录
-
图形界面登录
最高权限为root
关机
服务器上很少有关机的操作
sync 同步数据 linux没有错误就代表操作成功
shutdown
reboot 重启
halt 关闭系统
系统目录结构
一起皆文件
根目录 / ,所有的文件都挂载在这个节点上
登录系统后,在当前命令窗口下输入命令
ls /
得到如下
bin boot dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
-
/bin:
bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。 -
/boot:
这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。 -
/dev :
dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。 -
/etc:
etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。 -
/home:
用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的 -
/lib:
lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 -
/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。 -
/media:
linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。 -
/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。 -
/opt:
opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 -
/proc:
proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
-
/root:
该目录为系统管理员,也称作超级权限者的用户主目录。 -
/sbin:
s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。 -
/selinux:
这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。 -
/srv:
该目录存放一些服务启动之后需要提取的数据。 -
/sys:
这是 Linux2.6 内核的一个很大的变化。该目录下安装了 2.6 内核中新出现的一个文件系统 sysfs 。
sysfs 文件系统集成了下面3种文件系统的信息:针对进程信息的 proc 文件系统、针对设备的 devfs 文件系统以及针对伪终端的 devpts 文件系统。
该文件系统是内核设备树的一个直观反映。
当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
-
/tmp:
tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。 -
/usr:
usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。 -
/usr/bin:
系统用户使用的应用程序。 -
/usr/sbin:
超级用户使用的比较高级的管理程序和系统守护程序。 -
/usr/src:
内核源代码默认的放置目录。 -
/var:
var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 -
/run:
是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
常用的基本命令
目录管理
绝对路径 相对路径
cd 切换目录
切换目录
绝对路径以 / 开头,可以在任意地方使用
相对路径
cd .. 返回上级目录
ls 列出目录
-a参数:all,查看全部的文件,包括隐藏文件
-l参数:列出所有的文件,包含文件的属性和权限,没有隐藏文件,linux命令可以组合使用
pwd显示当前所在目录
mkdir 创建目录
mkdir
mkdir -p 创建层级目录
rm删除目录
rmdir 删除目录
rmdir -p 删除层级
cp 复制文件或者目录
cp old new
rm 移除文件或目录
-f 忽略不存在的文件,不会出现警告,强制删除
-r递归删除目录或文件
-i互动,删除询问是否删除
mv移动文件或者目录 重命名
-f 强制
-u只替换已经更新过的文件
基本属性
[root@ming /]# ls -ll
total 20
lrwxrwxrwx. 1 root root 7 May 11 2019 bin -> usr/bin
dr-xr-xr-x. 5 root root 4096 Aug 24 14:32 boot
drwxr-xr-x 19 root root 2940 Oct 11 13:17 dev
drwxr-xr-x. 94 root root 8192 Oct 11 13:17 etc
drwxr-xr-x. 3 root root 34 Oct 11 16:16 home
lrwxrwxrwx. 1 root root 7 May 11 2019 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 11 2019 lib64 -> usr/lib64
drwxr-xr-x. 2 root root 6 May 11 2019 media
drwxr-xr-x. 2 root root 6 May 11 2019 mnt
drwxr-xr-x. 2 root root 6 May 11 2019 opt
dr-xr-xr-x 108 root root 0 Oct 11 13:17 proc
dr-xr-x---. 6 root root 189 Oct 11 14:52 root
drwxr-xr-x 30 root root 880 Oct 11 13:17 run
lrwxrwxrwx. 1 root root 8 May 11 2019 sbin -> usr/sbin
drwxr-xr-x. 2 root root 6 May 11 2019 srv
dr-xr-xr-x 13 root root 0 Oct 11 2020 sys
drwxrwxrwt. 4 root root 255 Oct 11 16:14 tmp
drwxr-xr-x. 12 root root 144 Aug 24 14:24 usr
drwxr-xr-x. 21 root root 4096 Aug 24 06:28 var
实例中,bin 文件的第一个属性用 d 表示。d 在 Linux 中代表该文件是一个目录文件。
在 Linux 中第一个字符代表这个文件是目录、文件或链接文件等等。
- 当为 d 则是目录
- 当为 - 则是文件;
- 若是 l 则表示为链接文档(link file);
- 若是 b 则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
- 若是 c 则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)。
接下来的字符中,以三个为一组,且均为 rwx 的三个参数的组合。其中, r 代表可读(read)、 w 代表可写(write)、 x 代表可执行(execute)。 要注意的是,这三个权限的位置不会改变,如果没有权限,就会出现减号 - 而已。
每个文件的属性由左边第一部分的 10 个字符来确定
从左至右用 0-9 这些数字来表示。
第 0 位确定文件类型,第 1-3 位确定属主(该文件的所有者)拥有该文件的权限。
第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。
其中,第 1、4、7 位表示读权限,如果用 r 字符表示,则有读权限,如果用 - 字符表示,则没有读权限;
第 2、5、8 位表示写权限,如果用 w 字符表示,则有写权限,如果用 - 字符表示没有写权限;第 3、6、9 位表示可执行权限,如果用 x 字符表示,则有执行权限,如果用 - 字符表示,则没有执行权限。
修改文件属性
chgrp:更改文件属组
chgrp [-R] 属组名 文件名
-R递归更改文件属组
chown:更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名:属组名 文件名
chmod 更改文件的9个属性
chmod [-R] xyz 文件或目录
linux文件的基本属性有两种设置方法,一种是数字,一种是符号
r:4 w:2 x:1
多种查看文件方式学习
linux系统中使用以下命令来查看文件的内容:
cat:由第一行开始显示文件内容
tac: 从最后一行开始显示,可以看出tac是cat的倒着写
nl显示的时候,顺道输出行号
more一页一页的显示文件内容 空格代表翻页 回车代表向下看一行
less与more类似,但是比more更好的是,他可以向前翻页 空格翻页 上下键翻动页面 退出 q命令 可以在界面加 /字符串 寻找字符串向下查询 ?字符串向上查询 n继续寻找下一个 N向上寻找
head只看头几行
tail只看尾巴几行
你可以使用man [命令] 来查看各个命令的使用文档,如:man cp
网络配置目录:/etc/sysconfig/network-scripts centOS 7
默认配置文件:ifcfg-eth0
ifconfig查看网络配置
硬链接和软链接
Linux的链接分为两种:硬链接 软链接
硬链接:A--B 他们两个指向了同一个文件,允许同一个文件拥有多个路径,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删
软链接:类似Window下的快捷方式,删除源文件,快捷方式也访问不了
创建链接:ln 命令
ln f1 f2 硬链接
ln -s f1 f3 f3是f1的软链接
touch 命令创建文件
echo 输入字符串,也可以输入到文件中
vim编辑器
vim通过一些插件可以实现和IDE一样的功能
vim是从vi发展出来的一个文本编辑器
三种使用模式
vim file 如果存在就是编辑文件, 不存在就创建文件
基本上vim/vi共分为三种模式
命令模式(Command mode) 输入模式(Inser mode)底线命令模式(Last line mode)
命令模式:用户刚刚启动了vi/vim,便进入了命令模式,此状态下敲击键盘动作会被vim识别为命令,而非输入字符
常用的命令:
- i切换到输入模式,以输入字符
- x删除当前光标所在处的字符
- :切换到底线模式,以在最底一行输入命令,如果是输入模式,要退出输入模式
:wq 保存退出
:set nu 显示行号
Linux账号管理学习
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
- 用户账号的添加,删除与修改
- 用户口令的管理
- 用户组的管理
useradd 命令 添加用户
useradd -选项 用户名
-m :自动创建这个用户的主目录 /home/xu
理解一下本质,linux一切皆文件
userdel删除用户
userdel -r xu 删除用户的时候将他的目录页一并删掉
usermod修改用户
usermod -d /ff/gg xu
修改完毕之后查看配置文件即可
切换用户
root用户
- 切换用户的命令为su username
- 从普通用户切换到root用户,可以使用命令 sudo su
- 在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令
- 在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加-
# 超级用户
$ 普通用户
hostname #查看主机名
hostname xu #修改主机名 修改完毕重新连接
用户的密码设置问题
passwd xu
给用户设置密码
linux上密码是不显示的 正常输入就好了
如果是超级用户的话
passwd username
如果是普通用户
passwd
锁定账户
passwd -l username #锁定之后这个用户就不能登录了
passwd -d username #密码没有也不能登录了
用户组管理
属主 属组
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理,不同Linux系统对用户组的规定有所不同,如linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建
用户组的管理涉及用户组的添加,删除和修改,组的增加,删除和修改实际上就是对/etc/group文件的更新
创建一个用户组groupadd
创建完一个用户组可以得到一个组的id,这个id是可以指定的 groupadd -g 520 ming 如果不指定就是自增1
删除用户组 groupdel groupname
修改用户组信息 groupmod -选项 参数 groupname
文件的查看
/etc/passwd
用户名:口令(登录密码,不可见):用户标识号:组标识号:注释性描述:主目录:登录shell
登录口令:把真正的加密后的用户口令存放到/etc/shadow文件中,保证密码的安全性
磁盘管理
df(列出文件系统整体的磁盘使用量) du(检查磁盘空间使用量)
df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.8G 0 1.8G 0% /dev
tmpfs 1.8G 0 1.8G 0% /dev/shm
tmpfs 1.8G 452K 1.8G 1% /run
tmpfs 1.8G 0 1.8G 0% /sys/fs/cgroup
/dev/vda1 40G 2.7G 38G 7% /
tmpfs 364M 0 364M 0% /run/user/0
du
du -a
Mac或者想使用Linux挂载我们的一些本地磁盘或者文件
mount /dev/xx /mnt/xx 挂载
umount -f /mnt/x 卸载
进程管理
对于我们开发人员来说,其实linux更多偏向于使用即可
什么是进程
- 在linux中,每一个程序都是由自己的一个进程,每一个进程都有一个id号
- 每一个进程呢,都会有一个父进程
- 进程有两种存在方式,:前台,后台
- 一般的话服务都是后台运行的,基本的程序都是前台运行的
ps #查看当前系统中正在执行的各种进程的信息
ps -a #显示当前终端运行的所有的进程信息
ps -u # 以用户的信息显示进程
ps -x #显示后台运行进程的参数
ps -aux|
| #管道符
grep #查找文件中复合条件的字符串
ps -ef #可以查看到父进程的信息
看父进程我们一般可以通过目录树结构来查看
pstree -p 显示父id
-u 显示用户组
结束进程:杀掉进程,
kill -9 进程id
但是平时写的一些java代码死循环了,可以kill -9 进程id
环境安装
安装软件一般有三种方式,rpm(jdk示例,在线发布一个springboot项目),解压缩安装(tomcat示例,启动并通过外网访问,发布网站),yun在线安装(docker安装,直接安装运行)
安装python
tar -zxvf pythonxx.tgz
./configure --prefix=/usr/local/python
make
make install
建立软链接 ,覆盖或者用一个新的命名python快捷方式 区别系统已有的
ln -s /usr/local/python/bin/python /usr/bin/python
如果是centos7 yum默认的是python2解释器
将yum支持改回python2
vi /usr/bin/yum
vi /usr/libexec/urlgrabber-ext-down
第一行修改即可
JDK安装
下载JDK rpm 去oracle官网
安装java环境
# 检测当前系统是否存在java环境 java -version
# 如果有的话就需要卸载
# rpm -qa|grep jdk #检查jdk的版本
# rpm -e --nodeps 查出来的jdk版本号
#卸载完毕后即可安装jdk
#rpm -ivh rpm包
#配置环境变量 在/etc/profile 文件的最后面增加java的配置和windows安装环境变量一样
JAVA_HOME=/usr/java/jdk1.8.0_261-amd64
CLASSPATH=%JAVA_HOME%/lib:%JAVA_HOME%/jre/lib
PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export PATH CLASSPATH JAVA_HOME
# 让这个文件生效 source /etc/profile
#firewall-cmd --list-ports #只看端口信息
#firewall-cmd --list-all #查看全部信息
#systemctl status firewalld 查看防护墙状态
#systemctl start firewalld 开启
#systemctl stop firewalld 关闭
# service firewalld start 开启
# service firewalld stop 关闭
# service firewalld restart 重启服务
#firewall-cmd --permanent --zone=public --add-port=3306/tcp 开启端口
--zone 作用域
--add-port=80/tcp #添加端口 ,格式为:端口/通讯协议
--permanent #永久生效,没有此参数重启后生效
#systemctl restart firewalld.service 重启防火墙
Tomcat
ssm war就需要放到tomcat中运行
下载tomcat。官网下载即可,tomcat9
解压这个文件
tar -zxvf apache-tomcat-9.0.38.tar.gz
启动tomcat测试,./xx.sh即可运行
#执行 ./startup.sh
#停止 ./shutdown.sh
如果防火墙8080端口开了并且阿里云安全组也开放了,这个时候就可以直接访问远程了
上传完毕的项目直接购买自己的域名,备案解析过去即可
域名解析后,如果端口是80 -http 或者443 -https可以直接访问,如果是9000,8080,就需要通过Apache或者Nginx做一下反向代理即可,配置文件即可,如果想要上线自己的网站,那么就可以了
Docker安装(yum安装)
官网安装参考手册https://docs.docker.com/engine/install/centos/
yum在线安装
安装
检测CentOS 7
cat /etc/redhat-release
安装我们的准备环境
yum -y install 包名 # yum install 安装命令 -y 所有的提示都为y
yum -y intall gcc
yum -y intall gcc-c++
清除以前的版本
yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine
后面根据官网安装即可
yum install -y yum-utils
yum install -y zlib*
#配置阿里云镜像
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
#配置文件在/etc/yum.repos.d
#更新yum软件包索引
yum makecache fast #centOS8 没有fast参数 去掉即可
containerd.io最新版本下载
下载地址:https://mirrors.aliyun.com/docker-ce/linux/centos/8/x86_64/stable/Packages/
yum install containerd.io-1.3.7-3.1.el8.x86_64.rpm
yum install docker-ce #默认安装最新版本
#启动docker
systemctl start docker
#查看是否启动
ps -ef|grep docker
docker version #查看版本
测试
docker run hello-world #下载镜像
查看镜像
docker images
宝塔面板
傻瓜式安装