Linux 基础
一.计算机组成及其功能
当今计算机采用冯·诺依曼架构,必须具备的五大基本组成部件,包括:
1.输入数据和程序的输入设备
2.记忆程序和数据的存储器
3.完成数据加工处理的运算器
4.控制程序执行的控制器
5.输出处理结果的输出设备
计算机基本组成结构图
二.Linux的发行版,不同发行版之间的联系与区别
1.Linux
严格来说Linux是指Linux内核,建立起计算机软件与硬件之间通讯的平台,提供系统服务,Linux内核最早由Linus Torvalds在1991年开始编写。
2.GNU
GNU 是 “GNU's Not Unix” 的递归缩写, 是由理查德·斯托曼在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。GNU是一个类Unix操作系统。它是由多个应用程序、系统库、开发工具乃至游戏构成的程序集合。GNU的开发始于1984年1月,称为GNU工程。GNU的许多程序在GNU工程下发布;我们称之为GNU软件包。
3.Linux发行版
一个完整的Linux操作系统包含Linux内核,GNU程序库和工具,命令行shell,图形界面的X Window系统和相应的桌面环境,如KDE或GNOME,发行版就是个人,各组织及各大厂商根据各自不同的目的将Linux内核及GNU程序整合编译为一个完整的操作系统(GUN/Linux)。
Linux主流发行版有:Redhat,Debian,Slackware,Gentoo,ArchLinux等系列
Redhat系:
Redhat Linux 是有红帽公司开发的Linux发行版,自从自从RedHat9.0版本发布后,RedHat公司就不再开发桌面版的Linux发行套件,RedHatLinux停止了开发,而将全部力量集中在服务器版的开发上,也就是RedHat Enterprise Linux版。2004年4月30日,RedHat公司正式停止对RedHat9。0版本的支援,标志著RedHatLinux的正式完结。原本的桌面版RedHatLinux发行套件则与来自开源社区的Fedora计划合并,成为FedoraCore 发行版本。Centos是RedHat Enterprise Linux的社区版,Centos与RedHat Enterprise Linux具有相同的功能及性能。
Debian系:
Debian 系包括Debian和Ubunt等,Debian 首次发布于 1993 年 9 月,是由社区维护,是一个自由,稳定和功能强大的Linxu操作系统。Ubuntu是一个以桌面应用为主的开源GNU/Linux操作系统,Ubuntu 是基于DebianGNU/Linux
Slackware系:
Slackware Linux是由Patrick Volkerding开发的GNU/Linux发行版,与很多其他的发行版不同,它坚持KISS(Keep It Simple Stupid)的原则。SUSE Linux是以Slackware Linux为基础衍生而来,现在的 SUSE Linux 由 Novell公司的openSUSE 项目所维护,openSUSE 也算是Linux操作系统发行版之一。
Gentoo系:
Gentoo是一个基于Linux的自由操作系统,它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择。得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、游戏系统、嵌入式解决方案或者别的东西
ArchLinux:
Arch Linux(或称Arch)是一种以轻量简洁为设计理念的Linux发行版。其开发团队秉承简洁、优雅、正确和代码最小化的设计宗旨
三.Linux的哲学思想
1.一切皆文件
Linux把几乎所有的资源抽象为文件形式,包括硬件设备,通信接口等
2.由众多功能单一的程序组成;一个程序只做一件事,并且做好
3.尽量避免跟用户交互
目标:易于以编程的方式实现自动化任务;
4.使用文本文件保存配置文件
四.Linux系统命令的使用格式
1.命令的语法通用格式:
#COMMAND OPTIONS ARGUMENTS
COMMAND:命令
OPENTIONS:指定命令的运行特性
选项有两种表现形式:
短选项:如:-l -d; 可合并
长选项:--word:不可合并
ARGUMENTS:
命令的作用对象:命令对什么生效
2.常用命令介绍:
ifconfig
功能:配置网络接口
使用格式:
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address ...
常用选项:
-a: 显示所有网络端口信息
-s: 显示简要信息
up:启用网卡
down:停用网卡
示例:
[root@localhost ~]# ifconfig -a
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.1.121 netmask 255.255.255.0 broadcast 192.168.1.255
inet6 fe80::20c:29ff:fe22:ebf7 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:22:eb:f7 txqueuelen 1000 (Ethernet)
RX packets 746106 bytes 951171006 (907.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 135554 bytes 11006185 (10.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 0 (Local Loopback)
RX packets 26 bytes 2056 (2.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 26 bytes 2056 (2.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 00:00:00:00:00:00 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0-nic: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
ether 52:54:00:e9:15:76 txqueuelen 500 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
echo
功能:回显文本
命令格式:
echo [SHORT-OPTION]... [STRING]...
echo LONG-OPTION
常用选项:
-n : 回显之后不换行
-e : 生效转义符
转义符:
\n 换行
\t 制表符
[root@localhost ~]# echo -e "hello\nwhat your name?"
hello
what your name?
[root@localhost ~]# echo -e "hello\tworld"
hello world
单引号:强引用,变量引用不执行替换
[root@localhost ~]# echo '$SHELL'
$SHELL
双引号:弱引用,变量引用会被替换
[root@localhost ~]# echo "$SHELL"
/bin/bash
tty
功能:打印连接到标准输入的终端的文件名
命令格式:
tty [OPTION]
[root@localhost ~]# tty
/dev/pts/1
startx
功能:启用X会话
命令格式
startx [ [ client ] options ... ] [ -- [ server ] [ display ] options ... ]
export
功能:设置或显示环境变量
命令格式:
export [-fn] [name[=value]
export -p
参数:
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
[root@localhost ~]# export -p
declare -x HISTCONTROL="ignoredups"
declare -x HISTSIZE="1000"
declare -x HOME="/root"
declare -x HOSTNAME="localhost.localdomain"
declare -x LANG="en_US.UTF-8"
declare -x LESSOPEN="||/usr/bin/lesspipe.sh %s"
declare -x LOGNAME="root"
pwd
功能:打印工作目录
命令格式:
pwd [OPTION]
[root@localhost zach]# pwd
/home/zach
history
功能:用于显示历史记录和执行过的指令命令
命令格式:
History [OPTION]
-c clear the history list by deleting all of the entries
-d offset delete the history entry at offset OFFSET.
history -d 61
-a append history lines from this session to the history file
-n read all history lines not already read from the history file
-r read the history file and append the contents to the history list(内存中)
-w write the current history to the history file and append them to the history list
-p perform history expansion on each ARG and display the result without storing it in the history list
-s append the ARGs to the history list as a single entry
history # ;显示最近的#条命令:
调用命令历史列表中的命令:
!# :再次执行历史命令列表中的第#条命令;
!!:执行上一次命令
!STRING :再一次执行命令历史列表中最近一个以STRING开头的命令
调用上一条命令的最后一个参数
快捷键:Esc .
字字符串:!$
定制history的功能,可通过环境变量实
HISTSIZE : shell进程可保留的命令历史条数
HISTFILE : 持久保存命令历史的文件
[root@localhost ~]# echo $HISTFILE
/root/.bash_history 用户家目录下.bash_history,保存历史命令
HISTFILESIZE: 命令历史文件中能保存的命令大小
HISTCONTROL:控制命令历史记录的方式
ignorespace:忽略以空白字符开头的命令
ignoredups:忽略重复的命令;
ignoreboth:以上两者同时生
which
功能:显示命令的全路径
命令格式:
which [options]
参数:
--skip-alias 跳过显示命令别名
whereis
功能:定位命令二进制文件,源文件和手册页文件
命令格式:
whereis [options] name.
参数:
-b Search only for binaries.
-m Search only for manuals.
-s Search only for sources
who
功能:显示登录用户
命令格式:
who [OPTION]
参数
-b, --boot
time of last system boot 最近一次启动时间
-r, --runlevel
print current runlevel 运行级别
w
Show who is logged on and what they are doing
增强版的who命令
shutdown
功能:关闭电源或重新启动机器
命令格式:
shutdown [OPTIONS...] [TIME] [WALL...]
[OPTIONS...]
-h:halt
-r:reboot
-c:cancel
[TIME]
hh:mm
now
+m
[root@localhost zach]# shutdown -h +50
Shutdown scheduled for Sat 2018-05-12 16:13:30 CST, use 'shutdown -c' to cancel.
[root@localhost zach]# shutdown -c
Broadcast message from root@localhost.localdomain (Sat 2018-05-12 15:23:48 CST):
The system shutdown has been cancelled at Sat 2018-05-12 15:24:48 CST!
poweroff
功能:关闭系统
命令格式:
poweroff [OPTIONS...]
选项:
--help Show this help
--halt Halt the machine
-p --poweroff Switch off the machine
--reboot Reboot the machine
-f --force Force immediate halt/power-off/reboot
-w --wtmp-only Don't halt/power-off/reboot, just write wtmp record
-d --no-wtmp Don't write wtmp record
--no-wall Don't send wall message before halt/power-off/reboot
reboot
功能:重启系统
命令格式:
reboot [OPTIONS...] [ARG]
选项:
--help Show this help
--halt Halt the machine
-p --poweroff Switch off the machine
--reboot Reboot the machine
-f --force Force immediate halt/power-off/reboot
-w --wtmp-only Don't halt/power-off/reboot, just write wtmp record
-d --no-wtmp Don't write wtmp record
--no-wall Don't send wall message before halt/power-off/reboot
hwclock
功能:显示或设定硬件时钟
命令格式:
hwclock [function] [option...]
常用选项:
-s, --hctosys:以硬件时钟为准,把系统时钟调整为与硬件时钟一样
-w, --systohc:以系统时钟为准,把硬件时钟调整为与系统时钟一样
date
功能:显示系统日期时间
命令格式:
date [OPTION]...[+FORMAT]
FORMAT:格式符
%F : 显示年月日
[root@localhost ~]# date +%F
2018-05-10
%T :显示时间
[root@localhost ~]# date +%T
21:07:52
%Y : 显示年份
[root@localhost ~]# date +%Y
2018
%m : 显示月份
[root@localhost ~]# date +%m
05
%d :显示日
[root@localhost ~]# date +%d
10
%H :显示小时
[root@localhost ~]# date +%H
21
%M :显示分钟
[root@localhost ~]# date +%M
10
%S :显示秒
[root@localhost ~]# date +%S
22
%s :从1970年(unix元年)到执行命令的那一刻经过的秒数。
设定时间:date [MMDDhhmm[[CC]YY][.yy]
月日时分 年 秒
[root@localhost ~]#date 051020552018.50
Thu May 10 20:55:50 CST 2018
五.Linux系统上获取命令的帮助信息
1.内部命令:
help COMMAND
2.外部命令:
(1)命令自带简要格式的使用帮助帮助
~]#COMMAND --help
(2)使用手册:manual
位置:/usr/share/man
~]#man COMMAND
使用手册:压缩格式的文件,有章节之分
/usr/share/man
man1,man2,....
1:用户命令
2:系统调用
3:C库调用
4:设备文件及特殊文件
5:文件格式:(配置文件格式)
6:游戏使用帮助
7:杂项
8:管理工具及守护进程
~]#man [1-8] COMMAND
~]#whatis COMMAND 可查看哪些章节下有帮助手册
注意:其执行过程是查询数据库进行的
手动更新数据库
~]#makewhatis
man 命令打开手册以后操作方法
翻屏
空格:向下翻
b键:向上翻
Ctrl+d:向下翻半屏
Ctrl+u:向上翻半屏
回车键:向文件尾部翻一行
k:向文件首部翻一行
G:跳转至最后一行
1G:跳转至文件首部
文本搜索:
/keyword:向下
?keyword:向上
n:与查找方向相同方向跳
N:与查找方向相反方向跳
(3)info COMMAND
获取命令的在线信息
(4)很多应用程序自带帮助文档:/usr/share/doc/APP-VERSION
README:程序相关的信息
INSTALL:安装帮助
CHANGES:版本迭代时的改动信息
(5)主流发行版官方文档
(6)程序官方的文档
(7)google
六.Linux发行版的基础目录名称命名法则及功用规定
1.命名规则:
(1)严格区分大小写
(2)目录也是文件,在同一路径下,两个文件不能同名
(3)支持使用出/以外的任意字符
(4)最长不能超过255个字符
2.Linux 发行版基础目录
/bin:供所有用户使用的基本命令程序文件
/sbin: 供系统管理使用的工具程序
/boot: 引导加载器必须用到的各静态文件,kernel,initramfs(initrd),grub等
/dev/: 存储特殊文件或设备文件
设备:
字符设备:线性设备
块设备:随机设备
/etc:系统程序的配置文件目录,只能为静态
/home:普通用户家目录集中目录
/root :管理员的家目录;可选;
/lib: 为系统启动或根文件系统上的应用程序(/bin,/sbin等)提供共享库,以及为内核提供内核模块
libc.so.*:动态链接的C库
ld*:运行时连接器/加载器
moduls/:用户存储内核模块的目录
/lib64 :64位系统特有的存放64位共享库的目录
/media :便携式设备的挂载点,cdrom,
/mnt : 其他文件系统的临时挂载点
/opt : 附加应用程序的安装位置:可选目录;
/srv : 当前主机为服务提供的数据;
/tmp : 为那些会产生临时文件的程序提供用于存储临时文件的目录,可供所有用户写入操作
/usr :全局共享的只读数据路径
bin
lib
sbin
lib64
include :C 程序头文件
share : 命令手册业和自带文档等架构特有的文件存放位置
local :让系统管理员安装本地应用程序,也用于安装第三方应用程序
src :程序源码文件的存放位置
x11R6:X-Window程序存放位置
/var : 存储常发生变化的数据目录
cache Application cache data
lib Variable state information
local Variable data for /usr/local
lock Lock files
log Log files and directories
opt Variable data for /opt
run Data relevant to running processes
spool Application spool data
tmp Temporary files preserved between system reboots
/proc :虚拟文件系统,内核及进程存储其相关信息,它们多为内核参数
/sys :sysfs虚拟文件系统提供一种比/proc更为理想的访问内核数据的途径,主要作用为管理linux设备提供统一模型的接口.
/sys/devices 这是内核对系统中所有设备的分层次表达模型,也是 /sys 文件系统管理设备的最重要的目录结构,下文会对它的内部结构作进一步分析;
/sys/dev 这个目录下维护一个按字符设备和块设备的主次号码(major:minor)链接到真实的设备(/sys/devices下)的符号链接文件,它是在内核 2.6.26 首次引入;
/sys/bus 这是内核设备按总线类型分层放置的目录结构, devices 中的所有设备都是连接于某种总线之下,在这里的每一种具体总线之下可以找到每一个具体设备的符号链接,它也是构成 Linux 统一设备模型的一部分;
/sys/class 这是按照设备功能分类的设备模型,如系统所有输入设备都会出现在 /sys/class/input 之下,而不论它们是以何种总线连接到系统。它也是构成 Linux 统一设备模型的一部分;
/sys/block 这里是系统中当前所有的块设备所在,按照功能来说放置在 /sys/class 之下会更合适,但只是由于历史遗留因素而一直存在于 /sys/block, 但从 2.6.22 开始就已标记为过时,只有在打开了 CONFIG_SYSFS_DEPRECATED 配置下编译才会有这个目录的存在,并且在 2.6.26 内核中已正式移到 /sys/class/block, 旧的接口 /sys/block 为了向后兼容保留存在,但其中的内容已经变为指向它们在 /sys/devices/ 中真实设备的符号链接文件;
/sys/firmware 这里是系统加载固件机制的对用户空间的接口,关于固件有专用于固件加载的一套API,在附录 LDD3 一书中有关于内核支持固件加载机制的更详细的介绍;
/sys/fs 这里按照设计是用于描述系统中所有文件系统,包括文件系统本身和按文件系统分类存放的已挂载点,但目前只有 fuse,gfs2 等少数文件系统支持 sysfs 接口,一些传统的虚拟文件系统(VFS)层次控制参数仍然在 sysctl (/proc/sys/fs) 接口中中;
/sys/kernel 这里是内核所有可调整参数的位置,目前只有 uevent_helper, kexec_loaded, mm, 和新式的 slab 分配器等几项较新的设计在使用它,其它内核可调整参数仍然位于 sysctl (/proc/sys/kernel) 接口中 ;
/sys/module 这里有系统中所有模块的信息,不论这些模块是以内联(inlined)方式编译到内核映像文件(vmlinuz)中还是编译为外部模块(ko文件),都可能会出现在 /sys/module 中:
/sys/power 这里是系统中电源选项,这个目录下有几个属性文件可以用于控制整个机器的电源状态,如可以向其中写入控制命令让机器关机、重启等。
/sys/slab (对应 2.6.23 内核,在 2.6.24 以后移至 /sys/kernel/slab) 从2.6.23 开始可以选择 SLAB 内存分配器的实现,并且新的 SLUB(Unqueued Slab Allocator)被设置为缺省值;如果编译了此选项,在 /sys 下就会出现 /sys/slab ,里面有每一个 kmem_cache 结构体的可调整参数。对应于旧的 SLAB 内存分配器下的 /proc/slabinfo 动态调整接口,新式的 /sys/kernel/slab/<slab_name> 接口中的各项信息和可调整项显得更为清晰。
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/98313
评论列表(1条)
命令可以用专门的命令行 格式写。