1. 安装

软件基于:

vm-box 6.1 免费的,直接从官网搞就好了 centos 8 迅雷链接:https://mirrors.aliyun.com/centos/8.4.2105/isos/x86_64/CentOS-8.4.2105-x86_64-dvd1.iso

安装参照:
https://www.cnblogs.com/gaomanito/p/11460381.html
远程工具:

  1. xshell https://blog.csdn.net/Trista_WU/article/details/79873310
  2. xhttp

说明:

  1. 尽量不要分配在 C 盘下
  2. 对于分区,可以手动分区
    1. /boot 分区 1G 文件系统 ext4
    2. swap 分区 2G 文件系统 swap
    3. / (根) 分区 17G 文件系统 ext4

image.png

image.png
image.png

  1. 关于生产环境

image.png

关于网络连接:

  1. 桥接模式:真实的 ip,可能会有 ip 冲突
  2. NAT 模式:network address translation,虚拟机 ip 映射到 真实主机。
  3. 主机系统:不和外部进行通讯。

image.png
安装 vm 的增强工具,设定一下共享文件夹
关于 xshell https://blog.csdn.net/elie_yang/article/details/81369136

2. linux 的目录结构

  1. 在 linux 中,一切皆为文件

基本结构如下:
image.png

  1. /bin:
    1. /user/bin,/user/local/bin 用于存放各种基本指令
    2. /sbin 用于存放 系统管理员的指令
  2. /home:目录下,每个用户有一个自己的目录,常用登录名命名
  3. /root:超级管理员的用户主目录
  4. /lib:系统开机所需要的最基本的动态链接共享库,类似 windows 中的 DLL
  5. /lost+found:一般为空,当系统非法关机后,这里存放一些文件。
  6. /etc:系统配置文件+软件配置文件
  7. /usr:用户安装的应用存放
  8. /boot:Linux 启动时的相关文件
  9. /proc:不要随意更改,一般为虚拟,内存映射文件
  10. /srv:不要随意更改,存放服务启动的数据
  11. /sys:不要随意更改,内核文件,2.6 之后有新变化 sysfs
  12. /tmp:临时文件
  13. /dev:类似于 windows 的设备管理器,硬件以文件的形式存储
  14. /media:将 类似于 U 盘,光驱,识别后当作文件管理。
  15. /mnt:将外部的存储挂载在 /mnt 下,供用户临时挂载别的文件系统。
  16. /opt:给主机安装的额外软件所存放的目录。
  17. /user/local:另一个给主机额外安装软件所安装的目录,一般是通过编译源码方式
  18. /var:不断变化的内容,如 日志信息
  19. /selinux:安全子系统

3.vim

首先:vim 有三种模式

  1. 正常模式:一般打开文档的默认格式就是 正常模式,此模式下,可以进行上下左右来移动光标,使用 delete 来删除字符或者整行,也可以使用 复制粘贴功能
  2. 插入模式:i I,o O,a A,r R 进行插入
  3. 命令模式:进行替换,查找,行数,保存,退出等

示意图:
image.png

关于快捷键

在一般模式下:

  1. 复制粘贴:使用 Nyy 表示复制包含光标所在行的 N 行,更新光标位置后 p 进行粘贴
  2. 删除:Ndd,删除包含光标所在行的 N 行
  3. 定位首尾行:首行:gg,尾行:G,任意行:N shift+G,N gg
  4. 因为 ctrl+z 有别的用途,撤销的实现 通过 u

    在命令模式下:

  5. 查找:/word,使用 n 查找下一个

  6. 行号:使用行号:: set nu,不使用行号:: set nonu
  7. 定位具体行:: n

image.png

4.关机 & 重启命令

  1. # 立即关机
  2. shutdown -h now
  3. halt
  4. # 1 分钟
  5. shutdown -h 1
  6. # 重启
  7. shutdown -r now
  8. reboot
  9. # 内存数据同步到磁盘,无论是关机还是重启,都应该先执行下面的命令
  10. # shutdown / reboot / halt 内置会执行 sync,但是保险起见,建议手动执行
  11. sync

5. 用户权限

1. 关于使用root

通常我们使用 普通用户身份进行登录

  1. # 当我们权限不够的时候
  2. su - root
  3. password:
  4. # 转变为 root 身份
  5. # 进行完操作后
  6. logout

2. 用户管理

  1. # 添加用户 并指定家目录,默认是 /home/username
  2. useradd -d path username
  3. # 指定用户 修改登录密码,如果不指定,默认当前账号
  4. passwd username
  5. passwd:Xxxxx
  6. # 一般会切换到 root 账户
  7. # 删除指定 username 用户,此时会保存 username 的家目录
  8. userdel username
  9. # 不保留 username 的家目录
  10. userdel -r username
  11. # 查询用户信息
  12. id username
  13. uid=0(root) gid=0(root) 组=0(root)
  14. # 切换用户:权限低 --> 权限高,需要密码,否则不需要
  15. # 切换回来:exit/logout
  16. su - username
  17. # 查看当前用户信息,而且是首次登录的信息
  18. whoami/ who am i
  19. # 查看当前位置
  20. pwd

3. 用户组

  1. # 添加组
  2. groupadd chang
  3. # 删除组
  4. groupdel chang
  5. # 在添加用户时,指定组
  6. useradd -g groupName userName
  7. # 已经存在的用户,切换分组
  8. usermod -g groupName2 userName

4. 相关文件

/etc/passwd 文件
用户的配置文件,记录用户的各种信息
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow 文件
口令的配置文件
登录名:加密口令:最后一次更改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件
组的配置文件,记录Linux包含的组的信息
组名:口令:组标识号:组内用户列表

6. 运行级别

image.png

centos7

/etc/inittab 文件中
multi-user.target:analogous to runlevel 3
graphical.target”analogous to runlevel 5

  1. # 获取默认的运行级别
  2. systemctl get-default
  3. # 设置默认的运行级别
  4. systemctl set-default TARGET.target(e.g.multi-user.target)

centos7.6 及以后:关于 root 密码丢失忘记问题

  1. 重启,加载界面,键入 e,进入编辑模式
  2. image.png
  3. 键入:init=/bin/sh
  4. Ctrl + x 进入单用户模式
  5. mount -o remount,rw / (回车)
  6. 输入 新密码 (回车,输入时隐藏)
  7. 再次输入 (回车)
  8. touch /.autorelabel (回车)
  9. exec /sbin/init 耐心等待,如果完成后,会自动重启,使用新密码就可以进入了

7. 常用指令

part1 帮助命令

  1. # man 命令
  2. man ls
  3. # help 命令,内置命令
  4. help cd

part2 路径命令

  1. # 当前工作目录的绝对路径
  2. pwd
  3. # 显示当前路径下的所有 文件和目录
  4. ls
  5. -a:显示所有,包含隐藏
  6. -l:以列表详细信息展示
  7. -h:人性化展示,尤其体现在 文件大小上
  8. # 切换路径
  9. cd
  10. -/xxx 绝对路径
  11. -~:家路径
  12. -..:上级目录

part3 文件,目录命令

  1. # 值得一提:
  2. ./ 表示当前路径\
  3. ../ 表示父路径
  4. / 表示根路径
  5. # 创建目录
  6. mkdir
  7. -p:创建多层目录
  8. # 删除目录,默认删除,单级,空目录。注意:特指目录
  9. rmdir
  10. # 如果想强制删除多级,非空目录,文件。注意:可能时目录或者文件
  11. rm -rf
  12. # 创建一个空文件
  13. touch 文件名
  14. # 拷贝指令
  15. cp [option] source dest
  16. -r:递归复制整个文件夹
  17. # 关于文件名一致时,是否覆盖,
  18. # 如果默认写法,每个文件都要手动确定
  19. # 或者使用 \cp,无需提示,直接全部强制覆盖
  20. \cp -r source dest
  21. # 移动文件或者目录,或者重命名
  22. mv oldName newName
  23. # 文件内容的查看
  24. cat [opt] 文件名
  25. -n:显示行号
  26. more 文件名
  27. less 文件名
  28. # 举例
  29. cat -n /etc/profile | more [交互option]
  30. # 输出内容到控制台
  31. echo [option] [输出内容]
  32. # 举例
  33. echo $PATH
  34. echo "输出的内容记得用双括号"
  35. # 文件内容的前 N 行,默认 10
  36. head 文件名
  37. head -n N 文件名
  38. # 文件内容的尾 N 行,默认 10
  39. tail 文件名
  40. tail -n N 文件名
  41. tail -f 文件名:实时监控所有文档的更新,使用 ctrl+c 退出
  42. # > 和 >> 含义是重定向,> 表示覆盖,>> 表示追加 文件不存在则会创建
  43. ls -l /home > /home/info.txt
  44. # 示例,追加,日历信息
  45. cal >> /home/mycal.txt

关于 vi 中 more 的交互

image.png关于 less 指令的交互

image.png

文件目录

  1. # 相当于用 软连接名创建了个快捷方式
  2. ln -s [原文件目录] [软连接名]
  3. # 当使用 cd 软连接名时,直接到原文件目录位置
  4. # 使用 rm 删除连接
  5. rm -f /路径/软连接名
  6. # 查看历史操作,默认所有,可以指定 N 条
  7. history N
  8. # 与之相关的,可以用 !N 执行曾经执行的 第 N 个指令

part4 时间相关

  1. # 显示时间信息
  2. date
  3. # 显示年月日
  4. date "+%Y-%m-%d"
  5. # 显示时分秒
  6. date "+%H:%M:%S"
  7. # 设置系统时间
  8. date -s "yyyy-mm-dd HH:MM:SS"
  9. date -s "2021-11-11 21:23:23"
  10. # 日历 默认输出当前年当前月的信息
  11. cal
  12. # 日历 显示全年
  13. cal 2020
  14. # 日历 指定信息
  15. cal [[day] mounth] year

part5 搜索查找

  1. # 指定目录,递归遍历所有子目录,将满足条件的文件或者目录显示在终端
  2. find [指定范围] [选项]
  3. # 根据名称查找
  4. find /路径范围 test.txt
  5. # 根据拥有者查找
  6. find /路径范围 -user nobody/root/user 等等
  7. # 根据文件大小 (+,-)N 默认时 等于 N,文件单位:k M G
  8. find /文件路径 -size +200M
  9. # 用于快速定位文件的位置,其实内部有数据库维护位置关系
  10. # 所以为了保证准确性,需要管理员定期进行更新
  11. # 首次使用时,先使用 updatedb 创建 localtedb
  12. updatedb
  13. locate 文件名
  14. # 查看某个指令在那个目录下
  15. which ls
  16. # 过滤查找
  17. grep [option] 查找内容 源文件
  18. -n:显示匹配的行和行号
  19. -i:忽略大小写

part6 压缩和解压

  1. # gzip 压缩文件 Xxx.gz ,gunzip 解压文件 Xxx.gz
  2. gzip/gunzip
  3. # zip 压缩文件和目录,unzip 解压文件或目录
  4. zip [option] Xxx.zip
  5. -r:递归压缩
  6. unzip [option] Xxx.zip
  7. -d<目录>:指定压缩路径,默认到当前路径
  8. # tar 既可以打包,也可以解压,既可以是文件也可以是目录 生成的是 .tar.gz
  9. # 仔细看,是可以打包,不是压缩,使用 -z 才是压缩
  10. tar [option] Xxx.tar.gz 打包的内容
  11. -c:产生 .tar 打包文件
  12. -v:显示详细信息
  13. -f:指定压缩后的文件名
  14. -z:指定使用 gizp 形式压缩
  15. -x:解压 .tar 文件
  16. # 示例:压缩多个文件 到 pc.tar.gz
  17. tar -zcvf pc.tar.gz /home/pig.txt /home/cat.txt
  18. # 示例:将/home 的文件夹 压缩成 myhome.tar.gz 使用 /home/ 来表示文件而非路径
  19. tar -zcvf myhome.tar.gz /home/
  20. # 示例:将 pc.tar.gz 解压到当前目录
  21. tar -zxvf pc.tar.gz
  22. # 示例:将 myhome.tar.gz 解压到 /opt/tmp2 下
  23. mkdir /opt/tmp2
  24. tar -zxvf /home/myhome.tar.gz -C /opt/tmp2

8. 组概念

在 linux 中每个用户必须属于一个组,不能独立于组外 在 linux 中 每个文件有 所有者,所在组[默认是所有者所在组],其他组的概念

  1. # 修改文件的所有者
  2. chown 用户名 文件名
  3. # 修改文件所在组
  4. chgrp 组名 文件名
  5. # 修改用户所在组
  6. usermod -g 新组名 用户名
  7. # 修改用户初始登录位置 但是目录有可能是有权限的,如果权限不够,修改失败
  8. usermod -d 目录名 用户名
  9. ls -l
  10. drwxr-xr-x. 2 user user 4096 10 16 21:40 公共
  11. 权限信息 文件:硬链接数 or 目录:子目录数 所有者 所在组 大小 修改时间 文件名
  12. # 其中第一列 一共10位
  13. 0
  14. l:链接
  15. d:目录
  16. c:字符设备
  17. -:普通文件
  18. b:块设备,如硬盘
  19. 1-3 文件的所有者
  20. 4-6 文件所在组
  21. 7-9 文件的其他组
  22. r:可读
  23. 对于文件:可以读内容
  24. 对于目录:可以查看目录下的文件 ls
  25. w:可写
  26. 对于文件:指可修改,不代表可删除,除非你对该目录有写权限
  27. 对于目录:目录及子目录可创建+删除+重命名目录
  28. x:可执行
  29. 对于文件:可执行
  30. 对于目录:可进入
  31. -:不可
  32. 数学表示:
  33. r=4 w=2 x=1
  34. rwx = 7
  35. rw- = 6
  36. r-x = 5
  37. -wx = 3
  38. r-- = 4
  39. -w- = 2
  40. --x = 1
  41. --- = 0
  1. # 修改权限
  2. # ## 方式一:+-= 变更权限
  3. u:所有者
  4. g:所在组
  5. o:其他人
  6. augo
  7. chmod u=rwx,g=rx,o=x 文件名/目录
  8. chmod o+w 文件名/目录
  9. chmod a-x 文件名/目录
  10. # ## 方式二:使用数字变更权限
  11. # 简单说 u=7 g=5 o=1
  12. chmod 751 文件名/目录
  1. # 修改文件所有者
  2. chown newowner 文件名/目录
  3. chown newowner:newgroup 文件名/目录
  4. -R 对于目录进行递归处理
  5. # 修改所在组
  6. chgrp newgroup 文件名/目录

9. 定时任务调度

多次执行 crontab

设置任务调度的文件:/etc/crontab
设置个人任务调度。执行 crontab -e
crontab -r 终止任务,全部
crontab -l 列出当前任务
service crond restart 重启调度任务
选择任务调度文件

  1. */1 * * * * ls -l /etc/ > /tmp/to.txt

image.png
image.png
image.png
简单的案例

  1. # 1.选择合适目录
  2. cd ~
  3. # 2.创建脚本
  4. vim my.sh
  5. # 文件内容
  6. date >> /home/mycal
  7. cal >> /home/mycal
  8. # 3.添加权限
  9. chmod u+x my.sh
  10. # 4.手动执行脚本的形式
  11. ./my.sh
  12. # 5.使用任务调度
  13. crontab -e
  14. # 对于任务内容
  15. */1 * * * * /home/my.sh

一次性 at

at 命令是一次性定时任务,at 的守护进程 atd会以后台形式运行,检查作业队列来运行 默认,atd每60s检查一次,有作业时,匹配时间,匹配成功则运行 at 执行过任务后,任务不会再次执行 at 需要保证,atd 进程启动:ps -ef 查看所有进程 ps -ef | grep atd

  1. at [option] [time]
  2. Ctrl + D 两次,结束 at 命令的输入
  3. atp 查看没有执行的任务
  4. atrm 编号

image.png
image.png

10. Linux 分区

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

示例图:
image.png

  1. # 查看所有设备挂载的情况
  2. lsblk [-f]

硬盘的说明

  1. Linux 硬盘分为 IDE 硬盘 和 SCSI 硬盘(常用),

    1. IDE:标识符:hdx~
      1. hd 表示分区所在设备的类型,指 IDE
      2. x 表示盘号(a 基本盘,b 基本从属盘,c 辅助主盘,d 辅助从属盘)
      3. ~ 表示分区,1-4 表示主分区或者扩展分区,5-.. 表示逻辑分区
    2. SCSI:标识符:sdx~
      1. sd 表示分区所在的设备的类型,指 SCSI
      2. 其余信息与a项一致

        案例:硬盘的挂载

  2. 利用 vm 工具中存储的功能,内存 —> 添加(硬盘)—> SCSI(磁盘类型) —> 创建新的虚拟磁盘 —> 设定容量

  3. 重启
  4. 重启后,用 lsblk 可以看到硬盘 sdb,但是还未分区,使用 fdisk /dev/sdb
    1. 会进行进一步配置
    2. m 指令:显示命令列表
    3. p 指令:显示磁盘分区
    4. n 指令:新增分区
    5. d 指令:删除分区
    6. w 指令:写入并退出
    7. q 指令:退出不保存
    8. 基本流程:n 新增分区,p 分区类型指定为主分许,两次空格默认全部空间,最后 w 保存退出。
  5. 分区后的磁盘并不能立即使用分区,需要格式化,指定格式 mkfs -t ext4 /dev/sdb1
  6. 创建需要挂载的目录 mkdir /home/newdisk
  7. 现在两边的信息都准备好了,需要牵线搭桥了,即挂载:mount /dev/sdb1 /home/newdisk
  8. 当我们将内容写在了/home/newdisk 下,就相当于写在了磁盘里 touch kids.data
  9. 如果我想拆散他们,即卸载:umount /dev/sdb1 or unmount /home/newdisk,一般是 富家公子的母亲擅长
    1. 但是,留下的东西,kids.data 还是存在的
    2. 当我们将 /dev/sdb1 重新挂载到别的地方,可能需要再次格式化,老师没讲

注意:用命令行操作挂载,重启后失效
所以永久挂载是修改配置文件:/etc/fstab/
文件中新增:

  1. 方式一:UUID=XXXXXXX /home/newdisk ext4 defaults 0 0
  2. 方式二:/dev/sdb1 /home/newdisk ext4 defaults 0 0

然后,重启或者 执行 mount -a 发现已经生效

磁盘情况信息

  1. du [option] 目录(默认当前)
  2. -s:指定目录占用大小汇总
  3. -h:使用计量单位
  4. -a:含文件
  5. --max-depth=1:指定子目录深度
  6. -c:列出明细同时,增加汇总值
  1. # 统计 /opt 文件夹下 文件个数 grep 指定 - 开头,wc 指令用于统计个数
  2. ls -l /opt | grep "^-" | wc -l
  3. # 统计 /opt 文件夹下 文件个数(包括子文件) grep 指定 - 开头,wc 指令用于统计个数
  4. # -R 表示递归
  5. ls -lR /opt | grep "^-" | wc -l
  6. # tree 指令可以实现类似效果
  7. tree 目录
  8. # tree 可以通过 yum install tree 进行安装
  1. wc [option] 文件名
  2. # 该命令统计指定文件中的字节数、字数、行数。如果没有给出文件名,则从标准输入读取。
  3. -c 统计字节数
  4. -l 统计行数
  5. -m 统计字符数(这个参数不能与 -c 参数一起使用)
  6. -w 统计字数(一个字被定义为被空白、跳格或换行字符分隔的字符串)
  7. -L 显示最长行的长度
  8. --help 显示帮助信息
  9. --version 显示版本信息

11.Linux 的网络配置

使用 指定 ip 方案

默认是:动态分配 BOOTPROTO=”dhcp”
image.png
这里回头,在做个计网的知识汇总,结合 图解 http

映射文件 /etc/hostname

  1. # 查看 hostname
  2. hostname
  3. # windows 下是 C:\Windows\System32\drivers\etc\hosts
  4. 192.168.200.130 centos8
  5. # Linux 下是 /etc/hostname
  6. 192.168.200.1 thinkpad-c

主机名 解析机制 Hosts & DNS

  1. 输入URL
  2. 对于浏览器:进行浏览器中缓存的查找,有直接访问,没有下一步
  3. DNS 解析器缓存,cmd -> ipconfig /displaydns 查看 /flushdns 清理缓存,有直接访问,没有下一步
  4. hosts 文件中匹配,有,返回,没有下一步
  5. 发送到域名服务DNS进行解析,如果还没有,返回域名不存在,如果有,访问并在以上各环节保存一份。

另外,域名服务解析器是多级的。

12.Linux 进程

  1. ps [option]
  2. -a:显示所有终端进程
  3. -u:以用户的格式显示进程信息
  4. -x:显示后台进程运行的参数
  5. -e:显示所有进程
  6. -f:全格式
  7. # SYSTEM V 展示风格
  8. # USER 进程的执行用户
  9. # PID 进程号
  10. # PPID 父进程,0 表示没有父进程
  11. # C
  12. # %CPU 进程 占用 CPU 的百分比
  13. # %MEM 进程 占用 物理内存 的百分比
  14. # VSZ 进程 占用 虚拟内存 大小 KB
  15. # RSS 进程 占用 物理内存 大小 KB
  16. # TTY 终端
  17. # STAT 当前运行状态
  18. # S- 睡眠,s- 会话的先导进程
  19. # N- 进程拥有比普通优先级更低的优先级
  20. # R- 正在运行,D- 短暂等待,Z- 僵死进程,T- 被跟踪或被停止
  21. # START 进程开始时间
  22. # TIME 进程占用 CPU 总时间
  23. # COMMAND 进程名,执行该进程的指令和参数
  24. # 以全格式查看全部进程
  25. ps -ef
  26. # 查看 sshd 的父进程
  27. ps -ef|grep sshd
  28. # 关于进程的终止
  29. kill [option] 进程号
  30. killall 进程名称,包括子进程
  31. 选项中 -9:常用,表示立刻停止
  32. # 终止远程登录
  33. kill sshd对应的进程号
  34. # 重新启动
  35. /bin/systemctl start sshd.service
  36. # 一次性停止多个服务
  37. killall gedit
  38. # 查看进程树
  39. pstree [option]
  40. -p:显示进程 PID
  41. -u:显示进程的所属用户

13. Linux 的服务管理 service

服务本质就是进程,但是运行在后台,而且通常会监听某个端口,等待其他程序的请求,比如 防火墙,mysql 所以我们也称为:守护进程

  1. # service 基本指令
  2. service 服务名 [start|stop|restart|reload|status]
  3. # 在 centos 7 之后 许多服务使用 systemctl 管理
  4. # service 指令管理的服务在 /etc/init.d 查看
  5. # 也可以用 setup 指令,选项中 * 表示自启动,空格切换
  6. setup --> 会有GUI界面
  7. # chkconfig 用于指定不同运行级别是否自启动
  8. # 在 centos7 之后,许多服务使用 systemctl 管理
  9. # 查看服务
  10. chkconfig --list[|grep 服务名]
  11. chkconfig 服务名 --list
  12. # 修改服务自启动 指定 N 等级下,服务开启自启动或者关闭自启动,重启后生效
  13. chkconfig --level N 服务名 on/off
  1. # systemctl 中的服务管理,临时性的
  2. systemctl [start|stop|restart|reload|status] 服务名
  3. # systemctl 指令管理的服务在 /usr/lib/systemd/system 查看
  4. # 关于自启动状态,查看
  5. systemctl list-unit-files [| grep 服务名]
  6. # 设置服务自启动 默认指定 运行级别3,5,永久性的
  7. systemctl enable 服务名
  8. # 关闭服务自启动 默认指定 运行级别3,5,永久性的
  9. systemctl disable 服务名
  10. # 查看服务是否自启动
  11. systemctl is-enabled 服务名

firewall

  1. # 宏观上管理防火墙
  2. systemctl start/stop/... firewalld.service
  3. systemctl enable/disable firewalld.service
  4. # 防火墙端口处理
  5. # 打开端口
  6. firewall-cmd --permanent --add-port=端口号/协议
  7. # 关闭端口
  8. firewall-cmd --permanent --remove-port=端口号/协议
  9. # 重新载入,才可以生效
  10. firewall-cmd --reload
  11. # 查看端口开放情况
  12. firewall-cmd --query-port=端口号/协议
  13. # 查看协议
  14. netstat -and

14. 动态监控

监控进程

  1. # 用于显示正在执行的进程,top 可以更新
  2. top [option]
  3. -d N:指定间隔时间,单位是秒,默认是 3
  4. -i:不显示闲置或者僵死进程
  5. -p:指定进程 PID 来监视某个进程的状态
  6. # 交互操作
  7. Pcpu 使用率排序
  8. M:内存使用率排序
  9. N:以 PID 排序
  10. q:退出
  11. u:监控指定用户
  12. k:+PID 结束进程,强制信号量signal 9

image.png

监控网络状态

  1. netstat [option]
  2. -an:按一定顺序排列输出
  3. -p:显示那个进程在调用

image.png

16. 软件管理

rpm

rpm用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。它生成具有.RPM扩展名的文件。 RPM是RedHat Package Manager (RedHat软件包管理工具)的缩写,类似windows的 setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。 Linux的分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。

  1. # 查询是否已安装
  2. rpm -qa|grep Xxxx
  3. # 命名格式
  4. firefox-60.2.2-1.el7.centos.x86_64
  5. # 名称:firefox
  6. # 版本号:60.2.2-1
  7. # 操作系统:el7.centos.x86_64
  8. # 含义是:操作系统为cnetos7.x 的64位系统
  9. # 如果是:i686,i386,表示32位系统,noarch 表示通用。
  10. # 查询所有安装的 rpm 软件包
  11. rpm -qa
  12. # 查询具体软件包
  13. rpm -q 软件包名
  14. # 查询具体软件包,详情
  15. rpm -qi 软件包名
  16. # 查询软件包中的文件
  17. rpm -ql 软件包名
  18. # 查询文件所属软件包
  19. rpm -qf 文件全路径
  1. # 卸载
  2. rpm -e 软件包名 // -e erase
  3. # 提示信息:removing these packages would break dependencies:foo is need by bar-1.0-1
  4. # 含义是:存在依赖关系,如果删除可能 bar 无法使用 可以使用 --nodeps 强制删除,不推荐
  5. # 安装
  6. rpm -ivh RPM全路径名称
  7. -iinstall 安装
  8. -vverbose 提示
  9. -hhash 进度条

yum

Yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包

  1. # 查看可以安装 rpm
  2. yum list|grep 软件
  3. # 安装指定的 yum 包
  4. yum install 软件

17. 开发工具的安装配置

JDK

  1. 环境变量的配置:/etc/profile 文末新增:

export JAVA_HOME=/user/local/java/jdk1.8.0_261
export PATH=$JAVA_HOME/bin:$PATH【:$PATH 含义是,原来的PATH 信息】

  1. 刷新环境变量:source /etc/profile
  2. 配置后,可以在任意位置:echo $PATH 查看,或者使用 java -version
  3. 创建一个 Hello.java,填充一个 main helloworld
  4. 编译:javac Hello.java
  5. 运行:java Hello —>输出 helloworld 成功

    Tomcat

  6. 使用 ./startup.sh 启动

  7. 使用 firewall-cmd —permanent —add-port=8080/tcp 增加防火墙访问允许
  8. 使用 firewall-cmd —reload 重新加载
  9. 使用 url:linuxip+8080 —> 成功访问

Mysql

  1. 案例版本,MySQL 5.7
  2. mkdir /opt/mysql
  3. cd /opt/mysql
  4. wget http://dev.mysql.com/get/mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar
  5. tar -xvf mysql-5.7.26-1.el7.x86_64.rpm-bundle.tar,注意 文件不是 .gz 所以不需要 -z,而且得到的是 rpm
    1. ps:centos 7.6 自带类mysql 数据库,mariadb,会导致冲突,先删除
    2. rpm -qa|grep mari
    3. rpm -e —nodeps mariadb-libs
    4. rpm -e —nodeps marisa
  6. 安装
    1. rpm -ivh mysql-community-common-5.7.26-1.el7.x86_64.rpm
    2. rpm -ivh mysql-community-libs-5.7.26-1.el7.x86_64.rpm
    3. rpm -ivh mysql-community-client-5.7.26-1.el7.x86_64.rpm
    4. rpm -ivh mysql-community-server-5.7.26-1.el7.x86_64.rpm
  7. 启动 mysql:systemclt start mysqld.service
  8. 开始设置 root 用户 密码
    1. mysql 自动给 root 设定随机密码,grep “password” /var/log/mysqld.log 可以查看当前密码:mima
    2. 使用 mysql -uroot -p 登录 输入密码:mima —> 成功登录进 mysql
    3. 密码设置策略:set global validate_password_policy=0[默认是1,共 0-2 从小到大要求更复杂]
    4. 修改 root 初始密码:set password for ‘root’@’localhost’ = password(‘xin_mi_ma’);
    5. 刷新:flush privileges; 使密码生效