本周作业内容:
1、描述计算机的组成及其功能。
运算器、控制器、存储器、输入设备、输出设备
CPU
bus:总线
memory: 编址存储设备
read ahead
IO: 与外部部件交互
磁盘:
网卡:
2、按系列罗列Linux的发行版,并描述不同发行版之间的联系与区别。
Linux的发行版:
slackware:
suse
opensuse
debian:
ubuntu
mint
redhat:
rhel: redhat enterprise linux
每18个月发行一个新版本
CentOS:兼容rhel的格式
fedora:每6个月发行一个新版本
ArchLinux
Gentoo
LFS: Linux From scratch
Android: kernel+busybox+java虚拟机
3、描述Linux的哲学思想,并按照自己的理解对其进行解释性描述。
1、一切皆文件;
把几乎所有资源,包括硬件设备都组织为文件格式;
2、由众多单一目的小程序组成;一个程序只实现一个功能,而且要做好;
组合小程序完成复杂任务;
3、尽量避免跟用户交互;
目标:实现脚本编程,以自动完成某些功能;
4、使用纯文本文件保存配置信息;
目标:一款使用的文本编程器即能完成系统配置工作;
4、说明Linux系统上命令的使用格式;详细介绍ifconfig、echo、tty、startx、export、pwd、history、shutdown、poweroff、reboot、hwclock、date命令的使用,并配合相应的示例来阐述。
ifconfig (显示或者配置网络设备)
[网络设备] 网络设备的名称。
down 关闭指定的网络设备。
up 启动指定的网络设备。
-arp 打开或关闭指定接口上使用的ARP协议。前面加上一个负号用于关闭该选项。
-allmuti 关闭或启动指定接口的无区别模式。前面加上一个负号用于关闭该选项。
-promisc 关闭或启动指定网络设备的promiscuous模式。前面加上一个负号用于关闭该选项。
add<地址> 设置网络设备IPv6的IP地址。
del<地址> 删除网络设备IPv6的IP地址。
media<网络媒介类型> 设置网络设备的媒介类型。
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
mtu<字节> 设置网络设备的MTU。
netmask<子网掩码> 设置网络设备的子网掩码。
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
实例:
//显示网络设备
$ ifconfigtty 显示终端机连接标准输入设备的文件名称
tty [-s][--help][--version]
-s或--silent或--quiet 不显示任何信息,只回传状态代码。
--help 在线帮助。
--version 显示版本信息。
实例:
$ tty
/dev/pts/4
startx 启动X Window的服务
实例:
startx 切换到图像界面
export
export[-fnp][变量名称]=[变量设置值]
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
实例:
export -p //列出当前的环境变量值
export MYENV //定义环境变量
export MYENV=7 //定义环境变量并赋值
history 显示历史指令记录
history [-raw] histfiles
n :数字,要列出最近的 n 笔命令列表
-c :将目前的shell中的所有 history 内容全部消除
-a :将目前新增的history 指令新增入 histfiles 中,若没有加 histfiles,则预设写入 ~/.bash_history
-r :将 histfiles 的内容读到目前这个 shell 的 history 记忆中
-w :将目前的 history 记忆内容写入 histfiles。
实例:
history 10 只列出最近10条记录
history -c 立即清空history当前所有历史命令的记录
date(时间,日期)
date [OPTION]... [+FORMAT]:显示
FORMAT:格式符号
%D
%F
%T
实例:
$ date +%D
08/07/16
$ date +%F
2016-08-07
$ date +%H
20
$ date +%T
20:13:39
$ date "+%F %T"
2016-08-07 20:14:16
date [MMDDhhmm[[CC]YY][.ss]]:设置
MM:月
DD:几号
hh:小时
mm:分钟
YY:两位年份
CCYY:四位年份
.ss:秒钟
实例:
date 0805110916.32
2016年 08月 05日 星期五 11:09:32 CST
hwclock:显示硬件时钟
-s:--hctosys 将系统时钟调整为与的硬件时钟一致
-w:--systohc 将硬件时钟调整为与的系统时钟一致。
pwd 显示当前目录
实例:
$ pwd
/home/centos
shutdown
shutdown [-t seconds] [-rkhncfF] time [message] 关机
参数 :
-t seconds : 设定在几秒钟之后进行关机程序
-k : 并不会真的关机,只是将警告讯息传送给所有使用者
-r : 关机后重新开机
-h : 关机后停机
-n : 不采用正常程序来关机,用强迫的方式杀掉所有执行中的程序后自行关机
-a : 取消目前已经进行中的关机动作
-f : 关机时,不做 fcsk 动作(检查 Linux 档系统)
-F : 关机时,强迫进行 fsck 动作
time : 设定关机的时间
message : 传送给所有使用者的警告讯息
poweroff 关机
poweroff是halt额软链接而已
-n : 在关机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) - f : 强迫关机,不呼叫 shutdown 这个指令
-i : 在关机之前先把所有网络相关的装置先停止
-p : 当关机的时候,顺便做关闭电源(poweroff)的动作
reboot 重启
-n : 在重开机前不做将记忆体资料写回硬盘的动作
-w : 并不会真的重开机,只是把记录写到 /var/log/wtmp 档案里
-d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d)
-f : 强迫重开机 ,不呼叫 shutdown 这个指令
-i : 在重开机之前先把所有网络相关的装置先停止
5、如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的。
内部命令帮助:
# help COMMAND
hash命令:
shell搜寻到的外部命令的路径结果会缓存至kv(key-value)存储中;
history命令:
作用是什么?相关的环境变量是什么?有用的选项?
管理命令历史;
登录shell时,会读取命令历史文件中记录下的命令:~/.bash_history
登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”至命令历史文件中;
history:
-a: 追加本次会话新执行的命令历史列表至历史文件中;
-d: 删除历史中指定的命令;
-c: 清空命令历史;
快捷操作:
!#: 调用历史中第#条命令;
!string:调用历史中最近一个以string开头的命令;
!!: 上一条命令
外部命令帮助获取:
(2) man COMMAND
手册页:/usr/share/man
man1 ... man8
man1: 用户命令
man2: 系统调用
man3: C库调用
man4: 设备文件及特殊文件
man5: 配置文件格式
man6: 游戏
man7: 杂项
man8: 管理类的命令
注意:有些关键在不止一个章节中存在帮助手册;
要查看指定章节中的手册:man # COMMAND
man命令的配置文件:/etc/man.config
MANPATH /PATH/TO/SOMEWHERE: 指明新的手册文件搜索位置
# man -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页并显示之;
帮助手册中的段落说明:
NAME
SYNOPSIS
DESCRIPTION
OPTIONS
EXAMPLES
AUTHOR
REPORTING BUGS
SEE ALSO
SYNOPSIS:
[]:可选内容
<>: 必选内容
a|b:二选一
...: 同一内容可出现多次
man命令的操作方法:
Space, ^V, ^f, ^F: 向文件尾翻屏;
b, ^B: 向文件首部翻屏;
d, ^D: 向文件尾部翻半屏;
u, ^U: 向文件首部翻半屏;
RETURN, ^N, e, ^E or j or ^J: 向文件尾部翻一行;
y or ^Y or ^P or k or ^K:向文件首部翻一行;
q: 退出;
#:跳转至第#行;
1G: 回到文件首部
G:翻至文件尾部
6、请罗列Linux发行版的基础目录名称命名法则及功用规定
/boot:引导文件存放目录,内核文件(vnlinuz),引导加载器(bootloader,grub)都存放此目录;
/bin:供所有yoghurt使用的基本命令;不能独立分区,os启动即会用的程序;
/sbin:管理类的基本命令;不能独立分区,os启动即会用的程序;
/lib:基本共享库文件,以及内核模块文件(/lib/modules);
/lib64:专用X86_64系统上的辅助共享库文件存放位置;
/etc:配置文件目录
/home:家目录
/root:管理员的家目录
/media:便携式移动设备挂载点
/mnt:临时文件系统挂载点
/dev:设备文件及特殊文件存储位置
b:block device 随机访问
c:character device 线性访问
/opt:第三方程序
/srv:系统上运行的服务用到的数据;
/tmp:临时文件
/usr:universal shared, read-only data;
bin:保证系统拥有完整功能而提供的应用程序;
sbin:
lib:
lib64:
include:C程序的头文件(header )
share:结构化独立的数据,例如doc,man等;
local:第三方应用程序安装位置;
bin, sbin, lib, lib64, etc, share
/var:可变文件
cache:应用程序缓存数据目录;
lib:可变状态信息
local:第三方可变数据
lock:锁文件
log:日志文件
opt:专用于为/opt下的应用程序存储可变数据
run:与运行程序相关的数据;存放进程的pid文件
spool:程序的缓冲池
tmp:系统重启过程的临时文件
mail:邮箱
/proc:用于输出内核与进程信息相关的虚拟文件系统
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;
/selinux:linux安全增强机制
命名规范
1、Linux 系统区分英文字符的大小写。命名目录和命名文件的规则是相同的。
2、除非有特别的原因,否则用户创建的文件和目录名要使用小写字符。大多数的 Linux 命令也使用小写字符。
3、Linux 系统下的文件名长度最多可到256个字符。
通常情况下,文件名的字符包括:字母、数字、"."(点)、"_"(下划线)和"-"(连字符)。
4、不建议使用含有特殊意义的字符
Linux 允许在文件名中使用除上述符号之外的其它符号, 但并不建议这样做。 有些转意字符 (即该字符被系统借用,表示某种特殊含义)在Linux 的 shell 中有特殊的含义。这样的转意字符有:"?"(问号),"*"(星号), " "(空格), "$"(货币符), "&", 扩号等等。在文件名中应尽量避免使用这些字符。
文件名中可以有" "(空格),但建议用户用"_"(下划线)来替代。
"/" 既可代表目录树的根也可作为路径名中的分隔符,因此"/"不能出现在文件名中。
"." 和 ".." 分别用来表示"当前目录"和"父目录", 因此它们也不能作为文件名。
在Linux下可以使用长文件名和目录名,可以给它们取任何名字,但是必须遵守以下规则:
1、除了/外,所有的字符都可以;
2、有些字符最好不用,如空格符,制表符,退格符和字符:? @ # $&()\|; ‘’“”<>等;
3、避免使用+ -或.作为普通文件名的第一个字符(在Linux下以.开头的文件是属于隐藏文件);
4、在Linux下文件名大小写敏感。