Linux系统小白学习
如果有什么问题或歧义,欢迎指正
Linux基础介绍安装
1.1 Unix与Linux
背景
- 1969Unix诞生,版本有v1(汇编语言),v4(c语言),v6(贝尔实验室外流传),v7(完整c编辑器)
- 两大流派:AT&T发布的Unix操作系统System V、美国加州大学伯克利发布的BSD
- 主要版本:AIX(IBM的Unix)、FreeBSD、HP-UX、SunOS
- 1991linux诞生:李纳斯,Linux之父,在硬件上完成终端仿真程序,使用了汇编语言和C语言,从BIOS引导磁盘启动计算机编程,后来又开发了磁盘驱动程序和文件管理系统,并且和Minix文件系统兼容,操作系统也就成型了,后来就放到FTP服务器上供大家下载测试,自己进行了完善,这一举动体现了开放源代码运动的思想。后来李纳斯在一次演讲后将GNU GPL作为Linux版权声明,奉献给了自由软件,促成了Linux今天的辉煌
Torvalds有机会聆听了自由软件运动之父Richard Stallman (理查德斯托曼,生于1953年)的一次演讲,促使他考虑转向GUN的GPL. Richard Stallman是自由软件运动的精神领袖、GNU计划以及自由软件基金会(Free Software Foundation)的创立者、著名黑客。他最大的成就是为自由软件运动创立了道德、政治以及法律框架,因而被誉为当今自由软件的斗土、伟大的理想主义者。GNU计划是由RichadStalman在1983年9月27日公开发起的,它的目标是创建一-套完全自由的操作系统。为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件必须遵守GNU通用公共许可证(GNU General Public License,简称GNUGPL),GNU GPL创造性地提出了“反版权”(即Copyleft)的概念,这是一个不同于商业软件的“版权所有”(即Copyright) 的法律概念,GNU GPL并不是为了否认版权,也不禁止分发软件时收取费用或取得利润。其核心思想是任何火发布一个遵守GNU GPL的软件时,不管是收费的还是免费的,都必须将发布者具有的一切权利给予软件的接受者,必须保证软件接受者能同时收到或通过其他途径得到源程序,共自将GNU GPL加在软件的版权声明中,使软件接受者知道自己有这样的权利。GNU GPL本身也是受法律保护的版权声明。
- 常见版本: RHEL-RedHat Enterprise Linux (所谓的Redhat Advance Server,收费版本)、Fedora Core (由原来的Redhat桌面版本发展而来,免费版本)、CentOS (RHEL的社区克隆版本,免费版本)、 Debian Linux (唯一由非商业组织维护的hux发行版本, 功能强大)、 Ubuntu (严格说不能算一个独立的发行版本, 它是基于Debian的unstable版本加强而来)、SuSe Linux (Novell公司产品欧洲常用)
Unix&Linux区别与联系
- 联系:后者模仿前者,但比前者功能更强大,源代码也互无关,前者历史久于后者,但后者思想先与前者
- 区别:前者与硬件配套,后者运行于硬件之上,前者闭源,实行知识产权保护,后者是自由软件,免费且开源。
- 学习Linux原因:开源、免费的操作系统,其稳定安全性、处理多并发已得到认可,很多企业的选择。
1.2 Linux介绍
特点
- 优点:开放性,遵循世界标准,多用户同时使用的系统资源,多任务多程序运行相互独立,设备独立,/dev每个文件都标识一个设备,具有强大的文件管理系统,丰富的网络功能,可靠安全,移植性好。
- 缺点习惯windows的不容易掌握,支持的PC硬件不广泛。
组成
- Linux内核:系统的核心,运行程序和管理的核心程序,如进程管理
- Linux shell:shell是系统的用户界面,提供了用户与内核进行交互操作的一种接口
- Linux文件系统:是文件存放在磁盘等存储设备的组织方法,可支持做种异构的文件系统
- Linux应用系统:有一整套成为应用程序的程序集,包括编辑器、数据库等
Linux文件系统
- 组成:目录项(包括文件名和inode节点号)、inode(文件索引节点,包含文件的基础信息,如文件字节数、user id、文件组id、文件读写执行权限等,ls -li查看)、数据区(包含文件的具体内容)。
内核版本
- 组成:主版本号、次版本号(最大为5,偶数是稳定版,奇数是有bug的测试版)、修正号
硬件
文件目录结构
1.3 安装
虚拟机与物理机
虚拟网络
MBR (主启动记录)
MBR不属于任何分区,不会对应到系统中的设备节点,它存放在第一个磁盘的第0轨上并且大小固定为512bytes
- boot loader固定为446bytes,存放开机所必须的信息,其作用是从哪个分区载入操作系统
- partition table大小固定为64bytes,存放了每个分区起始的, 磁柱与结束的磁柱,记录每个分区起始到结束的磁柱所需要的空间固定为16bytes,所以一个磁盘只能划分四个分区,可以使用3p+ 1e的结构来扩充。在扩展分区当中第一个逻辑分区的第一个磁区里面,也会记录自己是从哪个磁柱开始的又会在哪个磁柱结束,并且记录下一个分区是从哪个磁柱开始的,第二个逻辑分区中也…
- magic的大小固定为2bytes,存放每个bios的magic号。 (结束标志字,硬盘有效标志),固定为55AA
- GPT (GUID分区表),最多可创建128个主分区
配置介绍
- [root@hly/]#:root表示当前登录用户,hly表示主机名,/代表当前目录,#代表用户等级权限为超级用户,$代表普通用户
- 快照功能:如果误操作,可以利用快照恢复至误操作之前的某步
- 克隆:链接克隆与源共享一个内存/cpu,完整克隆就是独立个体副本,
- 没有网的解决方法:本机防火墙是否关闭;Linux/seLinux是否关闭;Linux网络服务是否启动;vmware nat服务和DHCP是否启动;NetworkManager.service未关闭
- 禁用防火墙和SELinux
- systemctl stop/start firewall临时禁用防火墙
- systemctl disable firewall.service永久禁用,但是重启有效,所以第一次前两个结合用
- firewall-cmd --state查看防火墙状态
- setenforce 0临时关闭selinux
- vi /etc/selinux/connfig进入vi编辑将enforcing改为disable(i为插入的意思,esc键为取消插入,再输入冒号,输q!(强制退出)/wq保存并退出),永久禁用selinux
2,Linux基本操作
基本使用
- 大小写敏感(Windows不敏感),Linux下的“/”等于Windows下的“\”,而Linux下的“\”放在命令最后表示下行命令接此行,跳脱符号“\”,可以将空格/@等符号转为普通字符,例:touch b\ B指的创建“b B”文件
- 文件名前面加“.”表示隐藏文件,文件开头#表示注释行
- 退出:exit 、ctrl+d。切换用户:su xx。
- X-Windows到控制台之间的切换:CTRL+F1-F6(远程不行)。
- 关机:shutdown - h now/3(指三分钟后关机,ctrl+c强制退出,不关机);halt(不常用);init 0
- 重启:shutdown - r now/3;reboot;init 6
- 注销shell界面:logout(适用于远程登陆)/exit/ctrl+d;pkill -kill -t pts /0
- Ctrl+s锁屏时隐藏但依然执行,ctrl+q解锁
- w(查看登录用户的详细信息)、who=who am i(查看登录用户的部分信息,进程时间IP地址)、whoami(显示用户名)
- Whichis ls查看命令ls脚本在哪,whatis ls指列出命令ls简短描述,whereis ls查看命令ls的位置
- ls --help查看命令的帮助文档和参数
- man 1/5/8 ls显示说明文档,号码区分章节
- 1代表普通使用者都可以用,
- 5表示文件格式说明,
- 8表示root用户使用的命令
- / key-word:搜索关键字key-word,n是下跳,N是上跳关键字,q离开文档
- history显示历史命令,!序号:执行该行命令,!$为上一条命令的最后一参数
[root@localhost ~]# history
17 w
18 who
19 whoami
20 hsgd
[root@localhost ~]# !18
who
root :0 2020-02-24 21:00 (:0)
root pts/0 2020-02-24 21:01 (:0)
- uname -a 查看内核版本所有信息,uname -r查看版本简要,cat /etc/redhat-releasa查看虚拟机版本
[root@localhost conf.d]# uname -a
Linux localhost.localdomain 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost conf.d]# uname -r
3.10.0-957.el7.x86_64
[root@localhost conf.d]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
- ;hostname 显示主机名 ;hostname xx改名(logout/ctrl+d先登出);vi/ect/hostname,进入编辑,按i编辑,永久改名;
- date打印时间,date -s xx:xx:xx(15:23:00/20150302/“20200223 16:23:00”)修改时间,cal 空/06 2019打印日历,
[root@hly ~]# date
2020年 02月 24日 星期一 21:28:59 CST
[root@hly ~]# date -s 21:35:00
2020年 02月 24日 星期一 21:35:00 CST
[root@hly ~]# date -s 20131013
2013年 10月 13日 星期日 00:00:00 CST
[root@hly ~]# date -s '20200224 21:31:59'
2020年 02月 24日 星期一 21:31:59 CST
- cal 显示日历,例:cal 02 2020
- tab自动补齐,按两下是显示所有相同前缀的可能性
命令
cd进入目录
[root@hly ~]# cd .
[root@hly ~]# cd ..
[root@hly /]# cd /etc
[root@hly etc]# cd .
[root@hly etc]# cd ..
[root@hly /]# cd -
/etc
pwd显示当前位置
[root@hly etc]# pwd
/etc
ls 显示当前目录或文件
- -a(所有文件)、-l(详细信息)、-d(属性)、-i(显示inodes),ll查看当下文件
touch创建文件,文件存在时再创建会改变时间戳
- touch b\ B指的创建“b B”文件
[root@hly tmp]# touch a b
[root@hly tmp]# ls -l
总用量 1224
-rw-r--r-- 1 root root 0 2月 24 21:48 a
-rw-r--r--. 1 root root 1148 2月 20 13:29 anaconda.log
-rw-r--r-- 1 root root 0 2月 24 21:48 b
mkdir创建目录(蓝色),
[root@hly tmp]# mkdir dir
[root@hly tmp]# cd dir
[root@hly dir]# ls
[root@hly dir]# mkdir s
[root@hly dir]# ls
s
[root@hly tmp]# rmdir dir
rmdir: 删除 "dir" 失败: 目录非空
rmdir删除空目录
- rmdir o删除空目录,rm -rf d删除非空目录,re -rf *从删除到跑路,rm h删文件
[root@hly tmp]# rm -rf dir
[root@hly tmp]# cd dir
bash: cd: dir: 没有那个文件或目录
cp复制文件或目录,
- cp -p(保留原来时间戳)、-r(复制目录)、-a(同时使用-p-r)。cp -r /tmp/h /tmp/o/yy复制并改名为yy,复制目录时:cp -r /tmp/h /tmp/o把h从tmp复制到o;cp -p /tmp/h /tmp/o/uu保留目录之前时间
[root@hly tmp]# ls -l
总用量 1224
-rw-r--r-- 1 root root 0 2月 24 21:48 a
-rw-r--r--. 1 root root 1148 2月 20 13:29 anaconda.log
-rw-r--r-- 1 root root 0 2月 24 21:48 b
drwxr-xr-x 2 root root 6 2月 24 22:03 f1
drwxr-xr-x 2 root root 6 2月 24 22:03 f2
drwxr-xr-x 2 root root 6 2月 24 22:03 f3
[root@hly tmp]# cp -r /tmp/f2 /tmp/f1
[root@hly tmp]# cd f1
[root@hly f1]# ls
f2
[root@hly tmp]# cp -r /tmp/f3 /tmp/f2/f33
[root@hly tmp]# cd f2
[root@hly f2]# ls
f33
mv 移动
- mv /tmp/passwd /tmp/a/b把passwd移到a并改名b。-r/-f
[root@localhost tmp]# mv /tmp/1 /tmp/c
[root@localhost tmp]# cd c
[root@localhost c]# ll
总用量 0
drwxr-xr-x 2 root root 6 2月 26 17:44 1
[root@localhost tmp]# mv -t /tmp/c /tmp/2#加-t,就是将先写目标,后写源
[root@localhost tmp]# cd c
drwxr-xr-x 2 root root 6 2月 26 17:44 2
ln创建链接:
- 软链接(ln -s 源绝对路径 目的绝对路径/重命名。 类似快捷方式)
- 硬链接(类似复制,不能跨分区和用目录建立链接。ln 绝对路径 目的绝对路径/重命名)
- 绝对路径:根目录下有多个目录,并且这些目录有相同文件名时,就要从根目录开始写路径
- 相对路径:在相应目录下可以找到相应文件
[root@localhost tmp]# ln -s /tmp/f1 /tmp/a#软链接,加-s
[root@localhost tmp]# cd a
lrwxrwxrwx 1 root root 7 2月 26 18:08 f1 -> /tmp/f1
[root@localhost tmp]# ln /tmp/f2 /tmp/c/f22#硬链接并且命名
[root@localhost tmp]# cd c
[root@localhost c]# ll
总用量 0
-rw-r--r-- 2 root root 0 2月 26 18:08 f22
[root@localhost tmp]# rm -rf f2#删除硬链接的源文件,链接不失效
-rw-r--r-- 1 root root 0 2月 26 18:08 f22
gzip/bzip2/gunzip/bunzip2
- 后者压缩比高,要压缩的文件如果存在链接,就不能压缩,gzip x(直接压缩,生成x.gz文件,源文件不在),gzip -c x > x.gz(压缩文件和源文件都在。
- Bzip2和前者压缩并保留原文件时:bzip -k x),gzip -v x(显示压缩信息),gzip -cv x > xx.gz(),gzip -r x(针对目录进行递归压缩,对目录下的文件进行压缩,不对目录压缩)
- 解压缩,gunzip x.gz
[root@localhost tmp]# gzip -c 3 > 3.gz#压缩并不覆盖
drwxr-xr-x 2 root root 6 2月 26 17:44 3
-rw-r--r-- 1 root root 0 2月 26 18:24 3.gz
[root@localhost tmp]# gzip 1#压缩并覆盖源文件
[root@localhost tmp]# ll
总用量 4
-rw-r--r-- 1 root root 22 2月 26 18:23 1.gz
[root@localhost tmp]# bzip2 -k 2#压缩不覆盖
[root@localhost tmp]# ll
总用量 8
-rw