万字长文让你在 Linux 系统中游刃有余
source link: https://mp.weixin.qq.com/s/ZhMeamuWSlYtd-n7YRFLoA
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
点击上方“ 框架师 ”,选择“ 置顶公众号 ”
我们一起学习进步!
-
引言
-
本文来自个人学习笔记,希望有帮助到你,未经授权,禁止复制修改
-
Linux介绍
-
Windows的不足
-
Windows是收费的
-
系统长时间运行,安装多了,系统越来越慢,越来越不稳定。
-
病毒和流氓软件很多
-
-
Linux的优势
-
Linux系统是免费,很多还是开源的。
-
长时间运行,很稳定的
-
几乎没有病毒和流氓软件
-
学习Linux的好处
学会对Linux的基本操作是后端JavaEE程序员的必修课。做为一个后端JavaEE程序员,通常在Windows中开发完程序后,需要部署到一个相对比较安全,稳定的服务器中运行,这台服务器上安装的往往不是Windows操作系统,而是Linux操作系统。
windows默认安装完成软件就可以连外网,linux默认安装完软件是不可以连外网,必须防火墙放过才可以
linux的概述
Linux(linux is not unix)是基于Unix的开源、免费、多用户、多任务的操作系统,由于系统的稳定性和安全性。几乎成为程序代码运行的最佳系统环境。
linux的分类
-
按照市场的需求不同
-
图形界面
-
字符界面(推荐),特点:性能最优
-
-
按照原生程度不同
-
是第三方个人或组织在内核基础上进行二次开发(包装)
-
特点:功能应用更多,偏向应用,大多数发行版都是免费的
-
特点:免费
功能:主要解决操作系统底层,操作内存,cpu,硬盘,网卡。。。
-
内核版,linux之父(托瓦兹)团队开发
-
发行版(推荐使用)
-
Linux安装
两种安装方式
-
在PC电脑上进行安装
-
使用虚拟机安装
常见虚拟机软件
-
VMWare 软件,威睿公司,收费的(推荐使用,可以试用)
-
VirtualBox软件,免费的, 最开始是sun公司,由于被oracle收购了,所以目前属于oracle
windows主机连接linux虚拟机与虚拟机网卡介绍
命令 含义 ifconfig linux系统用于查看ip地址信息 ip addr linux系统用于查看ip地址信息在windows主机上使用dos命令ping进行拼通linux系统
ping www.mobaijun.com
使用客户端工具连接linux系统
常见的客户端软件
SecureCRT(操作客户端命令),SecureFx(用于传输文件)
XShell(操作客户端命令),XFtp(用于传输文件)
目录操作1—目录结构
linux系统没有盘符,一切从根目录/开始,如下图
根目录下所有子目录
image-20200525150911453常见的目录配置
目录 含义 bin目录 存放着所有linux系统的命令 root目录 超级管理员root用户的主目录 home目录 存放所有普通用户主目录的位置 usr目录 (unix shared resources)资源共享目录,所有用户都可以操作的目录,以后我们安装软件就安装到这里usr/local,这样所有用户都可以使用软件 etc目录 存储配置文件的目录,以后网卡配置文件,权限配置文件都在这里目录操作—切换—创建—查看
作用 改变目录/CD和目录名直接需要空格 / 切换到根目录 . 当前目录 .. 上一级目录 ~ 返回当前用户主目录 - 返回上一次目录创建目录
mkdir 目录名称 创建一个目录 mkdir -p 创建多级目录mkdir -p /父目录名称/子目录名称
-p,如果父目录不存在会先创建父目录再创建子目录
查看目录内容
ls参数 显示当前目录下的文件和目录 -l 以详细的方式显示当前目录下的文件和目录 -a 显示当前目录下的所有文件和目录,包含隐藏目录,.XXX开头的文件和目录是隐藏的目录操作搜索—重命名—复制—删除—帮助
find [目录名称] [-name'查询字符串'] 无参数 搜索当前目录和它的子目录所有文件和目录 目录名称 搜索指定目录下和他的子目录所有的文件和目录 -name '查询字符串' 指定具体查询字符串 *匹配多个字符串 ?匹配一个字符重命名与移动
-
重命名
-
移动
-
复制
-
删除
注意:千万不要rm -rf /* 会导致删除所有的文件或目录,导致系统崩溃
-
查看帮助文档
-
命令 --help 查看英文文档手册,使用q退出
-
man 命令 查看中文文档手册【推荐方式】,使用q退出
-
创建文件与查看文件内容
touch 文件1 文件2 创建一个或多个文件0字节大小 cat 文件名 查看文件所有内容 more 文件名 查看文件所有的内容,可以分屏显示 head 文件名 查看文件前10行 had -n 行数 文件名 查看前面指定的行数 tail 文件名 查看文件后10行 tail -n 行数 文件名 查看文件后指定的行数 less 文件名 查看文件所有内容-n 显示行号
PageUp 向前翻页
PageDown 向后翻页
q:退出
编辑文件内容
image-20200525154146121-
命令模式下命令
n:向后搜索
N:向前搜索 wp 保存并退出 q! 不保存强制退出 wp! 强制保存退出(只读文件使用)
压缩与解压
拓展名称 分类 .zip/.rar Windows系统压缩包 .tar 在Linux下的打包文件 .gz 在Linux下的压缩文件 .tar.gz 在Linux下的打包压缩文件-
压缩文件
-
解压文件
查看工作目录位置—查看进程—内存耗用—杀死进程
-
查看进程
-
杀死进程
-
查看系统内存整体耗用
搜索文件内容
grep是一种强大的文本搜索工具,它能使用字符串搜索文本,并把匹配的行和行号打印出来。
-
搜索
管道
管道就是“|”
-
命令
关机与重启
-
Linux/Windows
文件权限
image-20200525160550045-
每一类用户都有3个权限
-
r:读取权限, 只读
-
w: 写入权限 , 可以编辑文件
-
x: 执行权限, 由于某些文件是可以执行的,如有有执行权限才可以执行
-
-
操作权限
-
添加权限:chmod 用户或组+权限 资源文件或目录
-
删除权限:chmod 用户或组-权限 资源文件或目录
-
修改权限:chmod 用户或组=权限 资源文件或目录
-
crontab定时任务
命令 含义 crontab -l 查看当前用户的定时任务列表 crontab -e 进入编辑当前用户定时任务编辑器 crontab -r 删除当前用户的定时任务 * * * * * 命令 每分钟执行一次命令服务管理—自启动服务管理
image-20200525161016493-
服务管理的命令:systemctl start/stop/restart/status 服务名 操作服务启动/停止/重启/查看状态
-
设置服务开机启动:systemctl enable 服务名.service
-
设置服务开机不启动:systemctl disable 服务名.service
网络管理1-主机名管理
-
主机名称命令
# 查看主机名
$ hostname
# 修改主机名称 永久修改计算机名字,需要重启或使用bash刷新
$ hostnamectl set-hostname [args]
# 刷新
$ bash
网络管理2-网络服务管理
# 启动网络
$ systemctl start network
# 停止
$ systemctl stop network
# 重启
$ systemctl restart network
# 查看状态
$ systemctl status network
如果linux系统不能上网(内网和外网),需要检查网络服务
网络管理3-网卡激活管理
-
关闭网卡激活实现步骤
# 找到网卡配置文件ens32
$ cd /etc/sysconfig/network-scripts/ # 网卡配置文件目录
# 查看目录文件
$ ls
# 修改配置文件
$ vim ifcfg-ens32
# 修改配置,关闭网卡
ONBOOT=no
# 重启网络服务
$ systemctl restart network
# 测试是否可以联网
$ ping www.mobaijun.com
# 修改配置/激活网卡 修片配置文件ifcfg-ens33,开启网卡
$ ONBOOT=yes
# 重启网络服务
$ systemctl restart network
网络管理4-配置静态ip
-
IP配置类型
-
dhcp:动态IP
-
static:静态IP
-
-
配置静态IP步骤
-
域名服务器,根据域名获取对应的服务器ip地址,这样才可以访问外网
-
用于区别不同的网络,网关可以解决不同的网络通信,需要硬件支持路由器
-
用于标识ip地址的网络号是多少位
-
IP地址由网络号和主机号组成
-
给linux系统设置ip必须确定ip的地址、子网掩码、网关
-
IP地址(互联网协议地址):
-
子网掩码
-
网关
-
DNS
-
-
修改网卡配置
# 找到网卡配置文件ens32
$ cd /etc/sysconfig/network-scripts/ # 网卡配置文件目录
# 查看目录文件
$ ls
# 修改配置文件
$ vim ifcfg-ens32
# 修改配置,切换成静态模式
BOOTPROTO=static
# 最下方添加相关内容
IPADDR=192.168.56.135
GATEWAY=192.168.123.83
NETMASK=255.255.255.0
DNS1=114.114.114.114
# 重启网络服务
$ systemctl restart network
# 测试是否可以联网
$ ping www.mobaijun.com
网络管理5-克隆虚拟电脑
-
克隆步骤
-
关闭当前虚拟机linux系统
-
选择当前虚拟机/管理/克隆/
-
修改克隆出来的静态ip
-
修改计算机的名字
-
网络管理6-域名映射
-
url域名访问服务器通信原理
-
本地域名映射文件位置
-
Windows系统本地域名映射位置:
-
c:\windows\System32\drivers\etc\hosts
-
-
Linux系统本地域名映射位置:
-
/etc/hosts
-
-
修改本地域名映射实现步骤
# 编辑本地etc/hosts域名映射文件
$ vim /etc/hosts
# 添加域名映射IP的配置
192.168.123.83 www.mobaijun.com
# 保存退出
$ wq
# 测试效果
$ ping www.mobaijun.com
网络管理7-查询网络进程使用端口号
常用命令
netstat [args] null 显示网络状态 -n number 显示程序的IP地址和端口号 -t TCP 只显示TCP协议链接的程序 -l listener 显示监听中的Socket -p Programs 显示程序的名称 -u UDP 查询udp协议通信的程序# 查看端口、udp、tcp、正在监听、显示程序名的所有程序
$ netstat -nutlp
防火墙管理
-
防火墙作用
是防止外界访问系统内部的程序,防火墙允许哪个软件访问外网,这个软件才可以进行网络通信
SSH有密登录和免密登录
-
SSH实现免密登录步骤
# 在本地生成一对公钥和私钥
$ ssh-keygen
# 将公钥发送给远程服务器,必须给出远程服务器的密码本地才接收公钥
$ ssh-copy-id address
# 查看公钥
$ cat authorized_keys
# 发送登录请求,实现免密登录
$ ssh address
部署项目1-本地软件安装命令rpm
RedHat Package Manager(RPM), 擅长安装本地的软件
-
rpm的作用
-
查询已安装的软件
-
安装软件
-
卸载软件
-
-
常用命令
-
测试
# 查询所有已安装软件
$ rpm -qa
# 安装指定的软件包
$ rpm -ivh <包名>
# 强制卸载指定软件包
$ rpm -e --nodeps <包名>
RPM_jdk安装
# 查询本地是否有JDK
$ rpm -qa | grep java
# 查询是否安装JDK
$ rpm -qR jdk
# 新建soft包存放未解压的安装包
$ mkdir soft
# 将jdk软件上传到linux系统/soft目录下并解压到指定目录
$ tar -xvf jdk-8u251-linux-x64.tar.gz -C /usr/local
# 配置linux的jdk环境变量,操作一个/etc/profile环境变量配置文件
$ vim /etc/profile
# 配置环境变量
#set java environment
JAVA_HOME=/usr/local/jdk1.8.0_251
CLASSPATH=.:$JAVA_HOME/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH
# 重载环境变量配置文件
$ source /etc/profile
# 查看jdk环境变量是否配置成功
$ java -version
更换YUM源
# 安装wget
$ yum install -y wget
# 下载CentOS 7的repo文件
$ wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清除缓存
$ yum clean all
# 生成缓存
$ yum makecache
# 备份CentOS 7系统自带yum源配置文件
$ mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 打开CentOS-Base.repo文件,将文件中的所有http开头的地址更改为https
$ vim /etc/yum.repos.d/CentOS-Base.repo
# 更新YUM
$ yum update
部署项目3-mysql安装-启动-远程授权
-
MySQL安装
# 查看CentOS是否自带的MySQL,如果已经安装需要卸载。如果没有找到,则表示没有安装
$ rpm -qa | grep mysql
# 在线获取CentOS7的mysql的rpm安装文件,直接执行如下命令:
$ wget https://repo.mysql.com//mysql80-community-release-el7-1.noarch.rpm
# 执行安装命令
$ rpm -ivh mysql80-community-release-el7-1.noarch.rpm
# 得到两个配置文件,进入/etc/yum.repos.d目录下查询
$ cd /etc/yum.repos.d
# 编辑mysql-community.repo文件,配置资源库下载版本选择
$ vim mysql-community.repo
# 编辑需要下载的MySQL版本将`enable=0`改为`enable=1`
{
[mysql55-community]
name=MySQL 5.5 Community Server
baseurl=http://repo.mysql.com/yum/mysql-5.5-community/el/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql
}
# 下载安装客户端、服务器端、工具包
$ yum -y install mysql-community-client mysql-community-server mysql-community-devel
-
启动
# 启动MySQL
$ systemctl start mysqld
# 将mysql加到系统服务中并设置开机启动
$ systemctl enable mysqld
# 登录mysql,root用户默认没有密码
$ mysql -uroot
# 在mysql中修改自己的密码
$ set password = password('root');
# 退出
$ exit
# 重新登录
$ mysql -uroot -proot
-
设置远程连接权限、开放端口号
开启mysql的远程登录权限,默认情况下mysql为安全起见,不支持远程登录mysql,所以需要设置开启,并且刷新权限缓存。远程登录mysql的权限登录mysql后输入如下命令
# 开启mysql的远程登录权限
$ grant all privileges on *.* to 'root'@'%' identified by 'root';
# 刷新权限缓存
$ flush privileges; -
开放Linux的对外访问的端口3306
# 开放的端口永久保存到防火墙
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
$ systemctl restart firewalld
-
Navicat测试
部署项目4-tomcat安装-启动
-
下载Tomcat
# 将软件上传到linux系统/soft目录下并解压
$ tar -xvf apache-tomcat-8.5.55-src.tar.gz -C /usr/local/
# 改名
$ mv apache-tomcat-8.5.55-src tomcat8
# 进入bin目录
$ cd /usr/local/apache-tomcat-8.5.55-src/bin
# 启动tomcat服务器
$ ./startup.sh
# 提示权限不够解决方案
$ chmod u+x *.sh
# 重启应用服务
$ ./startup.sh
# 开放linux系统防火墙8080端口
$ firewall-cmd --zone=public --add-port=8080/tcp --permanent
# 检查是否生效
$ firewall-cmd --zone=public --query-port=8080/tcp
# 重启防火墙
$ systemctl restart firewalld
# windows客户端使用浏览器访问linux的8080端口tomcat
$ 192.168.123.83:8080
# tomcat无法找到JAVA_HOME解决方案
# 查看环境变量是否有问题
$ echo $JAVA_HOME
$ echo $JRE_HOME
# 定位到tomcat/bin/setclasspath.sh目录下,文件开头添加环境变量
JAVA_HOME=/usr/local/jdk1.8.0_251
JRE_HOME=/usr/local/jdk1.8.0_251/jre
# 删除tomcat和日志文件
$ rm -rf /usr/local/tomcat
$ rm -rf /usr/local/logs/*.txt &
$ rm -rf /usr/local/logs/*.log &
image-20200529110825215部署项目5-项目发布
-
链接Linux数据库(导入数据库)
-
在IDEA中导出war包
-
将war包部署到linux里面的tomcat里面的webapps里面
-
浏览器访问
解决mysql底层乱码问题
-
修改
druid.properties
配置文件,设置mysql使用utf-8解码,添加?characterEncoding=utf8
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/linux?characterEncoding=utf8
username=root
password=root
initialSize=5
maxActive=50
maxWait=30000
minIdle=3
-
将当前项目需要重新打包,再部署到linux上tomcat的webapps里面
-
关闭tomcat,执行shutdown.sh
-
启动tomcat,执行startup.sh
用户管理1-用户的管理
-
添加用户
# 添加用户,进入/home文件夹/创建用户和主目录
$ cd /home
# 查看
$ ll
# 创建组名
$ useradd -m mobaijun
# 查看
$ ll
# 创建用户名
$ useradd -mg mobaijun tom
# 查看
[root@mobai home]# ll
总用量 0
drwx------. 2 mobaijun mobaijun 62 5月 29 11:25 mobaijun
drwx------. 2 tom mobaijun 62 5月 29 11:25 tom
# 查看/etc/passwd用户内容
$ cat /etc/passwd
# passwd文件用户内容
mobaijun:x:1000:1000::/home/mobaijun:/bin/bash
tom:x:1001:1000::/home/tom:/bin/bash
image-20200529113324846-
给用户设置密码并切换用户
# 设置密码
$ passwd mobaijun
# 切换用户
$ su mobaijun
image-20200529113602453-
删除用户
# 切换回主目录
$ su root
# 删除用户组
$ userdel -r tom
image-20200529114209310-
修改登录名
# 修改登录名称
$ usermod -1 Rose mobaijun
总结
-
useradd:添加用户
-
passwd:给用户设置密码
-
su:切换用户
-
userdel:删除用户
-
usermod:修改用户登录名
用户管理2-组与用户的管理
-
添加组
# 添加组
$ groupadd [组名]
# 查看组
$ cat /etc/group
-
用户添加指定组
# 进入主目录
$ cd /home
# 修改用户组名称
$ usermod -g [新组名] [组名]
-
用户从指定组中删除
# 用户从指定组中删除
$ gpasswd -d 用户 组名
# 查看
$ ll
# 查看配置文件
$ cat /etc/group
-
修改组名
# 修改组名
$ groupmod -n 新组名 组名
-
删除组
# 删除组
$ groupdel 组名
# 查看
$ cat /etc/group
总结
-
groupadd:添加组
-
gpaddwd:将用户从组中删除
-
groupmod:修改组名
-
groupdel:删除组
用户管理3-给普通用户设置 sudo超级管理权限
# 编辑配置文件
$ vim /etc/sudoers
# 切换用户
$ su mobaijun
# 设置权限
$ sudo useradd -m 用户名
# 查看
$ cd /home
—END—
好了各位小伙伴们,以上就是本文的全部内容了。如果觉得不过瘾,还想看到更多,我再给大家推荐几篇。
日常操作来了!如果觉得这篇文章有点用的话, 求在看、求转发 ,明人不说暗话,我喜欢这种被大家伙宠爱的感觉。
one more thing!如果大家想要第一时间看到墨白更新的文章,可以扫描下方的二维码,关注我的公众号。我们下篇文章见!
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK