概要
计算机与操作系统、linux发行版及他们之间联系与区别、Linux的哲学思想、linux系统上命令使用格式及基础命令介绍、linux命令帮助说明、FHS
一、计算机与操作系统
什么是计算机?
电子计算机(computer),亦称电脑,是一种利用电子学原理,根据一系列指令对数据进行处理的工具。
电子计算机被人形象的称之为电脑。现代电子计算机之父”约翰-冯-诺依曼(John von Neumann,1903~1957)。尽管计算机技术自20世纪40年代第一部电子通用计算机诞生以来以来有了令人目眩的飞速发展,但是今天计算机仍然基本上采用的是存储程序结构,即冯·诺伊曼结构,这个结构实现了实用化的通用计算机。
计算机系统组成
硬件
cpu:中央处理单元; ALU:算术/逻辑单元;PC:程序计数器;USB:通用串行总线
控制器、运算器、主存储器、输入设备、输出设备 构成了计算机硬件系统五大核心部件
-
处理器(cpu):
中央处理单元(CPU),简称处理器,是解释(执行)存储在主存中的指令的引擎。处理器的核心是一个字长的存储设备(或寄存器),称为程序计数器(PC)。
它包含
-
运算器:负责计算机的算术运算和逻辑运算,而运算的最终结果和中间结果要送入内存中保存;
-
控制器:控制计算机各部分协调工作;
-
寄存器(Register):寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址;
-
缓存:指访问速度比一般随机存取存储器(RAM)快的一种RAM,L1,L2,L3等三级。
-
主存(主存储器):
-
主存是一个临时存储设备,在处理器执行程序时,用来存放程序和程序处理的数据。物理层面:动态随机存取存储器(DRAM)芯片组成。逻辑层面:存储器是一个线性的字节数组,每个字节都有唯一的地址(数组索引),地址从零开始。
-
I/O设备:
-
输入/输出设备是系统与外部时间联系的通道。每个I/O设备都通过一个控制器或适配器与I/O总线相连,控制器与适配器之间的区别在于他们的封装方式。
总线:贯穿整个系统一个电子管道,称作总线,它携带信息字节并负责在各个部件间传递。通常总线被设计为传送特定字长的字节快,也就是字,字中的字节数(即字长)是一个基本的系统参数,大多数机器字长位4个字节(32位),8个字节(64位)。
软件
什么是操作系统?
操作系统(operating system,缩写:OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出装置、操作网络与管理文件系统等基本事务。操作系统也提供一个让使用者与系统互动的操作界面。
简单来说完整的os基本结构:
Kernel+Application
-
1.把硬件虚拟,完成监控,把cpu按时序复用,把内存分片复用
-
2.在程序角度,它认为自己独占cpu和内存,认为只有监控程序和自己
-
3.运行中的程序,放到电脑上不动,叫程序文件
-
狭义上的OS: kernel
我们可以把操作系统看成是应用程序与底层硬件之间插入的一层软件,所有应用程序对硬件的操作尝试都必须通过操作系统。
操作系统的2个基本功能:
-
防止硬件被失控的应用程序滥用。
-
向应用程序提供简单一致的机制来控制复杂的低级硬件设备
用户可以通过操作系统的用户界面,输入命令。操作系统则对命令进行解释,驱动硬件设备,实现用户要求。以现代标准而言,一个标准PC的操作系统应该提供以下的功能:
-
进程管理(Processing management)
-
内存管理(Memory management)
-
文件系统(File system)
-
网络通信(Networking)
-
安全机制(Security)
-
用户界面(User interface)
-
驱动程序(Device drivers)
二、linux基础–发行版介绍
linux 发行版(Linux distribution,也被叫做GNU/Linux 发行版),为一般用户预先集成好的Linux操作系统及各种应用软件。一般用户不需要重新编译,在直接安装之后,只需要小幅度更改设置就可以使用,通常以软件包管理系统来进行应用软件的管理。
发行版分类(数百种之多):
-
商业发行版
-
Fedora(Red Hat) Ubuntu(Canonical公司) openSUSE(Novell)
-
社区发行版
-
Debian : ubantu是基于Debian发行版和GNOME桌面环境,与Debian的不同在于它每6个月会发布一个新版本
-
gentoo
-
其他
-
Slackware :Slackware走了一条与其他的发行版本(Red Hat、Debian、Gentoo、SuSE、Mandriva、Ubuntu等)不同的道路,它力图成为“UNIX风格”的Linux发行版
主流发行版之间的联系与区别:
Debian:主流发行版之一唯一一个没有商业公司支持的,技术要求高。
-
Ubuntu:基于debian的二次发行版
-
mint:是一份基于Debian和Ubuntu的Linux发行版。其目标是提供一种更完整的即刻可用体验,这包括提供浏览器插件、多媒体编解码器、对DVD播放的支持、Java等其他组件,界面华丽。
-
Knopix:基于debian的二次发行版,以自由软体Linux的Debian套件为主干,不必安装,免用硬碟,直接在光碟上执行完整的Linux作业系统,它既可以用来当桌上工作站用,也可以用来当网路伺服主机
Slackware 主流发行版
-
S.u.S.E 拥有界面友好的安装过程,还有图形管理工具,可方便地访问Windows磁盘,对于终端用户和管理员来说使用它同样方便,这使它成为了一个强大的服务器平台;欧洲主流
-
OpenSUSE: 基于s.u.S.E衍生版,界面华丽著称。
RedHat 主流发行版
-
Fedora core:Fedora是基于RHEL,CentOS,Scientific Linux, 和Oracle Linux的社区版本。相比RHEL,Fedora打包了显著的更多的软件包-一般增加更多新功能特性的软件,一般6个月跟新一次,喜欢尝鲜的可尝试。
-
RHEL:Red Hat Enterprise Linux(RHEL)是一个由 Red Hat 开发的商业市场导向的 Linux 发行版,只提供源码包,技术支持的维护费用;
-
CentOS:Red Hat Enterprise Linux依照开放源代码规定发布的源代码所编译而成;可以认为centos是RHEL的山寨版;
Gentoo:需了解的发行版
-
是Linux世界最年轻的发行版本,正因为年轻,所以能吸取在她之前的所有发行版本的优点。Gentoo最初由Daniel Robbins(FreeBSD的开发者之一)创建,首个稳定版本发布于2002年。由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统 ——Portage包管理系统。
Arch Linux: 需了解的发行版
-
是起源于加拿大的一份致力于使用简单、系统轻量、软件更新速度快的GNU/Linux发行版。粉丝也很多,新贵;
centos与linux之间的关系:
centos是linux的发行版之一,linux其实完整意义叫(GUN/LINUX),他由linux内核和GUN组织的各种开源软件联合起来构成一个庞大完整的操作系统,官方提供的都是源码,所以需要第三方组织代为提供成熟版本。明白他们的关系了吧!!
注:以上都是比较著名的版本,不著名有数百种至多。有兴趣的童鞋可以查看:linuxtimeline< http://futurist.se/gldt/2012/10/29/gnulinux-distribution-timeline-12-10/>
三、linux哲学思想
官方思想:
1、一切皆文件 文件是就是存储于磁盘上的一段流式数据(字节序列)
-
硬件设备也被描述成文件,包括键盘、显示器、硬盘、网络等,所有设备都抽象成文件提供统一接口给用户
2、由众多功能单一的程序组成: 一个程序只做一件事,并且做好;
-
目的,一个程序只做一件事,要做好,组合小程序,完成其他功能;
3、尽量避免与用户交互,完成自动化交互。
4、配置文件保存为文本文件
注:
所有设备都抽象成文件提供统一接口给用户,文件就是一段二进制代码流;“一切皆是文件”是 Unix/Linux 的基本哲学之一。不仅普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。
系统为磁盘上的文本与图像、鼠标与键盘等输入设备及网络交互等 I/O 操作设计了一组通用 API,使他们被处理时均可统一使用字节流方式。换言之,UNIX 系统中除进程之外的一切皆是文件,而 Linux 保持了这一特性。
为了便于文件的管理,Linux 还引入了目录(有时亦被称为文件夹)这一概念。目录使文件可被分类管理,且目录的引入使 Linux 的文件系统形成一个层级结构的目录树。下图示的是普通 Linux 系统的顶层目录结构,其中 /dev 是存放了设备相关文件的目录。
Linux 系统的顶层目录结构
/ 根目录 ├── bin 所有用户可用的基础命令程序文件 ├── sbin 供系统管理使用的工具程序; ├── boot 引导加载器必须用到的各种静态文件:kernel,initramfs(initrd),grub; ├── dev 存放设备文件 ├── etc 系统程序的配置文件,只能为静态的,不能为二进制程序; ├── home 普通的用户家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名 同名的子录,/home/USERNAM ├── lib 为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模 ├── lost+found 文件系统恢复时的恢复文件 ├── media 可卸载存储介质挂载点 ├── mnt 文件系统临时挂载点 ├── opt 附加的应用程序包,第三方应用程序;可选路径; ├── proc 系统内存的映射目录,提供内核与进程信息 ├── root root 用户主目录 ├── sbin 存放系统二进制文件 ├── srv 存放服务相关数据 ├── sys sys 虚拟文件系统挂载点 ├── tmp 存放临时文件,可供所有用户执行写入操作,有特殊权限; ├── usr 让系统管理员安装本地应用程序;也通常用于安装第三方程序 └── var 存放邮件、系统日志等变化文件
设备类型:
-
字符设备:(线性设备)存取的数据是以字符为单位的 显示器 键盘 线性设备:有时序的,键入的是什么,就显示是什么;
-
块设备:(随机设备)把所有字符设备打包 硬盘 把硬盘划分成固定大小的块 随机设备:随机访问;
文件类型:
~]# ls -l /var/ drwxr-xr-x. 2 root root 4096 Jun 6 22:07 account -rw-r--r-- 1 root root 19 Sep 29 09:45 test.txt crw-rw---- 1 vcsa tty 7, 134 Nov 28 19:35 vcsa6 brw-rw---- 1 root disk 1, 3 Nov 29 2016 ram3 lrwxrwxrwx 1 root root 4 Nov 28 19:35 root -> sda3
-:常规文件;即f;
d:directory,目录文件
b:block device,块设备文件,支持一“block”为单位进程随机访问
c:character device,字符设备文件,支持以“character”为单位进行线性访问
l:symbolic link 符号链接文件,快捷方式;
p:pipe,命名管道;
s:socket,套接字文件,2个进程通信时候套接;
四、linux系统上命令的使用格式
命令的语法通用格式
~]# COMMAND OPTIONS ARGUMENTS
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
OPTIONS:指定命令的运行特性;
选项有两种表现形式:
短选项:-C, 例如-l, -d 注意:有些命令的选项没有-; 如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld 长选项:--word, 例如--help, --human-readable 注意:长选项不能合并; 注意:有些选项可以带参数,此称为选项参数;
ARGUMENTS:
命令的作用对象;命令对什么生效;
注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
~]# ls -ld /var /etc
命令分为两类: 外部命令:独立的可执行程序文件,文件名即命令名,shell自身是外部命令 内置命令(builtin):由shell程序的自带的命令
bash:包含很多自带的命令
~]# type bash bash is /bin/bash
type COMMAND:查看命令类型 内部:builtion 外部:显示为命令文件路径;
~]# type mkdir mkdir is /bin/mkdir ~]# type cd cd is a shell builtin
注意:命令可以有别名;别名可以与原名相同,此时原名被隐藏;此时如果要运行原命令,则使用\CONMMAND
~]# type mv mv is aliased to `mv -i' ~]# alias NAME=”COMMAND” 定义别名 ~]# unalias NAME 撤销别名 注意:别名定义只对当前shell进程有效;对其它shell无效;有时间限定:shell进程终止就失效了,有区域限定:随进程的终止而终止 ~]# alias=cls # unalias NAME 撤销别名
五、命令的使用帮助
获取命令的使用帮助:
内部命令:
help COMMAND
外部命令:
1) 命令自带简要格式的使用帮助 # COMMAND --help (2) 使用手册:manual 任何可被查看的手册必须确保系统有这个手册 位置:/usr/share/man 一般默认位置 # man COMMAND man手册的组成部分: NAME:功能性说明 SYNOPSIS:语法格式 DESCRIPTION:描述 OPTIONS:选项 EXAMPLES:使用示例 AUTHOR: 作者 BUGS: 报告程序bug的方式 SEE ALSO: 参考 ... SYNOPSIS: []:可选内容; <>:必须提供的内容; a|b|c:多选一; ...:同类内容可出现多个; 使用手册:压缩格式的文件,有章节之分; man1]# ls :.1.gz mrd.1.gz [.1.gz mren.1.gz a2p.1.gz msgattrib.1.gz ab.1.gz msgcat.1.gz abrt-action-analyze-backtrace.1.gz msgcmp.1.gz abrt-action-analyze-c.1.gz msgcomm.1.gz man1,man2,。。。 1:用户命令; 2:系统调用; 3:C库调用; 4:设备文件及特殊文件; 5:文件格式;(配置文件格式) 6:游戏使用帮助; 7:杂项; 8:管理工具及守护进行 man命令打开手册以后的操作方法: 翻屏: 空格键:向文件尾翻一屏; b: 向文件首部翻一屏; Ctrl+d:向文件尾部翻半屏; Ctrl+u:向文件首部翻半屏; 回车键:向文件尾部翻一行; k: 向文件首部翻一行; G:跳转至最后一行; #G: 跳转至指定行; 1G:跳转至文件首部; 文本搜索: /keyword:从文件首部向文件尾部依次查找;不区分字符大小写; ?keyword:从文件尾部向文件首部依次查找; n: 与查找命令方向相同; N: 与查找命令方向相反; man的选项: -M /PATH/TO/SOMEDIR:到指定目录下查找命令手册并打开之;
ifconfig命令:configure a network interface配置网络接口命令
一个用来查看、配置、启用或禁用网络接口的工具
选项: up 启动指定网络设备/网卡 down 关闭指定网络设备/网卡 -arp 设置指定网卡是否支持ARP协议 -promisc 设置是否支持网卡的promiscuous模式,如果选择此参数,网卡将接收网络中发给它所有的数据包 -allmulti 设置是否支持多播模式,如果选择此参数,网卡将接收网络中所有的多播数据包 -a 显示全部接口信息 -s 显示摘要信息(类似于 netstat -i) add 给指定网卡配置IPv6地址 del 删除指定网卡的IPv6地址 <硬件地址> 配置网卡最大的传输单元 mtu<字节数> 设置网卡的最大传输单元 (bytes) netmask<子网掩码> 设置网卡的子网掩码 tunel 建立隧道 dstaddr 设定一个远端地址,建立点对点通信 -broadcast<地址> 为指定网卡设置广播协议 -pointtopoint<地址> 为网卡设置点对点通讯协议 multicast 为网卡设置组播标志 为网卡设置IPv4地址 txqueuelen<长度> 为网卡设置传输列队的长度 ----------------------------------------------------------------------------- ~]# ifconfig -a eth0 Link encap:Ethernet HWaddr 00:0C:29:41:75:27 inet addr:192.168.110.130 Bcast:192.168.110.255 Mask:255.255.255.0 inet6 addr: fe80::20c:29ff:fe41:7527/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:2138 errors:0 dropped:0 overruns:0 frame:0 TX packets:1445 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 .....
echo命令:display a line of text 回显 显示一行文本
echo [SHORT-OPTION]… [STRING]…
直接跟上字符串则显示: ~]# echo "hello " hello -n 选项:不自动换行操作 -e:让转义符生效; \n:换行 \t:制表符 ~]# echo -n "hello " hello [root@mytest2 ~]# ~]# echo -e "hello\nman" hello man ~]# echo -e "hello\bman" hellman ~]# echo -e "hello\tman" hello man ~]# echo -e "\033[31mhello\033[0m tman" hello tma 颜色控制
注意:STRING可以使用引号,单引号和双引号均可用;
单引号:强引用,变量引用不执行替换;
~]# echo '$SHELL' $SHELL
双引号:弱引用,变量引用会被替换;
~]# echo "$SHELL" /bin/bash
tty命令 查看终端设备
终端分类:
物理终端:/dev/console
虚拟终端:/dev/tty# [1,6]
串行终端:/dev/ttyS#
伪终端:/dev/pts/#
~]# tty /dev/pts/1 伪终端
startx命令 启动图形界面
在某一虚拟终端接口运行命令:startx &
export命令 变量赋值
~]# export name=1 ~]# echo $name 1
pwd命令 打印工作目录
~]# pwd/root
history命令 命令历史
命令历史:shell进程会在其会话中保存此前用户提交执行过的命令
定制history的功能,可通过环境变量实现;
HISTSIZE:shell进程可保留的命令历史的条数;
HISTFILE:持久保存命令历史的文件;
~]# ls -a . anaconda-ks.cfg .bash_logout .bashrc install.log .tcshrc .viminfo.. .bash_history .bash_profile .cshrc install.log.syslog test.txt# .bash_history 登出的时候才会保存在文件中,登陆时,命令历史会首先从该文件中加载到内存中,使用history命令是内存中的历史,而文件是不会保留刚刚执行的命令; HISTFILESIZE:定义这个文件最多保留多少条,命令历史文件的大小;
命令用法: history [-c] [-d 偏移量] [n] 或 history -anrw [文件名] 或 history -ps 参数 [参数...] -c: 清空命令历史; -d offset:#删除指定命令历史 -r: #从文件读取命令历史至历史列表中; -w:#把历史列表中的命令追加至历史文件中; history #:显示最近的#条命令;
shutdown 关机 以一种安全的方式关闭系统。所有登陆用户都可以看到关机信息提示
shutdown [OPTIONS...] [TIME] [WALL...] OPTIONS: -h: halt 关机 -r:reboot 重启 -c:cancel 取消运行中的 shutdown 进程 TIME: now 现在 hh:mm 绝对时间,几点几分 +m 几分钟之后 +0 相当于now WALL send a message to everybody’s terminal 向所有终端发送广播信息;shutdown会自己发送WALL 信息; -------------------------- ~]# shutdown –h now #关机 ~]# shutdown –h 23:00 #晚上11点关机 ~]# shutdown –r now #重启 ~]# shutdown –r +30 'reboot now' #30分钟后重启,并且提示reboot now
poweroff命令命令用来关闭计算机操作系统并且切断系统电源。
常用参数: -n:关闭操作系统时不执行sync操作; -w:不真正关闭操作系统,仅在日志文件“/var/log/wtmp”中; -d:关闭操作系统时,不将操作写入日志文件“/var/log/wtmp”中添加相应的记录; -f:强制关闭操作系统; -i:关闭操作系统之前关闭所有的网络接口; -h:关闭操作系统之前将系统中所有的硬件设置为备用模式。
date命令 系统时钟 显示日期时间
date [OPTION]... [+FORMAT] FORMAT:格式符 %F %T 显示时间,24小时制(hh:mm:ss) %Y 显示年 %m 月份(01~12) %d 一个月的第几天 %H 小时 %M 分钟 %S 秒 %s: 从1970年1月1号(unix元年) --------------- ~]# date +%F 2016-11-29 ~]# date +%T 05:04:49 ~]# date +%Y-%m-%d-%H-%M-%S 2016-11-29-05-22-26 设定日期时间:date [MMDDhhmm[[CC]YY][.ss]] 格式月 日 小时 分钟 年 秒 ~]# date 101008082013.08 Thu Oct 10 08:08:08 CST 2013 ~]# date 120412562016 Sun Dec 4 12:56:00 CST 2016
clock 命令 (hwclock)query and set the hardware clock (RTC) 显示或设定硬件时钟
~]# file /sbin/clock /sbin/clock: symbolic link to `hwclock' 用法: ~]# hwclock Sun 04 Dec 2016 01:05:44 PM CST -0.836339 seconds -s --hctosys :以硬件为准,把系统调整为与硬件时间相同 -w, --systohc:以系统为准,把硬件时间调整为与系统时钟相同; ~]# hwclock -w ~]# date Sun Dec 4 13:07:02 CST 2016
原创文章,作者:让优秀称为一种习惯,如若转载,请注明出处:http://www.178linux.com/61970
评论列表(1条)
总结的很好,有例子有说明,加油