一、OS(operating system)概述
1.1 完成的OS包含2部分:Kernel + Application
1.2 狭义上的OS指的是Kernel
1.3 OS的接口分类:
GUI:Graphic User Interface GNome:c,gtk开发环境 KDE:c++,qt开发环境 XFCE:轻量级桌面 CLI:Command Line Interface 命令行接口使用的shell类型:bash,zsh,sh,csh,tcsh,ksh...
二、操作系统功能
驱动程序 进程管理 安全 网络功能 内存管理 文件系统 ......
三、 API与ABI接口
应用程序
|
|<libcall>
libraries
|
|<syscall>
(operate system) kernel
|
|
hardware
API: Application Program Interface
程序员面对的编程接口
POSIX: Portable Operating System , 可移植操作系统
ABI: Application Binary Interface , 程序应用者面对运行程序的接口
GNU: 源码需要编译成为二进制格式 ; gcc,glibc,vi,linux都是源码格式.
四、Linux发行版:数百种之多
Linux Distribution Timeline
Debian:
ubuntu:
mint:
knopix:
Slackware:
S.u.S.u:
SLES:企业版
OpenSUSE:
RedHat:
RedHat Enterprise Linux:RHEL
CentOS:Community ENTerprise OS
Fedora Core:每6个月发行一个版本
Gentoo
ArchLinux
软件程序版本号:major.minor.release
linux kernel: www.kernel.org
0.99,1.0,2.0,2.2,2.4,2.6,3.0,4.0
五、CPU主要架构:
X86 X64 m68000(m68k) arm ultrasparc power:IBM-aix powerpc(ppc) alpha:hp-ux
六、开源协议概述
Stallman : GNU
GPL : General Public License LGPL : Lesser GPL FSF : Free Software Foundation BSD : 1.如果二次发布的产品中包含源代码,则在源代码中必须带有原来的代码中的BSD协定; 2.如果二次发布的产品是二进制格式的库或程序,则需要在发布的文档或版权声明中说明包含原来的代码中的BSD协定; 3.不可以用开源代码的作者或组织,以及原来的产品的名字做市场推广; Apache : ASF : Apache Software Foundation
七、程序管理与程序包管理器:
1、程序组成部分:二进制文件;配置文件;库文件;帮助文件;
PS : 二进制文件、库文件:可执行文件,其中二进制文件可单独执行;库文件不能独立执行,只能被调用时执行.
配置文件、帮助文件:可被查看其内容的文件
2、程序包管理器:
程序的组成文件打包成一个或有限的几个文件;
安装;
卸载;
查询;
eg.
Debian : dpkg, apt-get
RedHat : rpm, yum, dnf
S.U.S.E : rpm, zypper
ArchLinux :
Gentoo :
LFS : Linux From Scratch
Kali :
八、centos镜像站点:
http://mirrors.aliyun.com http://mirrors.163.com http://mirrors.sohu.com
九、Linux用户界面:
GUI: 图形界面
GNome
KDE
CLI: 命令行接口
[root@localhost ~]# COMMAND
root : 当前登录用户
localhost: 非完整格式的当前主机的主机名。完整格式为:localhost.localdomain
~ : 用户当前所在的目录(current directory),也称为工作目录(working directory)
# : root用户的命令提示符,拥有最高权限,能执行所有操作,prompt
$ : 普通用户的命令提示符;普通用户不具有管理权限,不能执行系统管理类操作
bash, zsh, sh, csh, tcsh, ksh
查看系统当前使用的shell类型:
[root@localhost ~]# echo $SHELL
/bin/bash
[root@localhost ~]#
Linux查看IP地址:
centos 7 :
[root@localhost ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
link/ether 00:0c:29:91:1e:d0 brd ff:ff:ff:ff:ff:ff
inet 192.168.206.128/24 brd 192.168.206.255 scope global dynamic ens33
valid_lft 1638sec preferred_lft 1638sec
inet6 fe80::4f33:4130:8b88:c382/64 scope link
valid_lft forever preferred_lft forever
[root@localhost ~]#
或者使用下面命令,查出的信息跟上面一样。
~]# ip addr
~]# ip addr list
~]# ip addr show
~]# ip a
~]# ifconfig (centos 7 需要安装 net-tools 工具: yum -y install net-tools)
centos 6:
~]# ifconfig
linux关闭防火墙:
centos 7: ~]# systemctl disable firewalld.service ~]# systemctl stop firewalld.service centos 6 : ~]# service iptables stop ~]# chkconfig iptables off
关机命令:centos 7: ~]# systemctl poweroff
重启命令:centos 7: ~]# systemctl reboot
十、Linux的终端设备: terminal
物理终端: console 系统装完后,直接用鼠键+显示器接入,进行操作的那个界面,也叫控制台 虚拟终端: tty 默认有6个虚拟终端,按组合键进行切换 Ctrl+Alt+F[1-6] 图形终端: centos 6 : Ctrl+Alt+F7 centos 7 : 在哪个虚拟终端上启动图形界面,图形终端即位于哪个虚拟终端(当前虚拟终端切换为图形终端) 串行终端: ttys 系统不需要使用图形界面的情况下,可以不需要显卡。主板上的任何一个串口基于特定的速率进行字符交换. 伪终端 : pts 通过SSH远程连接系统的操作界面;在图形界面上启动的CLI窗口.
十一、Linux哲学思想:
Stallman : 自由学习和修改、自由使用、自由分发、自由创建衍生版;
1. 一切皆文件,吧几乎所有资源抽象为文件形式。包括硬件设备、通信接口;
对文件的操作: open() , read() , write() , close() , delete() , create() 物理终端: /dev/console 虚拟终端: /dev/tty# [1,6] 串行终端: /dev/ttys# 伪终端 : /dev/pts/# 查看当前操作界面的终端类型、终端序号: [root@localhost ~]# tty /dev/pts/0 [root@localhost ~]# 启动设备后,在其上关联一个用户接口程序,即可实现与用户交互。 查看接口程序: ~]# echo $SHELL
2. 由众多功能单一的程序组成: 一个程序只做一件事,并且做好;组合小程序完成复杂任务;
3. 尽量避免跟用户交互;
目标:易于以编程的方式实现自动化任务;
4. 使用文本文件保存配置信息;
十二、命令的语法通用格式:
# COMMAND OPTIONS ARGUMENTS
1、COMMAND:
发起一个命令:请求内核将某个二进制程序运行为一个进程;
程序运行为进程;
命令的二进制静态转为动态,有生命周期;
命令本身是一个可执行的程序文件,是二进制格式文件,有可能会调用共享库文件;
多数系统程序文件存放在: /bin , /sbin , /usr/bin , /usr/sbin , /usr/local/bin , /usr/local/sbin
普通命令 : /bin , /usr/bin , /usr/local/bin
管理命令 : /sbin , /usr/sbin , /usr/local/sbin
共享库:
大多数存放在:/lib , /lib64 , /usr/lib , /usr/lib64 , /usr/local/lib , /usr/local/lib64
32bits的库:/lib , /usr/lib , /usr/local/lib
64bits的库:/lib64 , /usr/lib64 , /usr/local/lib64
命令必须遵循特定格式规范:ELF格式(Linux)
[root@localhost ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=3d705971a4c4544545cb78fd890d27bf792af6d4, stripped
[root@localhost ~]#
命令:
~]# file /bin/ls 查看文件内容格式的类型
命令分为两类:
内置命令:builtin , 由shell程序自带的命令;没有可执行文件;PATH路径中没有内置命令;
外部命令:独立的可执行程序文件,文件名即命令名;有可执行文件;放选择性在PATH路径中;
shell程序是独特的程序,负责解析用户提供的命令;
环境变量:
PATH: 从哪些路径去查找用户键入的命令字符串所对应的命令文件;
查找系统当前的PATH路径:
[root@localhost ~]# echo $PATH
/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/nginx/sbin/:/root/bin
查找次序:自左而右
查看命令类型(内置命令/外部命令): type COMMAND
[root@localhost ~]# type cd
cd is a shell builtin
[root@localhost ~]#
[root@localhost ~]# type tree
tree is /usr/bin/tree
2、OPTIONS:
指定命令的运行特性;
选项有两种表现形式;
短选项:- 有些命令没有短选项;
如果同一命令同时使用多个短选项,多数可合并;
~]# ls -l -d /var
~]# ls -ld /var
长选项:-- 长选项不能合并;
PS:有些选项可以带参数,称为选项参数;
3、ARGUMENTS:
命令的作用对象,命令对什么生效;
不同的命令,参数不一样;
有些命令可同时带多个参数,多个之间以空白字符分隔;
~]# ls -ld /var /etc /usr
十三、获取命令的使用帮助:
1、内部命令: help COMMAND
~]# help type
2、外部命令:
<1> 命令自带简要格式的使用帮助;
# COMMAND --help
<2> 使用手册;manual
大多数手册放置位置:/usr/share/man
并非每个COMMAND在所有章节下都有手册
压缩格式的文件,有章节之分: man1 , man2,...
1: 用户命令
2: 系统调用
3: C库调用
4: 设备文件及特殊文件
5: 文件格式(配置文件格式)
6: 游戏使用帮助
7: 杂项
8: 管理工具及守护进程
# man COMMAND
man手册章节结构:
SECTION:
NAME : 命令的功能性说明
SYSNOPSIS : 语法格式
DISCRIPTION : 描述
OPTIONS : 选项
EXAMPLES : 使用示例
AUTHOR : 作者
BUGS : 报告程序BUG的方式
SEE ALSO : 参考
... ...
SYNOPSIS:
[] : 可选内容
<> : 必须提供的内容
... : 同类内容可出现多个
查看COMMAND的man手册在第几章节: whatis COMMAND
[root@localhost ~]# whatis passwd
sslpasswd (1ssl) - compute password hashes
passwd (1) - update user's authentication tokens
[root@localhost ~]#
whatis 命令执行过程式查询数据库进行的;
手动更新数据库: ~]# makewhatis (centos 6)
~]# mandb (centos 7)
man命令打开手册后的操作方法:
翻屏:
空格键:向文件尾翻一屏
b : 向文件首部翻一屏
Ctrl + d : 向文件尾部翻半屏
Ctrl + u : 向文件首部翻半屏
回车键 : 向文件尾部翻一行
k : 向文件首部翻一行
G : 跳转至最后一行
#G : 跳转至指定行
1G : 跳转至文件首部
文件内容搜索:
/keywords 从文件首部向文件尾部依次查找,不区分大小写
?keywords 从文件尾部向文件首部依次查找
n : 与查找命令方向相同
N : 与查找命令方向相反
q : quit, 退出
man 选项:
-M /PATH/TO/SOMEDIR : 到指定目录下查找命令手册并打开;
<3> info COMMAND
获取命令的在线文档,并不是每个命令都有;
<4> 很多应用程序会自带帮助文档: /usr/share/doc/APP-VERSION
README : 程序的相关信息
INSTALL : 安装帮助
CHANGES : 版本迭代时的改动信息
<5> 主流Linux发行版官方文档
<6> 程序的官方文档
<7> google
keyword filetype : pdf
keyword site:domain.tld
<8> 书籍的出版社
O'Reiley
Wrox
机械工业、电子工业、人邮、清华大学、水利水电