Linux的哲学思想
1;一切皆文件:
把所有组资源统统抽象为文件形式;包括硬件设备,甚至通信接口等;open( ) ;read( );write( ); close( ); delete( ); create
2; 有众多单一的程序组成
组合小程序完成复杂任务
3;尽量避免跟用户交互;
目标:易于以编程的方式实现自动化任务
4; 使用文本文件保存配置信息;
完整的OS:
Kernel+Application 内核+应用
狭义上的OS: kernel
现在市面流行的linux全程GNU/Linux
OS的接口类型主要有两种:
GUI:Graphic User Interface 图形用户界面
GNome:c, gtk
KDE: c++, qt
CLI:Command Line Interface 命令行界面
bash
zsh
sh
......
操作系统的功能:
驱动程序
进程管理
安全
网络功能
内存管理
文件系统
.......
API: Application Program Interface
程序员面对的编程接口
POSIX: Portable Operating System
ABI: Application Binary Interface
程序应用者面对运行程序的接口
主流发行版
发行版是指由第三方将开源的kernel源码文件及GUN的开源Appliction源码文件编译成计算机可以执行的二进制文件并公开发行的版本。
|-- Debian
| |-- Knopix
| `-- Ubuntu
| `-- mint
|-- Redhat
| |-- Fedora
| `-- RHEL
| `-- CentOS
`-- Slackware
`-- S.u.S.E
|-- OpenSUSE
`-- SLES
扩展:
RedHat:
认证考试:
RHCSA Red Hat Certified Engineer 红帽认证工程师
RHCE
RHCA
各发行版本
Gentoo发行版
Gentoo是一种Linux发行版。Gentoo有一个使用Python编写而成的软件包管理系统(Portage),能对BSD端口全面兼容,并对其进行管理。采用Portage软件包管理机制,是一种可以针对任何应用和需要而自动优化和定制的特殊的Linux发行版。
Gentoo 最初由DanielRobbins(前StampedeLinux和FreeBSD的开发者之一)创建。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统——portage。
优点:高度的可定制性,完整的使用手册,媲美Ports的Portage系统,适合“臭美”的高手使用^^
缺点:编译耗时多,安装缓慢
软件包管理系统:Portage (SRC)
openSUSE发行版
SUSE是德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统YaST也大受好评。SUSE于2003年年末被Novell收购。openSUSE是Novell 公司发行的企业级 Linux 产品的系统基础。openSUSE 成为 Linux黑客和应用软件开发者的首选平台。
优点:专业,易用的YaST软件包管理系统
缺点:FTP发布通常要比零售版晚1~3个月
软件包管理系统:YaST (RPM), 第三方APT (RPM) 软件库(repository)
Fedora发行版
Fedora 项目是由 Red Hat 赞助,由开源社区与 Red Hat工程师合作开发的项目统称。由RedHat公司提供收费技术支持和更新的Red Hat EnterpriseLinux,以及由社区开发的免费的FedoraCore。Fedora Core1发布于2003年年末,而FC的定位便是桌面用户。
优点:拥有数量庞大的用户,优秀的社区技术支持,许多创新
缺点:免费版(Fedora Core)版本生命周期太短,多媒体支持不佳
软件包管理系统:up2date (RPM), YUM (RPM)
Slackware发行版
Slackware由PatrickVolkerding创建于1992年。算起来应当是历史最悠久的Linux发行版。曾经Slackware非常的流行,但是当Linux越来越普及,用户的技术层面越来越广(更多的新手)后,Slackware渐渐的被新来的人们所遗忘。
优点:非常稳定、安全,高度坚持UNIX的规范
缺点:所有的配置均通过编辑文件来进行,自动硬件检测能力较差
软件包管理系统:Slackware Package Management (TGZ)
Debian发行版
Debian 使用 Linux 核心(操作系统的最重要部份),但大部份的基本工具则来自 GNU计划,因此我们称为GNU/Linux。最早由Ian Murdock于1993年创建。Debian系统分为三个版本分支(branch):stable,testing 和 unstable。截至2005年5月,这三个版本分支分别对应的具体版本为:Woody, Sarge和Sid。其中,unstable为最新的测试版本,其中包括最新的软件包,但是也有相对较多的bug,适合桌面用户。testing的版本都经过unstable中的测试,相对较为稳定,也支持了不少新技术(比如SMP等)。而Woody一般只用于服务器,上面的软件包大部分都比较过时,但是稳定和安全性都非常的高。
优点:遵循GNU规范,100%免费,优秀的网络和社区资源,强大的apt-get
缺点:安装相对不易,stable分支的软件极度过时
软件包管理系统:APT (DEB)
Centos
如果你通过一家网站主机托管公司来运营网站,那么你的网站服务器由CentOS Linux来运行的可能性很大。红帽企业级Linux(RHEL)的这种低成本克隆版并不是严格意义上的商用版,但是由于它基于RHEL,你可以充分利用它的商用支持功能。
CentOS的全称是社区企业操作系统,它基本上是作为一个社区驱动的项目来运营的,使用RHEL代码,消除了红帽的所有商标,让Linux服务器操作系统可免费使用和发行。
2014年,红帽和CentOS宣布双方将展开合作,CentOS致力于消除面向社区创新的Fedora平台与商业部署的红帽企业级Linux平台之间的差距,任务重心发生了转变。
CentOS会继续交付一款面向社区的操作系统,它的使命是帮助用户开发和采用开源技术,Linux服务器发行版比更注重创新的Fedora更加一致、更加保守。
与此同时,CentOS仍将免费,由社区领导的CentOS项目提供支持,而不是通过红帽提供支持。CentOS在2015年12月发布了CentOS 7.2,该版本源自红帽企业级Linux 7.2。
Stallman:
自由含义:
自由学习和修改: 自由使用。自由分发;自由创建衍生版
软件程序:版本号;
major.minor.release 主版本号.次版本号.发行版本号
~]# uname -r 查看内核版本号
发行版本也有自己的版本号:
RHEL: 5.x, 6.x, 7.x
Fedora 23
Debian:8.x
OpenSuSE: 13.x
Linux基础:
CPU架构:
x86
x64 (amd64)
m68000, m68k #摩托罗拉
arm
ultrasparc solaris
power aix
powerpc, ppc
MIPS
alpha hp-ux
...
linux授权方式
双线授权:
Community:遵循开源协定;
Enterprise:
程序的组成部分:
二进制程序;
配置文件;
库文件;
帮助文件;
安装虚拟机并安装操作系统:
虚拟机选择vmware workstation #推荐
virtualbox
系统Centos 7.2
具体安装方法就不在累述,网上有N多教程
在这里只强调网络模式,选择“桥接”即可。
安装完成后即可登录
远程连接:
ssh协议:secure shell
~]# ss -tnl
查看系统是否监听于tcp协议的22号端口
~]# ip addr list
或 查看系统的IP地址
~]# ifconfig
inet x.x.x.x
确保防火墙处于关闭状态
~]# iptable -L -n
~]# iptables -L -n
查看当前防火墙运行的规则
~]# iptable -F
清理规则(仅对当前有效)
(centOS 7版本)
~]# systemctl disable firewalld.service
禁用防火墙
~]# systemctl stop firewalld.service
关闭防火墙
(centOS 6版本)
~]# service iptable stop
停止服务
~]# chkconfig iptable off
防止以后自动启动,关闭防火墙
终端设备:terminal (键盘 显示器)
多任务、多用户
物理终端,控制台:console
虚拟终端: 默认6个 ~]#tty 命令可查看
切换快捷键: ctrl+Alt+F[1-6]
图形终端:
CentOS 6 :
Ctrl+Alt+F7
CentOS 7:
在哪一个终端启动,即位于哪个终端
串行终端: ttys
伪终端 : pty
远程或者 图形界面 console 的命令行模式
linux 的哲学思想之一:
表现之一: 所有的硬件设备也通过文件来标识
物理终端: /dev/console 路径
虚拟终端: /dev/tty# #[1-6]
串行终端: /dev/ttys#
伪终端 : /dev/pts/#
PS:在启动设备之后,在其上关联一个用户接口程序,即可实现与用户交互
查看终端设备:
~]# tty
[root@192 ~]# tty
/dev/pts/1
查看接口程序:
~]# echo $SHELL
[root@192 ~]# echo $SHELL
/bin/bas
启动GUI: 启动图形终端
在某一虚拟终端运行命令 startx & (第一次启动) &: 表示在后台运行
CLI 接口:
命令行接口:
[root@192 ~]# xxx
root : 当前登录的用户
192 :当前主机的主机名,非完整格式:此处完整应为192.168.1.100
~ :用户当前所在的目录(current directory) 也称为工作目录(working directory) 为相对路径
# : 命令提示符;
# : 代表管理员账号 root账号 拥有最高权限,能执行所有操作
$ : 代表普通用户账号 非root 账号,不具有管理权限
PS:生产环境建议使用非管理员账号登录,管理员权限太大,易造成误操作
需要管理操作时临时切换至管理员,操作完成即退回。
su - xx #切换用户
几个基础命令
关机命令:
CentOS 7:
~]# systemctl poweroff
关机
~]# systemctl reboot
重启
* :
~]# poweroff
~]# halt
关机
~]# reboot
文件
目录:路径映射
文件:有边界的 在磁盘上的一段数据流,存储空间存储的一段流式数据
对数据可以做到按名存取。
文件系统:层级结构; 有索引。
/: 原初起点。 根目录
倒置树状结构
/dev/pst/0
最左侧/: 是根目录
其余/: 为路径的分割符
linux的路径分隔符是/
windows 是\
文件的路径表示
绝对路径: 从根开始表示的路径
相对路径: 从当前位置开始表示出的路径
文件名使用法则:
严格区分字符大小写:
目录也是文件,在同一个路径下,两个文件不能同名:
文件名支持使用除了 / 以外的任意字符:
最长不能超过255 字符:
/etc/sysconfig/network-scripts/ifcf-eno16777736
basename: 最右侧为基名
dirname: basename 左侧的路径
[root@192 ~]# basename /etc/sysconfig/network-scripts/ifcfg-eno16777736
ifcfg-eno16777736
查看基名
[root@192 ~]# dirname /etc/sysconfig/network-scripts/ifcfg-eno16777736
/etc/sysconfig/network-scripts
dirname 路径
命令:
~]# basename /PATH/TO/SOMEFILE
SOMEFILE
~]# dirname /PATH/TO/SOMEFILE
/PAHT/TO
程序的组成部分:
二进制程序文件。库文件、配置文件、帮助文件
二进制、库文件; 可执行文件
库文件:不能独立执行,只能被调用时执行
配置文件。帮助文件: 可被查看其内容的文件
Linux基础知识
命令的通用格式
# COMMAND OPTIONS ARGUMENTS #命令 选项 参数
COMMADN
发起一个命令: 请求内核将某个二进制程序运行为一个进程
程序--> 进程
静态--> 动态 (有生命周期)
命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件
多数程序文件都存放在: /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/bin64 ; /usr/local/lib64
PS: 并非所有的命令都有一个在某目录与之相对应的可执行文件
命令必须遵循特定格式规范: exe ,msi , ELF (Linux)
~]# file /bin/ls
file 查看文件的类型
命令分为两类:
由shell 程序自带的命令: 内置命令(builtin)
独立的可执行程序文件,文件名即命令名 :外部命令
shell 程序是独特的程序,负责解析用户提供的命令:
环境变量:
PATH : 从哪些路径中查找用户键入的命令字符串所对应的命令文件
[root@192 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
查看命令类型:
type COMMAND
[root@192 ~]# type type
type 是 shell 内嵌
OPTIONS : 选项
指明命令的运行特性:
选项有两种表现形式:
短选线: -c , -l ,-d
注意:有些命令的选项没有 -;
如果同一命令同时使用多个短选项,多数可以合并; -l -d = -ld;
长选项: --word .例如: --help, --human
长选项不能合并
有些选项可以带参数,此称为选项参数
ARGUMENTS : 参数
命令的作用对象: 命令对什么生效
不同的命令参数,有些命令可以带多个参数,多个参数之间用空白字符分割。
获取命令的帮助:
内部的命令:
help COMMAND #查看命令类型参考上文type命令
外部命令:
(1)命令自带的简要格式的使用帮助
#COMMAND --help
(2)使用手册:manual
路径:/usr/share/man
# man COMMAND
SECTION :
name : 命令的功能行说明
SYNOPTION :语法结构
DESCRIPTION:描述
OPTION:选项
EXAMPLES:使用示例
AUTHR:作者
...
SYNOPSIS:
[]:可选内容
<>: 必给内容
a|b|c:多选一
...:同类内容可出现多个
使用手册:gz 格式 压缩格式的文件,有章节之分:
/usr/share/man
man1. man2 ,man3....
1; 用户命令。 管理员和普通用户命令
2: 系统调用。 一般为开发人员使用
3: C库调用
4: 设备文件及特殊文件
5: 文件格式:(配置文件格式)
6: 游戏使用帮助
7: 杂项
8: 管理工具及守护进程 (主要为管理员)
指定man 章节
~]# man CHAPTER COMMAND
例:[root@192 ~]# man 5 passwd # 查看第五章节下的passwd说明
查看哪些章节下有该命令的说明:
~]# whatis COMMAND
例:[root@192 ~]# whatis passwd
sslpasswd (1ssl) - compute password hashes
passwd (1) - update user's authentication tokens
passwd (5) - password file
PS:其执行过程是查询数据库进行的(新安装软件后可能无法查询)
手动更新数据库:
~]#makewhatis
man命令打开后的操作方法:
翻屏:
空格键: 向文件尾部翻一屏
B : 向文件首部翻一屏
CTRL+D: 向文件尾部翻半屏
CTRL+U: 向文件首部翻半屏
回车键: 向文件尾部翻一行
K : 向文件首部翻一行
G : 跳转至最后一行
#G : 跳转至指定行
1G : 跳转至首行
文本搜索:
/keyword :从文件首部向文件尾部依次查找;不区分大小写
?keywoed :从文件尾部向文件首部依次查找
n:与查找命令方向相反
N:与查找命令方向相反
退出:
q:quit 退出
选项:
-M /PATH/TO/SOMEFILE : 到指定目录下查找命令手册并打开;
~]# man -M /usr/xx/xx
(3)info COMMAND
获取命令的在线文档:
(4)很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
REDAME: 程序的相关信息
INSTALL: 安装帮助
CHANGELOG: 版本迭代时的改动信息:
(5)主流发行版本官方文档
http://www.redhat.com/doc
(6)程序官方的文档:
官方站点上的“Document”
(7) 搜索引擎
常用命令:
pwd: printing working directory
显示工作目录
cd:change directory
cd [/PATH/TO/SOMEDIR]
cd: 切换回家目录;
注意:bash中, ~表示家目录;
cd ~:切换回自己的家目录
cd ~USERNAME:切换至指定用户的家目录;
cd -:在上一次所在目录与当前目录之间来回切换;
相关的环境变量
$PWD:当前工作目录
$OLDPWD:上一次的工作目录
.
..
ls: list, 列出指定目录下的内容
ls [OPTION]... [FILE]...
-a: 显示所有文件,包括隐藏文件;
-A:显示除.和..之外的所有文件;
-l: --long, 长格式列表,即显示文件的详细属性信息;
-rw-r--r--. 1 root root 8957 10月 14 19:34 boot.log
-:文件类型,-, d, b, c, l, s, p
rw-r--r--
rw-:文件属主的权限;
r--:文件属组的权限;
r--:其它用户(非属主、属组)的权限;
1:数字表示文件被硬链接的次数;
root:文件的属主;
root:文件的属组;
8957:数字表示文件的大小,单位是字节;
10月 14 19:34 :文件最近一次被修改的时间;
boot.log:文件名
-h, --human-readable:对文件大小单位换算;换算后结果可能会非精确值;
-d:查看目录自身而非其内部的文件列表;
-r: reverse, 逆序显示;
-R: recursive,递归显示;
cat:concatenate
文件文本查看工具;
cat /etc/fstab
cat /etc/passwd
cat [OPTION]... [FILE]...
-n:给显示的文本行编号;
-E: 显示行结束符$;
tac:
文件文本查看工具;
tac /etc/fstab
tac /etc/passwd
tac [OPTION]... [FILE]...
-n:给显示的文本行编号;
-E: 显示行结束符$;
file:查看文件内容类型;
file [FILE]...
echo:回显
echo [SHORT-OPTION]... [STRING]...
-n: 不进行换行;
-e:让转义符生效;
\n:换行
\t:制表符
STRING可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换;
~]# echo '$SHELL'
双引号:弱引用,变量引用会被替换;
~]# echo "$SHELL"
注意:变量引用的正规符号
${name}
关机或重启命令:shutdown
shutdown [OPTIONS...] [TIME] [WALL...]
OPTIONS:
-h: halt
-r:reboot
-c:cancel
data : #查询或设置系统时钟
SYNOPSIS:date [OPTION]... [+FORMAT]
例:[root@192 ~]# date 022001011991.01
1991年 02月 20日 星期三 01:01:01 CST
#FORMAT:格式符
%F 完整日期格式,等价于 %Y-%m-%d
%T 时间,等于%H:%M:%S
%Y 年份
%m 日期-月
%d 日期-日
%H 时间=小时
%M 时间-分
%S 秒
%s: 从1970年1月1号(unix元年)0点0分0秒到命令执行那一刻经过的秒数;
...
设定日期时间:date [MMDDhhmm[[CC]YY][.ss]]
月-天-小时-分-年.秒
hwclock: query or set the hardware clock (RTC) #查询或设置硬件时钟
SYNOPSIS: hwclock [function] [option...]
例:[root@192 ~]# date
1991年 02月 20日 星期三 05:02:12 CST
[root@192 ~]# hwclock -s #以硬件时间为准,将系统时间调整与硬件时间相同
[root@192 ~]# date
2016年 12月 28日 星期三 01:12:29 CST
#显示或设定硬件时钟
-s, --hctosys:以硬件为准,把系统调整为与硬件时间相同;
-w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同;