第一章课程笔记
- OS: Operating System,通用目的的软件程序
硬件驱动
进程管理
内存管理
网络管理
安全管理
文件管理
2、OS分类:
服务器OS:RHEL, CentOS,Windows Server,AIX
桌面OS:Windows 10,Windows 7,Mac OS,Fedora
移动设备OS:Andriod,IOS,YunOS
3、开发接口标准
uABI: Application Binary Interface
ABI描述了应用程序与OS之间的底层接口,允许编译好的目标代码在使用兼容ABI
的系统中无需改动就能运行
uAPI:Application Programming Interface
API定义了源代码和库之间的接口,因此同样的源代码可以在支持这个API的任
何系统中编译
uPOSIX: Portable Operating System Interface
IEEE在操作系统上定义的一系列API标准
POSIX兼容的程序可在其它POSIX操作系统编译执行
u运行程序格式:
Windows: EXE, .dll(dynamic link library),.lib
Linux: ELF, .so(shared object), .a
4、用户空间、User space..
用户程序的运行空间。为了安全,它们是隔离的,即使用户的程序崩溃,内核也不受影响
只能执行简单的运算,不能直接调用系统资源,必须通过系统接口( system call),才能
向内核发出指令
内核空间、Kernel space
是 Linux 内核的运行空间
可以执行任意命令,调用系统的一切资源
u 示例:
str = “www.magedu.com” // 用户空间
x = x + 100 // 用户空间
file.write(str) // 切换到内核空间
y = x + 200 // 切换回用户空间
u 第一行和第二行都是简单的赋值运算,在 User space 执行。第三行需要写入文件,就要切换到Kernel space,因为用户不能直接写文件,必须通过内核安排。第四行又是赋值运算,就切换回 User space
- 编程语言(低级、中级、高级)
u低级语言
机器语言:0和1
汇编语言:和机器语言一一对应,与硬件相关的特有代
码、驱动程序开发
u中级语言:C
系统级应用、驱动程序
u高级语言:python,go,java,Objective-C,C#,php
应用级程序开发
- 服务区三大系统:windows、Linux、Unix。
Windows:
uLinux:GNU/Linux
uUnix:1969年Ken Thompson
System: Bell Lab
AIX (IBM)
Solaris (SUN)
HP-UX (HP)
BSD: (BSRG)Berkeley System Distribution
NetBSD
OpenBSD
FreeBSD
- Uinx历史
u1965前后 Multics
贝尔实验室,麻省理工,通用电气发起
u1969 Unix雏形UNICS
Ken Thompson 汇编语言 B语言
u1973 正式命名为Unix
Dennis Ritchie C语言
u1977 BSD
Berkeley Software Distribution 伯克利大学
u1979 System V架构 版权声明
HP-UNIX IBM AIX “不对学生提供源码” 收回版权
u1984年 Minix操作系统
Andrew S. Tanenbaum荷兰阿姆斯特丹自由大学计算机科学系
- 兼容分时系统Multics
为了进一步强化大型主机的功能,让主机的资源可以提供更多的使用者来利用,
在1964年, 由贝尔实验室(Bell)、麻省理工学院(MIT)及奇异公司(GE美国通用
电气公司)共同发起了Multics(多路信息计算系统)的计划, Multics计划的目
的是让大型主机可以同时支持300个以上的终端机连线使用。不过,到了1969
年前后,由于计划进度缓慢,资金也短缺,所以该计划虽然继续在研究,但最
终贝尔实验室还是选择了退出
9、GNU(GNU is Not Unix)
u1984年由Richard Stallman发起并创建
u目标是编写大量兼容于Unix系统的自由软件
u官方网站:http://www.gnu.org
uGPL(GNU General Public License)
u自由软件基金会:Free Software Foundation
u允许用户任意复制、传递、修改及再发布
u基于自由软件修改再次发布的软件,仍需遵守GPL
uLGPL(Lesser General Public License)
uLGPL相对于GPL较为宽松,允许不公开全部源代码
uGNU操作系统:Hurd Hird of Unix-Replacing Daemons
- Linux起源。最早叫做FREAX。
1991年的10月5日,Torvalds在comp.os.minix新闻组上发布消息,
正式向外宣布他自行编写的完全自由免费的内核诞生
(Freeminix-like kernel sources for 386-AT)———FREAX
英文含义是怪诞的、怪物、异想天开
u类Unix的内核,在GPL下发布
u官网:www.kernel.org
uLinux操作系统:
完整的类UNIX操作系统
Linux内核+ GNU工具
如:CentOS,Ubuntu,Android
11、Linux操作系统;完整的unix操作系统。Linux内核+GUN工具。
12、Linux发行版:redhat:CentOS一般微软用的。国内用的的中标麒麟:中标软件。REDHAT红帽公司。
slackware:SUSE Linux Enterprise Server (SLES)
OpenSuse桌面
u debian: ubuntu,mint
u redhat: RHEL: RedHat Enterprise Linux
每18个月发行一个新版本
CentOS:兼容RHEL的格式
中标麒麟:中标软件
Fedora:每6个月发行一个新版本
u ArchLinux:轻量简洁
u Gentoo:极致性能,不提供传统意义的安装程序
u LFS: Linux From scratch 自制Linux
u Android: kernel+busybox(工具集)+java虚拟机
u Linux分支参考网站:http://futurist.se/gldt/
13、REDHAT红帽公司
Marc Ewing早在卡内基梅隆大学读书的时候就戴着他祖父的红色
曲球帽. Marc在Marc Ewing大学常把自己的软件命名为Red Hat
— Red hat 1, Red Hat 2 用来区别他人的软件. 所以当他开始自
己的Linux项目, 自然就会命名为Red Hat Linux。Ewing非常乐于
帮助同学解决计算机问题 “你的朋友可能会说, 去跟我的朋友
Marc交流. 谁是Marc? 他是红帽男孩. ” 所以, 至少在他们最亲密
的朋友当中, 红帽子成为了技术专家的同义词
u 1993年,Bob Young 建立了ACC公司,营销Linux和UNIX的支
持软件和书籍杂志。
u 1995年,Bob Young 收购了Marc Ewing的业务,合并后的ACC
公司成为新的Red Hat软件公司,发布了Red Hat Linux 2.0
- Linux版本:主版本号;次版本号;末版本号;编译版本号;厂商版本。
- Linux发型版本
Linux发行版的名称和版本号是由发行版的维护者决定的
uRedHat Enterprise Linux 7.3
由Red Hat公司发布
uSUSE Linux Enterprise Server 12 SP2
由Novell公司发布
uDebian Linux 9
由Debian维护社区发布
uAndroid 8.0
由Google公司发布
- 红帽发行版本 Red Hat Linux版本
Red Hat Linux 1.0 (Mother’s Day) 1994年11月03日Red Hat Distribution
Red Hat Linux 2.0 1995年09月20日
Red Hat Linux 3.0 (Picasso) 1996年05月01日
Red Hat Linux 4.0 (Colgate) 1996年10月08日
Red Hat Linux 5.0 (Hurricane) 1997年12月01日
Red Hat Linux 6.0 (Hedwig) 1999年04月26日
Red Hat Linux 6.2 (Zoot) Red Hat Linux 6.2E 2000年04月03日
Red Hat Linux 7.0 (Guinness) 2000年03月27日
Red Hat Linux 7.2 (Enigma) Red Hat Enterprise Linux 2 2001年10月22日
Red Hat Linux 8.0 (Psyche) 2002年09月30日
Red Hat Linux 9.0 (Shrike) 2003年03月31日
Red Hat Enterprise Linux 3.0(Taroon) Fedora 1 (Yarrow) 2003年10月22日
Red Hat Enterprise Linux 4.0 2005年02月15日
Red Hat Enterprise Linux 5.0(Tikanga) 2007年03月14日
Red Hat Enterprise Linux 6.0(Santiago) 2010年11月10日
Red Hat Enterprise Linux 7.0(Maipo) 2014年06月10日
17、开源Open Source:二进制编译后的商业的。1,源代码不公开。2.付费。共享:免费,源代码不公开。自由 free。免费的。
18、开源协议:开源许可证。GPl等。MIT许可证最宽松的。
ØGPLv2, GPLv3, LGPL(lesser) :通用公共许可 copyleft
ØApache: apache
ØBSD: bsd
Ø Mozilla
ØApache
Ø MIT
- Linux哲学思想:一切都是一个文件(包括硬件),小型,单一用途的程序。链接程序,共同完成复杂的任务。避免令人迷惑的用户界面。配置数据存储在文本中。
- 获取发行版
CentOS
https://wiki.centos.org/Download
http://mirrors.aliyun.com
http://mirrors.sohu.com
http://mirrors.163.com
21、线编程。
22、主分区:MBR分区,一个硬盘最多四个主分区,对主机必须有,主区可以格式化ntfs、存数据。
23、拓展分区:一块硬盘最多一个拓展分区,可以没有拓展。不可以单独用,要划分为若干个逻辑分区。
24、逻辑分区:可以格式化ntfs,存数据。
25、查看ip地址 ifconfig。
26、虚拟机下载,安装。.vmware.安装centos6.9和centos7.4
虚拟机:用软件(如:vmware,virtualbox等)模拟硬件
使用vmware workstation的条件。
uCPU:默认
u内存:1G以上,推荐2G
u硬盘:一块硬盘,200G
u网卡:桥接或仅主机模式
u光盘:挂载对应版本的ISO文件
27。用户登录,root用户,特殊的管理账户,没有必要时不必登录root,对系统的伤害能力是无限的。
- 普通(非特权)用户;权限有限,造成伤害的能力比较有限。
- 终端terminal
u 设备终端
键盘鼠标显示器
u 物理终端( /dev/console )
控制台console
u 虚拟终端(tty:teletypewriters, /dev/tty# #为[1-6])
tty 可有n个,Ctrl+Alt+F[1-6]
u 图形终端( /dev/tty7 ) startx, xwindows
CentOS 6: Ctrl + Alt + F7
CentOS 7: 在哪个终端启动,即位于哪个虚拟终端
u 串行终端( /dev/ttyS# )
ttyS
u 伪终端( pty:pseudo-tty , /dev/pts/# )
pty, SSH远程连接
u 查看当前的终端设备:#tty
30、交互式接口;
交互式接口:启动终端后,在终端设备附加一个交互式应用程序
uGUI:Graphic User Interface
X protocol, window manager, desktop
Desktop:
GNOME (C, 图形库gtk),
KDE (C++,图形库qt)
XFCE (轻量级桌面)
uCLI:Command Line Interface
shell程序:sh (bourn 史蒂夫·伯恩) csh tcsh ksh (korn) bash (bourn
again shell)GPL zsh
31、shell。shell是liunux系统的用户界面,提供用户与内核进行交互操作的接口,接收输入的命令送到内核中执行。shell也被称为linux的命令编译器。是一种高级程序设计语言。
32、bash shell.目前是linux标准的shell,与sh兼容。centos默认使用。
33、查看系统当前使用的所有shell cat/etc/shells
显示当前shell。echo${shell}
uCentOS默认使用
u显示当前使用的shell
echo ${SHELL}
u显示当前系统使用的所有shell
cat /etc/shells
34命令提示符:#管理员。。$普通用户.
u 命令提示符:prompt
[root@localhost ~]#
# 管理员 $ 普通用户
u 显示提示符格式
[root@localhost ~]#echo $PS1
u 修改提示符格式
PS1=”\[\e[1;5;41;33m\][\u@\h \W]\\$\[\e[0m\]”
\e \033 \u 当前用户
\h 主机名简称 \H 主机名
\w 当前工作目录 \W 当前工作目录基名
\t 24小时时间格式 \T 12小时时间格式
\! 命令历史数 \# 开机后命令历史数
35、修改字体颜色。cat.bash_profile PS1=”\[\e[1;33m\][\u@\h \W]\\$\[\e[0m\]”
36、执行命令。分为外部和内部命令。 查看命令分类type COMMAND
u输入命令后回车
提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给
内核分配资源将其运行起来
u在shell中可执行的命令有两类
内部命令:由shell自带的,而且通过某命令形式提供
help 内部命令列表
enable cmd 启用内部命令
enable –n cmd 禁用内部命令
enable –n 查看所有禁用的内部命令
外部命令:在文件系统路径下有对应的可执行程序文件
查看路径:which -a |–skip-alias ; whereis
u区别指定的命令是内部或外部命令
type COMMAND
37、执行外部命令
uHash缓存表
系统初始hash表为空,当外部命令执行时,默认会从PATH路径下寻找该命
令,找到后会将这条命令的路径记录到hash表中,当再次使用该命令时,shell解
释器首先会查看hash表,存在将执行之,如果不存在,将会去PATH路径下寻找。
利用hash缓存表可大大提高命令的调用速率
uhash常见用法
hash 显示hash缓存
hash –l 显示hash缓存,可作为输入使用
hash –p path name 将命令全路径path起别名为name
hash –t name 打印缓存中name的路径
hash –d name 清除name缓存
hash –r 清除缓存
38、命令别名
u显示当前shell进程所有可用的命令别名
alias
u定义别名NAME,其相当于执行命令VALUE
alias NAME=’VALUE’
u在命令行中定义的别名,仅对当前shell进程有效
u如果想永久有效,要定义在配置文件中
仅对当前用户:~/.bashrc
对所有用户有效:/etc/bashrc
39、命令别名
u编辑配置给出的新配置不会立即生效
ubash进程重新读取配置文件
source /path/to/config_file
. /path/to/config_file
u撤消别名:unalias
unalias [-a] name [name …]
-a 取消所有别名
u如果别名同原命令同名,如果要执行原命令,可使用
\ALIASNAME
“ALIASNAME”
’ALIASNAME’
command ALIASNAME
/path/commmand
40、命令格式
uCOMMAND [OPTIONS…] [ARGUMENTS…]
选项:用于启用或关闭命令的某个或某些功能
短选项:-c 例如:-l, -h
长选项:–word 例如:–all, –human-readable
参数:命令的作用对象,比如文件名,用户名等
u注意:
Ø多个选项以及多参数和命令之间使用空白字符分隔
Ø取消和结束命令执行:Ctrl+c,Ctrl+d
Ø多个命令可以用;符号分开
Ø一个命令可以用\分成多行、
41、取消和结束命令 ctrl+c,,ctrl+d。
42、一个命令可以用\分成多行。多个命令可以用;隔开。
43、生产环境和测试环境。利用命令符改变。
44、nano。文件夹。字符工具
45、外部命令为一个独立的文件。内部命令集成在shell里面。
46、type cd。判断。
47、查找外部命令。echo $PATH.
48、whereis,位置。
49、date、内核时间。clock硬件时间。clock -w。同步系统时间。
50、月日时间年,秒。clock-s。
51、修改centos7网卡名称。gedit/boot/grub2/grub.cfg。
52、ntpdate对方服务器地址。。与服务器同步。
53、vim/etc/ntp/cryto/pw。保证与服务器地址日期同步。start。
54、cal。日历。
55、screen。建立远程协助,一个主机,两个终端。
56、日期和时间
uLinux的两种时钟
系统时钟:由Linux内核通过CPU的工作频率进行的
硬件时钟:主板
u相关命令
date 显示和设置系统时间
date +%s
date -d @1509536033
hwclock,clock: 显示硬件时钟
-s, –hctosys 以硬件时钟为准,校正系统时钟
-w, –systohc 以系统时钟为准,校正硬件时钟
u时区:/etc/localtime
u显示日历:cal –y
- 简单命令使用
简单命令
u关机:halt, poweroff
u重启:reboot
-f: 强制,不调用shutdown
-p: 切断电源
u关机或重启:shutdown
shutdown [OPTION]… TIME [MESSAGE]
-r: reboot
-h: halt
-c:cancel
TIME:无指定,默认相当于 +1
now: 立刻,相当于+0
+m: 相对时间表示法,几分钟之后;例如 +3
hh:mm: 绝对时间表示,指明具体时间
简单命令
u用户登录信息查看命令:
whoami: 显示当前登录有效用户
who: 系统当前所有的登录会话
w: 系统当前所有的登录会话及所做的操作
unano 文本编辑
- 简单命令u screen命令:创建新screen会话screen –S [SESSION]加入screen会话screen –x [SESSION]退出并关闭screen会话exit剥离当前screen会话Ctrl+a,d显示所有已经打开的screen会screen -ls恢复某screen会话screen-r
- 使用screen命令之前必须先安装软件。Rpm -ivh 文件路径
- echo命令使用。echo “$VAR_NAME”变量会替换,弱引用。
uecho命令
u功能:显示字符
u语法:echo [-neE][字符串]
u说明:echo会将输入的字符串送往标准输出。输出的字符串间以空白字
符隔开, 并在最后加上换行号
u选项:
Ø -E (默认)不支持 \ 解释功能
Ø -n 不自动换行
Ø -e 启用 \ 字符的解释功能
u显示变量
echo “$VAR_NAME“ 变量会替换,弱引用
echo ‘$VAR_NAME‘ 变量不会替换,强引用
61、ibase/十进制。obase二进制。
62、u启用命令选项-e,若字符串中出现以下字符,则特别加以处理,而不
会将它当成一般文字输出
\a 发出警告声
\b 退格键
\c 最后不加上换行符号
\n 换行且光标移至行首
\r 回车,即光标移至行首,但不换行
\t 插入tab
\\ 插入\字符
\0nnn 插入nnn(八进制)所代表的ASCII字符
echo -e ‘\033[43;31;5mmagedu\033[0m’
\xHH插入HH(十六进制)所代表的ASCII字
63、命令行扩展、被括起来的集合
u命令行扩展:$( ) 或 “
把一个命令的输出打印给另一个命令的参数
echo “This system’s name is $(hostname) ”
This system’s name is server1.example.com
echo “i am `whoami` ”
i am root
u括号扩展:{ }
打印重复字符串的简化形式
echo file{1,3,5}
file1 file3 file5
rm -f file{1,3,5}
echo {1..10}
echo {a..z}
echo {000..20..2}
- 命令补全 tab。
u命令补全
内部命令:
外部命令:bash根据PATH环境变量定义的路径,自左而右在每个路径搜寻
以给定命令名命名的文件,第一次找到的命令即为要执行的命令
用户给定的字符串只有一条惟一对应的命令,直接补全
否则,再次Tab会给出列表
u路径补全
把用户给出的字符串当做路径开头,并在其指定上级目录下搜索以指定的字符
串开头的文件名
如果惟一:则直接补全
否则:再次Tab给出列表
65、命令行历史
u保存你输入的命令历史。可以用它来重复执行命令
u登录shell时,会读取命令历史文件中记录下的命令~/.bash_history
u登录进shell后新执行的命令只会记录在缓存中;这些命令会用户退出时“追加”
至命令历史文件中
重复前一个命令,有4种方法
Ø 重复前一个命令使用上方向键,并回车执行
Ø 按 !! 并回车执行
Ø 输入 !-1 并回车执行
Ø 按 Ctrl+p 并回车执行
u!:0 执行前一条命令(去除参数)
u!n 执行history命令输出对应序号n的命令
u!-n 执行history历史中倒数第n个命令
使用up(向上)和down(向下)键来上下浏览从前输入的命令
uctrl-r来在命令历史中搜索命令
- (reverse-i-search)`’:
uCtrl+g:从历史搜索模式退出
u要重新调用前一个命令中最后一个参数:
Ø !$ 表示
Ø Esc, .(点击Esc键后松开,然后点击 . 键)
Ø Alt+ .(按住Alt键的同时点击 . 键)
66、命令history
uhistory [-c] [-d offset] [n]
uhistory -anrw [filename]
uhistory -ps arg [arg…]
-c: 清空命令历史
-d offset: 删除历史中指定的第offset个命令
n: 显示最近的n条历史
-a: 追加本次会话新执行的命令历史列表至历史文件
-r: 读历史文件附加到历史列表
-w: 保存历史列表到指定的历史文件
-n: 读历史文件中未读过的行到历史列表
-p: 展开历史参数成多行,但不存在历史列表中
-s: 展开历史参数成一行,附加在历史列表后
- 获得帮助。
获得帮助
u获取帮助的能力决定了技术的能力!
u多层次的帮助
whatis
command –help
man and info
/usr/share/doc/
Red Hat documentation
其它网站和搜索
68、whatis
u显示命令的简短描述
u使用数据库
u刚安装后不可立即使用
umakewhatis | mandb制作数据库
u使用示例:
whatis cal 或 man –f cal
- 查看man help 帮助等。
命令帮助
u内部命令:help COMMAND
man bash
u外部命令:(1) COMMAND –help
COMMAND -h
(2) 使用手册(manual)
man COMMAND
(3) 信息页
info COMMAND
(4) 程序自身的帮助文档
README
INSTALL
ChangeLog
(5) 程序官方文档
官方站点:Documentation
(6) 发行版官方文档
(7) Google
70、–help选项u显示用法总结和参数列表u使用的大多数,但并非所有u示例: date –help
Usage: date [OPTION]… [+FORMAT] or: date [-u|–utc|–universal] [MMDDhhmm[[CC]YY][.ss]][] 表示可选项CAPS或 <> 表示变化的数据… 表示一个列表x |y| z 的意思是“ x 或 y 或 z “-abc的 意思是-a -b –c{ } 表示
71、man命令
u提供命令帮助的文件
u手册页存放在/usr/share/man
u几乎每个命令都有man的“页面”
uman页面分组为不同的“章节”
u统称为Linux手册
uman命令的配置文件:/etc/man.config | man_db.conf
MANPATH /PATH/TO/SOMEWHERE: 指明man文件搜索位置
uman -M /PATH/TO/SOMEWHERE COMMAND: 到指定位置下搜索COMMAND命令的手册页
并显示
u中文man需安装包man-pages-zh-CN
72、man 章节
u1: 用户命令
u2: 系统调用
u3: C库调用
u4: 设备文件及特殊文件
u5: 配置文件格式
u6: 游戏
u7: 杂项
u8: 管理类的命令
u9:Linux 内核API
73、man 帮助段落说明
u 帮助手册中的段落说明:
Ø NAME 名称及简要说明
Ø SYNOPSIS 用法格式说明
- [] 可选内容
- <> 必选内容
- a|b 二选一
- { } 分组
- … 同一内容可出现多次
Ø DESCRIPTION 详细说明
Ø OPTIONS 选项说明
Ø EXAMPLES 示例
Ø FILES 相关文件
Ø AUTHOR 作者
Ø COPYRIGHT 版本信息
Ø REPORTING BUGS bug信息
Ø SEE ALSO 其它帮助参考
man帮助
u 查看man手册页
man [章节] keyword
u 列出所有帮助
man –a keyword
u 搜索man手册
man -k keyword 列出所有匹配的页面
使用 whatis 数据库
u 相当于whatis
man –f keyword
u 打印man帮助文件的路径
man –w [章节] keyword
man命令
uman命令的操作方法:使用less命令实现
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:翻至文件尾部
man搜索
u/KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区
分字符大小写;
n: 下一个
N:上一个
u?KEYWORD:
以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字
符大小写;
n: 跟搜索命令同方向,下一个
N:跟搜索命令反方向,上一个
info
uman常用于命令参考 ,GNU工具info适合通用文档参考。
u没有参数,列出所有的页面
uinfo 页面的结构就像一个网站
u每一页分为“节点”
u链接节点之前 *
uinfo [ 命令 ]
导航info页
u方向键,PgUp,PgDn 导航
uTab键 移动到下一个链接
ud 显示主题目录
uHome 显示主题首部
uEnter进入 选定链接
un/p/u/l 进入下/前/上一层/最后一个链接
us 文字 文本搜索
uq 退出 info
通过本地文档获取帮助
uSystem->help(centos6)
uApplications -> documentation->help(centos7)
提供的官方使用指南和发行注记
u/usr/share/doc目录
Ø多数安装了的软件包的子目录,包括了这些软件的相关原理说明
Ø常见文档:README INSTALL CHANGES
Ø不适合其它地方的文档的位置
配置文件范例
HTML/PDF/PS 格式的文档
授权书详情
通过在线文档获取帮助
u第三方应用官方文档
Øhttp://www.nginx.org
Øhttp://tomcat.apache.org
Øhttp://httpd.apache.org
Øhttp://www.python.org
u通过发行版官方的文档光盘或网站可以获得
Ø安装指南、部署指南、虚拟化指南等
Ø红帽知识库和官方在线文档
http://kbase.redhat.com
http://www.redhat.com/docs
http://access.redhat.com
红帽全球技术支持服务
urhn.redhat.com或者本地卫星服务器/代理服务器
Ø基于网络管理的服务器
ØRHN代理服务器为RHN流量提供缓存
ØRHN卫星服务器提供自主的RHN
uRHN账户
Ø为及其注册和基于网络管理的RHN用户
Ø用于系统自动验证的系统ID
usosreport
收集所有系统上的日志信息的工具,并自动打成压缩包,方便技术支持
人员和红帽全球支持提供分析问题依据
网站和搜索
uhttp://tldp.org
uhttp://www.slideshare.net
uhttp://www.google.com
Openstack filetype:pdf
rhca site:redhat.com/docs
74、touch file。创建文件。echo{1,2,3,}
75、date+%F。
76、touch date
77、history。历史
78、rpm安装软件。
79、ntpdate。同步时间。timedatecal status.
80、whatis帮助、man help.
81、w查看登陆的用户。free-h查看磁盘大小。lsblk查看文件分区。
82、ll /文件软连接。
83、外部命令–help。
84、内部命令help–
85、man命令,系统命令。
86、 man -a所有的。whatis数据库的内容。man[章节号]关键字。
87、info帮助链接形式。
88、help man info.查看帮助的。
第二章课程笔记。
1、文件系统与目录
2、文件系统
u 文件和目录被组织成一个单根倒置树结构
u 文件系统从根目录下开始,用“/”表示
u 根文件系统(rootfs):root filesystem
u 文件名称区分大小写
u 以.开头的文件为隐藏文件
u 路径分隔的 /
u 文件有两类数据:
元数据:metadata
数据:data
u 文件系统分层结构:LSB Linux Standard Base
u FHS: (Filesystem Hierarchy Standard)
3、文件名规则
u文件名最长255个字节
u包括路径在内文件名称最长4095个字节
u蓝色–>目录 绿色–>可执行文件 红色–>压缩文件 浅蓝色–>链接文
件 灰色–>其他文件
u除了斜杠和NUL,所有字符都有效.但使用特殊字符的目录名和文件不推荐使用,
有些字符需要用引号来引用它们。
u标准Linux文件系统(如ext4),文件名称大小写敏感。例如:
MAIL, Mail, mail, mAiL
4、 文件系统结构
u/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,
grub)都存放于此目录
u/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的
程序
u/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序
u/lib:启动时程序依赖的基本共享库文件以及内核模块文件(/lib/modules)
u/lib64:专用于x86_64系统上的辅助共享库文件存放位置
u/etc:配置文件目录
u/home/USERNAME:普通用户家目录
u/root:管理员的家目录
u/media:便携式移动设备挂载点
- 文件系统结构
u/mnt:临时文件系统挂载点
u/dev:设备文件及特殊文件存储位置
b: block device,随机访问
c: character device,线性访问
u/opt:第三方应用程序的安装位置
u/srv:系统上运行的服务用到的数据
u/tmp:临时文件存储位置
6、文件系统结构
/usr: universal shared, read-only data
bin: 保证系统拥有完整功能而提供的应用程序
sbin:
lib:32位使用
lib64:只存在64位系统
include: C程序的头文件(header files)
share:结构化独立的数据,例如doc, man等
local:第三方应用程序的安装位置
bin, sbin, lib, lib64, etc, share
- 文件系统结构
/var: variable data files
cache: 应用程序缓存数据目录
lib: 应用程序状态信息数据
local:专用于为/usr/local下的应用程序存储可变数据;
lock: 锁文件
log: 日志目录及文件
opt: 专用于为/opt下的应用程序存储可变数据;
run: 运行中的进程相关数据,通常用于存储进程pid文件
spool: 应用程序数据池
tmp: 保存系统两次重启之间产生的临时数据
- 文件系统结构
/proc: 用于输出内核与进程信息相关的虚拟文件系统
u/sys:用于输出当前系统上硬件设备相关信息虚拟文件系统
u/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位
置
- Linux上的应用程序的组成部分
二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
u库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64
u配置文件:/etc, /etc/DIRECTORY, /usr/local/etc
u帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man,
/usr/local/share/doc
10、Linux下的文件类型
u-:普通文件
ud: 目录文件
ub: 块设备
uc: 字符设备
ul: 符号链接文件
up: 管道文件pipe
us: 套接字文件socket
- 浅蓝色为软连接,红色为压缩,绿色为执行文件。黄色为管道文件。sock为网络文件。蓝色目录,灰色为其它文件。
- CentOS 7目录变化
/bin 和 /usr/bin
u/sbin 和 /usr/sbin
u/lib 和/usr/lib
u/lib64 和 /usr/lib64
- 显示当前工作目录
每个shell和系统进程都有一个当前的工作目录
uCWD:current work directory
u显示当前shell CWD的绝对路径
pwd: printing working directory
-P 显示真实物理路径
-L 显示链接路径(默认)
pwd-p真实的物理路径。绝对路径很详细,以斜线开头的,相对路径是相对于当前文件的目录。。不是以斜线开头。
- 上级目录用..来表示。.表示当前目录。
- 绝对和相对路径
绝对路径
以正斜杠开始
完整的文件的位置路径
可用于任何想指定一个文件名的时候
u相对路径名
不以斜线开始
指定相对于当前工作目录或某目录的位置
可以作为一个简短的形式指定一个文件名
u基名:basename
u目录名:dirname
16、basename把文件取出来,基名。。dirname 只要文件目录不要文件。目录名。
17、写程序一般情况下要用相对路径。
18、更改目录
cd 改变目录
使用绝对或相对路径:
cd /home/wang/
cd home/wang
切换至父目录: cd ..
切换至当前用户主目录: cd
切换至以前的工作目录: cd –
u选项:-P
u相关的环境变量:
PWD:当前目录路径
OLDPWD:上一次目录路径
- 列出目录内容
列出当前目录的内容或指定目录
u用法:ls [options] [files_or_dirs]
u示例:
ls -a 包含隐藏文件
ls -l 显示额外的信息
ls -R 目录递归通过
ls -ld 目录和符号链接信息
ls -1 文件分行显示
ls –S 按从大到小排序
ls –t 按mtime排序
ls –u 配合-t选项,显示并按atime从新到旧排序
ls –U 按目录存放顺序显示
ls –X 按文件后缀排序
- 查看文件状态u
statu文件:metadata, datau三个时间戳: access time:访问时间,atime,读取文件内容 modify time: 修改时间, mtime,改变文件内容(数据) change time: 改变时间, ctime,元数据发生
1)文件时间stat:读时间 atime、修改时间 mtime、改变时间时间 ctime。stat file三个时间全部读取。
21、文件通配符:* 匹配零个或多个字符
?? 匹配任何单个字符
?~ 当前用户家目录
?~mage 用户mage家目录
?~+ 当前工作目录
?~- 前一个工作目录
?[0-9] 匹配数字范围
?[a-z]:字母
?[A-Z]:字母 (小写字母,大写字母)
?[wang] 匹配列表中的任何的一个字符
?[^wang] 匹配列表中的所有字符以外的字符
22、小写【lower】,大写【upper】。
23、预定义的字符类:man 7 glob
[:digit:]:任意数字,相当于0-9
[:lower:]:任意小写字母
[:upper:]: 任意大写字母
[:alpha:]: 任意大小写字母
[:alnum:]:任意数字或字母
[:blank:]:水平空白字符
[:space:]:水平或垂直空白字符
[:punct:]:标点符号
[:print:]:可打印字符
[:cntrl:]:控制(非打印)字符
[:graph:]:图形字符
[:xdigit:]:十六进制字符
- 创建空文件和刷新时间
touch命令:
touch [OPTION]… FILE…
-a 仅改变 atime和ctime
-m 仅改变 mtime和ctime
-t [[CC]YY]MMDDhhmm[.ss]
指定atime和mtime的时间戳
-c 如果文件不存在,则不予创建
- touch文件。创建文件。cp复制文件,可以复制多个文件。mv移动文件、改名。-i,交互式。-f强制。rm删除。r递归意思。\原始。(rm-f删除).bashrc
- 复制文件和目录cp
cp [OPTION]… [-T] SOURCE DEST
ucp [OPTION]… SOURCE… DIRECTORY
ucp [OPTION]… -t DIRECTORY SOURCE…
ucp SRC DEST
SRC是文件:
如果目标不存在:新建DEST,并将SRC中内容填充至DEST中
如果目标存在:
如果DEST是文件:将SRC中的内容覆盖至DEST中
基于安全,建议为cp命令使用-i选项
如果DEST是目录:在DEST下新建与原文件同名的文件,并将SRC中内容填
充至新文件中
- 复制文件和目录cp
cp SRC… DEST
SRC…:多个文件
DEST必须存在,且为目录,其它情形均会出错;
ucp SRC DEST
SRC是目录:此时使用选项:-r
如果DEST不存在:则创建指定目录,复制SRC目录中所有文件至DEST中;
如果DEST存在:
如果DEST是文件:报错
如果DEST是目录:
- cp常用选项
-i:覆盖前提示 –n:不覆盖,注意两者顺序
u-r, -R: 递归复制目录及内部的所有内容
u-a: 归档,相当于-dR –preserv=all
u-d:–no-dereference –preserv=links 不复制原文件,只复制链接名
u–preserv[=ATTR_LIST]
mode: 权限
ownership: 属主属组
timestamp:
links
xattr
context
All
28、cp 选项
u-p: 等同–preserv=mode,ownership,timestamp
u-v: –verbose
u-f: –force
u-u:–update 只复制源比目标更新文件或目标不存在的文件
u–backup=numbered 目标存在,覆盖前先备份加数字后缀
29、移动和重命名文件
umv [OPTION]… [-T] SOURCE DEST
umv [OPTION]… SOURCE… DIRECTORY
umv [OPTION]… -t DIRECTORY SOURCE…
常用选项:
-i: 交互式
-f: 强制
30、删除urm [OPTION]… FILE…u常用选项:-i: 交互式-f: 强制删除-r: 递归 –no-preserve-root
u示例:rm -rf
30、目录操作
utree 显示目录树
-d: 只显示目录
-L level:指定显示的层级数目
-P pattern: 只显示由指定pattern匹配到的路径
umkdir 创建目录
-p: 存在于不报错,且可自动创建所需的各目录
-v: 显示详细信息
-m MODE: 创建目录时直接指定权限
urmdir 删除空目录
-p: 递归删除父空目录
-v: 显示详细信息
urm -r 递归删除目录树
用tree命令之前先安装,,,rpm -ivh 路径。
31、mkdir -p。创建文件夹。rmdir删除。只是删除空文件夹。
32、指针块。磁盘。4k*12..12个直接指针,二级间接指针,三级间接。
33、索引节点
u inode(index node)表中包含文件系统所有文件列表
u一个节点 (索引节点)是在一个表项,包含有关文件的信息( 元数据 ),包
括:
文件类型,权限,UID,GID
链接数(指向这个文件名路径名称个数)
该文件的大小和不同的时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据
inode table.a,inode nunmber的值。
- 分区。不同节点的各不相同inode。
- 目录
文件引用一个是 inode号
u人是通过文件名来引用一个文件
u一个目录是目录下的文件名和文件inode号之间的映射
36、cp和inode
u在 CP的 命令:
分配一个空闲的inode号,在inode表中生成新条目
在目录中创建一个目录项,将名称与inode编号关联
拷贝数据生成新的文件
- rm和inode
urm 命令:
链接数递减,从而释放的inode号可以被重用
把数据块放在空闲列表中
删除目录项
数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖
- mv和inode
如果mv命令的目标和源在相同的文件系统,作为mv 命令
用新的文件名创建对应新的目录项
删除旧目录条目对应的旧的文件名
不影响inode表(除时间戳)或磁盘上的数据位置:没有数据被移动!
u如果目标和源在一个不同的文件系统, mv相当于cp和rm
39、vim.bash。
40、一个分区中的个数,显示内存不足,实际上不够得是因为节点编号不对(用完了)。
41、>删除形式。rm删除只是删除名字而已。
42、df-i.查看节点编号。
43、link硬链接。不能跨设备不能跨分区。Ln
创建硬链接会增加额外的记录项以引用文件
u对应于同一文件系统上一个物理文件
u每个目录引用相同的inode号
u创建时链接数递增
u删除文件时:
Ørm命令递减计数的链接
Ø文件要存在,至少有一个链接数
Ø当链接数为零时,该文件被删除
u不能跨越驱动器或分区
u语法:
ln filename [linkname ]
- ln-s 软连接。
符号(或软)链接
u一个符号链接指向另一个文件
uls – l的 显示链接的名称和引用的文件
u一个符号链接的内容是它引用文件的名称
u可以对目录进行
u可以跨分区
u指向的是另一个文件的路径;其大小为指向的路径字符串的长度;不增加或减
少目标文件inode的引用计数;
u语法:
ln -s filename [linkname]
45、确定文件内容
u文件可以包含多种类型的数据
u检查文件的类型,然后确定适当的打开命令或应用程序使用
ufile [options] <filename>…
u常用选项:
-b 列出文件辨识结果时,不显示文件名称
-f filelist 列出文件filelist中文件名的文件类型
-F 使用指定分隔符号替换输出文件名后默认的”:”分隔符
-L 查看对应软链接对应文件的文件类型
–help 显示命令在线帮助
46、硬链接和软连接区别;
根本区别:
硬链接本质是一个文件。
软连接本质是多个不同文件。
1)跨分区。
2)inode number
3)链接数。
4)目录。
47、file 查看分析文件类型。
48、文件的头部有独有的格式。叫做魔术。
49、查看多个文件,利用冒号分隔。
50、标准输入和输出
u程序:指令+数据
读入数据:Input
输出数据:Output
u打开的文件都有一个fd: file descriptor (文件描述符)
uLinux给程序提供三种I/O设备
Ø标准输入(STDIN)-0 默认接受来自键盘的输入
Ø标准输出(STDOUT)-1 默认输出到终端窗口
Ø标准错误(STDERR)-2 默认输出到终端窗口
uI/O重定向:改变默认位置
51、标准输入和输出。stdout标准输出。默认标准输出设备,当前窗口。标准输入、输出、错误。cat既有标准输入又有输出。
52、标准输入0表示,标准输出1,错误2。
53、标准输出;重定向>。大于号覆盖。>>追加。set-c禁止覆盖。set+c继续覆盖。>|强制覆盖。
uSTDOUT和STDERR可以被重定向到文件
命令 操作符号 文件名
支持的操作符号包括:
> 把STDOUT重定向到文件
2> 把STDERR重定向到文件
&> 把所有输出重定向到文件
u> 文件内容会被覆盖
set –C 禁止将内容覆盖已有文件,但可追加
>| file 强制覆盖
set +C 允许覆盖
u>> 原有内容基础上,追加内容
- 把输出和错误重新定向到文件
2> 覆盖重定向错误输出数据流
u2>> 追加重定向错误输出数据流
u标准输出和错误输出各自定向至不同位置
COMMAND > /path/to/file.out 2> /path/to/error.out
u合并标准输出和错误输出为同一个数据流进行重定向
Ø &> 覆盖重定向
Ø &>> 追加重定向
Ø COMMAND > /path/to/file.out 2>&1 (顺序很重要)
Ø COMMAND >> /path/to/file.out 2>&1
Ø ():合并多个程序的STDOUT
( cal 2007 ; cal 2008 ) > all.txt
1)标准错误。2>覆盖。2>>追加重定向。
2)、cal 2019>cal.txt。
3)、分开存放:&>. > 2>&
55、标准输入;tr <小于号,用文件代替。代替键盘输入而不是改变文件内容。
tr命令
u tr 转换和删除字符
u tr [OPTION]… SET1 [SET2]
u 选项:
-c –C –complement:取字符集的补集
-d –delete:删除所有属于第一字符集的字符
-s –squeeze-repeats:把连续重复的字符以单独一个字符表示
-t –truncate-set1:将第一个字符集对应字符转化为第二字符集对应的字符
u [:alnum:]:字母和数字 [:alpha:]:字母 [:cntrl:]:控制(非打印)字符 [:digit:]:数字
[:graph:]:图形字符 [:lower:]:小写字母 [:print:]:可打印字符 [:punct:]:标点符号
[:space:]:空白字符 [:upper:]:大写字母 [:xdigit:]:十六进制字符
- 从文件中导入STDIN
使用<来重定向标准输入
u某些命令能够接受从文件中导入的STDIN
tr ‘a-z’ ‘A-Z’< /etc/issue
该命令会把/etc/issue中的小写字符都转换成写写字符
utr –d abc < /etc/fstab 删除fstab文件中的所有abc中任意字符
ucat > file
mage
wangxiaochun
按ctrl+d离开,可以使用文件来代替键盘的输入
uCat > filea < fileb
57、cat 多行重定向。<<@,成对的,不是单一,单一不结束。
58、可以多行,发给多人。
59、把多行发送给STDIN
使用“<<终止词”命令从键盘把多行重导向给STDIN
Ø直到 终止词 位置的所有文本都发送给STDIN
Ø有时被称为就地文本(heretext)
mail -s “Please Call” admin@magedu.com <<END
> Hi Wang,
>
> Please give me a call when you get in. We may need
> to do some maintenance on server1.
>
> Details when you’re on-site
> Zhang
> END
- 管道
管道(使用符号“|”表示)用来连接命令
命令1 | 命令2 | 命令3 | …
Ø将命令1的STDOUT发送给命令2的STDIN,命令2的STDOUT发送到命令3的STDIN
ØSTDERR默认不能通过管道转发,可利用2>&1 或 |& 实现
Ø最后一个命令会在当前shell进程的子shell进程中执行用来
Ø组合多种工具的功能
ls | tr ‘a-z’ ‘A-Z’
- 管道
uless :一页一页地查看输入
ls -l /etc | less
umail: 通过电子邮件发送输入
echo “test email” | mail -s “test” user@example.com
ulpr:把输入发送给打印机
echo “test print” | lpr -P printer_name
62、管道中 – 符号
u示例:
将 /home 里面的文件打包,但打包的数据不是记录到文件,而是传送到 stdout,
经过管道后,将 tar -cvf – /home 传送给后面的 tar -xvf – , 后面的这个 – 则是取
前一个命令的 stdout, 因此,就不需要使用临时file了
utar -cvf – /home | tar -xvf –
63、重定向到多个目标(tee)
u命令1 | tee [-a ] 文件名 | 命令2
把命令1的STDOUT保存在文件中,做为命令2的输入
-a 追加
u使用:
Ø保存不同阶段的输出
Ø复杂管道的故障排除
Ø同时查看和记录输出
64、管道文件。,命令1|命令2.把前面的输出作为后面的标准输入。ls |tr””.管道文件grep。管道前面的命令必须成功。
&>输出和错误全部重定向。
65、tar -xvf解包,tar-cvf打包文件。
66、多行重定向,就地文本。(heretast)
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/92513