Linux:

操作系统的发展史

Unix

  • 1965年之前,电脑只有军事或者学院的研究机构碰的起,当时大型主机至多能提供30台终端(30个键盘、显示器)的连接。
  • 1965年左后由贝尔实验室、麻省理工学院 以及 通用电气共同发起了Multics项目,想让大型主机支持300台终端
  • 1969年前后这个项目进度缓慢,资金短缺,贝尔实验室退出了研究
  • 1969年从这个项目中退出的Ken Thompson当时在实验室无聊时,为了让一台空闲的电脑上能够运行“星际旅行”游行,在8月份左右趁着其妻子探亲的时间,用了1个月的时间编写出了 Unix操作系统的原型
  • 1970年,美国贝尔实验室的 Ken Thompson,以 BCPL语言 为基础,设计出很简单且很接近硬件的 B语言(取BCPL的首字母),并且他用B语言写了第一个UNIX操作系统。
    因为B语言的跨平台性较差,为了能够在其他的电脑上也能够运行这个非常棒的Unix操作系统,Dennis Ritchie和Ken Thompson 从B语言的基础上准备研究一个更好的语言
  • 1972年,美国贝尔实验室的 Dennis Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言
  • 1973年初,C语言的主体完成。Thompson和Ritchie迫不及待地开始用它完全重写了现在大名鼎鼎的Unix操作系统

Minix

因为AT&T(通用电气)的政策改变,在Version 7 Unix推出之后,发布新的使用条款,将UNIX源代码私有化,在大学中不再能使用UNIX源代码。Andrew S. Tanenbaum(塔能鲍姆)教授为了能在课堂上教授学生操作系统运作的实务细节,决定在不使用任何AT&T的源代码前提下,自行开发与UNIX兼容的操作系统,以避免版权上的争议。他以小型UNIX(mini-UNIX)之意,将它称为MINIX。

Linux

因为Minix只是教学使用,因此功能并不强,因此Torvalds利用GNU的bash当做开发环境,gcc当做编译工具,编写了Linux内核-v0.02,但是一开始Linux并不能兼容Unix,即Unix上跑的应用程序不能在Linux上跑,即应用程序与内核之间的接口不一致,因为Unix是遵循POSIX规范的,因此Torvalds修改了Linux,并遵循POSIX(Portable Operating System Interface,他规范了应用程序与内核的接口规范); 一开始Linux只适用于386,后来经过全世界的网友的帮助,最终能够兼容多种硬件。

Linux内核的特点

从技术角度来说,Linux只是操作系统内核,而不是一个完全的类UNIX操作系统,这是因为它不包含全部的UNIX应用程序,诸如文件系统实用程序、命令解释器、窗口系统、图形化桌面、系统管理员命令、文本编辑程序、编译开发程序等。以上这些应用程序大部分都可在GNU公共许可证下免费获得,因此包含Linux内核、基础运行环境(运行时库如GLibc)、编译环境(如GCC)、外壳程序(Shell,即命令解释器)和图形操作界面(GUI)的完整操作系统套件被称为GNU/Linux。尽管如此,在大多数情况下,仍用Linux来指代完整的GNU/Linux。

Linux 内核遵循IEEE POSIX标准(POSIX全称是Portable Operating System Interface of UNIX)。它包括了现代UNIX操作系统的全部特点,诸如虚拟存储、虚拟文件系统、内核线程、轻量级进程、UNIX信号量、SVR4进程间通信、支持内核抢占、对称多处理器(Symmetric Multi-Processor,SMP)系统等。

Linux内核是一体化内核(或称宏内核)操作系统,宏内核的设计风格是“凡是可以在内核里实现的都在内核里实现”。因此,除了异常/中断处理、内存管理和进程管理三大基本功能以外,文件系统、设备驱动和网络协议也放在内核层实现。

宏内核的优点是内核内部的各种互操作都可以通过函数调用实现,因此性能较好;而缺点是体积较大且理论上健壮性不太好(因为内部耦合性太高)。与宏内核相对的是微内核,最常见的是实现是GNU Hurd,其设计风格是“凡是可以不在内核里实现的都不在内核里实现”,因此很多功能子系统被设计成了一种服务(进程)。

微内核的优点是体积较小且理论上更健壮(因内核本身的功能较少而不容易出错);而缺点是操作系统的大量互操作都依赖于进程间通信(Inter-Process Communication, IPC),因此性能较差。微内核虽然把一些内核的核心功能剥离到了服务进程中,但重要的服务崩溃后实际上跟内核崩溃类似,因为整个系统也同样处于一个基本不可用的状态。

Linux虽然是宏内核,但是也吸收了一些微内核的优点,比如从1.0版本开始就可以通过模块化(将一些非核心的功能设计成可以运行时动态加载/卸载的内核模块)来减少内核核心部分的体积。

操作系统的发展

img

img
img

Minix没有火起来的原因

Minix的创始人说,MINIX 3没有统治世界是源于他在1992年犯下的一个错误,当时他认为BSD必然会一统天下,因为它是一个更稳定和更成熟的系统,其它操作系统难以与之竞争。因此他的MINIX的重心集中在教育上。四名BSD开发者已经成立了一家公司销售BSD系统,他们甚至还有一个有趣的电话号码1-800-ITS-UNIX。然而他们正因为这个电话号码而惹火上身。美国电话电报公司因电话号码而提起诉讼。官司打了三年才解决。在此期间,BSD陷于停滞,而Linux则借此一飞冲天。他的错误在于没有意识官司竟然持续了如此长的时间,以及BSD会因此受到削弱。如果美国电话电报公司没有起诉,Linux永远不会流行起来,BSD将统治世界。

Linux介绍

Linux内核&发行版

Linux内核版本

内核(kernel)是系统的心脏,是运行程序和管理像磁盘和打印机等硬件设备的核心程序,它提供了一个在裸设备与应用程序间的抽象层。

Linux内核版本又分为稳定版和开发版,两种版本是相互关联,相互循环:

  • 稳定版:具有工业级强度,可以广泛地应用和部署。新的稳定版相对于较旧的只是修正一些bug或加入一些新的驱动程序。
  • 开发版:由于要试验各种解决方案,所以变化很快。

内核源码网址:http://www.kernel.org 所有来自全世界的对Linux源码的修改最终都会汇总到这个网站,由Linus领导的开源社区对其进行甄别和修改最终决定是否进入到Linux主线内核源码中。

Linux发行版本

Linux发行版 (也被叫做 GNU/Linux 发行版) 通常包含了包括桌面环境、办公套件、媒体播放器、数据库等应用软件即将 Linux 内核与应用软件做一个打包

目前市面上较知名的发行版有:

Ubuntu、RedHat、CentOS、Debian、Fedora、SuSE、OpenSUSE、Arch Linux、SolusOS 等。

img

Linux应用领域 

1、IT服务器

2、嵌入式

3、个人桌面

 Linux和Windows区别

目前国内 Linux 更多的是应用于服务器上,而桌面操作系统更多使用的是 Windows。

 主要区别如下

Linux优缺点

1. linux操作系统特点

linux操作系统主要的特点就两个:1. 作为开放式系统,源代码可修改;2. 对硬件的需求低

  • 自由与开放的使用与学习环境
    linux操作系统是一种开放性架构,任何人都可以自由的使用或者是修改其中的源代码。工程师可以根据自身需求,修改系统源代码。
  • 较低的硬件配置需求
    Linux可以支持个人计算机的x86架构,系统资源不必像早先的Unix系统那般,仅适合于单一公司所出产的设备。
  • 核心功能强大而稳定
    Linux功能并不会输给一些大型的Unix工作站,因此,近年来越来越多的公司或者是团体、 个人投入这一个操作系统的开发与整合工作!例如IBM与升阳公司都有推出x86的Linux服务器。
  • 独立作业
    很多的软件套件逐渐被这套操作系统拿来使用,Linux近来已经可以独力完成几乎所有的工作站或服务器的服务了,例如 Web, Mail, Proxy, FTP…

2. 优点

  • 系统稳定
    Linux是基于Unix概念而发展出来的操作系统,Linux具有与Unix系统相似的程序接口跟操作方式, 当然也继承了Unix稳定并且有效率的特点。
  • 免费
    Linux是基于GPL授权下的产物,可免费获得。而Unix操作系统,需要负担庞大的版权费;Windows系统需要不断更新系统,而收取费用。
  • 安全性、漏洞能够快速修补
    Linux操作系统由于有众多的个人、团体参与其中开发,因此可以随时获取最新的安全信息,并给与随时的更新,相对较为安全。
  • 支持多任务、多人使用
    Linux主机上可以同时允许多人上线来工作, 并且资源的分配较为公平,比起Windows的单人多任务系统要稳定。用户可以在一部 Linux主机上面规划出不同等级的用户,而且每个用户登入系统时的工作环境都可以不相同, 此外,还可以允许不同的使用者在同一个时间登入主机,同时使用主机的资源。
  • 资源消耗相对较低
    Linux只要一部P-III以上等级的计算机就可以安装并且使用,目前市面上任何一款个人计算机均可以达到这一个要求。
  • 适合作为微型计算机的操作系统
    由于Linux只要几百K不到的程序代码就可以完整的驱动整个计算机硬件并成为一个完整的操作系统, 因此相当适合于目前家电或者是小电子用品的操作系统,也就是【嵌入式系统】
  • 整合度佳且多样的图形用户接口(GUI)
    自从1994年Linux 1.0后就加入的X Window系统,在众多黑客的努力之下终于与Linux有高度整合, 且主要的绘图卡公司(Intel, NVidia, ATI等)都有针对Linux推出最新的驱动程序, 因此Linux的GUI已经有长足的进步

3. 缺点

  • 需要使用【命令行】进行系统管理
    Linux需要使用『指令列』的终端机模式进行系统的管理,虽然近年来有很多的图形接口开发使用在Linux上面,但毕竟要熟悉Linux还是以指令列来使用是比较好的, 因此要接受Linux的玩家必须比较要能熟悉对计算机下指令的行为,而不是用鼠标点一点icon就行了。
  • 没有特定的支持厂商
    因为在Linux上面的所有套件几乎都是自由软件,而每个自由软件的开发者可能并不是公司团体, 而是非营利性质的团体。Linux主机上面的软件若发生问题,可以去例如Red Hat的服务点进行软硬件维护。或者在网络上查找答案。
  • 游戏的支持度不足
    目前很多游戏开发商并没有在Linux平台上面开发大型游戏,这间接导致Linux无法进入一般家庭。
  • 专业软件的支持度不足
    目前很多专业绘图软件公司所推出的专业软件并不支持Linux操作系统。

Linux安装

centos官网:https://www.centos.org/

镜像站地址:https://mirrors.tuna.tsinghua.edu.cn/centos/7.9.2009/isos/x86_64/

VMware官网:https://www.vmware.com

VMware workstation下载地址:https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html

如何使用VMware安装centos7_哔哩哔哩_bilibili

CentOS安装VMwareTools_centos安装vmware tools-CSDN博客

类Unix系统目录结构

盘符是DOS、WINDOWS系统对于磁盘存储设备的标识符。一般使用26个英文字符加上一个冒号:来标识。由于历史的原因,早期的PC机一般装有两个软盘驱动器,所以,"A:"和"B:"这两个盘符就用来表示软驱,早期的软盘尺寸有8寸、5寸、3.5寸等。

Unix没有盘符这个概念,只有一个根目录/,所有文件都在它下面

img

Linux目录

img

  • /:根目录,一般根目录下只存放目录,在Linux下有且只有一个根目录。所有的东西都是从这里开始。当你在终端里输入“/home”,你其实是在告诉电脑,先从/(根目录)开始,再进入到home目录。
  • /bin: /usr/bin: 可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。
  • /boot:放置linux系统启动时用到的一些文件,如Linux的内核文件:/boot/vmlinuz,系统引导管理器:/boot/grub。
  • /dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱 mount /dev/cdrom /mnt。
  • /etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有 /etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d。
  • /home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,表示当前用户的家目录,edu 表示用户 edu 的家目录。
  • /lib: /usr/lib: /usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助。
  • /lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下。
  • /mnt: /media:光盘默认挂载点,通常光盘挂载于 /mnt/cdrom 下,也不一定,可以选择任意位置进行挂载。
  • /opt:给主机额外安装软件所摆放的目录。
  • /proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有 /proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/* 等。
  • /root:系统管理员root的家目录。
  • /sbin: /usr/sbin: /usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount 等。与 /bin 不同的是,这几个目录是给系统管理员 root使用的命令,一般用户只能"查看"而不能设置和使用。
  • /tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下。
  • /srv:服务启动之后需要访问的数据目录,如 www 服务需要访问的网页数据存放在 /srv/www 内。
  • /usr:应用程序存放目录,/usr/bin 存放应用程序,/usr/share 存放共享数据,/usr/lib 存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local: 存放软件升级包。/usr/share/doc: 系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录。
  • /var:放置系统执行过程中经常变化的文件,如随时更改的日志文件 /var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。

Xshell的作用

        XShell 是一种流行且简单的网络程序,旨在模拟虚拟终端。XShell可以在Windows界面下来访问远端不同系统下的服务器,从而比较好的达到远程控制终端的目的。它支持 RLOGIN、SFTP、SERIAL、TELNET、SSH2 和 SSH1,可以非常方便的对Linux主机进行远程管理。除此之外,其还有丰富的外观配色方案以及样式选择。

Linux常用基础命令

命令行中的ctrl组合键
  • Ctrl+c 结束正在运行的程序

  • Ctrl+d 结束输入或退出shell

  • Ctrl+s 暂停屏幕输出【锁住终端】

  • Ctrl+q 恢复屏幕输出【解锁终端】

  • Ctrl+l 清屏,【是字母L的小写】等同于Clear

  • 当前光标到行首:ctrl+a

  • 当前光标到行尾:ctrl+e

  • 删除当前光标到行首:ctrl+u

  • 删除当前光标到行尾:ctrl+k

  • Ctrl+y 在光标处粘贴剪切的内容

  • Ctrl+r 查找历史命令【输入关键字,就能调出以前执行过的命令】

  • Ctrl+t 调换光标所在处与其之前字符位置,并把光标移到下个字符

  • Ctrl+x+u 撤销操作

  • Ctrl+z 转入后台运行

终端命令格式

command [-options] [parameter]

说明:

  • command :命令名,相应功能的英文单词或单词的缩写
  • [-options] :选项,可用来对命令进行控制,也可以省略
  • parameter :传给命令的参数,可以是 零个、一个 或者 多个

查阅命令帮助信息

-help

说明:

  • 显示 command 命令的帮助信息
-man

说明:

  • 查阅 command 命令的使用手册
    man 是 manual 的缩写,是 Linux 提供的一个 手册,包含了绝大部分的命令、函数的详细使用
  • 说明
    使用 man 时的操作键
    Alt

常用Linux命令的基本实用

学习Linux终端命令的原因

  • Linux 刚面世时并没有图形界面,所有的操作全靠命令完成,如磁盘操作、文件存取、目录操作、进程管理、文件权限 设定等
  • 在职场中,大量的 服务器维护工作 都是在 远程 通过 SSH 客户端 来完成的,并没有图形界面,所有的维护工作都需要通过命令来完成
  • 在职场中,作为后端程序员,必须要或多或少的掌握一些 Linux 常用的终端命令
  • Linux 发行版本的命令大概有 200 多个,但是常用的命令只有 10 多个而已

常用Linux命令的基本使用

序号命令对应英文作用
01lslist查看当前文件夹下的内容
02pwdprint work directory查看当前所在文件夹
03cd[目录名]changge directory切换文件夹
04touch[文件名]touch如果文件不存在,新建文件
05mkdir[目录名]make directory创建目录
06rm[文件名]remove删除指定文件
07clearclear清屏

小技巧:

  • ctrl + shift + = 放大终端窗口的字体显示
  • ctrl + - 缩小终端窗口的字体显示

自动补全

在敲出 文件 / 目录 / 命令 的前几个字母之后,按下 tab 键

  • 如果输入的没有歧义,系统会自动补全
  • 如果还存在其他 文件 / 目录 / 命令 ,再按一下 tab 键,系统会提示可能存在的命令
    小技巧
  • 按  /  光标键可以在曾经使用过的命令之间来回切换
  • 如果想要退出选择,并且不想执行当前选中的命令,可以按 ctrl + c

查看目录内容

ls 命令说明
  • ls 是英文单词 list 的简写,其功能为列出目录的内容,是用户最常用的命令之一,类似于 DOS下的 dir 命令
Linux 下文件和目录的特点
  • Linux 文件 或者 目录 名称最长可以有 256 个字符参数 含义
  • 以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示
  • . 代表当前目录
  • … 代表上一级目录
ls 常用选项
参数含义
-a显示指定目录下所有子目录与文件,包括隐藏文件
-l以列表方式显示文件的详细信息
-h配合 -l 以人性化的方式显示文件大小
ls通配符的使用
通配符含义
*代表任意个数个字符
?代表任意一个字符,至少 1 个
[]表示可以匹配字符组中的任一一个
[abc]匹配 a、b、c 中的任意一个
[a-f]匹配从 a 到 f 范围内的的任意一个字符

注意:以 . 开头的文件为隐藏文件,需要用 -a 参数才能显示

切换目录

cd

cd 是英文单词 change directory 的简写,其功能为更改当前的工作目录,也是用户最常用的命令之一
注意:Linux 所有的 目录 和 文件名 都是大小写敏感的

命令含义
cd切换到当前用户的主目录(/home/用户目录)
cd ~切换到当前用户的主目录(/home/用户目录)
cd .保持在当前目录不变
cd …切换到上级目录
cd -可以在最近两次工作目录之间来回切换
相对路径和绝对路径

相对路径 在输入路径时,最前面不是 / 或者 ~,表示相对 当前目录 所在的目录位置
绝对路径 在输入路径时,最前面是 / 或者 ~,表示从 根目录/家目录 开始的具体目录位置

创建和删除操作

touch
  • 创建文件或修改文件时间
    如果文件 不存在,可以创建一个空白文件
    如果文件 已经存在,可以修改文件的末次修改日期
mkdir
  • 创建一个新的目录
选项含义
-p可以递归创建目录

新建目录的名称 不能与当前目录中 已有的目录或文件 同名

rm
  • 删除文件或目录
    使用 rm 命令要小心,因为文件删除后不能恢复
选项含义
-f强制删除,忽略不存在的文件,无需提示
-r递归地删除目录下的内容,删除文件夹 时必须加此参数

拷贝和移动文件

序号命令对应英文作用
01tree [目录名]tree以树状图列出文件目录结构
02cp 源文件目标文件copy复制文件或者目录
03mv 源文件 目标文件move移动文件或者目录/文件或者目录重命名
tree
  • tree 命令可以以树状图列出文件目录结构
选项含义
-d只显示目录
cp
  • cp 命令的功能是将给出的 文件 或 目录 复制到另一个 文件 或 目录 中,相当DOS 下的 copy命令

【cp】 +【-r】+【目录名(可带路径)】+【目标路径(带路径)】      -r  表示复制目录下所有子目录以及文件  如:cp -r release  ~/nfs/

【cp】 +【目录名/*】+【目标路径(带路径)】    /*表示目录下所有文件和目录   *是通配符

如: cp release/* ~/nfs/

选 项含义
-i覆盖文件前提示
-r若给出的源文件是目录文件,则 cp 将递归复制该目录下的所有子目录和文件,目标文件必须为一个目录名
mv
  • mv 命令可以用来 移动 文件 或 目录,也可以给 文件或目录重命名
选项含义
-i覆盖文件前提示

查看文件内容

序 号命令对应英文作用
01cat 文件名concatenate查看文件内容、创建文件、文件合并、追加文件内容等功能
02more 文件名more分屏显示文件内容
03grep 搜索文本 文件名grep搜索文本文件内容
cat

cat 命令可以用来 查看文件内容、创建文件、文件合并、追加文件内容 等功能
cat 会一次显示所有的内容,适合 查看内容较少 的文本文件

选项含义
-b对非空输出行编号
-n对输出的所有行编号

Linux 中还有一个 nl 的命令和 cat -b 的效果等价

more
  • more 命令可以用于分屏显示文件内容,每次只显示一页内容
  • 适合于 查看内容较多的文本文件

使用 more 的操作键:

操作键功能
空格键显示手册页的下一屏
Enter键 一次滚动手册页的一行
b回滚一屏
f前滚一屏
q退出
/word搜索 word 字符串
grep

Linux 系统中 grep 命令是一种强大的文本搜索工具
grep 允许对文本文件进行 模式查找,所谓模式查找,又被称为正则表达式。

选项含义
-n显示匹配行及行号
-v显示不包含匹配文本的所有行(相当于求反)
-i忽略大小写

常用的两种模式查找

参数含义
^a行首,搜寻以 a 开头的行
ke$行尾,搜寻以 ke 结束的行

其他

echo 文字内容

echo 会在终端中显示参数指定的文字,通常会和 重定向 联合使用

重定向 > 和 >>

Linux 允许将命令执行结果 重定向到一个 文件
将本应显示在终端上的内容 输出/追加 到指定文件中
其中
> 表示输出,会覆盖文件原有的内容
>> 表示追加,会将内容追加到已有文件的末尾

echo "This is a test" > test.txt  # 将文本重定向到文件test.txt

echo "Another line" >> test.txt  # 将文本追加到文件test.txt
管道 |
  • Linux 允许将 一个命令的输出 可以通过管道 做为 另一个命令的输入
  • 可以理解现实生活中的管子,管子的一头塞东西进去,另一头取出来,这里 | 的左右分为两端,
    左端塞东西(写),右端取东西(读)

常用的管道命令有:

  • more :分屏显示内容
  • grep :在命令执行结果的基础上查询指定的文本

系统信息相关命令

时间和日期

序号命令作用
01date查看系统时间
02calcalendar 查看日历, -y 选项可以查看一年的日历

磁盘信息

序号命令作用
01df -hdisk free 显示磁盘剩余空间
02du -h [目录名]disk usage 显示目录下的文件大小

进程信息

所谓进程,通俗地说就是 当前正在执行的一个程序

序号命令作用
01

ps 

   -A 列

   -w 显示加宽可以显示较多的资讯

   -au 显示较详细的资讯

   -aux 显示所有包含其他使用者的进程

列出所有的进程

显示加宽可以显示较多的资讯

显示较详细的资讯

显示所有包含其他使用者的进程

02top动态显示运行中的进程并且排序
03kill [-9] 进程代号终止指定代号的进程, -9 表示强行终止

ps 默认只会显示当前用户通过终端启动的应用程序
ps 选项说明

选项含义
a显示终端上的所有进程,包括其他用户的进程
u显示进程的详细状态
x显示没有控制终端的进程

提示:使用 kill 命令时,最好只终止由当前用户开启的进程,而不要终止 root 身份开启的进程,否则可能导致系统崩溃

top显示个条目的含义

列名含义
PID进程id
USER进程所有者的用户名
PR优先级
NInice值。负值表示高优先级,正值表示低优先级
VIRT进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR共享内存大小,单位kb
S进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU上次更新到现在的CPU时间占用百分比
%MEM进程使用的物理内存百分比
TIME+进程使用的CPU时间总计,单位1/100秒
COMMAND命令名/命令行

默认进入top时,各进程是按照CPU的占用量来排序的。

  • 要退出 top 可以直接输入 q

用户权限相关命令

用户/组基本概念与特性

系统上的每个进程(正在运行的程序)都以特定用户的身份运行。
每个文件都由特定的用户拥有。
对文件和目录的访问受用户限制。
与正在运行的进程关联的用户确定该进程可访问的文件和目录。

1.查看用户的uid/gid

格式:[root@localhost~]#id 用户名
在这里插入图片描述

能看到uid(用户ID)、gid(初始组ID),groups是用户所在组,这里既可以看到初始组,如果有附加组,则也能看到附加组

2.用户基本信息文件

用户基本信息文件存在于/etc/passwd中,由“:”分割为7段字符
在这里插入图片描述

“用户名:密码:UID(用户ID):GID(组ID):描述性信息:主目录:默认Shell”

(1)用户名

用户名,就是一串代表用户身份的字符串。
前面讲过,用户名仅是为了方便用户记忆,Linux系统是通过UID来识别用户身份,分配用户权限的。/etc/passwd文件中就定义了用户名和UID之间的对应关系。

(2)密码

“x"表示此用户设有密码,但不是真正的密码,真正的密码保存在/etc/shadow文件中。为了防止密码的泄露,现Linu系统把真正的加密密码串放置在/etc/shadow文件中,此文件只有root用户可以浏览和操作,这样就最大限度地保证了密码的安全。需要注意的是,虽然"x"并不表示真正的密码,但也不能删除,如果删除了"x”,那么系统会认为这个用户没有密码,从而导致只输入用户名而不用输入密码就可以登陆。

(3)UID

UID,也就是用户ID。每个用户都有唯一的一个UID,Linux系统通过UID来识别不同的用户。实际上,UID就是一个0~2^32(4,294,967,296)之间的数,不同范围的数字表示不同的用户身份。
在CentOS7的Linux系统中UID:“0”为超管的uid;
“1~999”为系统自行创建的uid,保留给系统使用;
“1000~2^32”为普通用户的uid。

(4)GID

全称“Group ID”,简称“组ID”,表示用户初始组的组ID号。
初始组,指用户登陆时就拥有这个用户组的相关权限。每个用户的初始组只能有一个,通常就是将和此用户的用户名相同的组名作为该用户的初始组。比如说,我们手工添加用户user001,在建立用户user001的同时,就会建立user001组作为user001用户的初始组。
附加组,指用户可以加入多个其他的用户组,并拥有这些组的权限。每个用户只能有一个初始组,除初始组外,用户再加入其他的用户组,这些用户组就是这个用户的附加组。附加组可以有多个,而且用户可以有这些附加组的权限。
描述性信息
这个字段没有重要的意义,只用来添加解释。

(5)主目录

用户登录后有操作权限的访问目录,称为用户的主目录。

(6)Shell

Shell就是Linux的命令解释器,是用户和Linux内核之间沟通的桥梁。Linu系统默认使用的命令解释器bash(/bin/bash),如果我把lamp用户的Shell命令解释器修改为/sbin/nologin,那么,这个用户就不能登录了。

3.用户的密码文件

/etc/shadow文件,用于存储Linux系统中用户的密码信息
在这里插入图片描述

“用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段”

(1)用户名

同/etc/passwd文件的用户名有相同的含义。

(2)加密密码

这里保存的是由加密算法加密过的密码。(不能在文件中修改,否则系统会无法识别,使得密码失效)

(3)最后一次修改时间

此字段表示最后一次修改密码的时间,可是,为什么用户显示的是18467呢?这是因为Linux计算日期的时间是以1970年1月1日作为1不断累加得到的时间,到1971年1月1日,则为366天。这里显示18467天,也就是说,此账号在1970年1月1日之后的第18267天修改的用户密码。

(4)最小修改时间间隔

最小修改间隔时间,也就是说,该字段规定了从第3字段(最后一次修改密码的日期)起,多长时间之内不能修改密码。如果是0,则密码可以随时修改;如果是7,则代表密码修改后7天之内不能再次修改密码。

(5)密码有效期

为了强制要求用户变更密码,这个字段可以指定(最后一次更改密码)多长时间内需要再次变更密码,否则该账户密码进行过期阶段,该字段的默认值为99999。
密码需要变更前的警告天数
当账户密码有效期快到时,系统会发出警告信息给此账户,提醒用户"再过n天你的密码就要过期了,请尽快重新设置你的密码!"。

(6)账号失效时间

使用自1970年1月1日以来的总天数作为账户的失效时间。该字段表示,账号在此字段规定的时间之外,不论你的密码是否过期,都将无法使用!
保留
这个字段目前没有使用。

4.组信息文件

/ect/group 文件是用户组配置文件在这里插入图片描述

“组名:密码:GID:该用户组中的用户列表”

(1)组名

也就是是用户组的名称,有字母或数字构成。同/etc/passwd中的用户名一样,组名也不能重复。

(2)组密码

"x"仅仅是密码标识,组密码默认保存在/etc/gshado文件中,不过这项功能我们很少使用。

(3)组ID(GID)

就是群组的ID号,Linux系统通过GID区分用户组。

(4)组中的用户

列出群组包含的所有附加用户。

组管理

提示:创建组 / 删除组 的终端命令都需要通过 sudo 执行

序号命令作用
01groupadd 组名添加组
02groupdel 组名删除组
03cat /etc/group确认组信息
04chgrp -R 组名 文件/目录名递归修改文件/目录的所属组

提示:
组信息保存在 /etc/group 文件中
/etc 目录是专门用来保存 系统配置信息 的目录

用户管理

提示:创建用户 / 删除用户 / 修改其他用户密码 的终端命令都需要通过 sudo 执行

创建用户/设置密码/删除用户

Alt
提示:

  • 创建用户时,如果忘记添加 -m 选项指定新用户的家目录 —— 最简单的方法就是删除用户,重新创建
  • 创建用户时,默认会创建一个和用户名同名的组名
  • 用户信息保存在 /etc/passwd 文件中
查看用户信息
序号命令作用
01id [用户名]查看用户 UID 和 GID 信息
02who查看当前所有登录的用户列表
03whoami查看当前登录用户的账户名
which

提示

  • /etc/passwd 是用于保存用户信息的文件
  • /usr/bin/passwd 是用于修改用户密码的程序
    which 命令可以查看执行命令所在位置,例如:
which ls
# 输出
# /bin/ls
which useradd
# 输出
# /usr/sbin/useradd

bin 和 sbin

  • 在 Linux 中,绝大多数可执行文件都是保存在 /bin 、 /sbin 、 /usr/bin 、 /usr/sbin
  • /bin ( binary )是二进制执行文件目录,主要用于具体应用
  • /sbin ( system binary )是系统管理员专用的二进制代码存放目录,主要用于系统管理
  • /usr/bin ( user commands for applications )后期安装的一些软件
  • /usr/sbin ( super user commands for applications )超级用户的一些管理程序
切换用户
序 号命令作用说明
01su - 用户名切换用户,并且切换目录- 可以切换到用户家目录,否则保持位置不变
02exit退出当前登录账户

su 不接用户名,可以切换到 root ,但是不推荐使用,因为不安全
exit 示意图如下:

修改文件权限

序号命令作用
01chown修改拥有者
02chgrp修改组
03chmod修改权限

命令格式如下:

# 修改文件|目录的拥有者
chown 用户名 文件名|目录名
# 递归修改文件|目录的组
chgrp  组名 文件名|目录名
# 递归修改文件权限
chmod a+w 文件名|目录名

远程管理常用命令

关机/重启

序号命令对应英文作用
01shutdown选项 时间 shutdown关机/重新启动

常用命令示例

# 重新启动操作系统,其中 now 表示现在
$ shutdown -r now
# 立刻关机,其中 now 表示现在
$ shutdown now
# 系统在今天的 20:25 会关机
$ shutdown 20:25
# 系统再过十分钟后自动关机
$ shutdown +10
# 取消之前指定的关机计划
$ shutdown -c

不指定选项和参数,默认表示 1 分钟之后 关闭电脑
远程维护服务器时,最好不要关闭系统,而应该重新启动系统

查看配置网卡信息

序 号命令对应英文作用
01ifconfigconfigure a network interface查看/配置计算机当前的网卡配置信息
02ping ip地址ping检测到目标 ip地址 的连接是否正常
ifconfig

ifconfig 可以查看/配置计算机当前的网卡配置信息

# 查看网卡配置信息
$ ifconfig
# 查看网卡对应的 IP 地址
$ ifconfig | grep inet

提示:一台计算机中有可能会有一个 物理网卡 和 多个虚拟网卡,在 Linux 中物理网卡的名字通常以 ensXX 表示
127.0.0.1 被称为 本地回环/环回地址,一般用来测试本机网卡是否正常

ping

ping 一般用于检测当前计算机到目标计算机之间的网络 是否通畅,数值越大,速度越慢

# 检测到目标主机是否连接正常
$ ping IP地址
# 检测本地网卡工作正常
$ ping 127.0.0.1

ping 的工作原理与潜水艇的声纳相似, ping 这个命令就是取自 声纳的声音
网络管理员之间也常将 ping 用作动词 —— ping 一下计算机X,看他是否开着

linux软件安装

yum安装命令

yum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。

基於RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。

yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。

更新国内yum源

网易(163)yum源是国内最好的yum源之一 ,无论是速度还是软件版本,都非常的不错。

将yum源设置为163 yum,可以提升软件包安装和更新的速度,同时避免一些常见软件版本无法找到。

首先备份/etc/yum.repos.d/CentOS-Base.repo

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

下载对应版本 repo 文件, 放入 /etc/yum.repos.d/

  • CentOS5 :http://mirrors.163.com/.help/CentOS5-Base-163.repo
  • CentOS6 :http://mirrors.163.com/.help/CentOS6-Base-163.repo
  • CentOS7 :http://mirrors.163.com/.help/CentOS7-Base-163.repo
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
mv CentOS7-Base-163.repo /etc/yum.repos.d/CentOS-Base.repo

运行以下命令生成缓存

yum clean all
yum makecache

除了网易之外,国内还有其他不错的 yum 源,比如中科大和搜狐。

中科大的 yum 源,安装方法查看:https://lug.ustc.edu.cn/wiki/mirrors/help/centos

sohu 的 yum 源安装方法查看: http://mirrors.sohu.com/help/centos.html

yum常用命令

yum 语法:

yum [options] [command] [package ...]

选项:

  • **options:**可选,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。
  • **command:**要进行的操作。
  • **package:**操作的对象。

实例:

  • 列出所有可更新的软件清单命令:yum check-update
  • 更新所有软件命令:yum update
  • 仅安装指定的软件命令:yum install <package_name>
  • 仅更新指定的软件命令:yum update <package_name>
  • 显示包信息:yum info <package_name>
  • 列出所有可安裝的软件清单命令:yum list
  • 删除软件包命令:yum remove <package_name>
  • 查找软件包 命令:yum search <keyword>
  • 清除缓存命令:
    • yum clean packages: 清除缓存目录下的软件包
    • yum clean headers: 清除缓存目录下的 headers
    • yum clean oldheaders: 清除缓存目录下旧的 headers
    • yum clean, yum clean all (= yum clean packages; yum clean oldheaders) :清除缓存目录下的软件包及旧的headers

通过yum安装Mysql

1. 第一步 下载

下载地址:https://dev.mysql.com/downloads/repo/yum/
········或········· http://repo.mysql.com
#使用wget下载mysql
wget http://repo.mysql.com/mysql80-community-release-el7.rpm


结果图:
在这里插入图片描述


2. 第二步 安装
(1) 通过yum安装方法,会直接添加mysql环境变量和启动服务

yum -y install mysql80-community-release-el7.rpm

在这里插入图片描述

(2) 安装community-server

yum -y install mysql-community-server

在这里插入图片描述


3、第三步 启动服务并查看服务状态

systemctl start mysqld        #一定要启动服务!
systemctl status mysqld      #查看服务状态

在这里插入图片描述


4、第四步 获取密码
登录 MySQL 必须要通过密码,此时 root 用户的密码可以通过以下命令在日志文件中获取:

grep "password" /var/log/mysqld.log

在这里插入图片描述


5、第五步 登录并求改密码
(1)登录

mysql -u root -p

在这里插入图片描述
(2) 修改密码(修改规则)

在这里插入图片描述

MySQL 8.0+ 版本为以下方式:(规则修改)
set global validate_password.policy=0;
set global validate_password.length=4;

MySQL 8.0+ 版本为以下方式:(密码修改)
ALTER USER 'root'@'localhost' IDENTIFIED BY '1234';

6、第六步 授权
授权远程用户连接

# 改表法
# 选择数据库
use mysql;
# 最后授权 MySQL,允许远程用户登录访问 MySQL
update user set host = '%' where user = 'root';
# 刷新权限
flush privileges;
通过yum安装Mysql完毕!

卸载mysql的详细步骤的帖子

Linux操作系统彻底删除MySQL——详细步骤_linux系统中卸载mysql教程-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值