计算机=硬件+软件 。
冯诺依曼理论,五大部件:CPU —— 运算器、控制器, 存储器,输入设备,输出设备。
Shell 环境是通过环境变量进行配置的 ,环境变量保存对应用程序的配置,在当前进程有效 。若长期有效,需保存到配置文件中。
语言分类:
编译型语言:写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件;
解释型语言:解释性语言在运行程序的时候才翻译,效率比较低。
相比较而言,两种不同型语言只是翻译的时间不同
程序与进程的关系:
程序并不能单独执行,只有将程序加载到内存中,系统为他分配资源后才能够执行,这种执行的程序称之为进程,也就是说进程是系统进行资源分配和调度的一个独立单位,每个进程都有自己单独的地址空间。所以说程序与进程的区别在于,程序是指令的集合,是进程运行的静态描述文本,而进程则是程序在系统上顺序执行时的动态活动。
进程和程序并不是一一对应的,一个程序执行在不同的数据集上就成为不同的进程。一般来说,一个进程肯定有一个与之对应的程序,而且只有一个。而一个程序有可能没有与之对应的进程,也有可能有多个进程与之对应。
环境变量:仅当前进程有效 ,命名的内存空间
引用环境变量:echo ${ 变量 } 例:#echo $PS1
$PS1 组成格式为 [\u@\h \W]\$ ,其中 \u表示登录的用户名 ,\h 表示主机名,\W表示工作目录的路径基名
Linux路径,路径分隔符 :/
相对路径:从当前位置开始的路径
绝对路径:从顶层开始的路径
Linux文件系统特性 :
文件名可以使用除 / 号外的任意字符 ,但长度不能超过255字符
严格区分大小写
程序四要素:二进制文件、配置文件、库文件及帮助文件
程序管理器:
Debian 的程序包管理器 :deb
SuSE、Redhat的程序包管理器 :rpm
通用软件
内核:文件系统(File system)、网络协议栈、进程管理、加密解密机制、驱动程序、创建索引加密、解密功能;TCP/IP协议 (内核模块)
应用软件
系统管理:网络配置、文件系统(分区、raid)、用户、文件(创建、删除、移动、权限)、加密解密、内核(编译)、启动过程、程序包管理
网络服务管理:web(Apache,nginx,mysql,php)、NFS、DNS、FTP、Postfix/D :ovecot 、网络安全(Iptables、tcp_Wrapper)
Mysql:CRUD、索引、存储引擎、备份恢复、集群、分片
集群:LB、HA、Hadoop 、GFS
WEB:Nginx 、Haproxy、Keeplived、tomcat、分布式文件系统、CDN、Nosql
虚拟化:Xen 、KVM、LXC/openVZ
Laas :Openstack
自动化运维:zabbix 、nginos 、Python
规模并行处理平台:hadoop
linux终端类型:
串行终端,串行端口终端(Serial Port Terminal)是使用计算机串行端口连接的终端设备。类型为/dev/ttys/#
物理终端,直接接入计算机显示器通常被称为物理终端,如/dev/console
虚拟终端 ,虚拟终端附加在物理终端之上的,是以软件方式虚拟实现的终端。系统开机后会启动6个虚拟终端,在CentOs6系统,可以使用快捷键 Ctrl+Alt+F[1-6]切换虚拟终端。类型为/dev/tty#
伪终端(模拟终端)是纯粹的软件方式实现,而且不会附加在本地物理终端上,建立一个telnet或ssh连接使用的终端都是伪终端,如客户端软件ssh ,CRT 等。类型为 /dev/pts/#
Ctrl +c 取消当前程序运行
Ctrl+Alt+F[1-6] 启动命令界面,Ctrl+Alt+F7启动图形界面(先启动图形功能#startx)
命令 #startx & 表示在后台运行
Shift +Pageup/Pagedown 翻屏查看命令界面之前的页
[root@vm ~]# tty # 显示当前终端访问类型
/dev/pts/0 # 代表了是模拟终端
[root@vm ~]# who # 查看当前系统登录的所有用户及其信息
root tty1 2018-09-25 18:38 # 代表了是本机的虚拟终端登陆
root pts/0 2018-09-25 18:39 (192.168.4.101) # 代表了是本机的模拟终端登陆
command options arguments
命令 选项 参数
选项:调整命令的执行特性
短选项:-char ,可合并 ;
长选项:--word ,多个选项之间必须以空格分隔;
参数:命令的作用对象
有些命令可以带多个参数;
各参数之间使用空格分隔;
Linux命令类型 :
alias:别名。
keyword:关键字,Shell保留字。
function:函数,Shell函数。
builtin:内建命令,Shell内建命令。
file:文件,磁盘文件,外部命令。
unfound:没有找到。
linux命令帮助:
内置命令:
# help COMMAND 内部命令获取帮助
外置命令:
# COMMAND --help 外部获取命令帮助
# man COMMAND 查看命令man手册
# info COMMAND 在线文档
应用程序自带的文档:/usr/shared/doc 帮助文档
google 网络查看帮助
[root@vm ~]# help cd # 对内部命令cd查看帮助信息
cd: cd [-L|-P] [dir]
Change the shell working directory.
[root@vm ~]# date --help # 对外部命令date 查看帮助信息
Usage: date [OPTION]... [+FORMAT]
or: date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]]
[root@vm ~]# man cd # 对命令cd查看man帮助信息
[root@vm ~]# man ls # 对命令ls查看man帮助信息
[root@vm ~]# info ls # 命令ls查看帮助信息
man的使用机制:man其实能为命令(普通命令、管理命令)、程序的配置文件格式、系统调用、库调用、游戏及其他不便归类的文件提供帮助信息
翻屏:
space 向文件尾部翻一屏
b 向文件首部翻一屏
回车键:向文件尾部翻一行
k 向文件首部翻一行
Ctrl +d 向文件尾部翻半屏
Ctrl +u 向文件首部翻半屏
文本搜索:
/keyword 向文件尾部搜索
?keyword 向文件首部搜索
n 跟搜索命令相同的方向(下一个)
N 跟搜索命令相反的方向(上一个)
q :退出
man 分段机制:1-8
1. 用户命令 2.系统调用 3.库 调用 4.设备文件 5.文件格式 6.游戏 7.杂项 8.管理命令
type命令
type 命令用来显示指定命令的类型,判断给出的指令是内部指令还是外部指令。
选项:
-t:输出“file”、“alias”或者“builtin”,分别表示给定的指令为“外部指令”、“命令别名”或者“内部指令”;
-p:如果给出的指令为外部指令,则显示其绝对路径;
-a:在环境变量“PATH”指定的路径中,显示给定指令的信息,包括命令别名。
[root@vm ~]# type ls
ls is aliased to `ls --color=auto`
[root@vm ~]# type cd
cd is a shell builtin
[root@vm ~]# type date
date is /bin/date
[root@vm ~]# type nginx
-bash: type: nginx: not found
[root@vm ~]# type -p date
/bin/date
[root@vm ~]# type -t ls
alias
hash命令:显示、添加或清除哈希表。linux系统下会有一个hash表,事先通过一个变量设定好了多个路径,当用户输入命令时,shell会自动到这些路径下(由左至右)查看与命令名称相同的可执行文件查找到并执行过的命令会被保存到一个hash查找表中,
[root@vm ~]# hash # 查看hash表的内容
hits command
4 /usr/bin/tty
1 /bin/date
5 /bin/rpm
3 /usr/bin/yum
1 /usr/bin/who
6 /usr/bin/man
1 /usr/bin/info
3 /bin/ls
[root@vm ~]# hash -h # hash 命令帮助
-bash: hash: -h: invalid option
hash: usage: hash [-lr] [-p pathname] [-dt] [name ...]
[root@vm ~]# hash -l # hash 命令列表
builtin hash -p /usr/bin/tty tty
builtin hash -p /bin/date date
builtin hash -p /bin/rpm rpm
builtin hash -p /usr/bin/yum yum
builtin hash -p /usr/bin/who who
builtin hash -p /usr/bin/man man
builtin hash -p /usr/bin/info info
builtin hash -p /bin/ls ls
[root@vm ~]# hash -r # 清空hash表
[root@vm ~]# hash
hash: hash table empty
whatis命令:是用于查询一个命令执行什么功能,并将查询结果打印到终端上。另whatis命令可显示手册部分的页眉行,然后可以发出man命令以获取附加的信息。whatis命令等同于使用man -f命令。
dirname命令去除文件名中的非目录部分,仅显示与目录有关的内容。
[root@vm ~]# dirname /usr/local/bin/
/usr/local
[root@vm ~]# dirname /usr/local/bin
/usr/local
[root@vm ~]# dirname /root/
/
[root@vm ~]# dirname /
/
basename命令用于打印目录或者文件的基本名称。basename和dirname命令通常用于shell脚本中的命令替换来指定和指定的输入文件名称有所差异的输出文件名称。
[root@vm ~]# basename /usr/local/bin/
bin
[root@vm ~]# basename /usr/local/bin
bin
[root@vm ~]# basename /root/
root
[root@vm ~]# basename /
/
which命令用于查找并显示给定命令的绝对路径,环境变量PATH中保存了查找命令时需要遍历的目录。which指令会在环境变量$PATH设置的目录里查找符合条件的文件。也就是说,使用which命令,就可以看到某个系统命令是否存在,以及执行的到底是哪一个位置的命令。
[root@vm ~]# which ls
alias ls='ls --color=auto'
/bin/ls
[root@vm ~]# which vi
alias vi='vim'
/usr/bin/vim
[root@vm ~]# which pwd
/bin/pwd
# tty :显示当前终端对应的终端设备文件,即终端访问类型
# who :查看当前系统登录的所有用户及其信息
# hash:显示、添加或清除hash 表
# type COMMAND:显示指定命令类型
# dirname PATH :查看路径目录名
# basename PATH:查看路径基名
# which COMMAND:查看一个可执行程序的具体路径,即外部命令的位置
# help BuiltinCommand :查看内置命令帮助信息
# COMMAND --help :获取外部命令帮助
# man COMMAND:查看命令手册
# info COMMAND 在线文档