- 小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。
Linux版本介绍
Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社区版本。相比RHEL,Fedora打包了显著的更多的软件包。其中一个原因是,多样化的社区参与Fedora的建设,它不只是一家公司。在这个过程中,CentOS用于活动,演示和实验,因为它是对最终用户免费提供的,并具有比Fedora的一个更长的发布周期(通常每隔半年左右发布一个新版本)。
Debian是包括Ubuntu在内许多发行版的上游,而Ubuntu又是Linux Mint及其他发行版的上游。Debian在服务器和桌面电脑领域都有着广泛的应用。Debian是一个纯开源计划并着重在一个关键点上,稳定性。它同时也提供了最大的和完整的软件仓库给用户。
Linux的发行版本可以大体分为两类,一类是商业公司维护的发行版本,如:著名的Redhat(RHEL),一类是社区组织维护的发行版本,如:Debian。下面介绍一下各个发行版本的特点:
Centos(Redhat)
Redhat,应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。
包管理方式:采用的是基于rpm
包的yum
包管理方式。
Debian
Debian是社区类Linux的典范,是迄今为止最遵循GNU规范 的Linux系统。Debian最早由Ian Murdock于1993年创建,分为三个版本分支(branch): stable
, testing
和 unstable
。其中,unstable
为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing
的版本都经 过unstable
中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而stable
一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。
包管理方式:采用的是基于是apt-get
、dpkg
包管理方式。
Ubuntu
Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable
版本加强而来,可以这么说,Ubuntu就是 一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的 Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome
的Ubuntu,基于KDE
的Kubuntu以及基于Xfc
的 Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
包管理方式:采用的是基于是apt-get
、dpkg
包管理方式。
总结对比一下:
分类 | Centos | Debian | Ubuntu |
---|---|---|---|
包管理 | yum | apt-get | apt-get |
桌面应用 | 支持 | 需要另装 | 支持 |
系统资源占用 | 小 | 非常小 | 大 |
资料 | 最多 | 依赖社区 | 多 |
更新频次 | 长达10年 | 1-2年 | 3-5年 |
软件资源 | 较新 | 最新 | 新 |
漏洞更新 | 慢 | 依赖社区 | 依赖社区 |
默认安装 | 非常全 | 无 | 非常全 |
稳定性 | 较稳定 | 稳定 | 相对稳定 |
系统操作要求 | 较高 | 高 | 低 |
维护要求 | 低 | 高 | 较高 |
易用性 | 一般 | 差 | 较好 |
定制化 | 一般 | 高 | 差 |
CentOS是RHEL发行版对应的开源版本,通常在RedHat的发布后就会很快发行。它既稳定,占用资源又少,在网络上能方便搜索到安装配置的文档,自身的帮助文档也非常强大。所以,新人学习推荐:Centos
常见软件应用
- 数据库:MySQL、Oracle、 MongoDB、Redis
- web服务器:
Nginx
、Apache - 浏览器:Chromium(Chrome)、Firefox
- 编辑器:Emacs,
Vim
,Nano,Atom,VScode,IntelliJ IDEA&Webstorm - 文档:WPS Office、LibreOffice、Calligra(Ubuntu/Debian)
- 下载工具:
Aria2
、uGet(Ubuntu/Debian)、XDM、qBittorrent - 虚拟化:VirtualBox、VMWare、
- 系统工具:
git
、rsync、sudo、unzip、tar - 其他:音乐Netease Music、图片GIMP、聊天Wine QQ、播放器VLC
安装方法
Centos安装方法:
-
下载镜像
按需选择下载:
类型 | DVD | Minimal |
---|---|---|
图形安装 | 支持 | 支持 |
自带软件包 | 全家桶,可选择 | 无 |
镜像大小 | 4G+ | 800-900M |
-
制作U盘启动盘
Windows参考:Windows中制作USB启动盘
Mac/Linux参考:MacOS中制作USB启动盘
-
修改BIOS启动顺序,重启
-
安装配置。€
Windows中制作USB启动盘
操作步骤:
-
格式化U盘(FAT32格式)
-
下载ISO镜像
-
下载资源文件中的写入程序
-
写入镜像(工具见后文)
资源下载:
Centos官网推荐:
Ubuntu官网推荐:
MacOS中制作USB启动盘
-
格式化U盘
-
使用
diskutil list
查看U的设备名$ diskutil list /dev/disk0 (internal): #: TYPE NAME SIZE IDENTIFIER 0: GUID_partition_scheme 500.3 GB disk0 1: EFI EFI 314.6 MB disk0s1 2: Apple_APFS Container disk1 500.0 GB disk0s2 /dev/disk1 (synthesized): #: TYPE NAME SIZE IDENTIFIER 0: APFS Container Scheme - +500.0 GB disk1 Physical Store disk0s2 1: APFS Volume APPLE SSD 342.6 GB disk1s1 2: APFS Volume Preboot 47.6 MB disk1s2 3: APFS Volume Recovery 509.7 MB disk1s3 4: APFS Volume VM 4.3 GB disk1s4 /dev/disk2 (external, physical): #: TYPE NAME SIZE IDENTIFIER 0: FDisk_partition_scheme *123.0 GB disk2 1: Windows_NTFS LIWEI 123.0 GB disk2s1
上图中,/dev/disk2就是U盘
-
卸载U盘(不是推出) :
diskutil umountDisk /dev/disk2
(假如U盘是 /dev/disk2)$ diskutil umountDisk /dev/disk2 Unmount of all volumes on disk1 was successful
-
镜像DMG写入到U盘:
sudo dd if=~/Downloads/ubuntu-16.04-desktop-amd64.iso of=/dev/disk2 bs=1m
(假如U盘是 /dev/disk1, 千万别搞错了)$ sudo dd if=~/Downloads/ubuntu-17.04-desktop-amd64.iso of=/dev/disk2 bs=1m Password: 2151+1 records in 2151+1 records out 2256076800 bytes transferred in 90.277905 secs (24990354 bytes/sec)
-
写入完成后会提示:“此电脑不能读取能插入的磁盘”, 这里选择直接推出即可
Linux目录结构
目录 | 说明 | 备注 |
---|---|---|
/bin | 常用二进制命令 | ls, cp, rm, mkdir |
/usr | 系统程序目录 | 命令、帮助文件、系统配置 |
/var | 这个目录中存放着在不断扩充着的东西 | 日志 |
/lib | 系统最基本的动态连接共享库 | 类似于Windows中的DLL |
/srv | 存放一些服务启动之后需要提取的数据 | 通常是空的 |
/home | 用户主目录 | 通常是空的 |
/boot | Linux内核及系统引导文件目录 | |
/dev | 设备文件的目录 | 声卡,磁盘,光驱等 |
/etc | 二进制软件包配置文件的默认路径 | 系统信息,网络配置 |
/lost+found | 系统崩溃时,产生的一些碎片文件 | |
/mnt | 临时挂载存储设备 | U盘 |
/opt | 软件可选的安装目录 | 通常是空的 |
/proc | 操作系统进程信息目录 | |
/sbin | 管理员命令,系统级命令 | sudo用户 |
/tmp | 临时文件目录 | 重启后,被清空 |
/run | 临时文件系统,存储系统启动以来的信息 | 重启后,被清空 |
/sys | 系统中的设备组织成层次结构 | 通过文件查看硬件信息 |
需要掌握的目录路径知识:
-
查看系统内核信息
# Centos $ cat /proc/version Linux version 3.10.0-957.10.1.el7.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Mon Mar 18 15:06:45 UTC 2019 # Ubuntu $ cat /proc/version Linux version 4.15.7-041507-generic (kernel@gloin) (gcc version 7.2.0 (Ubuntu 7.2.0-8ubuntu3.2)) #201802280530 SMP Wed Feb 28 10:31:47 UTC 2018
-
查看网络信息
# Centos DHCP $ cat /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 BOOTPROTO=dhcp ONBOOT=yes # 或者指定IP $ cat /etc/sysconfig/network-scripts/ifcfg-em1 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=em1 UUID=fa335568-27db-47fd-a055-424173c42430 DEVICE=em1 ONBOOT=yes IPADDR=192.168.4.252 PREFIX=24 GATEWAY=192.168.4.50 DNS1=192.168.4.50 IPV6_PRIVACY=no ZONE=public # Ubuntu $ vi /etc/network/interfaces # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). source /etc/network/interfaces.d/* # The loopback network interface auto lo iface lo inet loopback # The primary network interface auto ens3 iface ens3 inet static address 192.168.4.60 netmask 255.255.255.0 network 192.168.4.0 broadcast 192.168.4.255 gateway 192.168.4.50 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 192.168.4.50 dns-search itheima
通常使用
ifconfig
来查看网卡的信息 -
DNS配置
$ cat /etc/resolv.conf options timeout:2 attempts:3 rotate single-request-reopen ; generated by /usr/sbin/dhclient-script nameserver 100.100.2.136 nameserver 100.100.2.138
-
host文件
$ cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
-
用户/组
查看用户:
$ cat /etc/passwd root:x:0:0:root:/root:/bin/bash daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin bin:x:2:2:bin:/bin:/usr/sbin/nologin sys:x:3:3:sys:/dev:/usr/sbin/nologin sync:x:4:65534:sync:/bin:/bin/sync games:x:5:60:games:/usr/games:/usr/sbin/nologin man:x:6:12:man:/var/cache/man:/usr/sbin/nologin lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin ....
查看组:
$ cat /etc/group root:x:0: daemon:x:1: bin:x:2: sys:x:3: adm:x:4:syslog,bttech tty:x:5: disk:x:6: lp:x:7: mail:x:8: news:x:9: uucp:x:10: man:x:12: proxy:x:13: ....
-
查看内存/CPU
# 查看CPU $ cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 45 model name : Intel(R) Xeon(R) CPU E5-2670 0 @ 2.60GHz stepping : 7 microcode : 0x714 cpu MHz : 2117.419 cache size : 20480 KB ... # 查看内存 $ cat /proc/meminfo MemTotal: 131812048 kB MemFree: 460820 kB MemAvailable: 36657836 kB Buffers: 0 kB Cached: 34910784 kB SwapCached: 1051944 kB Active: 95183532 kB Inactive: 32382012 kB Active(anon): 77764844 kB Inactive(anon): 15015220 kB Active(file): 17418688 kB ...
-
其他
- /etc/fstab(开机自动挂载列表)
- /etc/rc.local(开机自启动文件,自启动命令,脚本)
- /etc/init.d(服务启动命令脚本目录)
- /etc/profile(全局环境变量)
- /usr/local(编译安装软件默认安装目录)
- /var/log/message(系统日志)
- /var/log/secure(系统安全日志)
- /proc/mounts(系统挂载信息)
Linux启动过程
Linux启动过程:
-
内核的引导
首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。
主要是一些驱动、基本的操作指令,用来接管所有的硬件
-
运行 init
就跟main函数一样,有一个起点,初始一个服务进程daemon,跟windows中的服务一样。
-
系统初始化
用户及软件服务自启动
-
建立终端
Linux的多用户管理。
针对对用户,登录方式有三种:
- 命令行登录
- ssh登录
- 图形界面登录
-
用户登录系统
常用命令介绍(重点)
文件相关
- 目录相关
-
ls
: 列出目录-la 可以查看隐藏文件,文件一些基础属性
-
cd
:切换目录使用绝对路径
/
,也可以使用./
相对路径,回到上级目录cd ..
-
pwd
:显示目前的目录 -
mkdir
:创建一个新的目录 -
rmdir
:删除一个空的目录 -
cp
: 复制文件或目录cp source target
-
rm
: 移除文件或目录# 删除目录 rm -r dirpath # 强制删除,要特别注意 rm -rf dirpath€
-
mv
: 移动文件与目录,或修改文件与目录的名称mv source target
-
cat
用来查看文件内的内容,touch
命令来创建文件,echo
命令往文件里面写入内容,more
命令来查看显示长文件内容
-
- 基本属性:
-
权限管理
chmod
文件基本属性分为10个字符
drwxrwxrwx
r
代表着read读权限w
代表着write写权限x
代表着execute执行权限d
代表着目录chmod -R
递归执行,相当于是把目录下所有的文件都修改对应的权限chmod +x
给文件一个执行/读/写权限修改权限的两种方式:
方式1: 数字方式
7
-rwx
6
--rw-
4
-r--
0
----
什么权限都没有,前面的3个是所有者用户的权限,
中间的3个是组用户的权限,
后面的3个是其他用户的权限。
举例说明:
# 对所属用户有读写权限 chmod 600 ... # 对应 -rwxrw-rw-,相当于是取消了组与其他用户的执行权限 chmod 755 ...
方式2:
a
代表all所有,u
代表user,g
代表group,o
代表other。+
代表增加,-
代表减少举例说明:
# 增加所有用户的读的权限 chmod a+r ... # 增加用户与组的写的权限 chmod ug+w ..
个人比较推荐数字的方式,比较好记!!
-
用户/组权限管理
chown
修改文件/文档所属/所属组
chown <所属用户>:<所属组> <文件>
目录:
chown -R <所属用户>:<所属组> <文件>
-R
代表着递归
-
用户管理/登录
- 添加用户
useradd
- 删除用户
userdel
- 用户口令修改
passwd
- (扩展)用户组
groupadd
/groupdel
/groupmod
网络
-
远程连接
ssh
配置文件的路径是在
/etc/ssh/sshd_config
目录下如果需要修改port:
-
修改
sshd_config
中的Port
参数 -
(Centos)还需要使用
semanage port -a -t ssh_port_t -p tcp <Port>
-
service sshd restart
(Centos) /service ssh restart
(Debian、Ubuntu)
在测试的时候,可以关闭服务器的防火墙,但是生产系统中不推荐这么去做。
如果提示没有semanage这个命令,则可以使用如下方式来安装:
sudo yum install -y policecoreutils-python
或者使用
yum whatprovides semange
来反查ssh登录命令的格式:
ssh -p Port <用户名>@<服务器的地址>
如:
$ ssh -p 10022 root@192.168.0.1
window推荐使用xftp终端
mac推荐使用iterm
-
-
查看网卡配置
ifconfig
如果说没有这个命令,可以使用
yum install net-tools
进行安装ifconfig eth0 <ip> netmask 255.255.255.0
对网口进行禁用/启用
ifconfig eth0 down/up
-
查看网络
netstat
-t
:列出TCP协议端口-u
:列出UDP协议端口-n
:不使用域名与服务名,而使用IP地址和端口号-l
:仅列出在监听状态网络服务-a
:列出所有的网络连接-p
:列出所对应的进程信息
netstat -anpl | grep ssh
当使用
netstat | more
进行滚屏,ctrl+f/b
进行翻上/下页 -
路由命令
route
route查看路由
# add/del添加删除路由 route add -net 192.168.0.0 netmask 255.255.0.0 dev etho # del删除 route del -net 192.168.0.0 netmask 255.255.0.0 # reject route add -net 192.168.0.0 netmask 255.255.0.0 reject
-
IP命令
ip
ip addr show ip route show ip link set eth0 up/down
ip <命令> help
去查看命令的一些参数 -
DNS解析:
nslookup
Centos中如果没有该命令,可以使用如下的方式进行安装
sudo yum install bind-utils
-
查看本机IP
curl [链接]
几个网址也非常好记忆
- ip.cn (推荐)
- ipinfo.io (推荐)
- cip.cc (推荐)
- ifconfig.me
- myip.ipip.net
GUI网络配置操作(图形化大法好啊):
nmtui
如果提示
not found
命令的话,可以yum install -y NetworkManager-tui
进行安装
性能/硬件
-
top
命令:top # m切换显示内存信息 # t切换显示CPU信息 # M对内存倒序排序显示 # P根据CPU的使用百分比进行排序
-
性能测试
-
Bench.sh:
使用方法:
wget -qO- bench.sh | bash # 或者 curl -Lso- bench.sh | bash
Github地址:github.com/teddysun/ac…
-
LemonBench
使用方法:
wget -qO- https://ilemonrain.com/download/shell/LemonBench.sh | bash # 或者 curl -fsSL https://ilemonrain.com/download/shell/LemonBench.sh | bash
-
参考资料:
常见问题: