Linux基础篇

概述

废话不多说,待补

安装VM 和 Linux

  • 先安装VM
  • 再安装Linux(CentOS7)
    安装步骤待补

Linux的目录结构

linux的文件系统是采用级层式的树状目录结构,在此结构中最上层是根目录“/”,然后在此目录下再创建其它的目录。
在linux世界里。一切皆文件。

  • 目录结构图:

  • 目录结构解析

  1. /bin [重点] (/usr/bin、/usr/local/bin)
    是Binary的缩写,这个目录存放着最经常使用的命令
  2. /sbin(/usr/sbin、/usr/local/sbin)
    s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序
  3. /home [重点]
    存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
  4. /root [重点]
    该目录为系统管理员,也称作超级权限者的用户主目录
  5. /lib
    系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库
  6. /lost+found
    这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件
  7. /etc [重点]
    所有的系统管理所需要的配置文件和子目录my.conf
  8. /usr [重点]
    这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录
  9. /boot [重点]
    存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  10. /proc
    这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息
  11. /srv
    service缩写,该目录存放一些服务启动之后需要提取的数据
  12. /sys
    这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs
  13. /tmp
    这个目录是用来存放一些临时文件的
  14. /dev
    类似于windows的设备管理器,把所有的硬件用文件的形式存储
  15. /media [重点]
    linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux 会把识别的设备挂载到这个目录下
  16. /mnt [重点]
    系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。d:/myshare
  17. /opt
    这是给主机额外安装软件所摆放的目录。如安装ORACLE数据库就可放到该目录下。默认为空
  18. /usr/local [重点]
    这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序
  19. /var [重点]
    这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
  20. /selinux [security-enhanced linux] 360
    SELinux是一种安全子系统,它能控制程序只能访问特定文件
  • 总结
  1. Linux目录结构有且只有一个根目录
  2. linux各个目录存放内容都是有规划的,切忌随意放置文件
  3. linux是以文件的形式管理我们的设备,因此,在linux世界里,一切皆文件

Linux实操篇

远程登录到Linux服务器

  • 为什么需要远程登录到Linux服务器?
    开发时,真正的服务器环境往往是在非常遥远的地方,是不能实际现场进行操作的,因此我们只能对其进行远程操作
    远程登录客户端有Xshell5,Xftp5…等 , 本篇文章将使用Xshell5 和Xftp , 其它的远程工具大同小异

远程登录到Linux-Xshell

  • 简介
  1. Xshell 是目前最好的远程登录到Linux操作的软件,拥有流畅的速度并且完美解决了中文乱码的问题,是目前程序员的首选软件
  2. Xshell 是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。
  3. Xshell 可以在Windows界面下用来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。
    安装配置和使用,待补

远程上传下载文件Xftp

  • 简介
    Xftp是一个基于windows平台的功能强大的SFTP、FTP文件传输软件。使用 Xftp,windows 用户能安全地在UNIX/Linux和Windows PC 之间传输文件。

  • 解决中文乱码问题
    打开(会话) -》属性 -》 选项 -》 编码 -》 UTF-8
    1. 点击打开按钮
    2. 在弹出的会话框中选择虚拟机,点击属性按钮

    3. 在属性框中选择选项菜单
    4. 修改成指定的编码后点击完成即可

    安装配置和使用,待补

Vi和Vim编辑器

所有的 Linux 系统都会内建 vi 文本编辑器
Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本。可主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员队列中被广泛使用

安装Vim编辑器

查看是否已经安装vim编辑器

rpm -qa|grep vim

输出结果如下,则说明已安装Vim编辑器,否则安装Vim

vim-filesystem-7.4.629-6.el7.x86_64
vim-X11-7.4.629-6.el7.x86_64
vim-minimal-7.4.629-6.el7.x86_64
vim-common-7.4.629-6.el7.x86_64
vim-enhanced-7.4.629-6.el7.x86_64

安装Vim编辑器指令

yum -y install vim*

Vi 和 Vim 常用的三种模式

  • 正常模式
    在正常模式下,可以使用快捷键
    以 vim 打开一个档案就直接进入一般模式了(这是默认的模式),在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理档案内容,也可以【复制、粘贴】来处理你的文件数据
  • 插入模式
    在插入模式下,可以输入内容
    按下 i,I,o,O,a,A,r,R 等任何一个字母之后才会进入编辑模式,一般来说按 i 即可(insert)
  • 命令行模式
    在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的动作则是在此模式中达成的!

Vi 和 Vim 的基本使用

使用vim开发一个Hello.java程序,并保存

class Hello{public static void main(String[] args){System.out.println("Hello");}
}

操作步骤:
1. 执行指令 vim Hello.java
2. 按 i 进入编辑模式,输入以上内容
3. 按 esc 回到正常模式,并输入 : 进入命令行模式,键入 :wq 进行保存并退出

Vi 和 Vim 模式的相互切换

:wq :保存并退出
:q :退出,在没有修改文件内容时使用
:q! :强制退出,不保存本次修改的内容,强制性退出文档的编辑

vi 和 vim 常用快捷键

1. 拷贝当前行yy, 拷贝当前行向下的5行5yy,并粘贴(p)。
2. 删除当前行dd, 删除当前行向下的5行5dd
3. 在文件中查找某个单词[命令行下/关键字,回车查找,输入n 就是查找下一个]例:输入 / 进入命令行模式,在 / 后输入关键字,回车进行查找,输入 n 查找下一个关键字
4. 设置文件的行号,取消文件的行号.[命令行下: set nu 和:set nonu]
5. 编辑/etc/profile 文件,使用快捷键到底文档的最末行[G]和最首行[gg]注意:这些都是在正常模式下执行的
6. 在一个文件中输入"hello" ,然后又撤销这个动作,在正常模式下输入u编辑模式中输入 hello,回到正常模式,输入 u
7. 编辑/etc/profile 文件,并将光标移动到20行shift+g第一步:显示行号 :set nu第二步:输入 20 这个数第三步:输入 shift+g
8. 更多快捷键需要自行百度收集

开机、重启、用户登录、注销

  • 关机重启命令
    shutdown -h now: 立刻进行关机
    shutdown -h 1: 1分钟后关机
    shutdown -r now: 重启计算机
    shutdown -r 20:35:在时间为20:35时重启
    halt: 关机
    reboot: 重启
    sync: 把内存的数据同步到磁盘

注意细节:不管是重启系统还是关闭系统,最好首先要运行sync命令,把内存中的数据写到磁盘中

  • 登录和注销
    登录时尽量少用root账号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用不同用户登录,登录后再用 “su - 用户名”命令来切换成系统管理员身份
    在提示符下输入 logout 即可注销用户
    指令:
    su - 用户名: 切换用户
    logout: 注销用户

注意细节:
1)logout 注销指令在图形运行级别无效,在运行级别3下有效
2)运行级别后面介绍

用户管理

  1. Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统
  2. Linux用户需要至少要属于一个组

添加用户

useradd [选项] 用户名

[root@contos7 home]# useradd tom
[root@contos7 home]# id tom
uid=1001(tom) gid=1003(tom) groups=1003(tom)

注意:

  1. 当创建用户成功后,会自动的创建和用户同名的家目录
  2. 也可以通过 useradd -d 指定目录 新的用户名,给新创建的用户指定家目录(指定目录为不存在的目录)

指定/修改密码

passwd 用户名

[root@contos7 home]# passwd tom
Changing password for user tom.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.

注意: 输入密码时,是看不到输入的密码的,其实已经输入了

删除用户

  • 删除用户,但是保留家目录
    userdel 用户名
  • 删除用户以及用户家目录
    userdel -r 用户名
[root@contos7 home]# userdel tom
[root@contos7 home]# id tom
id: tom: no such user
[root@contos7 home]# ll
total 0
drwx------. 2 1001 1003 62 Jun 18 09:13 tom

解析:

  1. 通过 userdel 指令删除 tom 用户
  2. 使用 id 指令查看 tom 是否存在
  3. 使用 ll 指令查看 tom 家目录是否存在
  4. 删除用户以及用户家目录操作步骤一致

查询用户信息

id 用户名
例:查询 root 信息

[root@contos7 ~]# id root
uid=0(root) gid=0(root) groups=0(root)

解析:
 uid:用户id
 gid:所在组的id
 groups:所在组的名称

注意: 当用户不存在时,返回 no such user (无此用户)

切换用户

su – 切换用户名

[root@contos7 home]# useradd jerry
[root@contos7 home]# su - jerry
[jerry@contos7 ~]$ exit
logout

细节说明:

  1. 从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
  2. 当需要返回到原来用户时,使用 exit 指令(返回到上一次切换的用户)

查看当前用户/登录用户

whoami / who am I
查看当前用户:whoami
查看登陆用户:who am I

[root@contos7 home]# clear
[root@contos7 home]# su - jerry
Last login: Thu Jun 18 09:37:47 CST 2020 on pts/0
[jerry@contos7 ~]$ whoami
jerry
[jerry@contos7 ~]$ who am i
root     pts/0        2020-06-18 09:09 (192.168.153.1)

用户组

介绍:
  类似于角色,系统可以对有共性的多个用户进行统一的管理

  • 新增组
    groupadd 组名
[root@contos7 ~]# groupadd shaolin

通过 cut -d : -f 1 /etc/group 查看用户组

  • 删除组
    groupdel 组名
[root@contos7 home]# groupdel shaolin
  • 新增用户时直接加上组
    useradd -g 用户组 用户名
[root@contos7 home]# useradd -g wudang zwj
useradd: group 'wudang' does not exist
[root@contos7 home]# groupadd wudang
[root@contos7 home]# useradd -g wudang zwj
[root@contos7 home]# id zwj
uid=1002(zwj) gid=1004(wudang) groups=1004(wudang)

注意:新增用户时直接加上组,组必须存在

  • 修改用户的组
    usermod -g 用户组 用户名
[root@contos7 home]# groupadd mingjiao
[root@contos7 home]# usermod -g mingjiao zwj
[root@contos7 home]# id zwj
uid=1002(zwj) gid=1005(mingjiao) groups=1005(mingjiao)

用户和组的相关文件

  • /etc/passwd 文件
    用户(user)的配置文件,记录用户的各种信息
[root@contos7 ~]# vim /etc/passwd
jerry:x:1001:1003::/home/jerry:/bin/bash
zwj:x:1002:1005::/home/zwj:/bin/bash
含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
注意:勿修改此配置文件,使用 :q 指令退出,或者使用 :q! 指令强制退出
  • /etc/shadow 文件
    口令的配置文件,密码和登录信息,是加密的
[root@contos7 ~]# vim /etc/shadow
jerry:!!:18431:0:99999:7:::
zwj:!!:18431:0:99999:7:::
含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
注意:勿修改此配置文件,使用 :q 指令退出,或者使用 :q! 指令强制退出
  • /etc/group 文件
    组(group)的配置文件,记录Linux包含的组的信息
    [root@contos7 ~]# vim /etc/group
root:x:0:
bin:x:1:
daemon:x:2:
含义:组名:口令:组标识号:组内用户列表
注意:勿修改此配置文件,使用 :q 指令退出,或者使用 :q! 指令强制退出

实用指令

指定运行级别

切换指令:
init [012356]

[root@contos7 ~]# init 6

执行 init 6 指令将会导致系统重启

运行级别说明:
  0 :关机
  1 :单用户【找回丢失密码】
  2 :多用户状态没有网络服务
  3 :多用户状态有网络服务
  4 :系统未使用保留给用户
  5 :图形界面
  6 :系统重启
常用运行级别是3和5

特别说明:有些级别不一定生效。
例如:级别5
此章节使用 centos7 无图形化界面的操作系统,级别5无效

帮助指令

  • man指令:获得帮助信息
    man [命令或配置文件]
例:查看ls命令的帮助信息
[root@contos7 ~]# man lsLS(1)                                                                      User Commands                                                                     LS(1)NAMEls - list directory contentsSYNOPSISls [OPTION]... [FILE]...DESCRIPTIONList information about the FILEs (the current directory by default).  Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.Mandatory arguments to long options are mandatory for short options too.-a, --alldo not ignore entries starting with .-A, --almost-alldo not list implied . and ..--authorwith -l, print the author of each file-b, --escapeprint C-style escapes for nongraphic characters--block-size=SIZEscale sizes by SIZE before printing them; e.g., '--block-size=M' prints sizes in units of 1,048,576 bytes; see SIZE format below-B, --ignore-backupsdo not list implied entries ending with ~-c     with  -lt: sort by, and show, ctime (time of last modification of file status information); with -l: show ctime and sort by name; otherwise: sort byctime, newest first-C     list entries by columns
Manual page ls(1) line 183/219 (END) (press h for help or q to quit)【按q键退出】
  • help 指令 :获得shell内置命令的帮助信息
    help 命令
例:查看cd命令的帮助信息
[root@contos7 ~]# help cd
cd: cd [-L|[-P [-e]]] [dir]Change the shell working directory.Change the current directory to DIR.  The default DIR is the value of theHOME shell variable.The variable CDPATH defines the search path for the directory containingDIR.  Alternative directory names in CDPATH are separated by a colon (:).A null directory name is the same as the current directory.  If DIR beginswith a slash (/), then CDPATH is not used.If the directory is not found, and the shell option `cdable_vars' is set,the word is assumed to be  a variable name.  If that variable has a value,its value is used for DIR.Options:-L   force symbolic links to be followed-P   use the physical directory structure without following symboliclinks-e  if the -P option is supplied, and the current working directorycannot be determined successfully, exit with a non-zero statusThe default is to follow symbolic links, as if `-L' were specified.Exit Status:Returns 0 if the directory is changed, and if $PWD is set successfully when-P is used; non-zero otherwise.

温馨提示:
百度帮助更直接更快速
虽然上面两个都可以来获取指令帮助,但是需要英语功底,如果英语不太好,推荐大家直接百度指令更靠谱。

文件目录类

  • pwd 指令:显示当前工作目录的绝对路径
    基本语法:pwd
[root@contos7 ~]# pwd
/root
  • ls指令:列出当前工作目录所含文件及子目录
    基本语法:ls [选项] [目录或是文件]
常用选项 含义
-a 显示当前目录所有的文件和目录,包括隐藏的
-l 以列表的方式显示信息
[root@contos7 ~]# ls -la /home
total 0
drwxr-xr-x.  5 root  root      41 Jun 18 09:57 .
dr-xr-xr-x. 18 root  root     236 Jun  5 18:45 ..
drwx------.  2 jerry jerry     83 Jun 18 09:34 jerry
drwx------.  2 jerry jerry     62 Jun 18 09:13 tom
drwx------.  2 zwj   mingjiao  99 Jun 18 10:18 zwj
  • cd 指令:切换到指定目录
    基本语法:cd [参数]
常用参数 含义
cd ~ 或者cd 回到自己家目录
cd … 回到当前目录的上一级目录
  • mkdir指令:用于创建目录(可同时创建多个,多个目录间用空格隔开)
    基本语法:mkdir [选项] 要创建的目录
常用选项 含义
-p 创建多级目录
[root@contos7 ~]# mkdir a1
[root@contos7 ~]# ll
total 4
drwxr-xr-x. 2 root root    6 Jun 18 11:43 a1
-rw-------. 1 root root 1615 Jun  5 18:46 anaconda-ks.cfg
[root@contos7 ~]# mkdir -p b1/b2/b3
[root@contos7 ~]# ll
total 4
drwxr-xr-x. 2 root root    6 Jun 18 11:43 a1
-rw-------. 1 root root 1615 Jun  5 18:46 anaconda-ks.cfg
drwxr-xr-x. 3 root root   16 Jun 18 11:43 b1
[root@contos7 ~]# cd b1/b2
[root@contos7 b2]# ll
total 0
drwxr-xr-x. 2 root root 6 Jun 18 11:43 b3
[root@contos7 b2]#
  • rmdir指令:删除空目录(可同时删除多个,多个目录间用空格隔开)
    基本语法:
    rmdir [选项] 要删除的空目录
    rm -rf 要删除的目录
常用选项 含义
-r 强制删除,忽略不存在的文件,无需提示
-f 递归地删除目录下的内容,删除文件夹时必须加此参数

例:删除刚才创建的多级b1文件夹

[root@contos7 ~]# rm -rf b1
[root@contos7 ~]# ll
total 4
drwxr-xr-x. 2 root root    6 Jun 18 11:43 a1
-rw-------. 1 root root 1615 Jun  5 18:46 anaconda-ks.cfg

使用细节:rmdir 删除的是空目录,如果目录下有内容时无法删除的。
提示:如果需要删除非空目录,需要使用 rm -rf 要删除的目录

  • touch指令:创建空文件(可同时创建多个,多个空文件间用空格隔开)
    基本语法:touch 文件名称
例1: 创建一个空文件[root@contos7 ~]# touch ok1.txt
例2: 创建多个空文件[root@contos7 ~]# touch ok1.txt ok2.txt ok3.txt[root@contos7 ~]# lltotal 4drwxr-xr-x. 2 root root    6 Jun 18 11:43 a1-rw-------. 1 root root 1615 Jun  5 18:46 anaconda-ks.cfg-rw-r--r--. 1 root root    0 Jun 18 11:58 ok1.txt-rw-r--r--. 1 root root    0 Jun 18 11:58 ok2.txt-rw-r--r--. 1 root root    0 Jun 18 11:58 ok3.txt
  • cp指令:拷贝文件到指定目录
    基本语法:cp [选项] source dest
    语法解析:将 source【源文件】 拷贝 到 dest【目标文件】
常用选项 含义
-r 递归复制整个文件夹
[root@contos7 ~]# cp ok1.txt /home
[root@contos7 ~]# cd /home
[root@contos7 home]# ll
total 4
drwx------. 2 jerry jerry    83 Jun 18 09:34 jerry
-rw-r--r--. 1 root  root      5 Jun 18 12:04 ok1.txt
drwx------. 2 jerry jerry    62 Jun 18 09:13 tom
drwx------. 2 zwj   mingjiao 99 Jun 18 10:18 zwj
[root@contos7 ~]# mkdir -p a2/b2/c2
[root@contos7 ~]# cp -r a2 /home

使用细节
cp -r mk1 mk2 这个指令,当发现目标下有相同文件,会提示你是否覆盖
强制覆盖不提示的方法:\cp
  \cp -r mk1 mk2

  • rm指令:移除文件或目录(可同时删除多个,多个空文件间用空格隔开)
    基本语法:rm [选项] 要删除的文件或目录
    • 常用选项
    -r :递归删除整个文件夹
    -f :强制删除不提示
常用选项 含义
-r 递归删除是整个文件夹
-f 强制删除不提示
使用细节:强制删除不提示的方法:带上 -f 参数即可
  • mv指令:移动文件与目录或重命名
    基本语法:
    mv oldNameFile newNameFile (功能描述:重命名)
    mv /temp/movefile /targetFolder (功能描述:移动文件)
[root@contos7 ~]# mv a1 a3
[root@contos7 ~]# mv a3 a2
解析:mv a1 a3:将 a1 改名为 a3【无a3】mv a3 a2:将 a3 移动到 a2 中【有a2,并且a2为目录】

技巧:
最后的参数为文件则重命名,最后的参数为目录则移动文件

  • cat指令:查看文件内容 (只能查看,不能修改)
    基本语法:cat [选项] 要查看的文件
常用选项 含义
-n 显示行号
例: 查看 /ect/profile 文件内容,并显示行号指令:cat -n /etc/profile
• 产生的问题一执行此指令就将内容全部显示完,导致立刻就退出来了
• 使用细节cat 只能浏览文件,而不能修改文件,为了浏览方便,一般会带上 管道命令 | more指令:cat -n /etc/profile | more
• 快捷键空格按分页显示,回车显示下一行
  • more指令:是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。
    more指令中内置了若干快捷键,详见操作说明
    基本语法:more 要查看的文件

    操作说明:

快捷键 功能说明
空白键space 代表向下翻一页
Enter 代表向下翻一行
q 代表立刻离开 more, 不在显示该文件内容
Ctrl+F 向下翻动一屏
Ctrl+B 返回上一屏
= 输出当前行的行号
:f 输出文件名和当前的行号
  • less指令:分屏查看文件内容
    less指令用来分屏查看文件内容,它的功能与more指令类似,但是比more指令更加强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率

    基本语法:less 要查看的文件

    操作说明:

快捷键 功能说明
空白键space 滚动一页
[pagedown] 向下翻动一页
[pageup] 向上翻动一页
/字串 向下搜寻【字串】的功能:n:向下查找;N:向上查找
?字串 向上搜寻【字串】的功能:n:向上查找;N:向下查找
q 离开 less 这个程序

• > 指令 和 >> 指令:> 输出重定向 和 >> 追加
1)> 输出重定向:会将原来文件的内容覆盖
2)>> 追加:不会覆盖原来文件的内容,而是追加到文件的尾部
基本语法:
1) ls -l > 文件
  将 ls -l 查询出来的内容写入文件中,若文件不存在则自动创建此文件(覆盖写)
2) ls -al >> 文件
  将 ls -al 查询出来的内容追加到文件末尾,若文件不存在则自动创建此文件(追加)
3) cat 文件1 > 文件2
  将 文件1 的内容覆盖到文件2中
4) echo "内容" >> 文件
  将 内容 追加到文件末尾

案例: 将当前日历信息 追加到 /home/mycal 文件中【cal:当前日历信息】指令: [root@contos7 ~]# cal >> /root/mycal[root@contos7 ~]# more mycal

总结:> 指令 和 >> 指令
   1)> 指令:将 > 左侧查询结果覆盖到 > 右侧文件中
   2)>> 指令:将 >> 左侧查询结果追加到 >> 右侧文件中

  • echo指令:输出内容到控制台。
    基本语法:echo [选项] [输出内容]
案例1: 使用 echo 指令输出环境变量,输出当前的环境路径[root@contos7 ~]# echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin案例2: 使用echo 指令输出 hello,world[root@contos7 ~]# echo "hello,world"hello,world
  • head指令:显示文件的开头部分内容,默认情况下head指令显示文件的前10行内容
    基本语法:
    head 文件 (功能描述:查看文件头10行内容)
    head -n 5 文件 (功能描述:查看文件头5行内容,5可以是任意行数)

  • tail指令:输出文件中尾部的内容,默认情况下tail指令显示文件的后10行内容。
    基本语法:
    tail 文件 (功能描述:查看文件后10行内容)
    tail -n 5 文件 (功能描述:查看文件后5行内容,5可以是任意行数)
    tail -f 文件 (功能描述:实时追踪该文档的所有更新,经常使用)

案例: 实时监控 mydate.txt, 当文件有变化时,是否可以看到。1.开两个XShell窗口2.在第一个窗口输入指令 tail -f mydate.txt 进行实时追踪此文件3.在第二个窗口输入指令 ls -la >> mydate.txt,将内容追加到 mydate.txt 文件中4.在第一个窗口中实时监控 mydate.txt 有没有变化,如果有变化,就会看到
  • ln 指令:软链接、符号链接
    软链接也称为符号链接,类似于windows里的快捷方式,主要存放了链接其他文件的路径【类似快捷键】
    基本语法:ln -s [原文件或目录] [软链接名] (功能描述:给原文件创建一个软链接)
案例1: 在/home 目录下创建一个软链接 linkToRoot,链接到 /root 目录[root@contos7 home]# ln -s /root linkToRoot[root@contos7 home]# lllrwxrwxrwx. 1 root  root      5 Jun 19 23:59 linkToRoot -> /root
案例2: 删除软链接 linkToRoot[root@contos7 home]# rm -rf linkToRoot    细节:删除软链接 linkToRoot 时,后面不要带 /

细节说明
当我们使用pwd指令查看目录时,仍然看到的是软链接所在目录

  • history指令
    查看已经执行过的历史命令,也可以执行历史指令
    基本语法:history (功能描述:查看已经执行过历史命令)
案例1: 显示所有的历史命令[root@contos7 home]# history1  ll2  cd /home
案例2: 显示最近使用过的10个指令。history 10
案例3:执行历史编号为5的指令!5

时间日期类

  • date指令:显示当前日期
    基本语法:
    1) date (功能描述:显示当前时间)
    2) date +%Y (功能描述:显示当前年份)
    3) date +%m (功能描述:显示当前月份)
    4) date +%d (功能描述:显示当前是哪一天)
    5) date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)

  • date指令:设置日期
    基本语法:date -s 字符串时间

案例: 练习以上指令,并设置系统当前时间,比如设置成 2020-11-11 11:22:22[root@contos7 ~]# dateSat Jun 20 12:15:33 CST 2020[root@contos7 ~]# date +%Y2020[root@contos7 ~]# date "+%Y-%m-%d %H:%M:%S"2020-06-20 12:15:41[root@contos7 ~]# date -s "2020-11-11 11:22:22"Wed Nov 11 11:22:22 CST 2020[root@contos7 ~]# dateWed Nov 11 11:22:35 CST 2020

注意:修改时间后别忘了把时间修改回当前时间

  • cal指令:查看日历指令
    基本语法:cal [选项] (功能描述:不加选项,显示本月日历)
案例1: 显示当前日历[root@contos7 ~]# calJune 2020     Su Mo Tu We Th Fr Sa1  2  3  4  5  67  8  9 10 11 12 1314 15 16 17 18 19 2021 22 23 24 25 26 2728 29 30案例2: 显示2020年日历[root@contos7 ~]# cal 2020

搜索查找类

  • find指令:将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
    基本语法:find [搜索范围] [选项]

    选项说明:

选项 功能
-name<查询方式> 按照指定的文件名查找模式查找文件(可用 * 通配符)
-user<用户名> 查找属于指定用户名所有文件
-size<文件大小> 按照指定的文件大小查找文件
案例1: 按文件名:根据名称查找/home 目录下的hello.txt文件find /home -name hello.txtfind 搜索的范围 按照名字 要查找的文件
案例2:按拥有者:查找/opt目录下,用户名称为 nobody 的文件find /opt -user nobody
案例3:查找整个linux系统下大于20m的文件(+n 大于 -n小于 n等于)find / -size +20M
  • grep 指令和 管道符号 |
    grep 过滤查找 ,管道符,“|”,表示将前一个命令的处理结果输出传递给后面的命令处理。
    基本语法:grep [选项] 查找内容 源文件

    常用选项:

常用选项 功能
-n 显示匹配行及行号
-i 忽略字母大小写
案例: 请在 hello.txt 文件中,查找 "yes" 所在行【不区分大小写】,并且显示行号[root@contos7 ~]# touch hello.txt[root@contos7 ~]# vim hello.txt [root@contos7 ~]# cat hello.txt | grep -ni yes4:yes6:Yes8:yes
注意:hello.txt写入的内容hahahehexixiyesnoYesokokyes

压缩和解压类

  • gzip/gunzip 指令
    gzip 用于压缩文件, gunzip 用于解压的
    基本语法
    gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
    gunzip 文件.gz (功能描述:解压缩文件命令)
案例1: gzip压缩, 将 /home下的 hello.txt文件进行压缩[root@contos7 home]# gzip hello.txt [root@contos7 home]# lltotal 4-rw-r--r--. 1 root  root     30 Jun 20 12:32 hello.txt.gz案例2: gunzip压缩,将 /home下的 hello.txt.gz 文件进行解压缩[root@contos7 home]# gunzip hello.txt.gz [root@contos7 home]# lltotal 0-rw-r--r--. 1 root  root      0 Jun 20 12:32 hello.txt

细节说明:
  当使用 gzip / gunzip 对文件进行压缩 / 解压后,不会保留原来的文件

  • zip/unzip 指令
    zip 用于压缩文件, unzip 用于解压的,这个在项目打包发布中很有用的
    基本语法:
    zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录的命令)
    unzip [选项] XXX.zip (功能描述:解压缩文件)

    zip常用选项:

zip常用选项 功能
-r 递归压缩,即压缩目录
unzip常用选项:
unzip常用选项 功能
-d<目录> 指定解压后文件的存放目录
案例1: 将 /home下的 所有文件进行压缩成 mypackage.zip【mypackage.zip:为压缩文件取名】[root@contos7 home]# zip -r mypackage.zip /home/
案例2: 将 mypackge.zip 解压到 /opt/tmp 目录下[root@contos7 home]# unzip -d /opt/tem/ mypackage.zip
  • tar 指令
    tar 指令 是打包指令,最后打包后的文件是 .tar.gz 的文件。
    基本语法:
    tar [选项] XXX.tar.gz 打包的内容(功能描述:打包目录,压缩后的文件格式.tar.gz)【XXX.tar.gz:给打包后的文件取名】

    选项说明:

常用选项 功能
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件
案例1: 压缩多个文件,将 /home/a1.txt 和 /home/a2.txt 压缩成 a.tar.gz[root@contos7 home]# touch a1.txt a2.txt[root@contos7 home]# tar -zcvf a.tar.gz a1.txt a2.txta1.txta2.txt[root@contos7 home]# ll-rw-r--r--. 1 root  root      119 Jun 21 13:53 a.tar.gz
案例2: 将/home 的文件夹 压缩成 myhome.tar.gz[root@contos7 home]# tar -zcvf myhome.tar.gz /home/
案例3: 将 a.tar.gz 解压到当前目录[root@contos7 home]# rm -rf a1.txt a2.txt[root@contos7 home]# tar -zxvf a.tar.gza1.txta2.txt
案例4: 将 myhome.tar.gz 解压到 /opt/ 目录下 【前提:指定解压到的那个目录必须要有】[root@contos7 home]# tar -zxvf a.tar.gz -C /opt/a1.txta2.txt[root@contos7 home]# cd /opt[root@contos7 opt]# lltotal 0-rw-r--r--. 1 root root  0 Jun 21 13:52 a1.txt-rw-r--r--. 1 root root  0 Jun 21 13:52 a2.txt

组管理

Linux组基本介绍

在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件有所有者、所在组、其它组的概念。

  1. 所有者
  2. 所在组
  3. 其它组
  4. 改变用户所在的组

清空之前所有测试数据,方便接下来的测试

文件 / 目录 所有者

一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者。

  • 查看文件的所有者
    基本语法:ls –ahl
案例:创建一个组 police,再创建一个用户tom,将 tom 放在 police 组,然后使用 tom 来创建一个文件 ok.txt,看看情况如何[root@contos7 ~]# groupadd police[root@contos7 ~]# useradd -g police tom[root@contos7 ~]# passwd tom使用 tom 账号登录[tom@contos7 ~]$ touch ok.txt[tom@contos7 ~]$ ls -ahl执行结果【ok.txt 文件的所有者是 tom】total 12Kdrwx------. 2 tom  police  76 Jun 21 19:18 .drwxr-xr-x. 3 root root    17 Jun 21 19:15 ..-rw-r--r--. 1 tom  police  18 Oct 31  2018 .bash_logout-rw-r--r--. 1 tom  police 193 Oct 31  2018 .bash_profile-rw-r--r--. 1 tom  police 231 Oct 31  2018 .bashrc-rw-r--r--. 1 tom  police   0 Jun 21 19:18 ok.txt
  • 修改文件所有者
    基本语法:chown 用户名 文件名
案例:使用root 创建一个文件apple.txt ,然后将其所有者修改成 tom[root@contos7 ~]# touch apple.txt[root@contos7 ~]# chown tom apple.txt
结果:【apple.txt 所有者由 root 更改为 tom】-rw-r--r--. 1 tom  root    0 Jun 21 19:23 apple.txt

组的创建

基本指令:groupadd 组名

文件目录所在组

当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组。

查看文件/ 目录所在组
基本指令:ls –ahl

修改文件所在的组
基本指令:chgrp 组名 文件名

案例:使用root用户创建文件 orange.txt,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 police 组[root@contos7 ~]# touch orange.txt[root@contos7 ~]# ll-rw-r--r--. 1 root root    0 Jun 21 19:33 orange.txt[root@contos7 ~]# chgrp police orange.txt [root@contos7 ~]# ll-rw-r--r--. 1 root police    0 Jun 21 19:33 orange.txt

其它组

除文件的所有者和所在组的用户外,系统的其它用户都是文件的其它组

改变用户所在组

在添加用户时,可以指定将该用户添加到哪个组中,同样的用root的管理权限可以改变某个用户所在的组。

改变用户所在组:

  1. usermod –g 组名 用户名
  2. usermod –d 目录名 用户名 改变该用户登陆的初始目录
案例:将 tom 这个用户从原来所在组,修改到 bandit 组。[root@contos7 ~]# groupadd bandit[root@contos7 ~]# usermod -g bandit tom[root@contos7 ~]# id tomuid=1001(tom) gid=1002(bandit) groups=1002(bandit)

权限管理

权限的基本介绍

ls -l 中显示的内容如下:

-rw-r--r--. 1 tom  root      0 Jun 21 19:23 apple.txt
0-9位说明:1. 第0位确定文件类型(- , d , l , c , b)-:普通文件d:目录l:软链接c:字符设备【键盘、鼠标】b:块文件【硬盘】2. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限。---Userr:读w:写-:没有权限3. 第4-6位确定所属组(同用户组的用户)拥有该文件的权限,---Groupr:读w:写-:没有权限4. 第7-9位确定其他用户拥有该文件的权限 ---Otherr:读w:写-:没有权限1 说明:如果是文件,表示硬链接的数,如果是目录,则表示该目录的子目录个数【包括两个隐藏目录 .(当前) 和 ..(上一级),不递归】tom 说明:表示文件所有者root 说明:表示文件所在组0 说明:表示文件的大小【单位:字节】,如果是目录,显示4096Jun 21 19:23 说明:表示文件的最后修改时间【上级目录递归修改】apple.txt 说明:表示文件名

rwx权限详解

  • rwx 作用到 文件
  1. [ r ]代表可读(read): 可以读取,查看
  2. [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件。删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件
  3. [ x ]代表可执行(execute): 可以被执行
  • rwx 作用到 目录
  1. [ r ]代表可读(read): 可以读取,ls查看目录内容
  2. [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
  3. [ x ]代表可执行(execute): 可以进入该目录

文件及目录权限案例

ls -l 中显示的内容如下:-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc10个字符确定不同用户能对文件干什么:第一个字符代表文件类型:文件 (-),目录(d),链接(l)其余字符每3个一组(rwx) 读(r) 写(w) 执行(x)第一组rwx : 文件拥有者的权限是读、写和执行第二组rw-: 与文件拥有者同一组的用户的权限是读、写但不能执行第三组r-- : 不与文件拥有者同组的其他用户的权限是读不能写和执行可用数字表示为: r=4,w=2,x=1 因此:rwx=4+2+1=71 文件:硬连接数或 或 目录:子目录数
root 用户
root 组
1213 文件大小(字节),如果是文件夹,显示4096字节
Feb 2 09:39 最后修改日期
abc 文件名

修改权限-chmod

基本说明:
通过 chmod 指令,可以修改文件或者目录的权限。

  • 第一种方式:+ 、- 、= 变更权限
    u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)

    1. chmod u=rwx,g=rx,o=x 文件目录名【u=rwx,g=rx,o=x中间不要加空格】
    2. chmod o+w 文件目录名
    3. chmod a-x 文件目录名
1. 给abc文件 的所有者读写执行的权限,给所在组读执行权限,给其它组读执行权限[root@contos7 ~]# touch abc[root@contos7 ~]# chmod u=rwx,g=rx,o=rx abc[root@contos7 ~]# lltotal 4-rwxr-xr-x. 1 root root      0 Jun 21 22:01 abc2. 给abc文件的所有者除去执行的权限,增加组写的权限[root@contos7 ~]# chmod u-x,g+w abc[root@contos7 ~]# lltotal 4-rw-rwxr-x. 1 root root      0 Jun 21 22:01 abc3. 给abc文件的所有用户添加读的权限[root@contos7 ~]# chmod a+r abc[root@contos7 ~]# lltotal 4-rw-rwxr-x. 1 root root      0 Jun 21 22:01 abc
  • 第二种 方式:通过数字变更权限
    r=4 w=2 x=1 rwx=4+2+1=7
    chmod u=rwx,g=rx,o=x 文件目录名
    相当于 chmod 751 文件目录名
案例:将 /root/abc 文件的权限修改成 rwxr-xr-x, 使用给数字的方式实现:[root@contos7 ~]# chmod 755 /root/abc[root@contos7 ~]# lltotal 4-rwxr-xr-x. 1 root root      0 Jun 21 22:01 abc

修改文件所有者

基本介绍:
chown newowner file:改变文件的所有者
chown newowner:newgroup file:改变用户的所有者和所有组
-R:如果是目录 则使其下所有子文件或目录递归生效

案例:1) 请将 abc 文件的所有者修改成 tom[root@contos7 ~]# chown tom abc[root@contos7 ~]# lltotal 4-rwxr-xr-x. 1 tom  root      0 Jun 21 22:01 abc2) 请将 kkk 目录下所有的文件和目录的所有者都修改成tom【递归修改】应该使用 root 操作[root@contos7 ~]# chown -R tom kkk/

修改文件所在组-chgrp

基本介绍:
chgrp newgroup file 改变文件的所有组

案例:1) 请将 /root/abc 文件的所在组修改成 bandit[root@contos7 ~]# chgrp bandit /root/abc[root@contos7 ~]# lltotal 4-rwxr-xr-x. 1 tom  bandit    0 Jun 21 22:01 abc2) 请将 /root/kkk 目录下所有的文件和目录的所在组都修改成 bandit【递归】[root@contos7 ~]# chgrp -R bandit /root/kkk

定时任务调度

crond任务调度

crontab 进行 定时任务的设置

任务调度:是指系统在某个时间执行的特定的命令或程序。
任务调度分类:1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等2.个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库的备份。

基本语法:crontab [选项]

常用选项:

常用选项 功能
-e 编辑crontab定时任务
-l 查询crontab任务
-r 删除当前用户所有的crontab任务

快速入门【案例】:

设置任务调度文件:/etc/crontab
设置个人任务调度。执行 crontab –e 命令。
接着输入任务到调度文件
如:*/1 * * * * ls –l /etc/ > /tmp/to.txt
意思说每小时的每分钟执行ls –l /etc/ > /tmp/to.txt命令
步骤:1)crontab –e2)*/1 * * * * ls –l /etc/ > /tmp/to.txt3)当保存退出后就生效4)在每一分钟都会自动的调用 ls –l /etc/ > /tmp/to.txt
结果:每分钟注意观察/tmp/to.txt文件,为更好观察,可换成 >> 追加指令

参数说明:
• 5个占位符的说明:

项目 含义 范围
第一个 * 一小时当中的第几分钟 0-59
第二个 * 一天当中的第几小时 0-23
第三个 * 一个月当中的第几天 1-31
第四个 * 一年当中的第几月 1-12
第五个 * 一周当中的星期几 0-7 0-7(0和7都代表星期日)

• 特殊符号的说明:

特殊符号 含义
* 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思
代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令
- 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令
*/n 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令

• 特定时间执行任务案例:

时间 含义
45 22 * * * 在22点45分执行命令
0 17 * * 1 每周1 的17点0分执行命令
0 5 1,15 * * 每月1号和15号的凌晨5点0分执行命令
40 4 * * 1-5 周一到周五的凌晨4点40分执行命令
*/10 4 * * * 每天的凌晨4点,每隔10分钟执行一次命令
0 0 1,15 * 1 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱
案例1 :每隔1 分钟,就将当前的日期信息,追加到 /tmp/mydate 文件中1)先编写一个文件 /home/mytask1.shdate >> /tmp/mydate2)给 mytask1.sh 一个可以执行权限chmod 744 /home/mytask1.sh3)crontab -e4)*/1 * * * * /home/mytask1.sh5)成功
案例2 :每隔1 分钟, 到 将当前日期和日历都追加到 /home/mycal 文件中1)先编写一个文件 /home/mytask2.shdate >> /tmp/mycalcal >> /tmp/mycal2)给 mytask2.sh 一个可以执行权限chmod 744 /home/mytask2.sh3)crontab -e4)*/1 * * * * /home/mytask2.sh5)成功
案例3: 每天凌晨2:00 将mysql 数据库 testdb ,备份到文件中 mydb.bak。1)先编写一个文件 /home/mytask3.sh/usr/local/mysql/bin/mysqldump -u root -proot testdb > /tmp/mydb.bak2)给 mytask3.sh 一个可以执行权限chmod 744 /home/mytask3.sh3)crontab -e4)0 2 * * * /home/mytask3.sh5)成功

crond 相关指令:
  1) conrtab –r:终止任务调度。【删除所有任务调度】
  2) crontab –l:列出当前有那些任务调度
  3) service crond restart [重启任务调度]

Linux磁盘分区、挂载

分区方式:1) mbr分区:1.最多支持四个主分区2.系统只能安装在主分区3.扩展分区要占一个主分区4.MBR最大只支持2TB,但拥有最好的兼容性2) gtp分区:1.支持无限多个主分区(但操作系统可能限制,比如 windows下最多128个分区)2.最大支持18EB的大容量(1EB=1024 PB,1PB=1024 TB )3.windows7 64位以后支持gtp

Linux分区

  • 原理:
      1. Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
      2. Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得

  • 硬盘说明
      1. Linux硬盘分IDE硬盘和SCSI硬盘,目前基本上是SCSI硬盘
      2. 对于IDE硬盘,驱动器标识符为“hdx~ ”,其中“hd”表明分区所在设备的类型,这里是指IDE硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
      3. 对于SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。

  • 查看所有设备挂载情况
    指令:lsblk 或者 lsblk -f

    结果解析:

NAME   FSTYPE  LABEL           UUID                                 MOUNTPOINTsda                                                                 ├─sda1 xfs                     78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot├─sda2 xfs                     d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /├─sda3 xfs                     9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date├─sda4                                                              └─sda5 swap                    dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]sr0    iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
name:分区情况
FSTYPE:分区类型
UUID:唯一标识分区的40位不重复的字符串
MOUNTPOINT:挂载点
sr0:光驱

挂载的经典案例
说明:我们以增加一块硬盘为例,来熟悉下磁盘的相关指令和深入理解磁盘分区、挂载、卸载的概念

  • 如何增加一块硬盘,并且挂载到 /home/newdisk
  1. 虚拟机添加硬盘
    点击虚拟机 -》设置 -》硬盘 -》添加硬盘 -》SCSI(s) 【下一步】 -》创建新的虚拟磁盘 【下一步】 -》分配大小(2GB),将虚拟磁盘拆分成多个文件【下一步】 -》完成

    添加硬盘成功后,需要重启系统

    执行 lsblk 指令,观察发现多出 sdb 【新的硬盘】:

    [root@contos7 ~]# lsblk
    NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
    sda      8:0    0  100G  0 disk
    ├─sda1   8:1    0    2G  0 part /boot
    ├─sda2   8:2    0   60G  0 part /
    ├─sda3   8:3    0   30G  0 part /date
    ├─sda4   8:4    0    1K  0 part
    └─sda5   8:5    0    8G  0 part [SWAP]
    sdb
    
  2. 分区:fdisk /dev/sdb
    执行步骤:fdisk /dev/sdb -》m -》n -》 p -》1 -》w

    [root@contos7 ~]# fdisk /dev/sdb
    Welcome to fdisk (util-linux 2.23.2).Changes will remain in memory only, until you decide to write them.
    Be careful before using the write command.Command (m for help): m
    Command actiona   toggle a bootable flagb   edit bsd disklabelc   toggle the dos compatibility flagd   delete a partitiong   create a new empty GPT partition tableG   create an IRIX (SGI) partition tablel   list known partition typesm   print this menun   add a new partitiono   create a new empty DOS partition tablep   print the partition tableq   quit without saving changess   create a new empty Sun disklabelt   change a partition's system idu   change display/entry unitsv   verify the partition tablew   write table to disk and exitx   extra functionality (experts only)Command (m for help): n
    Partition type:p   primary (1 primary, 0 extended, 3 free)e   extended
    Select (default p): p
    Partition number (1-4, default 1): 1
    First Cylinder (1-261, default 1):
    Using default value 1
    Last cylinder, +cylinders or +size{K,M,G} (1-261, default 261):
    Using default value 261Command (m for help): w
    The partition table has been altered!Calling ioctl() to re-read partition table.
    Syncing disks
    

    Command (m for help): 中的部分指令解析:

    指令 功能
    m 显示命令列表
    p 显示磁盘分区 同 fdisk –l
    n 新增分区
    d 删除分区
    w 写入并退出

    说明: 开始分区后输入n,新增分区,然后选择p ,分区类型为主分区。两次回车默认剩 余全部空间。最后输入w写入分区并退出,若不保存退出输入q

  执行 lsblk -f 指令,观察 sdb :

 ```powershell[root@contos7 ~]# lsblk -fNAME   FSTYPE  LABEL           UUID                                 MOUNTPOINTsda                                                                 ├─sda1 xfs                     78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot├─sda2 xfs                     d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /├─sda3 xfs                     9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date├─sda4                                                              └─sda5 swap                    dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]sdb                                                                 └─sdb1                                                              sr0    iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00               ```
  1. 格式化磁盘
    分区指令:mkfs -t ext4 /dev/sdb1
    其中ext4是分区类型

    [root@contos7 ~]# mkfs -t ext4 /dev/sdb1
    

    执行 lsblk -f 指令,观察 sdb :

    [root@contos7 ~]# lsblk -f
    NAME   FSTYPE  LABEL           UUID                                 MOUNTPOINT
    sda
    ├─sda1 xfs                     78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot
    ├─sda2 xfs                     d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /
    ├─sda3 xfs                     9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date
    ├─sda4
    └─sda5 swap                    dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]
    sdb
    └─sdb1 ext4                    ecf884d8-6f11-4d14-9136-7343c3ad0763
    sr0    iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
    
  2. 挂载
    描述:将一个分区与一个目录联系起来
    挂载指令:mount 设备名称 挂载目录
    挂载解除指令:umount 设备名称 或者 挂载目录

    先创建一个 /home/newdisk 目录,再将分区挂载到 /home/newdisk

    [root@contos7 ~]# mkdir /home/newdisk
    [root@contos7 ~]# mount /dev/sdb1 /home/newdisk
    

    挂载完成,观察 sdb1、newdisk 目录中的内容

    [root@contos7 ~]# lsblk -f
    NAME   FSTYPE  LABEL           UUID                                 MOUNTPOINT
    sda
    ├─sda1 xfs                     78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot
    ├─sda2 xfs                     d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /
    ├─sda3 xfs                     9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date
    ├─sda4
    └─sda5 swap                    dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]
    sdb
    └─sdb1 ext4                    ecf884d8-6f11-4d14-9136-7343c3ad0763 /home/newdisk
    sr0    iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
    [root@contos7 ~]# cd /home/newdisk/
    [root@contos7 newdisk]# ll
    total 16
    drwx------. 2 root root 16384 Jun 23 16:36 lost+found
    

    产生的问题:
    系统重启后,挂载失效【临时挂载】

  3. 设置可以自动挂载(永久挂载)
    当你重启系统,仍然可以挂载到 /home/newdisk
    步骤:
      通过修改 /etc/fstab 实现挂载,添加完成后执行 mount –a 即刻生效

    [root@contos7 newdisk]# vim /etc/fstab
    #
    # /etc/fstab
    # Created by anaconda on Fri Jun  5 18:38:57 2020
    #
    # Accessible filesystems, by reference, are maintained under '/dev/disk'
    # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
    #
    /dev/sdb1                                 /home/newdisk           ext4    defaults        0 0
    UUID=d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /                       xfs     defaults        0 0
    UUID=78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot                   xfs     defaults        0 0
    UUID=9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date                   xfs     defaults        0 0
    UUID=dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 swap                    swap    defaults        0 0注意:只增加了这一行
    /dev/sdb1                                 /home/newdisk           ext4    defaults        0 0[root@contos7 newdisk]# mount -a
    reboot测试重启系统是否还是挂载
    [root@contos7 newdisk]# reboot
    
  1. 取消挂载(解除挂载)

    [root@contos7 home]# umount /dev/sdb1
    [root@contos7 home]# lsblk -f
    NAME   FSTYPE  LABEL           UUID                                 MOUNTPOINT
    sda
    ├─sda1 xfs                     78f0c13a-f6be-42fb-8d2e-98e43d3b938d /boot
    ├─sda2 xfs                     d326982c-c1da-4ec7-b9b8-ef71dca1e8ae /
    ├─sda3 xfs                     9f3f81eb-6822-4df2-a908-e3bc3b09ddf6 /date
    ├─sda4
    └─sda5 swap                    dcae6ce5-5b6a-424d-b9ce-3e05d737bfa5 [SWAP]
    sdb
    └─sdb1 ext4                    ecf884d8-6f11-4d14-9136-7343c3ad0763
    sr0    iso9660 CentOS 7 x86_64 2018-11-25-21-21-31-00
    

磁盘情况查询

  1. 查询系统整体磁盘使用情况:df -h
    例:查询系统整体磁盘使用情况

    [root@contos7 ~]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/sda2        60G  1.2G   59G   2% /
    devtmpfs        900M     0  900M   0% /dev
    tmpfs           910M     0  910M   0% /dev/shm
    tmpfs           910M  9.5M  901M   2% /run
    tmpfs           910M     0  910M   0% /sys/fs/cgroup
    /dev/sda3        30G   33M   30G   1% /date
    /dev/sdb1       2.0G  6.0M  1.9G   1% /home/newdisk
    /dev/sda1       2.0G  138M  1.9G   7% /boot
    tmpfs           182M     0  182M   0% /run/user/0
    
  2. 查询指定目录的磁盘占用情况,默认为当前目录:du -h /目录

    选项 含义
    -s 指定目录占用大小汇总
    -h 带计量单位
    -a 含文件
    –max-depth=1 子目录深度
    –c 列出明细的同时,增加汇总值

    例:查询 /opt 目录的磁盘占用情况,深度为1

    [root@contos7 ~]# du -ach --max-depth=1 /home
    12K /home/tom
    20K /home/newdisk
    32K /home
    32K total
    
  3. 查询磁盘情况-工作实用指令
    root目录示例:

    [root@contos7 ~]# ll
    total 4
    -rwxr-xr-x. 1 tom  bandit    0 Jun 21 22:01 abc
    -rw-------. 1 root root   1615 Jun  5 18:46 anaconda-ks.cfg
    -rw-r--r--. 1 tom  root      0 Jun 21 19:23 apple.txt
    drwxr-xr-x. 2 tom  bandit   32 Jun 21 22:14 kkk
    -rw-r--r--. 1 root police    0 Jun 21 19:33 orange.txt
    
  1. 统计/root文件夹下文件的个数

    [root@contos7 ~]# ls -l /root | grep "^-" | wc -l
    4
    
  2. 统计/root文件夹下目录的个数

    [root@contos7 ~]# ls -l /root | grep "^d" | wc -l
    1
    
  3. 统计/root文件夹下文件的个数,包括子文件夹里的

    [root@contos7 ~]# ls -lR /root | grep "^-" | wc -l
    6
    
  4. 统计文件夹下目录的个数,包括子文件夹里的

    [root@contos7 ~]# ls -lR /root | grep "^d" | wc -l
    1
    
  5. 以树状显示目录结构:tree / tree [指定目录]

[root@contos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── apple.txt
├── kkk
│   ├── a.txt
│   └── b.txt
└── orange.txt1 directory, 6 files
注意:如果没安装tree,则执行 yum install tree 指令安装tree
[root@contos7 ~]# tree
-bash: tree: command not found
[root@contos7 ~]# yum install tree
Loaded plugins: fastestmirror
Determining fastest mirrors
...
【安装中】询问安装吗,输入 y ,继续安装
...
Complete!
[root@contos7 ~]# tree
.
├── abc
├── anaconda-ks.cfg
├── apple.txt
├── kkk
│   ├── a.txt
│   └── b.txt
└── orange.txt1 directory, 6 files

网络配置

Linux网络配置原理图(VM虚拟机)

查看网络 IP 和 网关

  1. 查看虚拟网络编辑器
  2. 修改 ip 地址(修改虚拟网卡的 ip)
  3. 查看网关

    查看windows环境中的 VMnet8网络配置(ipconfig

    1. 使用 ipconfig查看
    2. windows界面查看
      操作步骤:


ping 测试主机之间网络的连通性

注意小细节:
  linux 在 ping 过程中,使用 ctrl + c 快捷键结束 ping

基本语法:
ping 目的主机 (功能描述:测试当前服务器是否可以连接目的主机)
例:

  1. 测试当前服务器是否可以连接百度

    [root@contos7 ~]# ping www.baidu.com
    PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
    64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=1 ttl=128 time=27.7 ms
    64 bytes from 14.215.177.39 (14.215.177.39): icmp_seq=2 ttl=128 time=22.5 ms
    
  2. 测试是否可以连接到 windows
    在 windows 的 cmd 窗口执行指令 ipconfig 查询 ip 地址(192.168.0.100)

    [root@contos7 ~]# ping 192.168.0.100
    PING 192.168.0.100 (192.168.0.100) 56(84) bytes of data.
    64 bytes from 192.168.0.100: icmp_seq=1 ttl=128 time=0.815 ms
    64 bytes from 192.168.0.100: icmp_seq=2 ttl=128 time=0.685 ms
    
  3. 测试windows是否可以连接到 VM虚拟机
    执行ip addr指令查看 CentOS7 ip地址

    C:\Users\GZM>ping 192.168.153.128正在 Ping 192.168.153.128 具有 32 字节的数据:
    来自 192.168.153.128 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.153.128 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.153.128 的回复: 字节=32 时间<1ms TTL=64
    来自 192.168.153.128 的回复: 字节=32 时间<1ms TTL=64192.168.153.128 的 Ping 统计信息:数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
    往返行程的估计时间(以毫秒为单位):最短 = 0ms,最长 = 0ms,平均 = 0ms
    

Linux(CentOS7)网络环境配置

指定固定的 ip

  1. 修改虚拟机中的CentOS 7系统为固定IP的配置文件

    [root@contos7 network-scripts]# cd /etc/sysconfig/network-scripts/
    [root@contos7 network-scripts]# ls
    ifcfg-ens33  ifdown-eth   ifdown-post    ifdown-Team      ifup-aliases  ifup-ipv6   ifup-post    ifup-Team      init.ipv6-global
    ifcfg-lo     ifdown-ippp  ifdown-ppp     ifdown-TeamPort  ifup-bnep     ifup-isdn   ifup-ppp     ifup-TeamPort  network-functions
    ifdown       ifdown-ipv6  ifdown-routes  ifdown-tunnel    ifup-eth      ifup-plip   ifup-routes  ifup-tunnel    network-functions-ipv6
    ifdown-bnep  ifdown-isdn  ifdown-sit     ifup             ifup-ippp     ifup-plusb  ifup-sit     ifup-wireless
    [root@contos7 network-scripts]# vim ifcfg-ens33
    

    解析:# 将 IPV6….. 协议都注释;BOOTPROTO="static"      #开机协议,有dhcp及static;ONBOOT="yes"            #设置为开机启动;DNS1=114.114.114.114    #这个是国内的DNS地址,是固定的;IPADDR=192.168.153.129  #你想要设置的固定IP,理论上192.168.2.2-255之间都可以,请自行验证;NETMASK=255.255.255.0   #子网掩码,不需要修改;GATEWAY=192.168.153.2   #网关【要与VMnet8中设置的网关一致】,# 这里是你在“2.配置虚拟机的NAT模式具体地址参数”中的(2)选择VMnet8--取消勾选使用本地DHCP--设置子网IP--网关IP设置。修改保存后,重启网络服务 或 重启系统service network restart 或 reboot
    
  2. 检验配置是否成功
    ① 重启之后执行 ip addr指令

    ② ping www.baidu.com

    ③ ping 本机windows

    ④ 本机windows ping centos7

进程管理

进程的基本介绍

  1. 在LINUX中,每个执行的 程序(代码)都称为一个进程。每一个进程都分配一个ID号。
  2. 每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如www服务器。
  3. 每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
  4. 一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。

显示系统执行的进程

ps 查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数,一般使用参数 ps -aux

[root@contos7 ~]# psPID TTY          TIME CMD7198 pts/0    00:00:00 bash7216 pts/0    00:00:00 ps
字段 说明
PID 进程识别号
TTY 终端机号
TIME 此进程所消 CPU 时间
CMD 正在执行的命令或进程名
选项 说明
ps -a 显示当前终端的所有进程信息
ps -u 以用户的格式显示进程信息
ps -x 显示后台进程运行的参数
[root@contos7 ~]# ps -aux | more


ps 详解

  1. 指令:ps –aux|grep xxx
    例:查询有没有sshd服务

    [root@contos7 ~]# ps -aux | grep sshd
    root       6675  0.1  0.2 112756  4320 ?        Ss   16:51   0:00 /usr/sbin/sshd -D
    root       6826  1.2  0.2 158760  5588 ?        Ss   16:51   0:00 sshd: root@pts/0
    root       7232  0.0  0.0 112708   972 pts/0    S+   16:52   0:00 grep --color=auto sshd
    
  2. 指令结果解析

    指令 说明
    System V 展示风格
    USER 用户名称
    PID 进程号
    %CPU 进程占用CPU 的百分比
    %MEM 进程占用物理内存的百分比
    VSZ 进程占用的虚拟内存大小(单位:KB)
    RSS 进程占用的物理内存大小(单位:KB)
    TT 终端名称,缩写
    STAT 进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等
    STARTED 进程的启动时间
    TIME CPU时间,即进程使用CPU的总时间
    COMMAND 启动进程所用的命令和参数 ,如果过长会被截断显示

查看进程父进程
指令:ps -ef | more

[root@contos7 ~]# ps -ef | more
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  1 16:51 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 16:51 ?        00:00:00 [kthreadd]
root          3      2  0 16:51 ?        00:00:00 [ksoftirqd/0]
root          4      2  0 16:51 ?        00:00:00 [kworker/0:0]
root          5      2  0 16:51 ?        00:00:00 [kworker/0:0H]
root          6      2  0 16:51 ?        00:00:00 [kworker/u256:0]
root          7      2  0 16:51 ?        00:00:00 [migration/0]
字段 说明
PID 进程号
PPID 父进程号(0:最高级进程,没有父进程)
C CPU用于计算执行优先级的因子。数值越大,表明进程是CPU密集型运算,执行优先级会降低;数值越小,表明进程是I/O密集型运算,执行优先级会提高

终止进程 killkillall

若是某个进程执行一半需要停止时,或是已经消耗了很大的系统资源时,此时可以考虑停止该进程。使用kill指令来完成此项任务。

基本语法:
  kill [选项] 进程号(功能描述:通过进程号杀死进程)
  killall 进程名称 (功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用)

常用选项:

常用选项 说明
- 9 表示强迫进程立即停止

案例1:踢掉某个非法登录用户

[root@contos7 home]# ps -aux | grep sshd
root       6675  0.0  0.2 112756  4320 ?        Ss   16:51   0:00 /usr/sbin/sshd -D
root       6826  0.0  0.2 158760  5588 ?        Ss   16:51   0:00 sshd: root@pts/0
root       7506  1.3  0.2 158760  5516 ?        Ss   17:26   0:00 sshd: tom [priv]
tom        7510  0.0  0.1 158760  2328 ?        S    17:26   0:00 sshd: tom@pts/1
root       7542  0.0  0.0 112708   976 pts/0    S+   17:27   0:00 grep --color=auto sshd
[root@contos7 home]# kill 7510

案例2: 终止远程登录服务sshd, 在适当时候再次重启sshd服务
案例3: 终止多个gedit 编辑器
案例4:强制杀掉一个终端

Linux-CentOS7知识总结相关推荐

  1. linux基础知识-链接列表

    linux基础知识-链接列表 1. 安装centos 7 1.1 Linux的初识 1.2 centOS 7安装教程 1.3 centOS 7配置ip和网络问题排查 1.4 PuTTY和Xshell远 ...

  2. 「薅」52图初探Linux通用知识

    噗..为啥不是面试题了,封面船去哪里了?要开好船,先回到我们的初心---Linux,这篇文章是Linux的超级基础且经常用到的内容,不多说,直接肝!可以直接拉到文末点个赞!当然,如果需要思维导图可编辑 ...

  3. linux文本运行层次,Linux基础知识之---文件系统层级结构

    #Linux基础知识之---文件系统层级结构 @(Linux系统)[基础知识,文件系统,层级结构,FHS] 一切皆文件: 在Linux中,无论是目录.配置.cpu.内存.键盘.鼠标.或者运行中的系统及 ...

  4. Linux centos7 DNS服务器基于bind正反解析服务的搭建

                                                 Linux centos7 DNS服务器基于bind正反解析服务的搭建 DNS的相关基础知识: 一.DNS-- ...

  5. Linux Centos7.x下安装部署Jira和confluence以及破解方法详述

    https://www.cnblogs.com/easonscx/p/10629173.html Linux Centos7.x下安装部署Jira和confluence以及破解方法详述 简述 JIRA ...

  6. 虚拟机及Linux[CentOS7]下载、安装说明(全)

    虚拟机及Linux[CentOS7]下载.安装说明 1,Vmware workstation Pro下载 2,Vmware workstation Pro安装 3,CentOS7镜像下载 4,创建虚拟 ...

  7. linux基础理论知识篇大全(表格版)

    linux基础理论知识篇大全 1.运维核心职责\color{blue}{1.运维核心职责}1.运维核心职责 2.程序进程守护进程\color{blue}{2.程序进程守护进程}2.程序进程守护进程 3 ...

  8. 52图初探Linux通用知识

    噗..为啥不是面试题了,封面船去哪里了?要开好船,先回到我们的初心---Linux,这篇文章是Linux的超级基础且经常用到的内容,不多说,直接肝!可以直接拉到文末点个赞! Linux软件安装 Lin ...

  9. 2W 字梳理 Linux 通用知识

    这篇文章是Linux的超级基础且经常用到的内容,不多说,直接肝!可以直接拉到文末点个赞! Linux软件安装 Linux排查问题套路 Linux命令详解 一 Linux通用知识 说到操作系统,如果读大 ...

  10. Linux CentOS7配置ip地址攻略

    本文为joshua317原创文章,转载请注明:转载自joshua317博客 Linux CentOS7配置ip地址攻略 - joshua317的博客 一.背景 公司新来一台服务器,系统已经装好了,操作 ...

最新文章

  1. 目标检测之Faster-RCNN的pytorch代码详解(数据预处理篇)
  2. 表白这件事,比解 bug 要难多少?
  3. 某面试官吐槽:面试某大龄程序员,问HTTPS的加密过程,对方却答不出来!网友:这个问题毫无意义!...
  4. MVC在基控制器中实现处理Session的逻辑
  5. C++和Java中类继承同名函数的区分
  6. Verizon发布2010年数据破坏调查报告
  7. PsTools在***中的一点小应用
  8. 一个sql题目, 统计每年每月的信息
  9. (转)WPF中让窗体不显示最大化,最小化,关闭按钮
  10. 使用计算机对炼钢过程进行实时监控,转炉炉气分析与“投弹”检测相结合在自动化炼钢技术中的应用...
  11. 【转】用Setup Factory 7.0制作安装程序
  12. 基于Xamarin移动测试云测试你的Android/iOS移动应用
  13. 镭神智能C32 ROS Rviz使用教程
  14. lqr控制和模糊控制三级倒立摆
  15. 2021-2027全球与中国DJ设备市场现状及未来发展趋势
  16. 4246 奶牛的身高
  17. vmware的ubuntu虚拟机屏幕太小解决办法
  18. dw中html网页如何加音乐播放器,Dreamweaver CC
  19. 使用python中的pymrmr模块来进行特征提取,深入学习mRMR(最大相关最小冗余准则)
  20. Android10.0 Service启动源码解析

热门文章

  1. 提取多项式系数和次数c语言,C++作业:用节点node表示多项式的系数和次数,编程合并两个链式表达的多项式...
  2. SpringCloud技术指南系列(十五)分布式链路跟踪Sleuth与Zipkin实现
  3. Aperta为开曼群岛提供电子资金转账(EFT)服务
  4. Unable to import maven project: See logs for details错误解决方法
  5. 解决itunes启动后一直显示 正在访问iTunes Store 的问题
  6. 后端接收前端提交的数据保存到数据库
  7. USB Device 数据读取方式的研究
  8. 工业机器人对工业发展有着非常重大的意义
  9. (80)TCL脚本命令【string trimleft】
  10. 关于Unity出现青色闪屏