Linux操作系统基础
第一节:操作系统的基础知识以及LInux系统的入门
1、什么是计算机操作系统
操作系统是一个用来协调、管理和控制计算机硬件和软件的资源的系统程序,它位于硬件和应用程序之间。
2、什么是系统内核
操作系统内核是一个管理和控制程序,负责管理计算机的所有的物理资源,其中包括:文件系统、内存管理、设备管理、进程管理、网络管理。
3、操作系统分类
服务器OS:RHEL、CentOS、Windows server
桌面OS:Windows、MAC OS 、Fedora
移动设备OS:Android,IOS,(YunOS?)
4、操作系统流派
目前常用的大多数操作系统都源于Unix,或者借鉴了最初的Unix,如:Windows,Mac OS x,Linux,历史原因都与Unix有一定的关系。
5、安装、配置Linux
由于测试方便,使用虚拟机来安装Linux做说明。一般使用VMware WorkStation或者virtualBox 这两种虚拟软件。我使用的是前者。
① 下载安装VMware,具体步骤可以问某度。
② 下载合适版本的Linux发行版镜像文件,我使用的是CentOS 6.9。第一次使用,建议安装everything版本
镜像文件常用的网站:
https://wiki.centos.org/Download
https://mirror.aliyun.com
https://mirror.sohu.com
https://mirror.163.com
③ 开始新建虚拟机,根据自己的笔记本硬件情况,选择合理的参数,注意:选择稍后安装镜像。网络三种模式:桥接模式,NAT模式,仅主机模式,根据自己的需求选择合适的模式。注意要区分三者的含义:(简短说一下)———–参考:https://www.cnblogs.com/linjiaxin/p/6476480.html
——桥接模式:wmnet0作为虚拟交换机,虚拟机通过交换机链接外网,宿主机跟虚拟机在同一个网段
——NAT模式:即转换模式,宿主机网卡跟虚拟机NAT设备连在一起,NAT设备和DHCP服务器连在WMnet8虚拟交换机上。
——仅主机模式:Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。
④ 安装过程中的各种选项的含义:
a) install or upgrade an existing system:安装或升级现有的系统
b) install system witn basic video driver:安装系统和基本的视频驱动程序
c) rescue installed system:救援安装系统
d) boot from local drive:从本地硬盘启动
⑤ 其他的步骤自己多摸索一下。
6、Unix认识
① 什么是Unix
Unix就是一个操作系统
② Unix的发展史
在Unix的发展路上,有很多故事,可以查看一些书籍了解。
7、不同风格的语言的简单介绍,后期在Python中会有详细说明
汇编语言,最接近底层的语言,但是无法移植。
C语言(Rust语言),系统级别的开发语言,移植性还是差,需要在某平台编译后,才能在相应的平台运行。
应用编程,Python的特点是 write once , run anywhere,代码简介,但是运行慢。基于VM虚拟机运行。
8、开发接口标准
ABI:Application Binary Interface 描述了应用程序和OS之间的底层的接口,允许编译好的代码在使用兼容ABI的提醒中无需改动就能运行
API:Application Programming interface 定义了源代码和库之间中接口,因此同样的源代码可以在支持这个api的任何系统中编译
9、硬件平台:
cpu平台主要有:X86,ARM,PowerPC(苹果),Power(IBM),UltraSparc(sun),Alpha(hp)
10、Linux并不是Unix
Linux是类Unix,是参考了Unix的风格而形成的另一种操作系统。而所谓的Linux是指kernel,平时所说的Linux操作系统是指发行版,是Linux内核+GNU提供的应用程序
11、常见的发行版
ReadHat、Debian、SUSE
ReadHat ———> CentOS
Debain ———> Ubuntu
SUSE ———> openSUSE
作为码农,常用的系统有:ArchLinux ———>支持程序的滚动更。如果为了装X,可以使用Mac OS X。
Linux分支参考网站:http://futurist.se/gldt/
12、关于版本号
内核版本号:3.10.0-693.el7
注:1、版本号的第二位数字,可以确定Linux内核版本的类型
开发版本:第二位数字是奇数 3.9.1……
稳定版本:第二位数字是偶数 3.10.0……
2、发行版本号版本:与内核版本号不同 内核版本号:4.17.9
13、开源协议
开源 open source ,软件和源代码提供给所有人自由分发软件和源代码,能够修改和创建衍生作品
软件分类:
商业版,共享版,自由版
① 常见的开源协议
GPLv2、GPLv3、LGPL:通用公共许可copyleft——->GNU提供
Apache,BSD,MIT。。。
② 开源协议
注:协议很重要,同样的应用程序在不同的发行版上可能使用情况不经相同。
14、Linux的哲学思想
① 一切皆文件,包括硬件
② 小型,单一用途的程序(功能尽量单一)——–> 目前是一个程序集合多个单一功能的程序完成复杂的功能
③ 链接程序,完成复杂的任务,需要用户窜起来
④ 避免令人困惑的用户界面
⑤ 配置数据存储在文件中—–为了通用
15、图形界面分类
GUI:graphical user interface 图形化界面接口
桌面系统的发行方式:
Gnome:C开发的
KDE:C++开发的
XFCE:用于嵌入式较多(轻量级桌面)
CLI:command line interfacce 命令行接口
sh > bsh
csh,bash,zsh
shell —–特质命令行shell
16、什么是shell
shell是LInux的用户界面,提供了一种用户可以和内核交互操作的一种接口,接受用户输入的命令并把它送入内核去执行。
也成为Linux的命令解释器
查看当前shell:echo $SHELL
显示当前系统的所有shell : cat /etc/shells
17、什么是程序
程序 = 指令 + 数据
程序 = 算法 + 数据结构
以算法为中心,数据结构服务于算法,这就是过程是编程
以数据为中心,算法服务于数据,这就是对象式编程
18、终端类型以及用户登录
物理终端 /dev/console
虚拟终端 /dev/tty# [1-6] Ctrl+ Alt +F[1-6]
伪终端 /dev/pts/# (ssh远程连接,图形界面开启的终端)
图形终端 /dev/tty7
串行终端 /dev/ttyS#
查看当前设备的终端设备命令:tty
19、命令分类、执行命令
命令分:内部命令、外部命令
内部命令:shell自带的命令
help 回车:查看所有的内部命令列表
enable -n cmd :禁用某个命令
enable -n:查看被 禁用的命令
enable cmd :启用某个命令
外部命令:文件系统路径下有对应的可执行文件
which cmd :查看某个命令的位置 或者 whereis
注:用type cmd 查看命令是否是内部命令
执行命令回车即可,如果同时执行多个命令,使用分号隔开,如:ls /etc;date
一个命令可以使用\ 分多行
取消和结束命令执行:Ctrl+c Ctrl+d
20、命令别名alias
alias cmd= ‘CMD’
unalias cmd:取消别名
别名的配置文件:
~/.bashrc : 仅对当前用户
/etc/bashrc :对所有用户有效
21、时间和日期
Linux的两种时钟:
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
相关命令:date,hwclock
hwclock :硬件时钟
hwclock -s :硬件时钟同步为系统时钟
-w :系统时钟同步为硬件时钟
date:系统时间
+%a : 周几的缩写
+%A : 周几的全写
+%b :几月的缩写 +%h
+%B :几月的全写
+%c :本地日期时间
+%C :2018的20
+%d :某月的几号 %e
+%D :日期 07/25/18
+%F : 日期 2018-07-25
+%g :2018的18
+%H :几点-24小时制 00-23
+%I :几点-12小时制 00-12
+%j :一年的第几天
+%k : 0-23
+%l : 0-12
+%m : 月
+%M :分钟
+%T : 08:42:11
+%u : 一周的第几天 Monday是第一天 1-7
+%w : 一周的第几天 SUNday是第一天 0-6
+%U :一年的第几周
+%y : 2018 的18
+%Y :年
设置时间:date [-u] [MMDDhhmm][[cc]YY][.SS]]
cal:日历
cal -y 显示当年全部日历
22、关机、重启
关机:halt。poweroff , init0(centos6)
重启:reboot ,init6
-f:强制
-p:切断电源
关机或重启:shutdown
-r:重启
-h:halt
-c:取消
now 立刻
+m:几分钟后
23、Linux用户分类
管理员 uid 0
普通用户:
系统用户: 1-499 1-999
登录用户: 500+ 1000+
注:root用户命令行提示是 #,普通用户命令行提示符是 $.
24、用户登录:
whoami,who,w
[root@localhost ~]$ w 7:26:39 up 1:10, 4 users, load average: 0.05, 0.05, 0.01 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT root tty1 :0 16:18 1:10m 4.05s 4.05s /usr/bin/Xorg : root pts/0 :0.0 16:18 1:07m 0.02s 0.02s /bin/bash root pts/1 192.168.112.1 17:23 2:43 0.00s 0.00s -bash root pts/3 192.168.112.1 08:58 0.00s 0.64s 0.17s w
w使用
25、screen使用
screen -S name:创建一个名字为name的新会话
screen -ls:显示所有的会话
screen -r name: 恢复name会话
Ctrl + a.d 剥离当前会话 也就是关掉当前的会话
26、echo 回显
-n:不加换行符
[root@localhost ~]$ echo -n ‘jak’
jak[root@localhost ~]$
-e:显示控制符 如 :\t
[root@localhost ~]$ echo -n -e ‘jak\tda\b’
jak d[root@localhost ~]$
常见的控制符:
\a ::发出警告声
\b :退格
\c: 最后不加换行符
\n :换行且光标移动至行首
\r :回车 ,即光标移动行首,但不换行
\t : 制表符tab
\\ :插入\
27、括号扩展
echo hi{1,2}
echo {1,2}{3,4}
cd ~username :切换到用户家目录
echo {1..20} {a..z}
28、命令替换
ls -l $(cd /etc/sysconfig/) :$(cd /etc/sysconfig/) 把得到的结果传递给另一个命令
反引号:命令替换 :
echo hostname —– echo `hostname`
双引号:弱引用:
[root@localhost ~]$ echo “$PS1”
\033[30;33m[\u@\h \W]$ \033[0m
单引号:强引用:是啥就是啥不会替换
[root@localhost ~]$ echo ‘$PS1’
$PS1
29、Linux的两棵树
文件树-/,进程树-init
FHS:文件系统层级结构标准
一切皆文件:
登录进shell,每时每刻都处于某个路径下:
当前目录:current dir
工作目录:working dir
相对路径:
绝对路径:
程序文件
/bin /sbin /usr/bin, /usr/sbin ,/usr/local/bin,/usr/local/sbin
30、命令历史
history 默认保存1000条 $HISTSIZE ——> printenv
HISTCONTROL =
ignoredups # 忽略相邻重复的
ignorespace # 忽略以空白开头的命令
ignoreboth # 两者都忽略
会保存在用户家目录下的.bash_history
history:
-c:清空命令历史
-d offset:删除历史中指定的第offset个命令
n :显示最近的n条历史
-a:追加本次回话新执行的命令到历史文件中
-r:将.bash_history显示到屏幕上
-w:保存历史列表到指定文件中
-n :读历史文件中没有读过的行到历史列表中
重复前一个命令:有4中方法
使用向上键
使用!!
使用 !-1
Ctrl +p 回车执行
!:0 :执行前一条命令(去除参数)
!n :执行对应序号的命令
!-n : 执行倒数第n条命令
重新调用前一个命令中的最后一个参数:
!$ 或者 Alt +。 或者 ESc放开在按。
31、获取帮助
内部命令: help history
外部命令:
–help -h 获取帮助
man and info ——- /usr/share/man
程序自带的帮助信息
whatis:显示命令的简短描述,使用数据库,刚装不能立即使用,makewhatis|mandb制作数据库
whatis cat
–help:
[]:可选项
<>或CAPS:表示变化的数据
…表示一个列表
x|y|z:或者的关系
-abc: -a -b -c
{}:分组
man:手册页放在/usr/share/man
man页面分组为不同的章节
man命令的配置文件:/etc/man.config | man_db.conf
MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置
man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示
man章节:
1、用户命令
2、系统调用
3、C库调用
4、设备文件以及特殊文件
5、配置文件格式
6、游戏
7、杂项
· 8、管理类命令
9、linux内核API
man帮助段落说明:
NAME:名称及简要说明
SYNOPSIS:用法格式
DESCRIPTION:详细描述
OPTIONS:选项说明
EXAMPLES:实例
查看手册:man 1 cat
列出所有帮助:man -a cat
搜索man手册:man -k cat
翻看man手册技巧:
空格:向下翻屏
b:向上翻屏
d:向下翻半屏
u:向上翻半屏
#:定位到第几行
enter:向下一行
y:向上一行
1G:回到顶部
G:到尾部
/keyword :查找关键字,使用N/n翻 ,向后搜
?keyword:查找关键字,使用N/n翻 ,向前搜
info:info cat
方向键翻
tab键,移动到下一个链接
enter:进入选定的链接
s:文本搜索
q:退出
本地帮助文档:
/usr/share/doc目录
常见文档:readme,install,changes
注:
exec bash:exec执行程序,替换当前的进程,可以通过pstree看出来
通过在线文档获取帮助:第三方应用官方文档
http://www.nginx.org
http://tomcat.apache.org
http://httpd.apache.org
http://www.python.org
通过发行版官方的文档光盘或网站可以获得,安装指南、部署指南、虚拟化指南等,红帽知识库和官方在线文档
http://kbase.redhat.com
http://www.redhat.com/docs
http://access.redhat.com