1. 操作系统

1.1 什么是操作系统

操作系统是管理计算机硬件与软件资源的计算机程序。简单理解就是人与计算机硬件之间的 中介
image.png

1.2 操作系统分类

桌面操作系统

  • Windows:用户量大
  • macOS:适合开发,设计人员
  • Linux:软件较少

服务器操作系统

  • Linux:占有率高,90%以上的服务器都使用Linux系统
  • Windows server:收费,占有率较低

嵌入式操作系统

  • Linux:常见的比如摄像头、手表、车载系统等

移动设备操作系统

  • Android:基于Linux
  • iOS:苹果公司专用的手机系统

    2. Linux简介

    2.1 什么是Linux

    Linux是一款多用户,多任务的命令行式的服务器型操作系统

  • 多用户:允许多个用户同时登录

  • 多任务:允许同时运行多个程序
  • 命令行:主要采用命令的方式操作
  • 服务器型:在搭建项目服务器时广泛使用

    2.2 Linux的优缺点

    优点:

  • 运行速度快

  • 安全性好(一般不用装安全管家等软件)
  • 开源
  • 占有率高

缺点:

  • 界面相对比较简陋
  • 操作难度大
  • 学习成本高

    2.3 Linux的发行版本

    什么是发行版本?
    从技术上来说,Linux只是一个 内核,并不是一套完整的操作系统。一些厂商将Linux内核与各种软件和文档包装起来,并提供系统安装界面和系统配置,设定等工具,就构成了Linux的发行版本。
    市面上的主流发行版本如下:

  • Redhat:小红帽,企业级Linux发行版本,收费

  • Centos:与Redhat相似度97%,免费
  • Ubuntu:乌班图,界面比较美观的Linux发行版本
  • SUSE:华为中使用较多
  • 麒麟:国内研发

    2.4 学习Linux的重点

  • Linux的安装

  • Linux的命令

在工作中需要经常使用Linux搭建项目环境、查看运行日志等操作,所以才有必要学习Linux。

2.5 Linux的组成部分

01  |  Linux从入门到精通 - 图2

3. 安装Linux

3.1 安装VMware

VMware是一款windows平台的专业虚拟机软件 ,可以在windows上安装多个其他的系统,并且能够同时运行。

3.2 CentOS安装步骤

3.2.1 新建虚拟机

新建虚拟机.gif

3.2.2 虚拟机设置

自定义硬件.gif

3.2.3 启动虚拟机

下图为简单配置提要
Snipaste_2020-03-05_16-41-01.jpg

3.3 打开终端

在桌面鼠标右键,选择 在终端中打开,即可打开终端
Snipaste_2020-03-07_14-15-36.png

命令前缀详解
image.png

4. 基础知识

4.1 常见目录

  • /根目录,最顶层的目录
  • ~家目录,不同用户的家目录不同,root用户的家目录为 /root,普通用户为 /home
  • .: 当前目录
  • .. : 父目录(即上层目录)

什么是根目录?

  • 根目录就是最顶层目录,比如 D:\壁纸 这个路径中,D盘就是一个根目录
  • windows中可以有多个盘符,那就意味着,可以有多个根目录
  • 但是,Linux只有一个根目录,根目录用 / 表示

    4.2 路径

    什么是路径?
    路径就是文件在系统中储存的位置

在Linux中,路径可以分为以下两大类:

  • 绝对路径:以根目录开始的路径
  • 相对路径:不以根目录开始的路径

为什么要学习路径?
Linux一般情况下是以命令的方式使用居多,由于命令行中是没有类似windows等系统的图形化界面的,所以在进行操作文件时,需要用路径去访问。

路径演练
路径图示
image.png
注意:路径中除了第一根斜线外,其他的都是路径分隔符

4.3 基础命令

  1. whoami 显示当前登录的用户
  2. pwd 显示当前所在位置的绝对路径
  3. ls 显示当前位置的内容
  4. ls -a 显示当前位置的所有内容,包含隐藏文件
  5. ll 显示当前位置的内容(详情)
  6. cd 切换指定目录,后面跟路径
  7. clear 清屏

5. 目录操作

创建目录

  1. mkdir a 创建目录a
  2. mkdir b c d 创建bcd三个目录(可以多个,用空格分隔)
  3. mkdir -p /a/a1/a2 创建多级目录

删除目录

  1. rmdir b 删除空目录b
  2. rmdir c d 删除cd两个空目录
  3. rm -rf a 删除非空目录a
  4. rm -rf * 删除当前路径下所有内容(慎用)

复制,移动,重命名

  1. cp -r a b a目录复制到b目录(b不存在则自动创建)
  2. cp -r a a.bak 备份a目录(.bak为备份文件扩展名)
  3. mv a b a目录移动到b目录(b存在时)
  4. mv a b a目录重命名为bb不存在时)
  5. mv a .a a目录隐藏
  6. mv .a a a目录取消隐藏

其他目录操作

  1. ls -l 列表形式查看当前位置所有内容,简写ll
  2. ls -a 查看当前位置所有内容,包含隐藏内容
  3. tree 以树状结构查看当前目录内容
  4. tree -a 查看a目录的目录结构
  5. du -sh 查看当前目录的大小
  6. du -sh a 查看a目录的大小
  7. du -sh /home 查看指定路径目录的大小

6. 文件操作

创建文件

  1. touch a.txt 创建a.txt文件(空文件)
  2. touch b c 创建多个文件
  3. touch /he.txt 在根目录下创建he.txt
  4. touch .a 创建隐藏文件

注意:

  • 在Linux中,「文件拓展名」需要自己手动写
  • 如果在指定目录下创建文件时,目录不存在,则创建失败

编辑文件
基本上所有的Linux发行版本都内置了「vi编辑器」,而对于「vi」来说,「vim」加入了语法高亮等特性,更适合编程。但他俩本质上是相差不多的。
vi的三种模式

  • 命令模式:用来输入各种操作命令,如:跳转,删除,复制等
  • 编辑模式:通过指定按键切换到编辑模式,编辑文件内容
  • 末行模式:主要用来保存,退出等操作

使用vi编辑器打开文件

  1. vi a 打开并编辑a文件,如果a文件不存在则自动创建

命令模式

  1. gg 跳转到第1
  2. G 跳转最最后一行
  3. ngg 跳转到第n
  4. yy 复制1
  5. nyy 向下复制n
  6. dd 剪切1
  7. ndd 向下剪切n
  8. p(小写) 向下粘贴
  9. P(大写) 向上粘贴
  10. u 撤销
  11. x 删除当前字符
  12. /abc 向下查找abc
  13. abc 向上查找abc
  14. ^ 跳转到行首
  15. $ 跳转到行尾

编辑模式

  1. i 光标前插入
  2. a 光标后插入
  3. o 插入新的一行,从行首开始输入

键盘按「ESC」键退出编辑模式
末行模式
在命令模式下,输入「 :」进入末行模式

  1. :w 保存
  2. :q 退出
  3. :wq 保存并退出
  4. :w a 将文件另存为a
  5. :q! 强制退出
  6. :set nu 显示行号
  7. :set nonu 取消显示行号
  8. :%s:abc:def:g 将文件中的abd替换为def
  9. :3,5s:abc:def:g 将文件中的3~5行中的abc替换为def
  10. :5,$s:abc:def:g 将文件中5~最后一行中的abc替换为def

删除文件

  1. rm a 删除文件a
  2. rm a b 同时删除文件ab
  3. rm -rf * 删除当前路径下所有文件和目录(除隐藏文件外)

复制文件

  1. cp file1 dir1 将文件file1复制到目录dir1
  2. cp file1 file2 将文件file1复制,并命名为file2
  3. cp file1 file1.bak 将文件file备份

移动/重命名

  1. mv file1 dir1 将文件file1移动到dir1目录
  2. mv file1 file2 将文件file1重命名为file2
  3. mv file1 .file1 隐藏文件file1

其他文件命令

  1. wc -l f 查看文件f的行数
  2. grep -n abc f 查看f文件中包含abc的行,并显示行号
  3. cat f1 查看文件f1的内容
  4. cat f1 > f2 f1的结果覆盖到f2
  5. cat f1 >> f2 f1的结果追加到f2
  6. cat /dev/null > f1 清空文件f1
  7. find / -name abc 从根目录开始查找名字为abc的文件
  8. find ~ -name "*abc*" 从家目录开始查找名字包含abc的文件
  9. head -n a.txt 查看a.txt的前n行,n是一个数字
  10. tail -n a.txt 查看a.txt的最后n行,n是一个数字
  11. head -10 a.txt|tail -1 查看a.txt文件的第十行

7. 打包压缩

zip
「zip」是一种压缩文件的格式,用法如下:

  1. zip f.zip f1 f2 f1f2压缩成f.zip
  2. unzip f.zip 解压f.zip到当前位置
  3. unzip f.zip -d /home 解压f.zip解压到/home目录

gzip
压缩命令,将文件压缩成「.gz」格式的压缩包

  1. gzip f1 压缩f1f1.gz
  2. gzip f1 f2 同时压缩f1f2f1.gz,f2.gz(压缩多个文件)
  3. gzip -d f1.gz 解压缩
  4. gunzip f1.gz 解压缩
  5. gzip -l f1.gz 查看压缩比例
  6. gzip -n f1 按照指定级别压缩文件,n1~9的数字,数字越大,压缩级别越大

tar

  • 打包命令,将多个文件打包为「.tar」格式
  • 配合「gzip」可以打包并压缩为「.tar.gz」格式文件
    1. tar -cvf x.tar x1 x2 x1x2打包为x.tar
    2. tar -xvf x.tar 解包x.tar
    3. tar -czvf x.tar.gz x1 x2 x1x2打包并且压缩为x.tar.gz
    4. tar -xzvf x.tar.gz x.tar.gz拆包并且解压
    5. tar -xzvf x.tar.gz -C /home x.tar.gz拆包并解压到/home目录
    6. tar -tzvf x.tar.gz 查看压缩包中的内容

    8. 用户&组&权限

    用户
    「Linux」是一个「多用户」的操作系统,任何需要使用系统资源的用户,都必须向「管理员」申请一个账户,然后使用该账户登入系统。 ```shell cat /etc/passwd 查看用户信息 useradd user1 创建user1用户 usermod -l user1 yonghu1 将user1用户改名为yonghu1 usermod -u 777 user1 将user1用户的id改为777 usermod -g 9999 user1 将user1用户所属组改为9999组 userdel user1 删除用户user1(不会删除主目录) userdel -r user1 彻底删除user1(删除主目录) id user1 查看user1的信息

su user1 切换到user1用户 passwd 修改当前用户的密码 passwd user1 修改user1的密码(需要管理员权限) exit 返回上一个用户

  1. 用户组<br />每个用户都归属一个用户组,系统可以对一个用户组中的所有用户「集中管理」
  2. ```shell
  3. cat /etc/group 查看组信息
  4. groupadd diyizu 创建组
  5. groupmod -n onezu diyizu 将diyizu重命名为onezu
  6. groupmod -g 9999 onezu 修改onezu的组id为9999
  7. groupdel onezu 删除onezu用户组

权限

  1. chown ly f1 修改f1的拥有者为ly
  2. chgrp zu2 f1 修改f1所属的组为zu2
  3. chown ly:zu2 f1 同时修改f1的所属用户和组
  4. chown -R ly:zu2 a 同时修改a目录及其子目录、子文件的所属用户和用户组

「权限图解」:
image.png

  • 红色表示所属用户的权限
  • 绿色表示所属组的权限
  • 蓝色表示其他用户组的权限

「rwx」含义:

字母 代表权限 数值
r(read) 4
w(write) 2
x(execute) 执行 1

「修改权限命令详解」:

  1. chmod u-w,g+w,o+w-rx f1 将文件f1自己减去读的权限,组内增加写的权限,其他组增加写、减去读和执行权限
  2. chmod u=r,g=w,o=x 自己读,组内写,其他执行
  3. chmod 777 a1 自己、组内、其他都具有读写执行的权限
  4. chmod -R 777 a a目录及该目录下所有内容的权限都修改成所有人可读可写可执行

9. 网络命令

  1. ifconfig 查看IP地址
  2. ifconfig eth0 1115 netmask 2220 临时修改IP
  3. ifup eth0 启动网卡
  4. ifdown eth0 关闭网卡
  5. service network start 启动网络
  6. service network stop 停止网络
  7. service network restart 重启网络
  8. netstat -an 查看端口
  9. netstat -an|grep 1521 查看1521端口是否被占用
  10. setup 永久修改ip,在设置中修改
  11. ssh ip 远程连接ip

10. 系统命令

  1. cat /etc/centos-release 查看系统版本
  2. halt 关机
  3. init 0 关机
  4. shutdown -h now 关机,now可以换成具体时间,如1200
  5. reboot 重启
  6. init 6 重启
  7. shutdown -r now 重启
  8. date 显示当前时间
  9. date -s 2020-03-29 11:11:11 修改时间
  10. cal 显示日历
  11. ps -ef 查看进程
  12. ps -ef|grep java 查看java相关的进程
  13. kill pid 杀掉指定pid进程
  14. kill -9 pid 强制杀掉指定进程
  15. free -m 查看内存
  16. df -h 查看磁盘情况
  17. top 动态监控系统资源
  18. vmstat 2 3 打印系统资源,每隔2s打印一次,共3
  19. history 显示命令历史
  20. ./a.sh 执行可执行文件(拥有执行权限)

11. 拓展

  • 通过文件内关键字查找文件

假如:你想在/home目录下的所有普通文件中搜索查找包含”crushlinux” 这个词的文件

  1. find /home -name \* -type f -print | xargs grep "crushlinux"
  • 提取ip地址

image.png

12. 设置swap

一般设置swap空间为系统自有内存的2倍

  1. 创建一个4G文件

    1. fallocate -l 4G /swapfile
  2. 查看该文件大小

    1. du -sh swapfile
  3. 修改该文件只能被root用户读写

    1. chmod 600 /swapfile
  4. 使该文件成为swap文件

    1. mkswap /swapfile
  5. 使用该swap(只是临时)

    1. swapon /swapfile
  6. 修改fstab文件使该swap永久生效 ```shell

    打开该配置文件

    vi /etc/fstab

在文件末尾插入如下内容,服务器每次重启都会检查该文件并自动启用swap

/swapfile swap swap sw 0 0 ```