Linux入门

时间:2020-08-15 22:35:58   收藏:0   阅读:177

Linux概述

消息对列(Kafka、RabbitMQ、RockeetMQ),缓存(Redis),搜索引擎(ES)

集群分布式(需要购买多台服务器,如果没服务器我们就只能使用虚拟机)

我们为什么要学Linux

Linux的几个优点

  1. 免费(这个是大多数人的喜欢的吧)
  2. 很多软件原生是在Linux运行的,庞大的社区支持,生态环境好
  3. 开源,可被定制,开放,多用户的网络操作系统
  4. 相对安全

LInux 简述

Linux 内核最初只是由芬兰人林纳斯·托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的。

Linux 是一套免费使用和自由传播的类 Unix 操作系统,是一个基于 POSIX(可移植操作系统接口) 和 UNIX 的多用户、多任务、支持多线程和多 CPU 的操作系统。

Linux 能运行主要的 UNIX 工具软件、应用程序和网络协议。它支持 32 位和 64 位硬件。Linux 继承了 Unix 以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

环境搭建

购买云服务器

云服务器就是一个远程电脑,服务器一般不会关机!

  1. 阿里云服务器购买地址:https://www.aliyun.com/minisite/goods?userCode=0phtycgr

  2. 购买完毕后,获取服务器的ip地址,重置服务器密码,就可以远程登录了

    • 获取公网IP地址!
    • 修改自己的登录密码

    技术图片

    注意事项:

    技术图片

    技术图片

  3. 下载xShell工具,进行远程连接使用!

技术图片

这个就相当于一个个远程电脑了,只不过都是命令行。

Ctrl + 鼠标滚轮,可以放大缩小

可以用xftp上传文件

技术图片

Linux系统基本命令

开机登录

开机会启动许多程序。它们在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 #关机

Linux系统目录结构

根目录 / ,所有的文件都挂载在这个节点下

登录系统后,在当前明明窗口下输入命令:

ls /  

技术图片

树状目录结构:

技术图片

常用的基本命令

目录管理

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中的帮助命令:

看懂文件属性

技术图片

在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

日期和时间的操作

  1. 查看或者设置系统的日期或者时间: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‘ # 设置当前的系统时间
    
  2. 查看日历: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
    
    

搜索文件或目录命令

  1. find [搜索范围] [搜索标准] 关键字
[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的文件和目录
  1. locate:在整棵目录树中搜索文件或者目录,都是根据名称搜索

    用之前先要updatedb (更新数据库)

    [root@Dawn home]# updatedb
    [root@Dawn home]# locate *.txt
    
  2. 搜索过滤命令,在前一个搜索梦灵结果中进行按名称进一步过滤:

    • 搜索命令 | grep [选项] 过滤条件
    • 查看命令 | grep [选项] 过滤条件
    [root@Dawn home]# find *.txt|grep new	#搜索当前目录下,所有包含new的.txt文件
    

压缩和解压命令

  1. 压缩或者解压单个文件:

    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
    
  2. 压缩(打包)或者解压多个文件和目录:

    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
    
  3. 压缩(打包)或者解压多个文件和目录:

    tar [选项] 目标压缩包名称

    • -z: 打包时同时压缩
    • -c:产生.tar.gz打包文件
    • -v:显示详细信息
    • -f:指定压缩后的文件名
    • -x:解压
    • -C:指定解压到哪个目录

    解压: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
    

Vim 编辑器

所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在。

但是目前我们使用比较多的是 vim 编辑器。

vim 具有程序编辑的能力,可以主动的以字体颜色辨别语法的正确性,方便程序设计。

Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。

简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。

连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。

技术图片

vim 的使用

基本上 vi/vim 共分为三种模式,分别是命令模式(Command mode)输入模式(Insert mode)底线命令模式(Last line mode)。 这三种模式的作用分别是:

命令模式:

用户刚刚启动 vi/vim,便进入了命令模式。

此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。比如我们此时按下i,并不会输入一个字符,i被当作了一个命令。

以下是常用的几个命令:

技术图片

若想要编辑文本:启动Vim,进入了命令模式,按下i,切换到输入模式。

命令模式只有一些最基本的命令,因此仍要依靠底线命令模式输入更多命令。

输入模式

在命令模式下按下i就进入了输入模式。

在输入模式中,可以使用以下按键:

底线命令模式

在命令模式下按下:(英文冒号)就进入了底线命令模式。

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多。

在底线命令模式中,基本的命令有(已经省略了冒号):

简单的说,我们可以将这三个模式想成底下的图标来表示:

技术图片

vi/vim 按键说明

移动光标的方法
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 光标向下移动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用户

技术图片

  1. 切换用户的命令为:su + 用户名
  2. 从普通用户切换到root用户,还可以使用命令:sudo su
  3. 在终端输入exit或sogout或使用快捷方式ctrl + d ,可以退回到原来用户,其实ctrl + d也是执行的exit命令
  4. 在切换用户时,如果想在切换用户之后使用新用户的工作环境,可以在su和username之前加-,例如 :[su - root]

$表示普通用户

表示超级用户,也就是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] [目录或文件名]

选项与参数:

  1. 将系统内所有的文件系统列出来!
[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
  1. 将容量结果以易读的容量格式显示出来
[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
  1. 将系统内的所有特殊文件格式及名称都列出来
[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
  1. 将 /etc 底下的可用的磁盘容量以易读的容量格式显示
[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] 
  1. 只列出当前目录下的所有文件夹容量(包括隐藏文件夹):
[root@dawn ~]# du
8       ./test4     #<==每个目录都会列出来
8       ./test2
....中间省略....
12      ./.gconfd   #<==包括隐藏文件的目录
220     .           #<==这个目录(.)所占用的总量
  1. 将文件的容量也列出来
[root@www ~]# du -a
12      ./install.log.syslog   #<==有文件的列表了
8       ./.bash_logout
8       ./test4
8       ./test2
....中间省略....
12      ./.gconfd
220     .
  1. 检查根目录底下每个目录所占用的容量
[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 [挂载位置] 强制卸载

进程管理

什么是进程

  1. 在Linux中,每一个程序是有自己的一个进程,每一个进程都有一个id号!
  2. 每一个进程,都会有一个父进程。
  3. 进程可以有两种存在方式:前台 , 后台运行。
  4. 一般的话服务都是后台运行的,基本的程序都是前台运行的。

命令

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中软件包管理:软件安装包

  1. RPM包:一种 Linux 的软件包的打包和安装工具,它操作的软件包都是 .rpm结尾。

    使用RPM:rpm命令。

    查看当前系统中已经安装的rpm软件包:rpm -qa

    卸载 rpm 软件包:rpm -e |grep 文件

    安装 rpm 包,说明:

    • i = install 安装
    • v = verbose 提示
    • h = hash 进度条

    安装rpm包:rpm -ivh xxx.rpm(记得先拷贝到 opt 目录下在安装)

  2. YUM 包管理:是一种基于 RPM 的软件包管理工具,它能够从指定服务器上自动下载 RPM 包并且自动安装,可以自动处理软件包之间的依赖关系。

    查看系统中已经安装的 rpm 软件包:yum list installed

    卸载 rpm 软件包:yum remove 文件名

    安装 rpm 包:yum install 文件名

环境安装

安装软件一般有三种:rpm、解压缩、yum在线安装

JDK 安装

  1. 下载JDK rpm。去oralce官网下载即可
  2. 安装java环境
#检测当前系统是否存在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

Tomcat 安装

ssm war 就需要放到tomcat中运行

  1. 下载tomcat,官网下载即可
  2. 解压文件
tar -zxvf apache-tomcat-9.0.36.tar.gz

技术图片

  1. 启动tomcat测试!./xxx.sh 脚本即可运行(进入解压文件的bin目录下)
#执行 ./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 #永久生效,没有此参数重启后失效

Docker(yum安装)

我们现在是在LInux下执行,一定要联网那,yum在线安装

  1. 官网安装参考手册:https://docs.docker.com/install/linux/docker-ce/centos/
  2. 检测CentOS 7
[root@dawn bin]# cat /etc/redhat-release
CentOS Linux release 7.7.1908 (Core)
  1. 安装我们准备的环境
yum -y install 包名    #yum install 安装命令
  1. 清除以前的版本
$ sudo yum remove docker                   docker-client                   docker-client-latest                   docker-common                   docker-latest                   docker-latest-logrotate                   docker-logrotate                   docker-engine
  1. 安装需要的软件包
sudo yum install -y yum-utils   device-mapper-persistent-data   lvm2
  1. 设置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
    
  2. 更新yum软件包索引

yum makecache fast
  1. 安装Docker CE
yum -y install docker-ce docker-ce-cli containerd.io
  1. 启动docker
systemctl start docker
  1. 测试
docker version

docker run hello-world

docker images
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!