linux基础

VMware Workstation的使用:

现代计算机设备的组成部分:

运算器、控制器、存储器、输入设备、输出设备

CPU

bus:总线

memory: 编址存储设备

read ahead

IO: 与外部部件交互

磁盘:

网卡:

虚拟机:虚拟计算机

CPU:运算器、控制器

CPU指令,指令集;

特权指令:OS运行特权指令;

普通指令:

程序员:

OS: Operating System

软件程序

通用目的

硬件驱动

进程管理

内存管理

网络管理

安全管理

System Call

Syscall:系统调用

编程层次:

硬件规格:hardware specifiacation

系统调用:

库调用:library call

UI:

GUI: Graphic User Interface

CLI: Command Line Interface

ABI: Application Binary Interface

API:Application Programming Interface

CPU架构类型:

x86

x64

arm

m68000, m68k

power

powerpc

ultrasparc

alpha

安腾

Windows

Linux:

Linus --> Linux

GNU/Linux

Unix:

System (Bell Lab)

AIX (IBM)

Solaris (SUN)

HP-UX (HP)

BSD: (BSRG)Berkeley System Distribution

NetBSD

OpenBSD

FreeBSD

MIT:Richard Stallman

GNU: GNU is Not Unix;

GPL:General Public License

计算机的基础知识:

CPU, memory, I/O

程序运行模式:

用户空间:user space, us

内核空间:system space

POS: Portable Operating System

POSIX

API: 编程接口;

运行程序格式:

Windows: EXE, dll(dynamic link library)

Linux: ELF, so(shared object)

程序:指令+数据

指令:只读

数据:读写

程序:算法+数据结构

库调用,系统调用:允许被调用的程序;

malloc(), free()

编程语言:

汇编语言:微码编程

系统中某些与硬件相关的特有代码、驱动程序开发;

高级语言C, C++:

系统级应用、驱动程序

高级应用java, python, php:

应用程序

unix-like

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虚拟机

GNU: GPLv2, GPLv3, LGPL(lesser)

Apache: apache

BSD: bsd

A: 1000, GPL,

B: 20000, 20

问题1:CentOS和Linux是什么关系?CentOS和RHEL是什么关系?

问题2:各种开源协议的具体细节?

GPL, LGPL, Apache, BSD

程序包管理器:

rpm:

RHEL, Fedora, S.u.S.E, CentOS

dpt:

Debian, Ubuntu

自由软件:

自由使用;自由学习和修改;自由分发;自由创建衍生版;

Linux的哲学思想:

1、一切皆文件;

把几乎所有资源,包括硬件设备都组织为文件格式;

2、由众多单一目的小程序组成;一个程序只实现一个功能,而且要做好;

组合小程序完成复杂任务;

3、尽量避免跟用户交互;

目标:实现脚本编程,以自动完成某些功能;

4、使用纯文本文件保存配置信息;

目标:一款使用的文本编程器即能完成系统配置工作;

如何获取CentOS的发行版:

http://mirrors.aliyun.com

http://mirrors.sohu.com

http://mirrors.163.com

登录:

root/mageedu

# startx &

终端:

用户与主机交互,必然用到的设备;

物理终端:直接接入本机的显示器和键盘设备;/dev/console

虚拟终端:附加在物理终端之上的以软件方式虚拟实现的终端,CentOS 6默认启动6个虚拟终端

Ctrl+Alt+F#: [1,6]

图形终端:附加在物理终端之上的以软件方式虚拟实现的终端,但额外会提供桌面环境;

设备文件路径:/dev/tty#

模拟终端:

图形界面下打开的命令行接口,基于ssh协议或telnet协议等远程打开的界面

设备文件:/dev/pts/# [0,oo)

查看当前的终端设备:tty

交互式接口:启动终端后,在终端设备附加一个交互式应用程序

GUI:

X protocol, window manager, desktop

Desktop:

GNOME (C, gtk)

KDE (C++, qt)

XFCE (轻量级桌面)

CLI:

shell程序:

sh (bourn)

csh

tcsh

ksh (korn)

bash (bourn again shell), GPL

zsh

显示当前使用的shell:

# echo $

显示当前系统使用的所有shell:

# cat /etc/shells

命令提示符:prompt

[root@localhost ~]#

[root@localhost ~]:PS1

prompt:

管理员:#

普通用户:$

命令:

输入命令,回车:

提请shell程序找到键入命令所对应的可执行程序或代码,并由其分析后提交给内核分配资源将其运行起来;

表现为一个或多个进程;

在shell中可执行的命令有两类:

内建命令:由shell自带的,而且通过某命令形式提供;

外部命令:在当前系统的某文件系统路径下有对应的可执行程序文件;

which,whereis

区别内部或外部命令:

# type COMMAND

运行命令:

命令格式:

COMMAND [OPTIONS...] [ARGUMENTS...]

选项:用于启用或关闭命令的某个或某些功能;

短选项:-c, 例如:-l, -h

多个短选项可命令使用,例如-l -h, 可写作-lh;

长选项:--word,例如:--long, --human-readable

参数:命令的作用对象

向命令提供数据;

注意:

1、多选项,以及多参数和命令之间都应该使用空白字符分隔

2、取消命令执行:Ctrl+c

文件系统:

C:\Program files\office11\word\word.exe

/etc/sysconfig/network-scripts/ifcfg-eth0

文件有两类数据:

元数据:metadata

数据:data

1、文件名严格区分字符大小写;file1, File1, FILE1是不同的文件;

2、文件名可使用除/以外的任意字符,不建议使用特殊字符;

/: 根目录,路径分隔符;

3、文件名长度最长不能超过255个字符;

4、所以.开头的文件,均为隐藏文件;

路径:

绝对路径:从根目录起始的路径;

相对路径:对当前位置起始的路径;

当前位置的表示方式:

(1) ./: ./sysconfig/network-scripts

(2) 省略上述符号: sysconfig/network-scripts

..:表示当前目录的上一级目录

当前目录:current directory, 也称作working directory;

pwd: printing working directory

LSB: Linux Standard Base

命令总结:ls, cd, type, tty, cat, which, whereis, pwd, echo

命令:

(1) 文件系统相关:

目录管理

文件管理

文件查看

文件编辑

(2) 系统管理相关:

Linux命令帮助的获取

外部命令:都有一个可执行程序,位于文件系统某目录下;

which, whereis

shell程序搜寻可执行程序文件的路径定义在PATH环境变量中;

# echo $PATH

注意:自左至右

格式:COMMAND [OPTIONS...] [ARGUMENTS...]

内部命令:

# help COMMAND

外部命令:

(1) # COMMAND --help

# COMMAND -h

(2) 使用手册(manual)

# man COMMAND

(3) 信息页

# info COMMAND

(4) 程序自身的帮助文档

README

INSTALL

ChangeLog

(5) 程序官方文档

官方站点:Documentation

(6) 发行版的官方文档

(7) Google

内部命令帮助:

# 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:翻至文件尾部

文本搜索:

/KEYWORD:

以KEYWORD指定的字符串为关键字,从当前位置向文件尾部搜索;不区分字符大小写;

n: 下一个

N:上一个

?KEYWORD:

以KEYWORD指定的字符串为关键字,从当前位置向文件首部搜索;不区分字符大小写;

n: 跟搜索命令同方向,下一个

N:跟搜索命令反方向,上一个

练习:date命令

显示今天为周几?

设定当前系统时间?

显示今天的日期,形如:08/15/15?

显示当前的时间,形如: 16:01:21?

(3) info

info COMMAND

(4) 程序自身的帮助文档

/usr/share/doc/COMMAND-VERSION

(5) 程序官方文档

(6) 发行版的官方文档

http://www.redhat.com/docs

(7) Google

(8) slideshare

http://www.slideshare.net/

基础命令:

date:

date [OPTION]... [+FORMAT]:显示

FORMAT: 格式符号

%D

%F

%T

date [MMDDhhmm[[CC]YY][.ss]]:设置

MM: 月分

DD:几号

hh: 小时

mm: 分钟

YY: 两位年份

CCYY: 四位年份

.ss: 秒钟

Linux的两种时钟:

系统时钟:由Linux内核通过CPU的工作频率进行的计时;

硬件时钟:

hwclock: 显示硬件时钟

-s, --hctosys

-w, --systohc

cal:日历

目录相关的命令:

当前目录或工作目录

主目录,家目录:HOME

root: /root

普通用户:/home/USERNAME

/home/tom

~:用户的主目录

cd:

cd 或 cd ~: 回当前用户的主目录

cd ~USERNAME: 切换至指定用户的主目录

cd -: 在上一个目录和当前目录之间来回切换

.

..

相关的环境变量:

PWD:保存了当前目录路径;

OLDPWD:上一次所在目录路径;

pwd: 显示当前目录

ls: list

显示指定路径下的文件列表;

ls [OPTION]... [DIR]...

-a, --all: 显示所有文件,包括隐藏文件;

-l: 长格式

-rw-r--r-- 1 root root 44800 Aug 14 14:32 install.log

-rw-r--r--:

最左侧的第一位:文件类型

-, d, l, b, c, p, s

后面的9位:访问权限,perm

数字:文件被硬链接的次数;

左root: 文件的owner

右root: 文件的group

44800:文件的size

Aug 14 14:32 : 文件的最近一次被修改的时间

install.log: 文件名

-h, --human-readable:单位换算

-d: 显示目录自身的相关属性;通常要与-l一起使用;

-r, --reverse: 逆序显示

-R, --recursive: 递归

stat /PATH/TO/SOMEFILE:获取指定文件的元数据

文件查看命令:cat, tac

cat [OPTION]... [FILE]...

-E: 显示行结束符$

-n: 对显示出的每一行进行编号

文件内容类型查看命令:file

file /PATH/TO/SOMEWHERE

回显命令:echo

-n: 禁止自动添加换行符号;

-e: 允许使用转义符;

\n: 换行

\t: 制表符

echo "$VAR_NAME": 变量会替换,双引号表弱引用

echo '$VAR_NAME': 变量不会替换,强引用

which:显示命令对应的程序文件路径

which [OPTION] COMMAND

--skip-alias:禁止显示别名

whatis:

使用mkwhatis命令可将当前系统上所有的帮助手册及与之对应的关键字创建为一个数据库;

系统管理类命令:

关机:

halt, poweroff, shutdown, init 0

重启:

reboot, shutdown, init 6

跟用户登录相关:

who, whoami, w

Linux的文件系统:

根文件系统(rootfs):

root filesystem

LSB, FHS: (FileSystem Heirache Standard)

/etc, /usr, /var, /root, /home, /dev

/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader, grub)都存放于此目录;

/bin:供所有用户使用的基本命令;不能关联至独立分区,OS启动即会用到的程序;

/sbin:管理类的基本命令;不能关联至独立分区,OS启动即会用到的程序;

/lib:基本共享库文件,以及内核模块文件(/lib/modules);

/lib64:专用于x86_64系统上的辅助共享库文件存放位置;

/etc:配置文件目录(纯文本文件);

/home/USERNAME:普通用户家目录;

/root:管理员的家目录;

/media:便携式移动设备挂载点;

cdrom

usb

/mnt:临时文件系统挂载点;

/dev:设备文件及特殊文件存储位置;

b: block device,随机访问

c: character device,线性访问

/opt:第三方应用程序的安装位置;

/srv:系统上运行的服务用到的数据;

/tmp:临时文件存储位置;

/usr: universal shared, read-only data;

bin: 保证系统拥有完整功能而提供的应用程序;

sbin:

lib:

lib64:

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: 用于输出内核与进程信息相关的虚拟文件系统;

/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;

/selinux: security enhanced Linux,selinux相关的安全策略等信息的存储位置;

Linux上的应用程序的组成部分:

二进制程序:/bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

库文件:/lib, /lib64, /usr/lib, /usr/lib64, /usr/local/lib, /usr/local/lib64

配置文件:/etc, /etc/DIRECTORY, /usr/local/etc

帮助文件:/usr/share/man, /usr/share/doc, /usr/local/share/man, /usr/local/share/doc

Linux下的文件类型:

- (f):普通文件;

d: 目录文件;

b: 块设备;

c: 字符设备;

l: 符号链接文件;

p: 管道文件;

s: 套接字文件;socket;

系统管理类命令:

关机:

halt, poweroff, shutdown, init 0

重启:

reboot, shutdown, init 6

跟用户登录相关:

who, whoami, w

关机或重启:

halt, poweroff

reboot

-f: 强制,不调用shutdown

-p: 切断电源

shutdown:

shutdown [OPTION]... TIME [MESSAGE]

-r: reboot

-h: halt

-c:cancel

TIME:

now: 立刻

+m: 相对时间表示法,从命令提交开始多久之后;例如 +3;

hh:mm: 绝对时间表示,指明具体时间;

用户登录信息查看命令:

whoami: 显示当前登录有效用户;

who: 系统当前所有的登录会话;

w: 系统当前所有的登录会话及所做的操作;

关注“农夫运维” 一起成长!

“我们进步,因为我们分享!”

“分享是一种精神,感恩是一种品德。”

  • 发表于:
  • 原文链接:http://kuaibao.qq.com/s/20180506G02LLS00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券