Linux学习

末鹿安然 提交于 2020-02-25 19:28:38

Linux教程

Linux的应用领域
  • 个人桌面领域

    此领域是Linux应用最薄弱的环节,但是催着Deepin等,桌面占有率有所回升

  • 服务器领域

    此领域是服务器的应用是最强的,Linux免费、稳定、高效等特点在这里得到了很好的体现

  • 嵌入式领域

    Linux运行稳定、对网络良好支持性、低成本,内核最小可以几百kb等

Linux进阶之路
  1. linux环境下基本操作命令、文件操作命令、编辑工具使用、linux用户管理
  2. linux中各种配置
  3. linux下搭建开发环境
  4. shell脚本、对Linux服务器进行维护
  5. 进行安全设置、防止攻击,保障服务器正常运行,对系统调优
  6. 深入理解linux(对内核有研究),熟练掌握大型网站应用架构组成、熟悉各个环节的部署与维护

一、Linux入门

1.1 Linux介绍

  1. Linux是一款操作系统,免费,开源 ,安全,高效,稳定,处理高并发非常强悍

  2. Linux创始人 linus 林纳斯

  3. Linux吉祥物

    image-20200222194510414

  4. Linux发行版

    RedHat Ubuntu Suse opensuse

  5. 目前主要的操作系统

    windows android linux ios 车载系统

1.2 Linux与Unix的关系

贝尔实验室麻省理工学院,通用电气公司开发分时操作系统,后感觉太过庞大,故遗弃。

后来Ken tompson 肯•汤普森在此基础上,使用B语言开发了Unix系统

肯•汤普森当年开发 UNIX 的初衷是运行他编写的一款计算机游戏 Space Travel,这款游戏模拟太阳系天体运动,由玩家驾驶飞船,观赏景色并尝试在各种行星和月亮上登陆。他先后在多个系统上试验,但运行效果不甚理想,于是决定自己开发操作系统,就这样,UNIX 诞生了。

后期,使用c语言重写了Unix,在此基础上,IBM、Sun、hp等公司相继开发出属于自己的Unix系统,

它们开发出的Unix非常昂贵,并不开源,并且必须运行在配置很高的计算机上!

Richard Stallman认为在自由的时代,用户应该免费享有对软件源代码阅读、修改的权力。软件公司可以靠提供服务和训练获得盈利。故 Richard Stallman 提出了 GNU计划!

GNU计划

image-20200222200740807

Linux 内核最初是由李纳斯•托瓦兹(Linus Torvalds)在赫尔辛基大学读书时出于个人爱好而编写的,当时他觉得教学用的迷你版 UNIX 操作系统 Minix 太难用了,于是决定自己开发一个操作系统。第 1 版本于 1991 年 9 月发布,当时仅有 10 000 行代码。

李纳斯•托瓦兹没有保留 Linux 源代码的版权,公开了代码,并邀请他人一起完善 Linux。与 Windows 及其他有专利权的操作系统不同,Linux 开放源代码,任何人都可以免费使用它。

1.3 Linux与Windoes比较

比较 Window Linux
免费与收费 收费且贵 免费或很少费用
软件与支持 数量与质量的优势,大部分为收费软件,由微软提供支持和服务 开源自由软件,基本免费,没有资金支持,体现性较低,有全球的Linux开发者与自由软件社区提供支持
安全性 经常打补丁 比Windows略强
使用习惯 大多数依靠鼠标完成,纯图像界面,入门简单 图形界面+命令行,可以只使用键盘完成一切操作,入门较难,一旦入门,熟练后效率极高
可定制性 封闭 开源
应用场景 桌面操作系统 服务器

二、Linux的安装

2.1 VMware安装

2.2 Cenots安装

网络适配器

image-20200223110453074

虚拟机网络连接的三种形式说明

  • NAT模式(建议)

    不会造成ip冲突

    在window下又创建一个新的ip,虚拟机和这个新的ip为同一网下

  • 桥接模式(一般不用)

    虚拟机网段在同一ip下,属于共享

    容易ip冲突,ip不够用

  • 仅主机模式

    独立的ip,不会和外网产生关系

2.3 安装vmtools

目前自带,不用自己整

三、Linux的目录结构

Linux文件系统采用级层式的树状目录结构,在此结构的最上层是根目录"/",然后再此目录下再创建其他目录。

Linux世界里,一切皆是文件

Linux目录结构

四、Linux远程登陆

一般情况,真实的Linux服务器,并不在本机上

远程登陆到Linux的工具:

  • Xshell

    Xshell是目前最好的远程登陆到Linux操作的软件,流畅的速度并且完美解决乱码问题。

    支持SSH1,SSH2,Microsoft Windows 平台的 TELNET协议

上传下载工具:

  • XFtp

    基于Windows平台的功能强大的SFTP、FTP文件传输文件。使用了Xftp以后,可以安全的传输文件

需要Linux开启sshd服务22

Linux ip地址查询

ifconfig

远程登陆

image-20200223123355455

image-20200223123620480

远程上传下载

image-20200223124215575

image-20200223124334777

五、vi/vim编辑器

  • 所有的Linux系统都会内建vi文本编辑器
  • Vim具有程序编辑的能力,可以看作是Vi的增强版本,被广泛应用

5.1 Vim 的三种模式

  • 正常模式

    正常以vim打开文档,可以移动光标处理文档

  • 插入/编辑模式

    按下i,l,o,O,a,A,r,R进入编辑模式

  • 命令行模式

    可以提供指令

5.2 常用Vim 命令

删除一个字符              x
删除一行                 dd
删除换行                 J
撤销                    u
ctrl + R               取消撤销

复制                    y
....

image-20200223125925147

六、开机、重启、用户登陆与注销

6.1 关机,重启

shutdown -h now                 立即关机
shutdown -h 1                   一分钟后关机
shutdown -r now                 重启
halt                            关机
reboot                          重启
sync                            把内存的数据同步到磁盘

6.2 用户登陆和注销

logout                          注销用户

七、用户管理

7.1 用户家目录

/home目录下有各个创建的用户对应的家目录,当用户登陆时,会自动进入家目录

7.2 用户管理

useradd 用户名             添加用户

passwd 用户名              给用户指定密码

userdel 用户名             删除用户(保护家目录)

userdel -r 用户名          删除用户(删除用户主目录)

su - 用户名                切换用户名

exit                      返回原来用户

whoami                    查看当前用户

7.3 用户组管理

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

groundadd 组名                增加组

groupdel 组名                 删除组

useradd -g 用户组 用户名        增加用户时直接加上组

usermod -g 用户组 用户名        修改用户的组

7.4 用户和组的相关文件

  • /etc/passwd 文件

    用户的配置文件,记录用户各种信息

  • /etc/shadow 文件

    口令的配置文件

  • /etc/group 文件

    组的配置文件,记录Linux包含的组的信息

八、实用指令

8.1 指定运行级别

系统的运行级别配置文件 /etc/inittab

  1. 关机
  2. 单用户(root用户密码忘记可以找回)
  3. 多用户(无网络服务)
  4. 多用户(有网络服务)
  5. 保留
  6. 图形界面
  7. 重启

8.2 切换到指定运行级别的指令

命令:init[012356]

8.3 帮助指令

  • man 指令
  • help 指令

百度更直接

8.4 文件目录类

  • pwd 指令

    显示当前工作的绝对路径

  • ls 指令

    查看信息

    -a :显示当前目录所有的文件和目录(包括隐藏)

    -l :以列表的形式显示信息

  • cd 指令

    切换到指定目录

    ~ :回到家目录

    .. :回到上一级

  • mkdir 指令

    创建目录

    -p :创建多级目录

  • rmdir 指令

    删除空目录

  • rm -rf 指令

    删除非空目录

  • touch 指令

    创建空的文件

  • cp 指令

    拷贝文件到指定目录

    -r :递归复制整个文件夹

    cp -r test/ zl/ :有相同文件时,会提醒是否覆盖

    \cp -r test/ zl/ :不会提醒,会直接覆盖

  • rm 指令

    移除文件或者目录

    -r :递归删除整个文件夹

    -f :强制删除不再提示

  • mv 指令

    移动文件或者重命名

  • cat 指令

    查看文件内容

    -n :显示行号

    一般带上管道命令 |more

    more:分页显示

  • more 指令

    基于vi编辑器的文本过滤器,以全屏幕的方式按页显示文本文件的内容

  • less 指令

    分屏查看文件内容,对于显示大型文件有较高的效率(日志文件)

  • > 指令 与 >> 指令

    > :输出重定向

    >> :追家

    ls -l > 文件 :列表的内容写到a.txt中

    ls -al >> 文件 :列表的内容追加到aa.txt中

    cat 文件1 > 文件2 :将文件1的内容覆盖到文件2

  • echo 指令

    输出内容到控制台

  • head 指令

    显示文件的开头部分(默认10行)

    -n :指定行数

  • tail 指令

    输出文件尾部内容(默认10行)

    -n :指定行数

    -f :实时追踪该文档的所有更新

  • ln 指令

    符号连接,类似于快捷方式

    -s :软连接

  • history 指令

    查看已经执行过历史命令,也称为历史指令

8.5 时间日期类

  • data 指令

    显示当前日期

    data + %Y :显示当前时间

    data + %m :显示当前年份

    data + %d :显示当前月份

    data ”+%Y-%m-%d %H:%M:%S“ :显示年月日时分秒

8.6 搜索查找类

  • find 指令

    从指定目录向下递归地遍历其各个子目录,将满足的文件或者目录显示在终端

    find [搜索范围] [选项]

    选项 -name -user -size

  • locate 指令

    快速定位文件路径

  • grep 指令和管道符号 |

    -n :显示行号

    -i :忽略字母大小写

8.7 压缩和解压类

  • gzip/gunzip 指令

    gzip用于压缩、

    gunzip用于解压

    gzip 文件 (压缩文件)

    gunzip 文件.gz (解压缩文件)

  • tar 指令

    打包指令,打包的是.tar.gz文件

    tar [选项] XXX.tar.gz

    -c :产生打包

    -v :显示详细信息

    -f :指定压缩后的文件名

    -z :打包的同时压缩

    -x :解包.tar文件

九、组管理和权限管理

9.1 Linux组基本介绍

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

  • 文件/目录所有者:谁创建就是所有者

    查看: ls -ahl

    修改: chown 用户名 文件名

  • 组的创建:

    基本指令: groupadd 组名

  • 文件/目录所在组

    修改: chgrp 组名 文件名

  • 其他组

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

  • 改变用户所在组

    usermod -g 组名 用户名

    usermod -d 目录名 用户名 改变该用户登陆的初始目录

9.2 权限的基本介绍

ls -l 中显示内容如下

-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc

0-9位说明

  1. 第0位确定文件类型(d目录,-普通文件,c字符设备,b块文件)

    -普通文件

    b块文件

  2. 第1-3位确定所有者(该文件的所有者)拥有该文件的权限

    r:可读(文件)可读(目录)

    w:可写(文件)可修改(目录)

    x:可以被执行(文件)可以进入目录(目录)

  3. 第4-6位确定所属组(同用户组的)拥有该文件的权限

  4. 第7-9位确定其他用户拥有该文件的权限

image-20200223160849412

  • 修改权限 -chmod

    通过chmod指令,可以修改文件或者目录的权限

    第一种方式:+、-、=变更权限

    u:所有者 g:所有者 o:其他人 a:所有人

    1. chmod u = rwx,g = rx,o = x 文件目录名
    2. chmod o + w 文件目录名
    3. chmod a-x 文件目录名

    第二种方式:通过数字变更权限

    规则:r = 4 w = 2 x = 1 ,rwx = 4 + 2 + 1 = 7

    chmod u = rwx,g = rx,o = x 文件目录名

    相当于 chmod 751 文件目录名

  • 修改文件所有者-chown

    chown newowner file 改变文件的所有者

    chown newowner:nowgroup file 改变用户的所有者和所有组

    -R 如果是目录 则使其下所有子文件或目录递归生效

  • 修改文件所在组-chgrp

    chgrp newgroup file 改变文件的所有组

十、定时任务调度

  • crond 任务调度

    任务调度:指系统在某个时间执行的特定的命令或程序

    任务调度分类:1.系统工作 2.个别用户工作

    crontab [选项]

    -e :编辑crontab定时任务

    -l :查询crontab任务

    -r :删除当前用户所有的crontab任务

十一、Linux磁盘分区、挂载

11.1 分区基础知识

分区的方式
  • mbr分区
    • 最多支持四个分区
    • 系统只能安装到主分区
    • 扩展分区要占一个主分区
    • MBR最大只支持2TB,但拥有最好的兼容性
  • gtp分区
    • 支持无限多个主分区(但是操作系统有限制)
    • 最大支持18EB的容量(1EB = 1024PB 1PB = 1024TB)
    • win7 64位以后支持gtp
Linux分区
  1. Linux无论有多少分区,只有一个根目录
  2. Linux采用“载入”处理。它的整个文件系统中包含了一整套的文件和目录

Linux磁盘分为IDE硬盘和SCSI硬盘,目前基本是SCSI硬盘

11.2 磁盘情况查询

语法:

df -h /目录 (查询指定目录的磁盘占用情况,默认为当前目录)

-s 指定目录占用大小汇总

-a 含文件

-max-depth=1 子目录深度

-c 列出明细的同时,增加汇总量

11.3 工作实用指令

  1. 统计/home 文件夹下文件的个数

    ls -l /home | grep "^-" | wc -l
  2. 统计/home 文件夹下目录的个数

    ls -l /home | grep "^d" | wc -l
  3. 统计/home 文件夹下文件的个数,包括子文件夹里的

    ls -lR /home | grep "^-" | wc -l
  4. 统计文件夹下文件的个数,包括子文件夹里的

    ls -lR /home | grep "^d" | wc -l
  5. 以树状显示目录结构

    yum install tree
    tree

十二、网络配置

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

目前我们的网络配置采用的是NAT

image-20200223181342981

12.2 查看网络IP和网关

  • 查看虚拟网络编辑器

    Vmware 编辑 -- 网络编辑器

  • 修改ip地址(虚拟网卡)

    网络编辑器中修改

  • 查看网关

    虚拟网络编辑器 -- NAT设置

  • 查看windows环境下中Vmnet8网络配置

    属性中查看

    或者ipconfig查看

12.3 Ping的使用

  • 语法

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

  • 应用

    ping www.baidu.com

12.3 Linux网络环境配置

  • 方式一、自动获取

    缺点:Linux每次获取的Ip不同,不适用于做服务器

  • 方式二、指定固定ip

    推荐,直接修改配置文件

    /etc/sysconfig/network-scripts/ifcfg-eth0

    192.168.186.129

重启网络服务

service network restart

十三、进程管理

13.1 基本介绍

  1. Linux中,每个执行的程序(代码)都称之为一个进程。每个进程都分配一个id号
  2. 每一个进程,都会对应一个父进程,父进程可以复制多个子进程
  3. 每个进程都可能以两种方式存在。前台与后台。
  4. 一般系统的服务都是以后台进程的方式存在,而且会常驻在系统中。知道关机

13.2 显示系统执行的进程

ps命令

-a :显示当前终端所有进程信息

-u :以用户的格式显示进程信息

-x :显示后台进程运行的参数

字段 说明
PID 进程识别号
TTY 终端机号
TIME 此进程所消CPU时间
CMD 正在执行的命令或进程名
ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义
-A 列出所有的行程
-w 显示加宽可以显示较多的资讯
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
au(x) 输出格式 :
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
USER: 行程拥有者
PID: pid
%CPU: 占用的 CPU 使用率
%MEM: 占用的记忆体使用率
VSZ: 占用的虚拟记忆体大小
RSS: 占用的记忆体大小
TTY: 终端的次要装置号码 (minor device number of tty)
STAT: 该行程的状态:
D: 无法中断的休眠状态 (通常 IO 的进程)
R: 正在执行中
S: 静止状态
T: 暂停执行
Z: 不存在但暂时无法消除
W: 没有足够的记忆体分页可分配
<: 高优先序的行程
N: 低优先序的行程
L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
START: 行程开始时间
TIME: 执行的时间
COMMAND:所执行的指令

13.3 终止进程Kill和Killall

Kill [选项] 进程号 :杀死进程

killall 进程名称 :支持通配符

13.4 查看进程树

pstree [选项]

-p :显示PID

-u :显示所属用户

13.5 服务管理

服务本质就是进程,但是是运行在后台的,通常都会监听某个接口,等待其他程序的请求,因此我们称之为守护进程

service管理指令

service 服务名 start | stop | restart | reload | status

chkconfig指令

给每个服务的各个运行级别设置自启动/关闭

查看服务 chkconfig -list|grep xxx

chkconfig 服务名 --list

chkconfig -level 5 服务名 on/off

13.6 动态监控进程

top与ps命令很相似。它们都用来显示正在执行的进程。Top与ps最大的不同之处,处于top在执行一段时间可以更新正在运行的进程

top[选项]

-d 秒数 :top命令 每隔几秒更新

-i :使top不显示任何闲置或者僵死进程

-p :通过指定监控进程ID来仅仅监控某个进程的状态

交互操作说明

p :以cpu使用率排序,默认就是此项

m :以内存的使用率排序

n :以pid排序

q :退出top

十四、RPM 与 YUM

14.1 rpm包的管理

一种用于互联网下载包的打包及安装工具,它包含在某些Linux分发版中。他生成具有.RPM扩展名的文件。RPM是RedHat Package Manager 的缩写,类似windows的setup.exe,这一文件格式名称虽然打上了RedHat的标志,但理念是通用的。

rpm -qa :查询所安装的所有rpm软件包

rpm -q 软件包名 :查询软件包是否安装

rpm -qi 软件包名 :查询软件包信息

rpm -e 包名称 :卸载RPM软件包

rpm -e --nodeps 包名称 :强制卸载(不建议使用)

14.2 Yum包的管理

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

yum list|grep xx软件列表 :查询yum服务器是否有需要安装的软件

yum install xxx :下载安装

十五、APT与SSH

15.1 APT

apt是Advanced packaging Tool 的简称,是一款安装包管理工具。在Ubuntu下,我们可以使用apt命令安装软件包、删除软件包、清理软件包等。类似于windows的软件管理工具。

1.搜索软件
sudo  apt-cache  search  package_name
其中还可以使用正则表达式 sudo apt-cache search sof* 这样就可以搜索到源上面所有以sof开头的软件包。

2.查看软件包信息
sudo apt-cache show package_name

3.查看软件包依赖关系
sudo apt-cache show depends package_name

4.查看每个软件包的简要信息
sudo apt-cache dump

5.安装软件
sudo apt-get install  package_name

6.更新已安装的软件包
sudo apt-get  upgrade

7.更新软件包列表
sudo apt-get update

8.卸载一个软件包但是保留相关的配置文件
sudo apt-get remove package_name

9.卸载一个软件包同时删除配置文件
apt-get -purge remove package_name

10.删除软件包的备份
apt-get clean

15.2 SSH

SSH为Secure Shell 的缩写,由IETE的网络工作小组所制定;SSH为建立在应用层和传输层基础上的安全协议。

SSH是目前较可靠,转为远程登陆会话和其他网络服务提供安全性的协议。常用于远程登陆,以及用户之间进行资料拷贝。

使用SSH服务需要安装相应的服务端和客户端,Ubuntu和Centos不同的是,没有默认安装SSHD服务!

sudo apt-get install openssh-server
Linux安装SSH服务端和客户端

service sshd restart
启动sshd服务。会监听端口22

image-20200225185155105

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!