标签:共享库 container 需要 操作 err 自动安装 comm cheat shell
消息对列(Kafka、RabbitMQ、RockeetMQ),缓存(Redis),搜索引擎(ES)
集群分布式(需要购买多台服务器,如果没服务器我们就只能使用虚拟机)
我们为什么要学Linux
Linux的几个优点
LInux 简述
Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。
Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。
Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。
购买云服务器
云服务器就是一个远程电脑,服务器一般不会关机!
阿里云服务器购买地址:https://www.aliyun.com/minisite/goods?userCode=0phtycgr
购买完毕后,获取服务器的ip地址,重置服务器密码,就可以远程登录了
注意事项:
下载xShell工具,进行远程连接使用!
这个就相当于一个个远程电脑了,只不过都是命令行。
Ctrl + 鼠标滚轮,可以放大缩小
可以用xftp上传文件
开机会启动许多程序。它们在Windows叫做"服务"(service),在Linux就叫做"守护进程"(daemon)。
开机成功后,它会显示一个文本登录界面,这个界面就是我们经常看到的登录界面,在这个登录界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份,密码是不显示的,输完回车即可!
一般来说,用户的登录方式有三种:
最高权限账户为 root,可以操作一切!
关机
关机指令: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
systemctl poweroff #关机
根目录 / ,所有的文件都挂载在这个节点下
登录系统后,在当前明明窗口下输入命令:
ls /
树状目录结构:
/bin :bin是Binary的缩写,这个目录存放着最经常使用的命令。
/bot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。(不要动)
/dev:dev是Device(设备)的缩写,存放的是Linux的外部设备,在Linux中访问设备的方式和访问文件的方式是相同的。
/etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/lib:这个目录里存放着系统最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。(不要动)
/lost+found:这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。(存放突然关机的一些文件)
/media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
/opt: 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件。(不用管)
/root:该目录为系统管理员,也称作超级权限者的用户主目录。
/sbin:s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:该目录存放一些服务启动之后需要提取的数据。
/sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。
/tmp:这个目录是用来存放一些临时文件的。用完即丢的文件,可以放在这个目录下,比如:安装包。
/usr:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
/usr/bin:统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。(Super用户管理)
/usr/src:内核源代码默认的放置目录。
/var:这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
/www:存放服务器网站相关的资源,环境,网站的项目
cd 绝对路径、相对路径
绝对路径为路径的全称。
cd:切换目录命令!
./:当前目录
cd .. :返回上一级目录
ls (列出目录)
-a参数:all,查看全部的文件,包括隐藏文件
-l参数:列出所有的文件,包括文件的属性和权限,没有隐藏文件
所有的Linux命令可以组合使用,即 ls -al 就是查看全部文件,且列出所有的文件属性和权限。
pwd显示当前用户所在的目录!
[root@cyy ~]# pwd
/root
[root@cyy ~]# cd /bin
[root@cyy bin]# pwd
/bin
touch 创建一个文件
[root@cyy home]# ls
redis test www
[root@cyy home]# touch do.txt #也可以没有后缀名
[root@cyy home]# ls
do.txt redis test www
mkdir 创建一个目录
[root@cyy /]# cd home/ #创建目录
[root@cyy home]# ls
redis www
[root@cyy home]# mkdir test
[root@cyy home]# ls
redis test www
[root@cyy home]# cd test
[root@cyy test]# cd ..
[root@cyy home]# mkdir -p test1/test2/test3 #创建多级目录
[root@cyy home]# cd test1
[root@cyy test1]# ls
test2
[root@cyy test1]# cd test2/
[root@cyy test2]# ls
test3
rmdir 删除目录
rmdir仅能删除空的目录,如果下面存在文件,需要先删除文件,递归删除多个目录加 -p 参数即可
cp(复制文件或者目录)
cp 原来的地方 拷贝到新的地方
root@cyy home]# ls
redis test test.txt www
[root@cyy home]# cp test.txt test #拷贝文件至目录
[root@cyy home]# ls
redis test test.txt www
[root@cyy home]# cd test.txt
-bash: cd: test.txt: Not a directory
[root@cyy home]# cd test
[root@cyy test]# ls
test.txt
rm(移除或者目录!)
-f 忽略不存在的文件,不会出现警告,强制删除!
-r 递归删除目录!
-i 互动,删除询问是否删除
rm -rf /* #系统中所有的文件就被删除了(非常危险!不要这样做)
[root@cyy test]# ls
test.txt
[root@cyy test]# cd ..
[root@cyy home]# ls
redis test test.txt www
[root@cyy home]# rm -rf test
[root@cyy home]# ls
redis test.txt www
mv 移动文件或者目录!(也可以重命名文件夹)
-f 强制
-u 只替换已经更新过的文件
[root@cyy home]# ls
redis test.txt www
[root@cyy home]# mkdir test
[root@cyy home]# rm test.txt test
rm: remove regular empty file ‘test.txt’? y
rm: cannot remove ‘test’: Is a directory
[root@cyy home]# ls
redis test www
Linux中的帮助命令:
用来查看Linux系统手册上的帮助信息:man命令
[root@dawn home]# man 命令
分屏显示、按回车翻一行、按空格翻一页、按q退出查看。
用来查看命令的内置帮助信息:help 命令
[root@dawn home]# help 命令
看懂文件属性
在Liunx中第一个字符代表这个文件是目录、文件或连接文件等等:
接下来的字符中,以三个为一组,且均为『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"字符表示,则有执行权限,如果用"-"字符表示,则没有执行权限。
查看文件或者目录的权限
ls -ahl # h为human以人性化的方式显示
修改文件属性
1、chgrp:更改文件属组(一般不要改)
chgrp -R 属组名 文件名 # -R是递归修改目录的所有者和所在的组
2、chown:更改文件属主,也可以同时更改文件属组(一般不用改)
chown -R 新属主名 文件名 # -R是递归修改目录的所有者和所在的组
chown -R 新属主名:新属组名 文件名
3、chmod:更改文件9个属性(重点)
chmod -r xyz 文件或目录
Linux文件属性有两种设置方法,一种是数字(常用),一种是符号。
Linux文件的基本权限就有九个,分别是owner/group/others三种身份各有自己的read/write/execute权限。
先复习一下刚刚上面提到的数据:文件的权限字符为:『-rwxrwxrwx』, 这九个权限是三个三个一组的!其中,我们可以使用数字来代表各个权限,各权限的分数对照表如下:
r:4 w:2 x:1
chomd 777 文件所有用户可读可写可执行!
符号:
用u、g、o、a分别表示给所有者、同组用户、其他组用户、所有用户修改权限
用+、-、=分别给指定的用户增加、减少、设置对应的权限
chmod g-w,o+w t5.txt # 对同组用户减少写的权限,对其他用户组增加写的权限
chmod g=rwx t5.txt # 对同组用户设置读写可执行权限
chmod a-r t5.txt # 所有人减少读的权限
Linux系统中使用一下命令来查看文件的内容(命令 + 文件名):
[root@cyy etc]# head -n 5 csh.login #表示显示前5行
# /etc/csh.login
# System wide environment and startup programs, for login setup
#add sbin directories to the path
网络配置目录:cd /home/etc/sysconfig/network-scripts
ifconfig命令查看网络配置!(windows系统是ipconfig)
Linux 链接的概念
Linux的链接分为两种:硬链接、软链接!
硬链接:A --B,假设B是A的硬链接,那么他们两个指向了同一个文件!允许一个文件拥有多个路径。
软链接:相当于Wind上的快捷方式,删除了源文件,快捷方式就访问不了了
创建链接用In命令
ln + 源文件 + 生成文件 创建一个硬链接
ln -s + 源文件 + 生成文件 创建一个软链接
echo输出字符串
[root@cyy home]# ls
do.txt redis test www
[root@cyy home]# ln do.txt do2 #生成硬链接
[root@cyy home]# ls
do2 do.txt redis test www
[root@cyy home]# ln -s do.txt do3 #生成软链接
[root@cyy home]# ls
do2 do3 do.txt redis test www
[root@cyy home]# echo "I Love U" >> do2 #向do2里面输入字符串
[root@cyy home]# cat do2
I Love U
[root@cyy home]# cat do3
I Love U
echo也可以输出系统变量
[root@Dawn java]# echo $PATH
/usr/lib/jdk1.8.0_231/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
[root@Dawn java]# echo $JAVA_HOME
/usr/lib/jdk1.8.0_231
把前一个查看命令的结果输出到指定的文件中:查看命令 > 文件名
[root@Dawn home]# ls
git redis ret.txt www
[root@Dawn home]# ls > ret.txt
[root@Dawn home]# ls
git redis ret.txt www
[root@Dawn home]# cat ret.txt
git
redis
ret.txt
www
删除do.txt后
[root@cyy home]# ls
do2 do3 do.txt redis test www
[root@cyy home]# rm -f do.txt
[root@cyy home]# ls
do2 do3 redis test www
[root@cyy home]# cat do2 #do2还可以正常查看(硬链接)
I Love U
[root@cyy home]# cat do3 #do3不能查看(软链接)
cat: do3: No such file or directory
查看或者设置系统的日期或者时间:date
[root@Dawn home]# date # 查看系统当前时间的完整的日期和时间
Wed Aug 12 20:21:16 CST 2020
[root@Dawn home]# date +%Y # 查看系统当前的年份
2020
[root@Dawn home]# date +%m # 查看系统当前的月份
08
[root@Dawn home]# date +%d # 查看系统当前的日期
12
[root@Dawn home]# date ‘+%Y-%m-%d %H:%M:%S‘ # 按yyyy-MM-dd HH:mm:ss格式显示
2020-08-12 20:22:42
[root@Dawn home]# date -S ‘2020-10-20 10:20:30‘ # 设置当前的系统时间
查看日历:cal
[root@Dawn home]# cal # 查看当前月份的日历
August 2020
Su Mo Tu We Th Fr Sa
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
[root@Dawn home]# cal 2020 # 查看指定年份的日历
2020
January February March
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5 6 7
5 6 7 8 9 10 11 2 3 4 5 6 7 8 8 9 10 11 12 13 14
12 13 14 15 16 17 18 9 10 11 12 13 14 15 15 16 17 18 19 20 21
19 20 21 22 23 24 25 16 17 18 19 20 21 22 22 23 24 25 26 27 28
26 27 28 29 30 31 23 24 25 26 27 28 29 29 30 31
April May June
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 2 1 2 3 4 5 6
5 6 7 8 9 10 11 3 4 5 6 7 8 9 7 8 9 10 11 12 13
12 13 14 15 16 17 18 10 11 12 13 14 15 16 14 15 16 17 18 19 20
19 20 21 22 23 24 25 17 18 19 20 21 22 23 21 22 23 24 25 26 27
26 27 28 29 30 24 25 26 27 28 29 30 28 29 30
31
July August September
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 4 1 1 2 3 4 5
5 6 7 8 9 10 11 2 3 4 5 6 7 8 6 7 8 9 10 11 12
12 13 14 15 16 17 18 9 10 11 12 13 14 15 13 14 15 16 17 18 19
19 20 21 22 23 24 25 16 17 18 19 20 21 22 20 21 22 23 24 25 26
26 27 28 29 30 31 23 24 25 26 27 28 29 27 28 29 30
30 31
October November December
Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa Su Mo Tu We Th Fr Sa
1 2 3 1 2 3 4 5 6 7 1 2 3 4 5
4 5 6 7 8 9 10 8 9 10 11 12 13 14 6 7 8 9 10 11 12
11 12 13 14 15 16 17 15 16 17 18 19 20 21 13 14 15 16 17 18 19
18 19 20 21 22 23 24 22 23 24 25 26 27 28 20 21 22 23 24 25 26
25 26 27 28 29 30 31 29 30 27 28 29 30 31
[root@Dawn home]# find *.txt # 搜索当前目录里下所有的.txt文件
cy.txt
[root@Dawn home]# find *e* #搜索当前目录下,所有的名称中包含e的那些文件或者目录
redis
redis/.bash_logout
redis/.bash_profile
redis/.bashrc
[root@Dawn home]# find /etc *.txt # 搜索/etc目录下所有.txt文件
[root@Dawn home]# find /etc -size +5M #搜索/etc目录下所有大于5M的文件,小于用减号,等于不用符号
/etc/udev/hwdb.bin
[root@Dawn home]# find /etc -user zhangsan #搜索/etc目录下所有的所有者是zhangsan的文件和目录
locate:在整棵目录树中搜索文件或者目录,都是根据名称搜索
用之前先要updatedb
(更新数据库)
[root@Dawn home]# updatedb
[root@Dawn home]# locate *.txt
搜索过滤命令,在前一个搜索梦灵结果中进行按名称进一步过滤:
[root@Dawn home]# find *.txt|grep new #搜索当前目录下,所有包含new的.txt文件
压缩或者解压单个文件:
gzip 文件名:压缩单个文件,生产一个.gz的压缩包,并且会把原来的文件删除。
[root@Dawn home]# ls
cy.txt git redis www
[root@Dawn home]# gzip cy.txt
[root@Dawn home]# ls
cy.txt.gz git redis www
gunzip 文件名: .gz压缩包名:解压.gz压缩包,并且会把原来的.gz压缩包删除。
[root@Dawn home]# ls
cy.txt.gz git redis www
[root@Dawn home]# gunzip cy.txt.gz
[root@Dawn home]# ls
cy.txt git redis www
压缩(打包)或者解压多个文件和目录:
zip 目标压缩包名称(通常使用.zip压缩包) 文件或者目录列表 :
[root@Dawn home]# ls
cy.txt git redis t1.txt t2.txt www
[root@Dawn home]# zip test.zip *.txt
adding: cy.txt (deflated 74%)
adding: t1.txt (stored 0%)
adding: t2.txt (stored 0%)
[root@Dawn home]# ls
cy.txt git redis t1.txt t2.txt test.zip www
unzip 压缩包名(.zip) -d 解压目录:将指定的.zip压缩包解压到当前目录(或者指定目录)
[root@Dawn home]# unzip test.zip -d test
Archive: test.zip
inflating: test/cy.txt
extracting: test/t1.txt
extracting: test/t2.txt
[root@Dawn home]# ls test
cy.txt t1.txt t2.txt
压缩(打包)或者解压多个文件和目录:
tar [选项] 目标压缩包名称
解压:tar -zcvf xxx.tar.gz 文件或者目录列表
[root@Dawn home]# mkdir test5
[root@Dawn home]# tar -zxvf mytar.tar.gz -C test5
cy.txt
test.zip
test/
test/t2.txt
test/cy.txt
test/t1.txt
[root@Dawn home]# ls test5
cy.txt test test.zip
压缩:tar -zxvf xxx.tar.gz -C解压目录名
[root@Dawn home]# ls
cy.txt git redis t1.txt t2.txt test test.zip www
[root@Dawn home]# tar -zcvf mytar.tar.gz cy.txt test.zip test
cy.txt
test.zip
test/
test/t2.txt
test/cy.txt
test/t1.txt
[root@Dawn home]# ls
cy.txt git mytar.tar.gz redis t1.txt t2.txt test test.zip www
所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。
但是目前我们使用比较多的是 vim 编辑器。
vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。
Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。
连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。
基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。 这三种模式的作用分别是:
用户刚刚启动 vi/vim,便进入了命令模式。
此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。
以下是常用的几个命令:
若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。
命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。
在命令模式下按下i就进入了输入模式。
在输入模式中,可以使用以下按键:
在命令模式下按下:(英文冒号)就进入了底线命令模式。
底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。
在底线命令模式中,基本的命令有(已经省略了冒号):
简单的说,我们可以将这三个模式想成底下的图标来表示:
移动光标的方法 | |
---|---|
h 或 向左箭头键(←) | 光标向左移动一个字符 |
j 或 向下箭头键(↓) | 光标向下移动一个字符 |
k 或 向上箭头键(↑) | 光标向上移动一个字符 |
l 或 向右箭头键(→) | 光标向右移动一个字符 |
如果你将右手放在键盘上的话,你会发现 hjkl 是排列在一起的,因此可以使用这四个按钮来移动光标。 如果想要进行多次移动的话,例如向下移动 30 行,可以使用 "30j" 或 "30↓" 的组合按键, 亦即加上想要进行的次数(数字)后,按下动作即可! | |
[Ctrl] + [f] | 屏幕『向下』移动一页,相当于 [Page Down]按键 (常用) |
[Ctrl] + [b] | 屏幕『向上』移动一页,相当于 [Page Up] 按键 (常用) |
[Ctrl] + [d] | 屏幕『向下』移动半页 |
[Ctrl] + [u] | 屏幕『向上』移动半页 |
+ | 光标移动到非空格符的下一行 |
- | 光标移动到非空格符的上一行 |
数字 + 空格 | 例如 20 < space > 则光标会向后面移动 20 个字符距离。 |
0 或功能键[Home] | 这是数字『 0 』:移动到这一行的最前面字符处 (常用) |
$ 或功能键[End] | 移动到这一行的最后面字符处(常用) |
H | 光标移动到这个屏幕的最上方那一行的第一个字符 |
M | 光标移动到这个屏幕的中央那一行的第一个字符 |
L | 光标移动到这个屏幕的最下方那一行的第一个字符 |
G | 移动到这个档案的最后一行(常用) |
nG | n 为数字。移动到这个档案的第 n 行。例如 20G 则会移动到这个档案的第 20 行(可配合 :set nu) |
gg | 移动到这个档案的第一行,相当于 1G 啊! (常用) |
数字+ < Enter > | 例如 3 |
搜索替换 | |
---|---|
/word | 向光标之下寻找一个名称为 word 的字符串。例如要在档案内搜寻 vbird 这个字符串,就输入 /vbird 即可! (常用) |
?word | 向光标之上寻找一个字符串名称为 word 的字符串。 |
n | 这个 n 是英文按键。代表重复前一个搜寻的动作。举例来说, 如果刚刚我们执行 /vbird 去向下搜寻 vbird 这个字符串,则按下 n 后,会向下继续搜寻下一个名称为 vbird 的字符串。如果是执行 ?vbird 的话,那么按下 n 则会向上继续搜寻名称为 vbird 的字符串! |
N | 这个 N 是英文按键。与 n 刚好相反,为『反向』进行前一个搜寻动作。 例如 /vbird 后,按下 N 则表示『向上』搜寻 vbird 。 |
使用 /word 配合 n 及 N 是非常有帮助的!可以让你重复的找到一些你搜寻的关键词! | |
:n1,n2s/word1/word2/g | n1 与 n2 为数字。在第 n1 与 n2 行之间寻找 word1 这个字符串,并将该字符串取代为 word2 !举例来说,在 100 到 200 行之间搜寻 vbird 并取代为 VBIRD 则: 『:100,200s/vbird/VBIRD/g』。(常用) |
:1,$s/word1/word2/g 或 :%s/word1/word2/g | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !(常用) |
:1,$s/word1/word2/gc 或 :%s/word1/word2/gc | 从第一行到最后一行寻找 word1 字符串,并将该字符串取代为 word2 !且在取代前显示提示字符给用户确认 (confirm) 是否需要取代!(常用) |
删除、复制与贴上 | |
---|---|
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 | 重做,重做上一个动作。(常用) |
这个 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 为止;(常用) |
上面这些按键中,在 vi/vim 画面的左下角处会出现『--INSERT--』或『--REPLACE--』的字样。 由名称就知道该动作了吧!!特别注意的是,我们上面也提过了,你想要在档案里面输入字符时, 一定要在左下角处看到 INSERT 或 REPLACE 才能输入喔! | |
[Esc] | 退出编辑模式,回到一般模式中(常用) |
指令行的储存、离开等指令 | |
---|---|
:w | 将编辑的数据写入硬盘档案中(常用) |
:w! | 若文件属性为『只读』时,强制写入该档案。不过,到底能不能写入, 还是跟你对该档案的档案权限有关啊! |
:q | 离开 vi (常用) |
:q! | 若曾修改过档案,又不想储存,使用 ! 为强制离开不储存档案。 |
注意一下啊,那个惊叹号 (!) 在 vi/vim 当中,常常具有『强制』的意思~ | |
: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 相反,为取消行号! |
在公司中,用的应该都不是root用户!
简介
Linux系统是一个多用户多任务的分时操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并为用户提供安全性保护。
每个用户账号都拥有一个唯一的用户名和各自的口令。
用户在登录时键入正确的用户名和口令后,就能够进入系统和自己的主目录。
实现用户账号的管理,要完成的工作主要有如下几个方面:
用户账号的管理
用户账号的管理工作只要涉及到用户账号的天加、修改和删除。
添加用户账号就是在系统中创建一个新账号,然后为新账号分配用户号、用户组、主目录和登录Shell等资源。
useradd 命令 添加用户
useradd -选项 用户名
-m: 自动创建这个用户的主目录
[root@cyy home]# useradd -m Dawn 创建一个用户
[root@cyy home]# ls
Dawn redis www
理解一下本质 :Linux中一切皆文件,这里的添加用户说白了就是往莫一个文件中写入用户的信息(信息在/etc/passwd)
删除用户 userdel
userdel -r Dawn 删除用户的时候将用户的时候将他的目录也一并删除!
[root@cyy home]# ls
Dawn redis www
[root@cyy home]# userdel -r Dawn #删除用户
[root@cyy home]# ls
redis www
修改用户 usermod
修改用户 usermod 对应修改的内容 修改那个用户
[root@cyy home]# usermod -d /home/cy dawn
修改完毕后查看配置文件即可!
切换用户
root用户
$表示普通用户
hostname 查看主机名
hostname + 用户名 修改主机名
用户的密码设置
我们一般通过root创建用户的时候!要配置密码!(Linux上输入密码,密码是不会显示的,不是你的电脑卡了哦~)
如果是超级用户的话用passwd + 用户名 修改用户密码
如果是普通用户直接passwd (然后输入旧密码,就可以输入新密码了)
锁定账户!(也就是所谓的冻结账户)
passwd -l + 用户名
锁定之后这个用户就不能登录了
passwd -d + 用户名
-d是指不仅用户名冻结了,密码也删除了。
passwd -u + 用户名
解除锁定
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。不同Linux 系统对用户组的规定有所不同,如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对/etc/group文件的更新。
创建一个用户组 groupadd
[root@dawn home]# groupadd cc
[root@dawn home]# cat /etc/group #查看用户组
创建完用户组后可以得到一个组的id,这个是可以指定的 -g 123
, 若不指定就是自增 1
删除用户组 groupdel
[root@dawn home]# groupdel cc #删除用户组
[root@dawn home]# cat /etc/group #查看用户组
把用户添加到组中: gpasswd - a 用户名 组名
[root@dawn home]# gpasswd - a cc dev
把用户从组中移除:gpasswd -d 用户名 组名
[root@dawn home]# gpasswd -d cc dev
创建用户时,指定所属的组(主组):useradd -g 组名 用户名
[root@dawn home]# useradd -g dev cc
修改用户组的权限信息和名字 groupmod
用户如果要切换用户组怎么办?
$ newgrp root
这个文件对所有用户都是可读的。它的内容类似下面的例子:
# cat /etc/passwd
root:x:0:0:Superuser:/:
daemon:x:1:1:System daemons:/etc:
bin:x:2:2:Owner of system commands:/bin:
sys:x:3:3:Owner of system files:/usr/sys:
adm:x:4:4:System accounting:/usr/adm:
uucp:x:5:5:UUCP administrator:/usr/lib/uucp:
auth:x:7:21:Authentication administrator:/tcb/files/auth:
cron:x:9:16:Cron daemon:/usr/spool/cron:
listen:x:37:4:Network daemon:/usr/net/nls:
lp:x:71:18:Printer administrator:/usr/spool/lp:
sam:x:200:50:Sam san:/home/sam:/bin/sh
从上面的例子我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令(登录密码,我们不可见):用户标识号:组标识号:注释性描述:主目录:登录Shell
1)"用户名"是代表用户账号的字符串。
通常长度不超过8个字符,并且由大小写字母和/或数字组成。登录名中不能有冒号(??,因为冒号在这里是分隔符。
为了兼容起见,登录名中最好不要包含点字符(.),并且不使用连字符(-)和加号(+)打头。
2)“口令”一些系统中,存放着加密后的用户口令字。
虽然这个字段存放的只是用户口令的加密串,不是明文,但是由于/etc/passwd文件对所有用户都可读,所以这仍是一个安全隐患。因此,现在许多Linux 系统(如SVR4)都使用了shadow技术,把真正的加密后的用户口令字存放到/etc/shadow文件中,而在/etc/passwd文件的口令字段中只存放一个特殊的字符,例如“x”或者“*”。
3)“用户标识号”是一个整数,系统内部用它来标识用户。
一般情况下它与用户名是一一对应的。如果几个用户名对应的用户标识号是一样的,系统内部将把它们视为同一个用户,但是它们可以有不同的口令、不同的主目录以及不同的登录Shell等。
通常用户标识号的取值范围是0~65 535。0是超级用户root的标识号,1~99由系统保留,作为管理账号,普通用户的标识号从100开始。在Linux系统中,这个界限是500。
4)“组标识号”字段记录的是用户所属的用户组。
它对应着/etc/group文件中的一条记录。
5)“注释性描述”字段记录着用户的一些个人情况。
例如用户的真实姓名、电话、地址等,这个字段并没有什么实际的用途。在不同的Linux 系统中,这个字段的格式并没有统一。在许多Linux系统中,这个字段存放的是一段任意的注释性描述文字,用做finger命令的输出。
6)“主目录”,也就是用户的起始工作目录。
它是用户在登录到系统之后所处的目录。在大多数系统中,各用户的主目录都被组织在同一个特定的目录下,而用户主目录的名称就是该用户的登录名。各用户对自己的主目录有读、写、执行(搜索)权限,其他用户对此目录的访问权限则根据具体情况设置。
7)用户登录后,要启动一个进程,负责将用户的操作传给内核,这个进程是用户登录到系统后运行的命令解释器或某个特定的程序,即Shell。
Shell是用户与Linux系统之间的接口。Linux的Shell有许多种,每种都有不同的特点。常用的有sh(Bourne Shell), csh(C Shell), ksh(Korn Shell), tcsh(TENEX/TOPS-20 type C Shell), bash(Bourne Again Shell)等。
系统管理员可以根据系统情况和用户习惯为用户指定某个Shell。如果不指定Shell,那么系统使用sh为默认的登录Shell,即这个字段的值为/bin/sh。
用户的登录Shell也可以指定为某个特定的程序(此程序不是一个命令解释器)。
利用这一特点,我们可以限制用户只能运行指定的应用程序,在该应用程序运行结束后,用户就自动退出了系统。有些Linux 系统要求只有那些在系统中登记了的程序才能出现在这个字段中。
8)系统中有一类用户称为伪用户(pseudo users)。
这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。
在Linux的配置文件
vim /etc/sysconfig/network-scripts/ifcfg-ens33
BOOTPROTO="static"
ONBOOT="yes"
IPADDR=192.168.11.128
GATEWAY=192.168.11.2
DNS1=192.168.11.2
配置好之后重启:reboot
df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。
语法:
df [-ahikHTm] [目录或文件名]
选项与参数:
[root@dawn ~]# df
Filesystem 1K-blocks Used Available Use% Mounted on
devtmpfs 1929724 0 1929724 0% /dev
tmpfs 1940084 1524 1938560 1% /dev/shm
tmpfs 1940084 520 1939564 1% /run
tmpfs 1940084 0 1940084 0% /sys/fs/cgroup
/dev/vda1 41152812 4407496 34841608 12% /
tmpfs 388020 0 388020 0% /run/user/0
[root@dawn ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 1.5M 1.9G 1% /dev/shm
tmpfs 1.9G 520K 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/vda1 40G 4.3G 34G 12% /
tmpfs 379M 0 379M 0% /run/user/0
[root@dawn ~]# df -aT
Filesystem Type 1K-blocks Used Available Use% Mounted on
/dev/hdc2 ext3 9920624 3823112 5585444 41% /
proc proc 0 0 0 - /proc
sysfs sysfs 0 0 0 - /sys
devpts devpts 0 0 0 - /dev/pts
/dev/hdc3 ext3 4956316 141376 4559108 4% /home
/dev/hdc1 ext3 101086 11126 84741 12% /boot
tmpfs tmpfs 371332 0 371332 0% /dev/shm
none binfmt_misc 0 0 0 - /proc/sys/fs/binfmt_misc
sunrpc rpc_pipefs 0 0 0 - /var/lib/nfs/rpc_pipefs
[root@dawn ~]# df -h /etc
Filesystem Size Used Avail Use% Mounted on
/dev/hdc2 9.5G 3.7G 5.4G 41% /
du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的,这里介绍Linux du命令。
语法:
du [-ahskm]
[root@dawn ~]# du
8 ./test4 #<==每个目录都会列出来
8 ./test2
....中间省略....
12 ./.gconfd #<==包括隐藏文件的目录
220 . #<==这个目录(.)所占用的总量
[root@www ~]# du -a
12 ./install.log.syslog #<==有文件的列表了
8 ./.bash_logout
8 ./test4
8 ./test2
....中间省略....
12 ./.gconfd
220 .
[root@www ~]# du -sm /*
7 /bin
6 /boot
.....中间省略....
0 /proc
.....中间省略....
1 /tmp
3859 /usr #<==系统初期最大就是他了啦!
77 /var
通配符 * 来代表每个目录。
与 df 不一样的是,du 这个命令其实会直接到文件系统内去搜寻所有的文件数据。
Mac或者想使用Linux挂载我们的一些本地磁盘或者文件!
挂载 :mount
[root@dawn ~]# mount /dev/dawn /mnt/dawn
外部设备挂载到dawn挂载到mnt目录下,来实现访问。
卸载 :umount -f [挂载位置] 强制卸载
什么是进程
命令
ps (process status)查看当前系统中正在执行的各种进程的信息。
#ps -aux 查看所有的进程
ps -aux|grep mysql
ps -aux|grep redis
ps -aux|grep java
# | 在Linux这个叫做管道符
#grep 查找文件中符合条件的字符串
ps -ef:可以查看到父进程的信息·
ps -ef|grep mysql # 看父进程我们一般可以通过目录树结构来查看!
#进程树
pstree -pu #看的更直观
-p 显示父id
-u 显示用户组
结束进程:等价与window结束任务
kill -9 进程id #后面一个参数为进程的id
服务是支持Linux运行的一下必要程序,本质上也是进程,叫守护进程。
操作服务:systemctl [start|stop|restart|reload|status|enable] 服务名称
systemctl status firewalld # 查看防火墙运行状态
systemctl stop firewalld # 关闭防火墙
systemctl start firewalld #开启防火墙
systemctl enable firewalld # 设置开机启动防火墙
老板本的Linux或者有些发行版本的Linux,操作服务使用service
命令。
Linux中软件包管理:软件安装包
RPM包:一种 Linux 的软件包的打包和安装工具,它操作的软件包都是 .rpm结尾。
使用RPM:rpm命令。
查看当前系统中已经安装的rpm软件包:rpm -qa
卸载 rpm 软件包:rpm -e |grep 文件
安装 rpm 包,说明:
安装rpm包:rpm -ivh xxx.rpm
(记得先拷贝到 opt 目录下在安装)
YUM 包管理:是一种基于 RPM 的软件包管理工具,它能够从指定服务器上自动下载 RPM 包并且自动安装,可以自动处理软件包之间的依赖关系。
查看系统中已经安装的 rpm 软件包:yum list installed
卸载 rpm 软件包:yum remove 文件名
安装 rpm 包:yum install 文件名
安装软件一般有三种:rpm、解压缩、yum在线安装
#检测当前系统是否存在java环境(java -version)
#如果有的话就需要卸载
#rpm -qa|grep jdk # 检测JDK版本信息
#rpm -e --nodeps jdk_
#卸载完毕后即可安装jdk
#rpm -ivk rpm包
#配置环境变量!
如果存在可以体前卸载 :
安装 :
配置环境变量 :vim/etc/profile
在配置Java环境变量的时候,将下面四行代码放在这个文件末尾即可。但要注意自己的JDK版本号:
export JAVA_HOME=/usr/lib/jdk1.8.0_241
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JR
然后就可以通过 java -version命令查看java版本信息。
我们发布一个项目试试
#开启防火墙端口
filewall-cmd --zone==public --add-port==9000/tcp --permanent #9000是要开启的端口
#重启防火墙
systemctl restart filewalld.service
#查看所有开启的端口,记得阿里云(其他的也要配置),需要配置安全组规则
firewall-cmd --list-ports
ssm war 就需要放到tomcat中运行
tar -zxvf apache-tomcat-9.0.36.tar.gz
#执行 ./startup.sh
#停止 ./shotdown.sh
如果防火墙8080端口开了并且阿里云安全组也开放了这个时候就可以直接访问远程了。
#查看firewall服务状态
systemctl status firewalld
#开启、重启、关闭、firewalld.service服务
#开启
service firewalld start
#重启
service firewalld restart
#关闭
service firewlld stop
#查看防火墙规则
firewall-cmd --list-all #查看全部信息
firewall-cmd --list-ports #只看端口信息
#开启端口,选择直接要开启的端口
开启端口命令 :firewall-cmd --zone=public --add-port=80/tcp --permanent
重启防火墙 :systemctl restart firewalld.service
命令含义 :
--zone #作用域
--add-port==80/tcp#添加端口,格式为 :端口/通讯协议
--permanent #永久生效,没有此参数重启后失效
我们现在是在LInux下执行,一定要联网那,yum在线安装
[root@dawn bin]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
yum -y install 包名 #yum install 安装命令
$ sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
sudo yum install -y yum-utils device-mapper-persistent-data lvm2
设置stable镜像仓库
# 错误
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
## 报错
[Errno 14] curl#35 - TCP connection reset by peer
[Errno 12] curl#35 - Timeout
# 正确推荐使用国内的
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
更新yum软件包索引
yum makecache fast
yum -y install docker-ce docker-ce-cli containerd.io
systemctl start docker
docker version
docker run hello-world
docker images
标签:共享库 container 需要 操作 err 自动安装 comm cheat shell
原文地址:https://www.cnblogs.com/DawnCoody/p/13509824.html