Linux

Linux是一种自由和开放源码的类UNIX操作系统。Linux 是 Linus's UNIX 的缩写。Linux也是自由软件和开放源代码软件发展中最著名的例子。只要遵循GNU 通用公共许可证(GPL),任何个人和机构都可以自由地使用Linux的所有底层源代码,也可以自由地修改和再发布。大多数人都是直接使用Linux 发行版,而不是自己选择每一样组件或自行设置。

Linux严格来说是单指操作系统的内核,如今Linux常用来指基于Linux的完整操作系统,包括Linux内核和Linux发行版的许多应用程序和工具。Linux发行版包含Linux内核和支撑内核的实用程序和库,通常还带有大量可以满足各类需求的应用程序。

简介

时间轴

  • 1991年,Linus Torvalds在赫尔辛基大学时,他对MINIX只允许在教育上使用很不满,于是开始写自己的操作系统,
  • 1991年8月25日,公开发布。
  • 1991年9月,Linux的第一个版本(0.01)被大学FTP server管理员Ari Lemmke发布在Internet上,仅有10,239行代码,当时名称为“Freax”,FTP服务器管理员嫌原名称不好听,把这个内核名称改为Linux。
  • 1991年10月5日,0.02版本的内核发布。
  • 1994年3月14日,Linux 1.0.0发布,共176,250行代码。
  • 1996年6月9日,发布了 Linux内核2.0版本。
  • 2003年12月17日, 发布 Linux 内核2.6.0,共5,929,913行代码。
  • 2011年7月21日,发布 Linux 内核3.0。
  • 2013年6月,发布的Linux内核版本3.10包含15,803,499行代码。

了解更多 >> 维基百科:Linux内核 - 历史 维基百科:Linux历史


安装使用

在电脑上安装

  • 下载一个Linux发行版,如UbuntuCentos等。
  • 刻录到U盘
  • 安装到电脑或直接从U盘使用

在虚拟机安装

  • 下载一个Linux发行版,如UbuntuCentos等。
  • 使用虚拟机中安装(如:VMware Workstation)

云服务器

  • 购买一个云服务器,如:
    • 阿里云的云服务器 ECS
    • 腾讯云的云服务器 CVM
    • Amazon AWS
  • 有多种Linux版本供选择,选择配置后,会自动安装并启动。

系统架构

drawio: Linux架构


Linux 系统可以粗糙地抽象为3个层次:

名称 描述
系统内核
Kernel
命令解释层
Shell
在计算机中shell指用户接口(或用户界面)。一般来说,这个词是指操作系统中提供访问内核所提供之服务的程序。shell也用于泛指提供程序和用户交互的层面。通常将shell分为两类,命令行界面(CLI)和图形用户界面(GUI)。

常见Linux shell:
Bash:Linux上默认的shell,是Unix shell的一种,在1987年由布莱恩·福克斯为了GNU计划而编写。
应用

发行版

通常情况下,Linux被打包成供个人计算机和服务器使用的Linux发行版,一些流行的主流Linux发布版,包括Debian(及其派生版本Ubuntu、Linux Mint)、Fedora(及其相关版本Red Hat Enterprise Linux、CentOS)和openSUSE等。由于Linux是自由软件,任何人都可以创建一个符合自己需求的Linux发行版。

常见发现版本:

派系 名称 初始版本 基于 描述 网站
Debian系 Debian 1993年8月16日 - 完全由自由软件组成,精简稳定。社区管理。 官网:https://www.debian.org/
源代码:https://sources.debian.org/
Ubuntu 2004年10月20日 Debian 著名的Linux发行版之一,Canonical公司和Ubuntu社区管理 官网:http://www.ubuntu.com/
源代码:https://code.launchpad.net/ubuntu
Linux Mint 2006年 Ubuntu 官网:https://www.linuxmint.com/
Red Hat系 Red Hat 1995年5月13日 - 历史悠久,Red Hat公司管理 官网:https://www.redhat.com/
源代码:https://sources.debian.org/
CentOS 2004年5月14日 Red Hat 官网:https://www.centos.org/
Arch 系 Arch Linux 2002年3月11日 - 采用滚动更新模式,没有大版本更新。 官网:https://archlinux.org/
源代码:https://git.archlinux.org/
Manjaro Linux 2011年7月10日 Arch Linux 其目标是为 PC 提供易于使用的自由的操作系统。 官网:http://manjaro.org/
源代码:https://gitlab.manjaro.org/


了解更多 >> 维基百科:Linux发行版列表


桌面环境

桌面环境(Desktop environment),也称桌面管理器。常见桌面环境:

名称 描述 作为默认桌面环境
GNOME Ubuntu 17.10-
KDE
Xfce
LXDE

了解更多 >> 维基百科:桌面环境



软件管理

软件包管理

派系 常见发行版 包格式 基础工具 常用上层工具
Debian系 Debian、Ubuntu .deb dpkg apt、apt-get、aptitude
Red Hat系 Red Hat、CentOS、Fedora .rpm rpm yum、dnf

了解更多 >> Debian手册:Debian 软件包管理 Debian手册:软件包制作教程


用户管理

Linux系统是多用户系统,基于用户身份来控制他们对资源的访问,可以将用户分组管理以简化访问控制,以避免为众多用户分别设置权限。

超级用户

在 Linux 中,超级用户称为 root。root 用户可以控制所有的程序,访问所有文件,使用系统上的所有功能。对 root 用户来说没有不可以做的事情。就管理的角度而言,root 的权限是至高无上的。所以,root 帐号一定要通过安全的密码保护起来,这一点非常重要。您不应该使用 root 身份来处理日常的事务。

其他用户也可以被赋予 root 特权,但一定要谨慎行事。通常您可以配置一些特定的程序由某些用户以 root 身份去运行,而不必赋予他们 root 权限。

创建新用户

添加用户的命令是 useradd,

useradd 参数 用户名

参数说明:

  • -c comment 添加注释。

示例:

#添加一个名称为user的用户
useradd user

#给名称为user的用户设置密码
passwd user

useradd -c "normal user" -g users


文件系统

常见目录

目录 描述

了解更多 >> 维基百科:文件系统层次结构标准 维基百科:Unix 文件系统


系统管理

开机自动运行

名称 描述 示例
crontab 命令 crontab 是一个定时的任务管理命令。
crontab -l 显示当前用户crontab文件内容
crontab -e 编辑当前用户的
启动时自动运行boot.sh脚本
# 创建一个脚本boot.sh
vim /home/yourname/boot.sh

# 输入如下内容到boot.sh
date >> /home/yourname/boot_sh.log
echo "启动运行" >> /home/yourname/boot_sh.log
mount /dev/sdc2 test

# boot.sh添加可执行权限
sudo chmod u+x /home/yourname/boot.sh

# 命令行输入crontab -e进入编辑
crontab -e 

# 输入如下内容保存到crontab文件
@reboot /home/yourname/boot.sh
systemd 服务

Linux 日志

网络

远程登录

Linux一般作为服务器使用,而服务器一般放在机房,你不可能在机房操作你的Linux服务器。这时我们就需要远程登录到Linux服务器来管理维护系统。Linux系统中是通过SSH服务实现的远程登录功能,默认ssh服务端口号为 22。 在Windows系统上登录:

  • Putty 命令行
  • WinSCP 使用的 SSH 的开源图形化 SFTP 客户端。同时支持 SCP 协议。主要用于文件传输和文本编辑。
  • SecureCRT
  • SSH Secure Shell

在手机上登录:

  • Termius

备份与恢复

环境变量

环境变量(environment variables),


资源

官网

相关网站

书籍

  • 《The Linux Command Line》

参考资料