阿小冷学习Linux(狂神说)
走进linux系统
关机
(慎用)
在linux领域内用在服务器上,很少遇到关机的操作,除非特殊情况下,不得已才会关机
关机指令:shutdown
sync # 将数据由内存同步到硬盘中
shutdown # 关机指令,你可以man shutdown 来看一下帮助文档。
shutdown -h 10 # 这个命令告诉大家,计算机将在10分钟后关机
shutdown -h now # 立马关机
shutdown -h 20:25 # 系统会在今天20:25关机
shutdown -h +10 # 十分钟后关机
shutdown -r now # 系统立马关机
shutdown -r +10 # 系统十分钟后重启
reboot # 就是重启,等同与 shutdown -r now
halt # 关闭系统,等同于shutdown -h now和poweroff
最后总结一下,不管是重启系统还是关闭系统,首先运行sync命令,吧内存中的数据写到磁盘中
系统目录结构
1、一切皆文件
2、根目录/,所有的文件都挂载在这个节点下
登录系统后,在当前命令窗口下输入命令:
ls /
你会看到如下图所示:
树状目录结构:
以下是对目录的解释
常见的基本命令
目录管理
绝对路径、相对路径
绝对路径的全称:C:\ProgramData\360safe\xxx.xx
比如说360safe目录下,那这个xxx.xx文件,对应我们的相对配置就/xxx.xx
1、cd : 切换目录命令
./ :当前目录
cd… : 返回上一级目录
2、ls (列出目录!)
在linux中ls可能是常常被使用的!!
-a 参数 : all 查看全部的文件,包括隐藏文件
-l 参数 : 列出所有的文件,包含文件的属性和权限,没有隐藏文件
所有linux可以组合3、cd 命令 切换目录
-cd 目录名(绝对路径都是以 / 开头,相对路径,对于当前目录该如何寻找 …/…/)
4、pwd 显示当前用户所在的目录
[root@iZbp14n9npwyo3xcuqu4nqZ ~]# pwd
/root
[root@iZbp14n9npwyo3xcuqu4nqZ ~]# cd /bin
[root@iZbp14n9npwyo3xcuqu4nqZ bin]# pwd
/bin
[root@iZbp14n9npwyo3xcuqu4nqZ bin]# cd /usr/local
[root@iZbp14n9npwyo3xcuqu4nqZ local]# pwd
/usr/local
[root@iZbp14n9npwyo3xcuqu4nqZ local]#
5、mkdir 创建一个目录
[root@iZbp14n9npwyo3xcuqu4nqZ home]# mkdir test1 #创建目录
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangstudy test1
[root@iZbp14n9npwyo3xcuqu4nqZ home]# cd test1
[root@iZbp14n9npwyo3xcuqu4nqZ test1]# cd ..
[root@iZbp14n9npwyo3xcuqu4nqZ home]# mkdir test2/test3/test4
mkdir: cannot create directory ‘test2/test3/test4’: No such file or directory
[root@iZbp14n9npwyo3xcuqu4nqZ home]# mkdir -p test2/test3/test4 #创建多级目录
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangstudy test1 test2
[root@iZbp14n9npwyo3xcuqu4nqZ home]# cd test2
[root@iZbp14n9npwyo3xcuqu4nqZ test2]# ls
test3
[root@iZbp14n9npwyo3xcuqu4nqZ test2]# cd test3
[root@iZbp14n9npwyo3xcuqu4nqZ test3]# ls
test4
6、redir 删除目录
[root@iZbp14n9npwyo3xcuqu4nqZ test3]# cd /home
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangstudy test1 test2
[root@iZbp14n9npwyo3xcuqu4nqZ home]# rmdir test1
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangstudy test2
[root@iZbp14n9npwyo3xcuqu4nqZ home]# rmdir test2
rmdir: failed to remove 'test2': Directory not empty
[root@iZbp14n9npwyo3xcuqu4nqZ home]# rmdir -p test2/test3/test4
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangstudy
[root@iZbp14n9npwyo3xcuqu4nqZ home]# mkdir -p test2/test3/test4
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangstudy test2
[root@iZbp14n9npwyo3xcuqu4nqZ home]# rmdir -p test2/test3/test4
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangstudy
rmdir 仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录 加 -p参数即可
7、cp 复制文件或者目录
cp 原来的地方 新的地方
8、rm 移除文件或者目录
-f 忽略不存在的文件,不会出现警告,强制删除!
-r 递归删除目录!
-i 互动,删除询问是否删除
rm rf / # 系统中使用的文件就被删除了
9、mv 移动文件或者目录/重命名文件
-f 强制
-u 只替换已经更新过的文件
基本属性
在linux中我们可以使用 ll
或者ls -l
命令来显示一个文件的属性以及文件所属的用户和组,如:
实例中,boot文件的第一个属性用”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"字符表示,则有执行权限,如果用"-",则没有执行权限
对于文化来说,它都有一个特定的所有者,也就是对该文件具有所有权的用户。
同时,在linux系统中,用户是按组分类的,一个用户属于一个或多个组
文件所有者以外的用户又可以分为文件所有者的同组用户和其他用户
—修改文件属性
1、chgrp:更改文件属组
chgrp [-R] 属组名 文件名
-R:递归更改文件属组,就是在更改某个目录文件的属组时,如果加上-R的参数,那么该目录下的所有文件的属组都会更改
2、chown:更改文件属主,也可以同时更改文件属组
chown [-R] 属主名 文件名
chown [-R] 属主名;属组名 文件名
3、chmod:更改文件9个属性
chmod [-R] xyz 文件或目录
linux文件属性有两种设置方法,一种是数字,一种是符号
linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限
各权限的分数对照表如下:
r:4 w:2 x:1
可读可写不可执行 rw- 6
可读可写不可执行 rwx 7
chomd 777 文件赋予所有用户可读可写可执行!
每种身份(owner/group/others)各自的三个权限(r/w/x)分数是需要累加的,例如当权限为:[-rwxrwx—]的分数则是:
owner=rwx=4+2+1=7
group=rwx=4+2+1=7
other=—=0+0+0=0
文件内容查看
linux系统中使用以下命令来查看文件内容:
cat由第一行开始显示文件内容,用来读文章或者读取配置文件
tac从最后一行开始显示,可以看出tac是cat的倒着写!
nl 显示的时候,顺道输出行号!看代码的时候,希望显示行号!
more 一页一页的显示文件内容(空格代表翻页,enter代表向下看一行,:f 行号)
less与more类似,但是比more更好的是,他可以往前翻页!(空格翻页,上下键(pageDown,pageUp)代表翻动页面!退出时q命令,查找字符串/要查询的字符向下查询,向上查询使用?要查询的字符串,n继续查询下一个,N向上寻找)
head只看头几行 通过-n参数来控制显示几行!
tail只看尾巴几行 通过-n参数来控制显示几行
你可以使用man[命令]来查看各个命令的使用文档,如:man cp
网络配置目录:cd /etc/sysconfig/network-scripts
ifconfig命令查看网络配置!!
拓展:linux链接的概念(了解)
linux的链接分为两种:硬链接、软连接
硬链接:A—B,假设B是A的硬链接,那么他们两个指向了同一个文件!!允许一个文件拥有多个路经,用户可以通过这种机制建立硬链接到一些重要文件上,防止误删
软链接:类似Window下的快捷方式,删除的源文件,快捷方式也访问不了!!!
创建连接 ln 命令
touch 命令创建文件!!!
echo 输入字符串
在这里插入代码片[root@iZbp14n9npwyo3xcuqu4nqZ home]# touch f1 #创建一个f1文件
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
f1 kuangsheng
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ln f1 f2 #创建一个硬链接f2
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
f1 f2 kuangsheng
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ln -s f1 f3 #创建一个软链接(符号连接)f3
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
f1 f2 f3 kuangsheng
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ll
total 4
-rw-r--r-- 2 root root 0 Dec 15 14:37 f1
-rw-r--r-- 2 root root 0 Dec 15 14:37 f2
lrwxrwxrwx 1 root root 2 Dec 15 14:38 f3 -> f1
drwxr-xr-x 2 root root 4096 Dec 13 22:28 kuangsheng
[root@iZbp14n9npwyo3xcuqu4nqZ home]# echo "i love kuangshen" >>f1 #给f1文件中写入一些字符串
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ll
total 12
-rw-r--r-- 2 root root 17 Dec 15 14:39 f1
-rw-r--r-- 2 root root 17 Dec 15 14:39 f2
lrwxrwxrwx 1 root root 2 Dec 15 14:38 f3 -> f1
drwxr-xr-x 2 root root 4096 Dec 13 22:28 kuangsheng
[root@iZbp14n9npwyo3xcuqu4nqZ home]# cat f1 #查看f1
i love kuangshen
[root@iZbp14n9npwyo3xcuqu4nqZ home]# cat f2 #查看f2
i love kuangshen
[root@iZbp14n9npwyo3xcuqu4nqZ home]# cat f3 #查看f3
i love kuangshen
删除f1之后,查看f2与f3的区别
[root@iZbp14n9npwyo3xcuqu4nqZ home]# rm -rf f1
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
f2 f3 kuangsheng
[root@iZbp14n9npwyo3xcuqu4nqZ home]# cat f2 #f2 硬链接还在
i love kuangshen
[root@iZbp14n9npwyo3xcuqu4nqZ home]# cat f3 # f3 (软链接、符号链接)快捷方式失效
cat: f3: No such file or directory
Vim编辑器
vim通过一些插件可以实现和IDE一样的功能
linux中,必须要会使用Vim(查看内容,编辑内容,保存内容
三种使用模式
基本上vi/vim共分为三种模式,分别是命令模式(Command mode)、输入模式(Insert mode)和底线命令模式(Last line mode),这三种模式的作用分别是:
命令模式:
用户刚刚启动vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。
以下是常用的几个命令:
—— i 切换到输入模式,以输入字符
—— x 删除当前光标所在处的字符
—— : 切换到底线命令模式,以在最后一行输入命令。如果是编辑模式,需要先退出输入模式
若想要编辑文本,启动Vim,进入了命令模式,按下i,切换到输入模式
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多的命令
输入模式:
在命令模式下按下 i 就进入输入模式。
在输入模式中,可以使用以下按键:
—— 字符按键以及Shift组合,输入字符
—— ENTER 回车键,换行
——BACK SPACE 退格键,删除光标前一个字符
——DEL 删除键,删除光标后一个字符
——方向键 在文本中移动光标
—— HOME/END 移动光标到行首/行尾
——Page Up/Page Down 上/下翻页
——Insert 切换光标为输入/替换模式,光标将变成竖线/下划线
——ESC 退出输入模式,切换到命令模式
底线命令模式
在命令模式下按下:(英文冒号)就进入了底线命令模式
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多
在底线命令模式中,基本的命令有:
—— q 退出程序
—— w 保存文件
按下ESC键可随时退出底线命令模式。
账号管理
实现账号的管理,要完成的工作主要有如下几个方面:
——用户账号的添加、删除与修改
——用户口令的管理
——用户组的管理
用户账号的管理
用户账号的管理工作,主要涉及到用户账号的添加、修改和删除
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录shell等资源
useradd 命令 添加用户
useradd -选项 用户名
— m:自动创建这个用户的主目录 /home/qinjiang
—G:给用户分配组!
[root@iZbp14n9npwyo3xcuqu4nqZ home]# useradd -m qinjiang # 创建一个用户
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangsheng qinjiang
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ^C
理解一下本质:Linux中一切皆文件,这里的添加用户说白了就是往某一个文件中写入用户的信息了! /etc/passwd
删除用户 userdel
userdel -r qinjiang 删除用户的时候将他的目录页一并删掉
[root@iZbp14n9npwyo3xcuqu4nqZ home]# userdel -r qinjiang
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangsheng
修改用户 usermod
修改用户usermod对应修改的内容,修改那个用户
[root@iZbp14n9npwyo3xcuqu4nqZ home]# useradd -m qinjiang
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangsheng qinjiang
[root@iZbp14n9npwyo3xcuqu4nqZ home]# usermod -d /home/233 qinjiang
[root@iZbp14n9npwyo3xcuqu4nqZ home]# ls
kuangsheng qinjiang
修改完毕之后查看配置文件即可!!
切换用户
root 用户
1、切换用户的命令为 : su username【username是你的用户名】
2、从普通用户切换到root用户,还可以使用命令:sudo su
3、在终端输入exit或logout或使用快捷方式ctrl+d,可以退回到原来用户,其实ctrl+d也是执行的exit命令![请添加图片描述](https://img-blog.csdnimg.cn/30e721e3595840eba03d12eec62c2a25.png
4、在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之间加 -
$表示普通用户,#表示超级用户,也就是root用户
用户的密码设置问题
我们一般通过root创建用户的时候,要配置密码!
Linux上输入密码时不会显示的,你正常输入即可,不是系统的问题!!
在公司中,一般拿不到公司服务器的root权限,都是一些分配的账号!
如果是超级用户的话:
pass username:
new password
re password
如果是普通用户:
passwd
(current) UNIX password:
new password: #密码不能太过于简单
re password:
锁定账户!
root,比如张三辞职1,冻结这个账号,一旦冻结,这个人就登不上系统了!
passwd -l qinjiang #锁定之后这个用户就不能登录了!
passwd -d qinjiang #没有密码也不能登录!
用户组管理
用户组的管理涉及用户组的添加、删除和修改,组的增加、删除和修改实际上就是对/etc/group文件的更新
创建一个用户组 groupadd
创建完用户组后可以得到一个组的id,这个id是可以指定的! -g 520,如果不指定就是自增1
删除用户组 groupdel
修改用户组的权限信息和名字 groupmod -g -n
用户如果要切换用户组怎么办呢?
# 登录当前用户 qinjiang
$ newgrp root
拓展:文件的查看!!
/etc/passwd
用户名:口令(登录密码,我们不可见):用户标识符:组标识符:注释性描述:主目录:登录Shell
这个文件中的每一行都代表这一个用户,我们可以从这里看出这个用户的主目录在哪里,可以看到属于哪一个组!
登录口令:把真正的加密后的用户口令存放到/etc/shadow文件中,保证我们的密码的安全性!!
用户组的所有信息都存放在/etc/group文件中
磁盘管理
df (列出文件系统整体的磁盘使用量) du (检查磁盘空间使用量)
df:
du:
![请添加图片描述](https://img-blog.csdnimg.cn/9e8e2d60847f4f44bccc6f49973d99ab.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAcXFfNDcwMjY5NDg=,size_20,color_FFFFFF,t_70,g_se,x_16
Mac或者想使用Linux挂载我们的一些本地磁盘或者文件
mount卸载:umount -f [挂载位置 ]强制卸载
进程管理
Linux中一切皆文件
(文件:读写执行(查看,创建,删除,移动,复制,编辑),权限(用户、用户组)。系统(磁盘,进程))
什么是进程?
1、在Linux中,每一个程序都是有自己的一个进程,每一个进程都有一个id号!!
2、每一个进程呢,都会有一个父进程!
3、进程可以有两种存在方式:前台,后台运行!!
4、一般的话服务都是后台运行的,基本的程序都是前台运行的!!!
命令
ps 查看当前系统中正在执行的各种进程的信息!!
ps -xx:
- -a 显示当前终端运行的所有的进程信息 (
- -u 以用户的信息显示进程
- -x 显示后台运行进程的参数!!
# ps -aux 查看所有的进程
ps -aux|grep mysql
ps -aux|grep redis
ps -aux|grep java
# | 在Linux这个叫做管道符 A|B
# grep 查看文件中符合条件的字符串
对于我们来说,这里目前只需要记住一个命令即可, ps -xx|grep 进程名字!!过滤进程信息
ps -ef: 可以查看到父进程的信息
ps -ef|grep mysql #看父进程我们一般可以通过目录树结构来查看
# 进程树
pstree -pu
-p 显示父id
-u 显示用父组
结束进程:杀掉进程,等价于window结束任务
kill -9 进程的id
但是,我们平时写的一个Java代码死循环了,可以选择结束进程!杀进程
kill -9 进程的id
表示强制结束该进
环境安装
安装软件一般有三种方式:
- rpm(JDK:在线发布一个SringBoot项目)
- 解压缩(tomcat,启动并通过外网访问,发布网站)
- yum在线安装(docker:直接安装运行跑起来docker就可以)
JDK安装
我们开发java程序必须要的环境
1、下载JDK rpm。去oralce官网下载即可
2、安装java环境
# 检测当前系统是否存在java环境! java -version
# 如果有的话就需要卸载
# rpm -qa|grep jak #检测JDK版本信息
# rpm -e --nodeps jdk_
#卸载完毕后即可安装jdk
#rpm -ivk rpm包
#配置环境变量!!
如果存在可以提前卸载:
安装:
配置环境变量:/etc/profile 在文件的最后面增加java的配置和window安装环境变量一样!!
JAVA_HOME=/usr/java/jdk1.8.0_65
JAVA_BIN=/usr/java/jdk1.8.0_65/bin
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JAVA_HOME JAVA_BIN PATH CLASSPATH
让这个配置文件生效!!!source /etc/profile
我们发布一个项目试试!!!
# 开启防火墙端
firewall-cmd --zone=public --add-port=9000/tcp --permanent
# 重启防火墙
systemctl restart firewalld.service
# 查看所有开启的端口,如果是阿里云,需要配置安全组规则!!
firewall-cmd --list-ports
Tomcat 安装
ssm war 就需要放到tomcat中运行
1、下载tomcat。官网下载即可 tomcat
2、解压这个文件
tar -zxvf apache-tomcat-9.0.56.tar.gz
3、启动tomcat测试!! ./xxx.sh 脚本即可运行
# 执行 ./startup.sh
# 停止 ./shotdown.sh
如果防火墙8080端口开了并且阿里云安全组也开放了这个时候就可以直接访问远程了!
查看firewall服务状态
systemctl status firewalld
#开启、重启、关闭、firewalld.service服务
#开启
service firewalld start
#重启
service firewalld restart
#关闭
service firewalld stop#查看防火墙规则 firewall-cmd --list-all # 查看全部信息 firewall-cmd --list-ports # 只看端口信息 #开启端口 开端口命令:firewall-cmd --zone=public --add-port=8080/tcp --permanent 重启防火墙:systemctl restart firewalld.service
命令含义:
——zone #作用域
——add-port=80/tcp #添加端口,格式:端口/通讯协议
——permanent #永久生效,没有此参数重启后失效
Docker(yum安装)
我们现在是在Linux下执行,一定要联网,yum在线安装
安装
1、检测Centos7
[root@Axiaoleng bin]# cat /etc/redhat-release
Alibaba Cloud Linux release 3 (Soaring Falcon)
2、安装我们的准备环境
yum -y install 包名 # yum install 安装命令 -y 所有的提示都为 y
yum -y install gcc
yum -y install gcc-c++
3、清除以前的版本
(参考微信公众号狂神说)