Linux基础知识
Linux发行版本:
Debain,Slack ware,RedHat
Debian:
Ubuntu
Knopix
Slack Ware:
S.u.S.E
OpenSUSE
RedHat:
Fedora
CentOS
Linux:内核
Application
GNU/Linux:通常以源码(文本格式)方式提供;
自由、灵活;
Gentoo
ArchLinux
Linux基础:
CPU架构:
x86
x64(amd64)
m68000,m68k
arm
ultrasparc solaris
power aix
powerpc,ppc
MIPS
alpha hp-unix
...
POS:POSIX
API:Application Program Interface
ABI:Application Binary Interface
Linux,BSD,AIX.....:Unix-like
Unix类的系统:
API
ABI
Stallman: GNU
闭源:
开源: 提供源代码;
开源协定:
GPL: General Public License
copyringht, copyleft
LGPL: Lesser GPL
GPLv2, GPLv3
FSF: Free Software Foundation
BSD;
Apache:
ASF: Apache Software Foundation
双线授权:
Community: 遵循开源协定;
Enterprise:
程序管理:
程序的组成部分:
二进制程序:
配置文件:
库文件:
帮助文件:
X,Y,Z
程序包管理器:
X:
程序的组成文件打包成一个或有限几个文件;
安装:
卸载:
查询:
Debian: dpkg, apt-get
RedHat: rpm, yum,dnf
S.u.S.E: rpm,zypper
ArchLinux: port
Gentoo:
LFS: Linux From Scretch
虚拟化软件程序:
vmware workstation
virtualbox
CentOS的镜像站点:
http://mirros.aliyun.com
http://mirros.163.com
http://mirros.sohu.com
终端:terminal
用户界面:
GUI:
GNome
KDE
CLI:
bash,zsh,sh,csh,tcsh,ksh
远程连接:
ssh协议:secure shell;
# ss -tnl
查看系统是否监听于tcp协议的22号端口;
# ip addr list
or
# ifconfig 查看IP地址;
确保防火墙处于关闭状态:
# iptables -L -n
CentOS 7:
# systemctl disable firewalld.service
# systemctl stop firewalld.service
CentOS 6:
# system iptables stop
# chkconfig iptables off
终端设备:terminal
多任务、多用户
物理终端:控制台:console
虚拟终端:6个,tty
Ctrl+Alt+F[1-6]
图形终端:
CentOS 6: Ctrl+Alt+F7
CentOS 7: 在哪个虚拟终端启动,即位于哪个虚拟终端;
串行终端:ttyS
伪终端:pty
Linux的哲学思想之一:一切皆文件;
表现之一:硬件设备也通过文件表示;
物理终端:/dev/console
虚拟终端:/dev/tty# [1-6]
串行终端:/dev/ttyS#
伪终端:/dev/pts/#
注意:在启动设备之后,在其上关联一个用户接口程序,即可实现于用户交互;
查看终端设备:
# tty
查看接口程序:
# echo $SHELL
启动GUI:
在某一虚拟终端接口运行命令:startx &
CLI接口:
命令行接口:
[root@hostname ~]# COMMAND
prompt(提示符):
root:当前登录的用户
hostname:当前主机的主机名,非完整格式;完整格式应为:hostname.domain.com
~:用户当前所在的目录(current directory),也成为工作目录(working directory);相对路径;
#:命令提示符:
#:管理员账号,为root;拥有最高权限,能执行所有操作;
$:普通用户,非root用户;不具有管理权限,不能执行系统管理类操作;
注意:建议使用非管理员账户登录;执行管理操作临时切换至管理员,操作完成及退回;
几个基础命令:
tty:查看当前的终端设备;
ifconfig或ip addr list:查看活动接口的IP地址;
echo:回显命令
ping:探测网络的目标主机与当前主机之间的连通性;
Ctrl+c:终止命令执行;
关机命令:
CentOS 7:
# systemctl poweroff
# systemctl reboot(重启)
CentOS *:
# poweroff
# halt
# reboot(重启)
Stallman:
自由含义:自由学习和修改;自由使用;自由分发;自由创建衍生版;
Linux的哲学思想:
1.一切皆文件;
把几乎所有资源系统统抽象为文件形式;包括硬件设备,甚至通信接口等;
2.有众多功能单一的程序组成;一个程序只做一件事,并且做好;
3.尽量避免跟用户交互;
目标:易于以编程的方式实现自动化任务;
4.使用文本文件保存配置信息;
文件系统:层级结构;有索引;
/:原初起点;
倒置树状结构;
/dev/pts/2:
最左侧/: 表示根目录
其他的/: 表示路径分隔符
Linux的路径分隔符是/
Windows的是\
文件的路径表示:
绝对路径:从根开始表示出的路径
相对路径:从当前位置开始表示出的路径
文件名使用法则:
严格区分字符大小写:file1,File1,FILE1
目录是文件,在同一路径下,两个文件不能同名;
支持使用除/以外的任意字符;
最长不能超过255个字符;
用户家目录:home,
用户的起始目录:普通用户管理文件或目录名;
工作目录:
/etc/sysconfig/network-scripts/ifcfg-***
basename:最右侧的文件或目录名;
dirname:basename左侧的路径;
命令:
# basename /PATH/TO/SOMEFILE
SOMEFILE
# dirname /PATH/TO/SOMEFILE
/PATH/TO
命令的语法通用格式
# COMMAND OPTIONS ARGUMENTS
发起--命令:请求内核将某个二进制程序运行为一个程序;
程序 --> 进程
静态 --> 动态(有生命周期)
命令本身是一个可执行的程序文件:二进制格式的文件,有可能会调用共享库文件;
多数系统程序文件都放在:/bin,/sbin,/usr/sbin,/usr/bin,/usr/local/bin,/usr/loca/sbin
普通命令:/bin,/usr/bin,/usr/local/bin
管理命令:/sbin,/use/sbin/use/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
注意:并非所有的命令都有一个在某目录与之对应的可执行程序文件
命令必须遵循特定格式规范:exe,msi,ELF(Linux)
# file /bin/ls
命令分为两类:
由shell程序自带的命令:内置命令(builtin)
独立的可执行程序文件,文件名即命令名:外部命令
shell程序是独特的程序,负责解析用户提供的命令;
环境变量:
PATH:从哪些路径中查找用户键入的命令字符串所对应的命令文件;
# echo $PATH
/usr/lib64/qt-3.3/bin;/usr/local/sbin;/usr/local/bin,/usr/bin,/usr/sbin,/root/bin
查找次序:自左而右;
查看命令类型
type COMMAND
OPTIONS:
指定命令的运行特性;
选项有两种表现形式;
短选项: —c, 例如-l,-d
注意:有些命令的选项没有-;
如果同一命令同时使用多个短选项,多数可合并:-l -d = -ld
长选项: --word ,例如--help,--human-readable
注意:长选项不能合并
注意:有些选项可以带参数,此称为选项参数;
ARGUMENTS:
命令的作用对象;命令对什么生效;
注意:不同的命令的参数;有些命令可同时带多个参数,多个之间以空白字符分隔;
例如: ls -ld /var /etc
获取命令的使用帮助:
内部命令:
help COMMAND
外部命令:
(1)命令自带简要格式的使用帮助
# COMMAND --help
(2)使用手册:manual
位置:/usr/share/man
# man COMMAND
SECTION:
NAME:功能性说明
SYNOPSIS:语法格式
DESCRIPTION:描述
OPTIONS:选项
EXAMPLES:使用示例
AUTHOR:作者
BUGS:报告程序BUG的方式
SEE ALSO:参考
...
SYNOPSIS:
[]:可选内容
<>:必须提供的内容
a|b|c:多选一
....:同类内容可出现多个
使用手册:压缩格式的文件,有章节之分;
/usr/share/man
man1,man2,...
1.用户命令;
2.系统调用;
3.C库调用;
4.设备文件及特殊文件;
5.文件格式;(配置文件格式)
6.游戏使用帮助;
7.杂项;
8.管理工具及守护进程;
# man CHAPTER COMMAND
注意:不是每个COMMAND在每个章节下都有手册;
查看:# whatis COMMAND
注意:其执行过程是查询数据库进行的;
手动更新数据库: # makewhatis
man命令打开手册以后的操作方法;
翻屏:
空格键:向文件尾翻一屏;
b:向文件首翻一屏;
Ctrl+d:向文件尾部翻半屏;
Ctrl+u:向文件首部翻半屏;
回车键:向文件尾部翻一行
k:向文件首部翻一行
G:跳转至最后一行;
*G:跳转至指定行;
1G:跳转至文件首部;
文本搜索:
/keyword:从文件首部向文件尾部依次查找;不区分字符大小写;
?keyword:从文件尾部向首部依次查找;
n:与查找命令方向相同;
N:与查找命令方向相反;
退出:
q quit
选项:
—M /PATH/T O/SOMEFIR:到指定目录下查找命令手册并打开之;
练习:获取useradd命令的用法
(1) 添加用户 gentoo;
# useradd gentoo
# id gentoo
(2) 添加用户slackware,要求指定其所用的shell为/bin/tcsh;
# useradd -s /bin/tcsh slackware
#tail -l /etc/passwd
(3) info COMMAND
获取命令的在线文档;
(4) 很多应用程序会自带帮助文档:/usr/share/doc/APP-VERSION
README:程序的相关信息;
INSTALL:安装帮助;
CHANGES:版本迭代时的改动信息;
(5) 主流发行版官方文件
http://www.redhat.com/doc
(6) 程序官方的文档:
官方站点上的"Document"
Linux文件系统:
1.文件名名称严格区分字符大小写;
2.文件可以使用除/以外任意字符;
3.文件名长度不能超过255个字符;
4.以.开头的文件为隐藏文件;
.为当前目录
..为当前目录的上一次目录
/etc/sysconfig/
.: sysconfig
..: /etc
工作目录:working directory
家目录:home