Linux基础知识
======================
##1、计算机的组成及其功能
计算机五大组成部件:运算器、控制器、存储器、输入设备和输出设备。
下面分别介绍这五大组件的主要功能:
1)、运算器:实现算术运算和逻辑运算的部件。
2)、控制器:计算机的指挥系统。控制器通过地址访问存储器,从存储器中取出指令,经译码器分析后,根据指令分析结果产生相应的操作控制信号作用于其他部件,使得各部件在控制器控制下有条不紊地协调工作。
3)、存储器:是计算机中用来存放所有数据和程序的记忆部件,它的基本功能是按指定的地址存(写)入或者取(读)出信息。
4)、输入设备:是向计算机中输入信息(程序、数据、声音、文字、图形、图像等)的设备。常见的输入设备有:键盘、鼠标、图形扫描仪、触摸屏、条形码输入器、光笔等。 外存储器也是一种输入设备。
5)、输出设备:主要有显示器、打印机和绘图仪等。外存储器也当作一种输出设备。
##2、Linux发行版
Linux发行版就是由Linux内核与各种常用软件的集合产品,如今全球大约有数百款的Linux发行版本(如下图部分Linux发行版)。
**1)、发行版之间联系**
既然同属这个Linux大家族,那么其必然遵循“万变不离其宗”的关系,即它们的身上都流淌着相同的”血脉” —- “Linux内核”。
– Linux内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序;
– 不同发行版的定位无非两种,致力于个人桌面或企业服务。
**2)、发行版之间区别**
不同linux发行版之间主要区别如下两点:
– Linux这个生态环境中,内核有不同的版本,相应内核驱动也要配合不同版本内核安装;
– 不同发行版有自己专用的包管理器。
##3、Linux哲学思想
Linux哲学思想:
**1)、一切皆文件**
普通的文件,目录、字符设备、块设备、 套接字等在 Unix/Linux 中都是以文件被对待;它们虽然类型不同,但是对其提供的却是同一套操作界面。
**2)、小型,单一用途的程序**
程序和可执行文件不要太复杂,这样才能保证了linux内核的高效运行。
**3)、连接程序,共同完成复杂功能**
复杂的任务可以通过连接多个简单的程序实现复杂的功能。
**4)、避免令人困惑的用户界面**
linux是开源的,无论什么问题都可以通过简洁的命令行实现 排错,修改系统的配置,一切都是简洁明了为基础。
**5)、配置数据存储在文本中**
linux所有的配置文件都存放在文本配置文件当中,无论什么配置修改都只需修改其配置文件即可。
##4、Linux常用命令介绍
Linux命令是在SHELL的命令提示符“#”或“$”后输入,命令格式如下:
**命令** **[选项]** **[参数]**
下面介绍几个常用命令:
**1)、ifconfig**
ifconfig命令用于显示或设置网络设备。
ifconfig可设置网络设备的状态,或是显示目前的设置。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>语法</font></td></tr></table>
“`
ifconfig [-v] [-a] [-s] [interface]
ifconfig [-v] interface [aftype] options | address …
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>参数说明</font></td></tr></table>
“`
add<地址> 设置网络设备IPv6的IP地址。
del<地址> 删除网络设备IPv6的IP地址。
down 关闭指定的网络设备。
<hw<网络设备类型><硬件地址> 设置网络设备的类型与硬件地址。
io_addr<I/O地址> 设置网络设备的I/O地址。
irq<IRQ地址> 设置网络设备的IRQ。
media<网络媒介类型> 设置网络设备的媒介类型。
mem_start<内存地址> 设置网络设备在主内存所占用的起始地址。
metric<数目> 指定在计算数据包的转送次数时,所要加上的数目。
mtu<字节> 设置网络设备的MTU。
netmask<子网掩码> 设置网络设备的子网掩码。
tunnel<地址> 建立IPv4与IPv6之间的隧道通信地址。
up 启动指定的网络设备。
-broadcast<地址> 将要送往指定地址的数据包当成广播数据包来处理。
-pointopoint<地址> 与指定地址的网络设备建立直接连线,此模式具有保密功能。
-promisc 关闭或启动指定网络设备的promiscuous模式。
[IP地址] 指定网络设备的IP地址。
[网络设备] 指定网络设备的名称。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
“`
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.106 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::e9a2:388b:e4ed:b9d5 prefixlen 64 scopeid 0x20<link>
inet6 fe80::88b:45f3:ca4e:9586 prefixlen 64 scopeid 0x20<link>
inet6 fe80::609c:f17d:a461:bca prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:f8:80:43 txqueuelen 1000 (Ethernet)
RX packets 232 bytes 47329 (46.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 85 bytes 32435 (31.6 KiB)
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 1 (Local Loopback)
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
“`
**2)、echo**
echo命令用于字符串的输出。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>语法</font></td></tr></table>
“`
echo [SHORT-OPTION]… [STRING]…
echo LONG-OPTION
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>参数说明</font></td></tr></table>
“`
-n 不要在最后自动换行
-e 若字符串中出现以下字符,则特别加以处理,而不会将它当成一般
若字符串中出现以下字符,则特别加以处理,而不会将它当成一般文字输出:
\a 发出警告声;
\b 删除前一个字符;
\c 最后不加上换行符号;
\f 换行但光标仍旧停留在原来的位置;
\n 换行且光标移至行首;
\r 光标移至行首,但不换行;
\t 插入tab;
\v 与\f相同;
\\ 插入\字符;
\nnn 插入nnn(八进制)所代表的ASCII字符;
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
“`
[root@localhost ~]# echo -n test
test[root@localhost ~]#
[root@localhost ~]#
[root@localhost ~]# echo -e “a\bdddd” #”\b”参数忽略前面的字母
dddd
“`
**2)、tty**
tty命令用于打印标准输入的文件名称。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>语法</font></td></tr></table>
“`
tty [OPTION]…
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>参数说明</font></td></tr></table>
“`
-s或–silent或–quiet 不显示任何信息,只回传状态代码。
–help 在线帮助。
–version 显示版本信息。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
显示当前终端
“`
# tty
/dev/pts/4
“`
**3)、startx**
startx命令初始化一个X会话。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>语法</font></td></tr></table>
“`
startx [OPTION]…
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>参数说明</font></td></tr></table>
“`
-d Display :0 指定在启动过程中传递给 X 客户机的 X 服务器的显示名称。
-m Window_Manager 当未找到 startup 脚本时,启动窗口管理器。
-r Resources 当未找到 startup 脚本时,装入资源文件。
-t 为一个 X 终端启动 X 客户机。
-w 为工作站上的 X 窗口会话启动 X 服务器和 X 客户机。
-wait 当 xdm 命令调用 startx 时,防止重新启动 X 会话。
-x Startup 使用 startup 脚本启动 X 窗口会话。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
要在工作站上或 X 终端上启动 X 会话,请输入:
“`
startx
“`
要在工作站上强制启动 X 会话,请输入:
“`
startx -w
“`
**4)、export**
export命令用于设置或显示环境变量。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>语法</font></td></tr></table>
“`
export [-fnp][变量名称]=[变量设置值]
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>参数说明</font></td></tr></table>
“`
-f 代表[变量名称]中为函数名称。
-n 删除指定的变量。变量实际上并未删除,只是不会输出到后续指令的执行环境中。
-p 列出所有的shell赋予程序的环境变量。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
列出当前的所有环境变量:
“`
# export -p //列出当前的环境变量值
declare -x HOME=“/root“
declare -x LANG=“zh_CN.UTF-8“
declare -x LANGUAGE=“zh_CN:zh“
declare -x LESSCLOSE=“/usr/bin/lesspipe %s %s“
declare -x LESSOPEN=“| /usr/bin/lesspipe %s“
declare -x LOGNAME=“root“
declare -x LS_COLORS=““
declare -x MAIL=“/var/mail/root“
declare -x OLDPWD
declare -x PATH=“/opt/toolchains/arm920t-eabi/bin:/opt/toolchains/arm920t-eabi/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games“
declare -x PWD=“/root“
declare -x SHELL=“/bin/bash“
declare -x SHLVL=“1“
declare -x SPEECHD_PORT=“6560“
declare -x SSH_CLIENT=“192.168.1.65 1674 22“
declare -x SSH_CONNECTION=“192.168.1.65 1674 192.168.1.3 22“
declare -x SSH_TTY=“/dev/pts/2“
declare -x TERM=“XTERM“
declare -x USER=“root“
declare -x XDG_SESSION_COOKIE=“93b5d3d03e032c0cf892a4474bebda9f-1273864738.954257-340206484“
“`
**5)、pwd**
export命令用于显示工作目录。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>语法</font></td></tr></table>
“`
pwd [–help][–version]
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>参数说明</font></td></tr></table>
“`
–help 在线帮助。
–version 显示版本信息。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
查看当前目录:
“`
# pwd
/root
“`
**6)、history**
history命令用于显示指定数目的指令命令。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>语法</font></td></tr></table>
“`
history(选项)(参数)
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>参数说明</font></td></tr></table>
“`
-c:清空当前历史命令;
-a:将历史命令缓冲区中命令写入历史命令文件中;
-r:将历史命令文件中的命令读入当前历史命令缓冲区;
-w:将当前历史命令缓冲区命令写入历史命令文件中。
“`
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
打印最近N条命令:
“`
# history 5
998 ll
999 pwd
1000 cd
1001 cat fstab.patch
1002 history 5
“`
**7)、shutdown&poweroff&reboot**
这些命令用于设备关机或重启。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
shutdown命令会给系统计划一个时间关机。它可以被用于停止、关机、重启机器。:
“`
# shutdown
# shutdown now
# shutdown 13:20
# shutdown -p now ### 关闭机器
# shutdown -H now ### 停止机器
# shutdown -r09:35 ### 在 09:35am 重启机器
“`
poweroff命令会发送一个 ACPI 信号来通知系统关机:
“`
# poweroff ### 关闭机器
# poweroff –halt ### 停止机器
# poweroff –reboot ### 重启机器
“`
reboot命令通知系统重启:
“`
# reboot ### 重启机器
# reboot –halt ### 停止机器
# reboot -p ### 关闭机器
“`
**7)、hwclock&date**
linux的时间分为 硬件时间 和 系统时间。
硬件时间 就是指RTC中的时间,hwclock命令就是对这个时间操作。
系统时间 是系统开机时读取硬件时间作为系统的时间,此后系统时钟独立运作,在系统关机时再将系统时间写回RTC。
<table><tr><td bgcolor=#000000><font color=”#FFFFFF”>示例</font></td></tr></table>
 ;hwclock显示硬件时间:
“`
# hwclock
2018年05月25日 星期五 14时36分47秒 -0.662200 秒
# hwclock -r
2018年05月25日 星期五 14时36分51秒 -0.566999 秒
# hwclock –show
2018年05月25日 星期五 14时36分56秒 -0.513618 秒
“`
date命令显示系统时间,并可以按需求输出特定格式时间:
“`
# date
2018年 05月 25日 星期五 15:11:28 CST
date +”%Y-%m-%d”
2015-12-07
“`
##5、如何查看命令帮助
**1)、help Command**
适用于内部命令,举例如下:
“`
# type cd
cd is a shell builtin
# help cd
# help cd
cd: cd [-L|[-P [-e]]] [dir]
Change the shell working directory.
Change the current directory to DIR. The default DIR is the value of the
HOME shell variable.
The variable CDPATH defines the search path for the directory containing
DIR. Alternative directory names in CDPATH are separated by a colon (:).
A null directory name is the same as the current directory. If DIR begins
with a slash (/), then CDPATH is not used.
If the directory is not found, and the shell option `cdable_vars’ is set,
the word is assumed to be a variable name. If that variable has a value,
its value is used for DIR.
Options:
-L force symbolic links to be followed
-P use the physical directory structure without following symbolic
links
-e if the -P option is supplied, and the current working directory
cannot be determined successfully, exit with a non-zero status
The default is to follow symbolic links, as if `-L’ were specified.
Exit Status:
Returns 0 if the directory is changed, and if $PWD is set successfully when
-P is used; non-zero otherwise.
“`
**2)、Command –help/-h**
适用于外部命令,举例如下:
“`
# ls –help
用法:ls [选项]… [文件]…
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor –sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, –all 不隐藏任何以. 开始的项目
-A, –almost-all 列出除. 及.. 以外的任何项目
–author 与-l 同时使用时列出每个文件的作者
-b, –escape 以八进制溢出序列表示不可打印的字符
“`
**3)、man Command**
适用于外部命令,举例如下:
“`
# man cd
注manual 手册是分章节的;man # Command (#表示章节号)
1、所有用户可以使用的命令
2、系统内核调用,不是每个命令都有系统调用(如:man 2 read)
3、库调用
4、特殊文件,如:/dev/tty1
5、文件格式(命令配置文件的语法,如:man 5 passwd)
6、游戏相关
7、杂项
8、管理员命令,如:fdisk
“`
**4)、info Command**
有超链接稳文档,info是信息页,提供作者、版本,什么时候发布等更详细信息,man手册是告诉你怎么用
**5)、README**
绝大多数程序都有相应的帮助文档,保存在/usr/share/doc文件夹中。
**6)、Google**
学会在搜索引擎上使用关键字查找遇到的问题。
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/99321