Linux
走进Linux系统
一般来说,用户登录方式有三种
命令登录
ssh登录
图形界面登录
最高权限账户为root,可以操作为一切!
关机
关机指令
shutdowm
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
以下目录解释
系统启动必须:
/bin:存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。
/etc:存放系统管理和配置文件(-------------------)
/home:存放所有用户文件的根目录,是用户主目录的基点,比如用户user的主目录就是/home/user,可以用~user表示(---------------)
/usr:用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录。(------------------)
/usr/x11r6 存放x window的目录
/usr/bin 众多的应用程序
/usr/sbin 超级用户的一些管理程序
/usr/doc linux文档
/usr/include linux下开发和编译应用程序所需要的头文件
/usr/lib 常用的动态链接库和软件包的配置文件
/usr/man 帮助文档
/usr/src 源代码,linux内核的源代码就放在/usr/src/linux里
/usr/local/bin 本地增加的命令
/usr/local/lib 本地增加的库
/opt:额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把tomcat等都安装到这里。
/proc:虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息。(-----------)
/root:超级用户(系统管理员)的主目录(特权阶级^o^)
/sbin:存放二进制可执行文件,只有root才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如ifconfig等。(-------)
/dev:用于存放设备文件。
/mnt:系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统。
/boot:存放用于系统引导时使用的各种文件
/lib:存放跟文件系统中的程序运行所需要的共享库及内核模块。共享库又叫动态链接共享库,作用类似windows里的.dll文件,存放了根文件系统程序运行所需的共享文件。
/tmp:用于存放各种临时文件,是公用的临时文件存储点。(-------------------)
/var:用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等。(------)
/lost+found:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows下叫什么.chk)就在这里
/www:存放服务器内容
常用的基本命令
目录管理
绝对路径、相对路径
绝对路径
路径全称:D:\Postman
cd:切换目录
./:当前目录
cd..返回上一级目录
相对路径
在Linux中ls常使用命令
cd..返回上一级目录
ls 列出目录
clear 清理
-a参数: all,查看全部文件,包括隐藏文件
-l参数:列出所有文件,包含文件的属性和权限,没有隐藏文件
cd /目录/目录绝对路径转跳
cd~回到当前目录
所有Linux可以组合使用!ls -al
cd命令切换目录
cd目录名(绝对路径都是以/开头,相对路径,对于当前目录该如何寻找…/…/)
显示当前目录
pwd显示当前目录
创建文件夹
mkdir 创建文件夹
mkdir -p test2/test3/test4 递归创建
移除文件夹
rmdir -p 文件名 只能删除文件夹为空的
rmdir -p test2/test3/test4 递归删除
复制文件
cp(复制文件或者目录)
cp原来地方新的地方
cp 文件名 复制到哪个文件
rm命令
移除文件或者目录
-f忽略不存在文件,不出现警告,强制删除
-r 递归删除目录
-i互动,删除询问是否删除
rm-rf / #系统所有文件被删除了。删库跑路
mv移动文件
mv -f强制移动
-u值替换已更新的文件
mv kaung1 kuang2:重命名
mv kaung1 admin/:移动
基本属性
十个字母
cd /回到主目录
ls -ll查看
实例中,boot文件第一个属性用 d 表示在Linux表示是一个目录文件
第一个字母
当为[d]则是目录 常用
当为[-]则是文件 常用
当为[|]则是链接文档
当为[b]则表示为文件里面可提供存储的接口设备(可随机存取装置)
当为[c]则表示为装置文件里面的串行端口设备 如键盘 鼠标
九个字母
[rwx] r代表可读 w代表可写 x代表可执行
[rwx] 属主权限 1 2 3
[r-x] 属组权限 4 5 6 可读不能写
[r-x]其它用户权限 7 8 9 可读不能写
第1 4 7表示r 读
2 3 8表示w写
3 6 9表示x如果用x表示则有执行权限
修改文件属性
chgrp:更改文件属性
charp -R 属组名 文件名
-R 递归更改文件属组,就是更改某个文件目录是属组时,如果加上 -R参数,那么该目录下的所有文件属组都会改变
chmod更改文件9个属性
chmod -R xyz 文件目录
Linu文件属性有两种设置方法 一种是数字 一种是符号
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的权限read/write/execute权限
权限代表的数字
r:4 w:2 x:1
可读可写不执行 rw- 6
可读可写不可执行 rwx 7
chomd 777 文件夹赋予所有用户可读可写可执行
[root@iZbp13y8ibecb98ib9msjpZ home]# ls -ll
total 4
drwx------ 4 admin admin 4096 Oct 25 00:30 admin
[root@iZbp13y8ibecb98ib9msjpZ home]# chmod 777 admin
[root@iZbp13y8ibecb98ib9msjpZ home]# ls -ll
total 4
drwxrwxrwx 4 admin admin 4096 Oct 25 00:30 admin
[root@iZbp13y8ibecb98ib9msjpZ home]# chmod 700 admin
[root@iZbp13y8ibecb98ib9msjpZ home]# ls ll
ls: cannot access ll: No such file or directory
[root@iZbp13y8ibecb98ib9msjpZ home]# ls -ll
total 4
drwx------ 4 admin admin 4096 Oct 25 00:30 admin
文件查看内容
(? 向上查找 /向下查找 n继续查找下一个 N往上)
Linux系统中使用一下命令来查看文件的内容
-
cat由第一行开始显示文件内容 (读文章)
-
tac从最后一行开始显示,可以看出tac是cat倒着写的
-
nl显示的时候,顺道输出行号!看代码的时候,希望显示行号
- more一页一页的显示文件内容 空格表示翻页 enter代表往下看一行 :f行号
-
less和more类似,但是比more更好的是,他可以往前翻页 q退出命令
-
head只看头几行
- tall只看尾巴几行
你可以使用man命令开查看各个命令使用文档 如man cp
网络配置目录:cd/etc/sysconfig/network-scripts
ping www.baidu.com
ctrl+z结束ping
ifconfig 查看网络配置
拓展:Linux的链接的概念(了解即可!)
Linux的链接分为两种:硬链接、软链接!
硬链接:A–B:假设B是A的硬链接,那么他们两个纸箱同一个文件!允许一个文件用有多个路径,用户可以通过这几种机制建立硬链接到一些重要的文件上,防止误删!
软链接:快捷方式(类似win的快捷),删除了源文件快捷键就无法访问了
创建链接 ln命令
touch命令 创建文件
echo输入字符串
touch f1 创建文件f1
ln f1 f2 创建一个硬链接 f2
ln -s f1 f2 f3 创建一个软链接(字符串链接)f3
echo "i love kuang" >> f1 给f1写入字符串
[root@iZbp13y8ibecb98ib9msjpZ ~]# touch f1
[root@iZbp13y8ibecb98ib9msjpZ ~]# ls
f1
[root@iZbp13y8ibecb98ib9msjpZ ~]# ln f1 f2
[root@iZbp13y8ibecb98ib9msjpZ ~]# ls
f1 f2
[root@iZbp13y8ibecb98ib9msjpZ ~]# ln -s f1 f2 f3
ln: target ‘f3’ is not a directory
[root@iZbp13y8ibecb98ib9msjpZ ~]# ln -s f1 f3
[root@iZbp13y8ibecb98ib9msjpZ ~]# ls
f1 f2 f3
[root@iZbp13y8ibecb98ib9msjpZ ~]# echo "i love kuang" >> f1
[root@iZbp13y8ibecb98ib9msjpZ ~]# ll
total 8
-rw-r--r-- 2 root root 13 Oct 25 14:21 f1
-rw-r--r-- 2 root root 13 Oct 25 14:21 f2
lrwxrwxrwx 1 root root 2 Oct 25 14:19 f3 -> f1
[root@iZbp13y8ibecb98ib9msjpZ ~]# cat f1
i love kuang
[root@iZbp13y8ibecb98ib9msjpZ ~]# cat f3
i love kuang
[root@iZbp13y8ibecb98ib9msjpZ ~]# cat f2
i love kuang
Vim编辑器
vi vim 升级版
Vim 是vi发展出来的一个文本编辑器。代码补全,编译错误跳转等方便编程特别方便。在程序员中广泛使用。尤其Linux
vim三种模式
vim -
命令模式
用户刚刚启动vi/vim,便进入命令模式
此状态下敲击键盘动作会被Vim识别为命令,而非字符串。比如我们按下,并不会输入字符串,被当做一个命令
输入模式下,可以使用以下按键
- ENTER,回车键,换行
- BACK SPACE,退格键,删除光标前一个字符
- DEL,删除键,删除光标后一个字符
- 方向键,在文本中移动光标
- HOME/END移动到行首/行位
- Page Up/Page Down:上/下翻页
- Insert:切换光标为输入/替换模式,光标将变成竖线/下划线
- ESC退出输入模式,切换命令行
底线命令模式
输入 :
在底线模式下输入wq
q退出程序
w保存文件
注意:当vim 一个文件是文件存在就是编辑文件不存在这新建文件
过程
新建或者编辑文件,按i进入编辑模式,编写内容,编写完成后退出编辑模式,esc,退出进入底线命令模式:wq保存退出
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
数字< space>(=重要=) | 那个 n 表示『数字』,例如 20 。按下数字后再按空格键,光标会向右移动这一行的 n 个字符。 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊!(常用) |
数字 Enter>(=重要=) | n 为数字。光标向下移动 n 行(常用) |
搜索替换 | |
---|---|
/word(重要) | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n(重要) | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N(重要) | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
删除、复制与粘贴 | |
---|---|
x, X | 在一行字当中,x 为向后删除一个字符 (相当于 [del] 按键), X 为向前删除一个字符(相当于 [backspace] 亦即是退格键) (常用) |
nx | n 为数字,连续向后删除 n 个字符。举例来说,我要连续删除 10 个字符, 『10x』。 |
dd | 删除游标所在的那一整行(常用) |
ndd | n 为数字。删除光标所在的向下 n 行,例如 20dd 则是删除 20 行 (常用) |
d1G | 删除光标所在到第一行的所有数据 |
dG | 删除光标所在到最后一行的所有数据 |
d$ | 删除游标所在处,到该行的最后一个字符 |
d0 | 那个是数字的 0 ,删除游标所在处,到该行的最前面一个字符 |
yy | 复制游标所在的那一行(常用) |
nyy | n 为数字。复制光标所在的向下 n 行,例如 20yy 则是复制 20 行(常用) |
y1G | 复制游标所在行到第一行的所有数据 |
yG | 复制游标所在行到最后一行的所有数据 |
y0 | 复制光标所在的那个字符到该行行首的所有数据 |
y$ | 复制光标所在的那个字符到该行行尾的所有数据 |
p, P | p 为将已复制的数据在光标下一行贴上,P 则为贴在游标上一行!举例来说,我目前光标在第 20 行,且已经复制了 10 行数据。则按下 p 后, 那 10 行数据会贴在原本的 20 行之后,亦即由 21 行开始贴。但如果是按下 P 呢?那么原本的第 20 行会被推到变成 30 行。(常用) |
J | 将光标所在行与下一行的数据结合成同一行 |
c | 重复删除多个数据,例如向下删除 10 行,[ 10cj ] |
u(重要) | 复原前一个动作。(常用) |
[Ctrl]+r | 重做上一个动作。(常用) |
第二部分:一般模式切换到编辑模式的可用的按钮说明
进入输入或取代的编辑模式 | |
---|---|
i, I(重要) | 进入输入模式(Insert mode):i 为『从目前光标所在处输入』, I 为『在目前所在行的第一个非空格符处开始输入』。(常用) |
a, A | 进入输入模式(Insert mode):a 为『从目前光标所在的下一个字符处开始输入』, A 为『从光标所在行的最后一个字符处开始输入』。(常用) |
o, O | 进入输入模式(Insert mode):这是英文字母 o 的大小写。o 为『在目前光标所在的下一行处输入新的一行』;O 为在目前光标所在处的上一行输入新的一行!(常用) |
r, R | 进入取代模式(Replace mode):r 只会取代光标所在的那一个字符一次;R会一直取代光标所在的文字,直到按下 ESC 为止;(常用) |
[Esc] (重要) | 退出编辑模式,回到一般模式中(常用) |
第三部分:一般模式切换到指令行模式的可用的按钮说明
指令行的储存、离开等指令 | |
---|---|
:w | 将编辑的数据写入硬盘档案中(常用) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! |
:q | 离开 vi (常用) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
注意一下啊,那个惊叹号 (!) 在 vi 当中,常常具有『强制』的意思~ | |
:wq (重要) | 储存后离开,若为 :wq! 则为强制储存后离开 (常用) |
ZZ | 这是大写的 Z 喔!若档案没有更动,则不储存离开,若档案已经被更动过,则储存后离开! |
:w [filename] | 将编辑的数据储存成另一个档案(类似另存新档) |
:r [filename] | 在编辑的数据中,读入另一个档案的数据。亦即将 『filename』 这个档案内容加到游标所在行后面 |
:n1,n2 w [filename] | 将 n1 到 n2 的内容储存成 filename 这个档案。 |
:! command | 暂时离开 vi 到指令行模式下执行 command 的显示结果!例如 『:! ls /home』即可在 vi 当中看 /home 底下以 ls 输出的档案信息! |
:set nu设置行号(重要) | 显示行号,设定之后,会在每一行的前缀显示该行的行号 |
:set nonu | 与 set nu 相反,为取消行号! |
账户管理
简介
实现用户账户管理,要完成工作主要有如下几个方面:
- 用户账户的添加、删除和修改
- 用户口令的管理
- 用户组的管理
用户账户的管理
用户账户的管理工作主要涉及到用户账户的添加、修改和删除
添加用户账户就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录shell等资源
属主、属组
useradd命令 添加用户
useradd-选项 用户名
-m:自动创建这个用户的主目录/home/qinjiang
理解一下本质:Linux中一切皆文件,这里的添加用户说白了就是往某个文件中写入用户信息了!/etc/passwd
删除用户 userdel
userdel -r qinjiang删除用户的时候将目录一并删除
[root@iZbp13y8ibecb98ib9msjpZ home]# userdel -r qinjiang
[root@iZbp13y8ibecb98ib9msjpZ home]# ls
admin
修改用户 usermod
[root@iZbp13y8ibecb98ib9msjpZ home]# usermod -d /home/233 tang
修改完毕之后查看配置文件即可
切换用户
su 用户名
#最高级
$
退出
exit
前提是你要是root
修改主机名
hostname 名字
需要重新连接即可 重启就没了
用户的密码设置
我们一般通过超级用户root创建的时候配置密码
输入密码的Linux是不显示的
修改了之后登录需要新建会话属性
输入用户名和密码
如果是超级用户的话:
password username:
new password:
re password:
如果是普通用户
[tang@yun ~]$ passwd
Changing password for user tang.
Changing password for tang.
(current) UNIX password:
New password: 密码不能太简单了
re password:
锁定账户!
root,比如张三辞职!冻结账号,这个人就登录不上来
passwd -l tang 锁定之后用户就不能登录了
passwd -d tang 没有密码也不能登录
用户组管理
属主、属组
每一个用户都有一个用户组。组的增加、删除和修改实际上就是对/etc/group文件的更新
创建一个用户组group
创建完用户组可以得到一个id,这个id是可以指定的!
如果不指定就会自增
删除用户组
groupdel
修改用户组名字
groupmod -g 666 -n newtang tang
用户如果要切换用户组
登录当前用户
newgrp 用户名
文件查看(了解即可)
/etc/passwd
用户名:口令(登录密码、我们不可见)用户标识号:注释性描述:主目录:登录shell
这个文件的每一行都代表一个用户,我们可以从这里看出这个用户的主目录在那里,可以看到属于哪一个组!
登录口令:把真正的加密后的用户口令存放到/etc/shell文件中,保证密码的安全性!
磁盘管理
基本命令
df、du
df:列出整体磁盘使用量 加-h可以查看大小
du:检查磁盘空间使用量 加-a查看隐藏文件 du -sm/*检查根目录下所占用的容量
/usr系统初期最大的目录
Mac或者想使用Linux挂载我们的一些本地磁盘或者文件!
挂载mount(U盘)
卸载umount -f [挂载位置](强制卸载)
进程管理
对于开发人员来说,其实Linux更多偏向于使用即可
什么是进程
1、在Linux中,没一个程序都有自己的进程,每一个进程都有一个id号
2、每一个进程,都会有一个父进程
3、进程可以有两种方式存在前台!后台运行!
4、一般的话服务都是后台运行,基本程序都是前台运行的
命令
ps命令:查看当前系统正在执行的各种进程的信息!
ps -xx:
- -a 显示当前终端运行的所有进程信息()当前进程
- -u 以用户的信息显示进程
- -x显示后台运行进程的参数!
ps -aux:查看所有进程
ps -aux |grep mysql
| 在Linux这个叫做管道符 A|B
grep查找文件中符合条件的字符串!
ps -ef:可以查看到父进程的信息
ps -ef|grep mysql 看进程我们一般可以通过目录树结构来查看
pstree
-p:显示父id
-u:显示用户组
结束进程:杀掉进程,等价于win结束任务
kill-9:进程的id
但是我们平时写的java代码死循环
kill -9 进程的id
JDK环境安装
安装软件有三种方式
- rpm(jdk:在线发布一个springBoot项目)
- 解压缩(tomcat,启动通过外网访问,发布网站)
- yum在线安装(docker:直接安装运行跑起来docker可以)
JDK安装
- 下载JDK去oracle官网
- 使用FTP上传
检查当前是否存在java环境
java -version
如果有的话就需要卸载
rpm -qa|grep jdk #检查jdk信息
rpm -e --nodeps jdk_(强制删除)
卸载完毕后即可安装java
rpm -ivh rpm 包
如果存在可以卸载
配置环境变量
配置环境变量 /etc/profile在文件的最后面增加java的配置和windows安全环境变量一样
export JAVA_HOME=/jdk/jdk1.8
export CLASSPATH=$JAVA_HOME/lib/
export PATH=$PATH:$JAVA_HOME/bin
export PATH JAVA_HOME CLASSPATH
让这个配置文件生效
source/etc/profile
Tomcat安装
-
ssm war就需要放到tomcat中运行!
-
下载tomcat。去官网下载即可 tar.gz结尾
-
解压tomcat
-
启动tomcat./xxx.sh即可运行
-
执行 ./startup.sh 停止 ./shutdown.sh
-
如果防火墙8080端口开了并且阿里云安全组也开放了这个时候就可以直接访问远程了
-
查看firewall服务状态 systemctl staus firewalld 开启 service firewalld start 重启 service firewalld restart 关闭 service firewalld stop 查看防护墙 firewalld-cmd --list-all 查看全部 firewalld-cmd --ports 查看端口信息 开启端口 开启端口命令 firewalld-cmd --zone=pubic --add-port/tcp --permanent 重启防火墙 systemctl restart firewalld.service 命令含义 --zone:作用域 --add-port=80/tcp添加端口 格式为端口/通讯协议 --permanent永久生效,没有参数重启后失效
Docker安装
我们现在在Linux下执行,一定要联网,yum在线安装
一键安装
centOS
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
之后会有一个选择y就可以,然后会给你一个宝塔面板管理的地址账目密码
可运行
-
执行 ./startup.sh 停止 ./shutdown.sh
-
如果防火墙8080端口开了并且阿里云安全组也开放了这个时候就可以直接访问远程了
-
查看firewall服务状态 systemctl staus firewalld 开启 service firewalld start 重启 service firewalld restart 关闭 service firewalld stop 查看防护墙 firewalld-cmd --list-all 查看全部 firewalld-cmd --ports 查看端口信息 开启端口 开启端口命令 firewalld-cmd --zone=pubic --add-port/tcp --permanent 重启防火墙 systemctl restart firewalld.service 命令含义 --zone:作用域 --add-port=80/tcp添加端口 格式为端口/通讯协议 --permanent永久生效,没有参数重启后失效
Docker安装
我们现在在Linux下执行,一定要联网,yum在线安装
一键安装
centOS
yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh
之后会有一个选择y就可以,然后会给你一个宝塔面板管理的地址账目密码