引言
学会对Linux的基本操作是后端JavaEE程序员的必修课。做为一个后端JavaEE程序员,通常在Windows中开发完程序后,需要部署到一个相对比较安全,稳定的服务器中运行,这台服务器上安装的往往不是Windows操作系统,而是Linux操作系统。
windows默认安装完成软件就可以连外网,linux默认安装完软件是不可以连外网,必须防火墙放过才可以
Linux(linux is not unix)是基于Unix的开源、免费、多用户、多任务的操作系统,由于系统的稳定性和安全性。几乎成为程序代码运行的最佳系统环境。
两种安装方式
常见虚拟机软件
命令 | 含义 |
---|---|
ifconfig | linux系统用于查看ip地址信息 |
ip addr | linux系统用于查看ip地址信息 |
在windows主机上使用dos命令ping进行拼通linux系统
ping www.mobaijun.com
SecureCRT(操作客户端命令),SecureFx(用于传输文件)
XShell(操作客户端命令),XFtp(用于传输文件)
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 '查询字符串' | 指定具体查询字符串 |
*匹配多个字符串 | |
?匹配一个字符 |
move=mv | |
---|---|
mv 旧名称 新名称 | |
mv既可以改文件也可以改目录 |
mv 源目录 目标目录 | |
---|---|
mv将源目录移动到目标目录下 |
cp [参数] 源文件或目录 目标目录 将源文件或整个目录复制到目标目录下 | |
---|---|
-r recursion连同子目录下所有文件全部复制 |
rm | 参数 文件或目录1 文件或目录2可以同时指定多个文件或目录 |
---|---|
-r | recursion 连同子目录一起删除,只用来删除目录 |
-f | 强制删除,删除之前会确认,需要回答yes/no |
注意:千万不要rm -rf /* 会导致删除所有的文件或目录,导致系统崩溃
touch 文件1 文件2 | 创建一个或多个文件0字节大小 |
---|---|
cat 文件名 | 查看文件所有内容 |
more 文件名 | 查看文件所有的内容,可以分屏显示 |
head 文件名 | 查看文件前10行 |
had -n 行数 文件名 | 查看前面指定的行数 |
tail 文件名 | 查看文件后10行 |
tail -n 行数 文件名 | 查看文件后指定的行数 |
less 文件名 | 查看文件所有内容-n 显示行号PageUp 向前翻页PageDown 向后翻页q:退出 |
image-20200525154146121
命令 | 描述 |
---|---|
i | 在当前光标的前面插入字符 |
a | 在当前光标的后面插入字符 |
o | 在当前光标的下一行插入字符 |
命令或底行模式下常用的编辑命令 | |
yy | 复制当前行 |
p | 如果前面已经复制了,在当前下面复制 |
dd | 删除当前行 |
u | 撤销 |
/字符串 | 搜索文本内容n:向后搜索N:向前搜索 |
wp | 保存并退出 |
q! | 不保存强制退出 |
wp! | 强制保存退出(只读文件使用) |
拓展名称 | 分类 |
---|---|
.zip/.rar | Windows系统压缩包 |
.tar | 在Linux下的打包文件 |
.gz | 在Linux下的压缩文件 |
.tar.gz | 在Linux下的打包压缩文件 |
tar | 参数 压缩包名 一个或多个文件{对一个或多个文件进行打包并压缩} |
---|---|
-c | 创建一个打包的文件 |
-v | 显示打包的详细过程 |
-z | 压缩文件 |
-f<压缩文件名称> | 只当压缩包的文件名称,f后面跟着压缩的文件名,一般放在参数最后面 |
tar 参数 压缩文件名称 | 解压文件到当前目录 |
---|---|
-x | 解压指定的文件 |
-v | 显示解压的详细过程 |
-f<压缩文件> | 指定要解压的文件 |
-C | 解压到指定的目录下 |
pwd | 查看当前工作目录 |
---|---|
ps | 显示当前用户通过终端启动的进程 |
-a | 显示所有用户通过终端启动的进程 |
-u | 显示所有用户通过终端启动的进程详细信息 |
-x | 显示所有用户的所有进程 |
kill 参数 进程号 | 通过ps可以查看到进程号 |
---|---|
-9 | 强制终止进程 |
top |
---|
查看系统内存整体耗用 |
grep是一种强大的文本搜索工具,它能使用字符串搜索文本,并把匹配的行和行号打印出来。
grep 参数 字符串 文件名 | 搜索指定文件中字符串内容 |
---|---|
-n | 搜索结果中显示行号 |
-v | 显示不匹配的行 |
-i | 忽略大小写搜索 |
管道就是“|”
语法 | 命令1 | 命令2 |
---|---|
解释 | 管道命令|,必须要有两条以上的命令参与运算 |
Linux | 释义 |
---|---|
shutdown now | 关闭服务器 |
-h +参数 | 指定**时间后关机 |
shutdown -n 16:05 | 指定时间关机 |
shutdown -c | 清除定时命令 |
reboot | 重启Linux |
Windows命令 | 释义 |
shutdown -s | 立刻关机 |
shutdown -s -t 秒 | 指定多少秒后关机 |
shutdown -a | 清除定时计划 |
shutdown -r | 系统重启 |
image-20200525160550045
命令 | 含义 |
---|---|
crontab -l | 查看当前用户的定时任务列表 |
crontab -e | 进入编辑当前用户定时任务编辑器 |
crontab -r | 删除当前用户的定时任务 |
* * * * * 命令 | 每分钟执行一次命令 |
image-20200525161016493
# 查看主机名
$ hostname
# 修改主机名称 永久修改计算机名字,需要重启或使用bash刷新
$ hostnamectl set-hostname [args]
# 刷新
$ bash
# 启动网络
$ systemctl start network
# 停止
$ systemctl stop network
# 重启
$ systemctl restart network
# 查看状态
$ systemctl status network
如果linux系统不能上网(内网和外网),需要检查网络服务
# 找到网卡配置文件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
# 找到网卡配置文件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
image-20200528161737276
c:\windows\System32\drivers\etc\hosts
/etc/hosts
# 编辑本地etc/hosts域名映射文件
$ vim /etc/hosts
# 添加域名映射IP的配置
192.168.123.83 www.mobaijun.com
# 保存退出
$ wq
# 测试效果
$ ping www.mobaijun.com
常用命令
netstat [args] | null | 显示网络状态 |
---|---|---|
-n | number | 显示程序的IP地址和端口号 |
-t | TCP | 只显示TCP协议链接的程序 |
-l | listener | 显示监听中的Socket |
-p | Programs | 显示程序的名称 |
-u | UDP | 查询udp协议通信的程序 |
# 查看端口、udp、tcp、正在监听、显示程序名的所有程序
$ netstat -nutlp
是防止外界访问系统内部的程序,防火墙允许哪个软件访问外网,这个软件才可以进行网络通信
命令 | 简介 |
---|---|
systemctl status firewalld | 查看状态 |
systemctl start firewalld | 启动防火墙 |
systemctl stop firewalld | 关闭防火墙 |
systemctl enable firewalld | 开机自启 |
systemctl disable firewalld | 让防火墙开机不自启 |
# 在本地生成一对公钥和私钥
$ ssh-keygen
# 将公钥发送给远程服务器,必须给出远程服务器的密码本地才接收公钥
$ ssh-copy-id address
# 查看公钥
$ cat authorized_keys
# 发送登录请求,实现免密登录
$ ssh address
RedHat Package Manager(RPM), 擅长安装本地的软件
rpm [args] [包名] | 类似软件管家{添加,卸载,查询} |
---|---|
-v | 显示安装的详细过程 |
-q | 查询某个软件是否安装 |
-a | 查询所有软件 |
-h | 列出软件安装时的标记 |
-i | install 安装指定的软件 |
--nodeps | 不验证软件相关关联性,常于-e一起使用,表示强制卸载 |
# 查询所有已安装软件
$ rpm -qa
# 安装指定的软件包
$ rpm -ivh <包名>
# 强制卸载指定软件包
$ rpm -e --nodeps <包名>
# 查询本地是否有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
# 安装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
# 查看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
# 开放的端口永久保存到防火墙
$ firewall-cmd --zone=public --add-port=3306/tcp --permanent
# 重启防火墙
$ systemctl restart firewalld
image-20200529105935993
# 将软件上传到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
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
# 添加用户,进入/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
总结
# 添加组
$ groupadd [组名]
# 查看组
$ cat /etc/group
# 进入主目录
$ cd /home
# 修改用户组名称
$ usermod -g [新组名] [组名]
# 用户从指定组中删除
$ gpasswd -d 用户 组名
# 查看
$ ll
# 查看配置文件
$ cat /etc/group
# 修改组名
$ groupmod -n 新组名 组名
# 删除组
$ groupdel 组名
# 查看
$ cat /etc/group
总结
# 编辑配置文件
$ vim /etc/sudoers
# 切换用户
$ su mobaijun
# 设置权限
$ sudo useradd -m 用户名
# 查看
$ cd /home
—END—