; Linux基础知识(一)-linux哲学思想,基础命令,FHS | Linux运维部落

Linux基础知识(一)-linux哲学思想,基础命令,FHS

1.描述计算机的组成及其功能

CPU,输入,输出,内存(memory),存储器(外存,磁盘)

这种结构称为: 冯诺依曼 机

2.按系列罗列Linux 的发行版,并描述不通发行版之间的联系和区别.

操作系统发展史:
day01#lesson03
day01#lesson04

什么是Linux发行版(Linux distribution)?
GNU组织发布的都是源代码,想使用就需要将源码编译成二进制.但是过程复杂.
所以有不同维护者或组织,来进行编译成二进制.这就是发行版.所以发行版种类很多.

Linux 发行版 =  Linux 内核(Kernel) + 众多软件工具(Application).

三大分支:debian,Slackware,RedHat

Debian:

  • Ubuntu

  • Knopix

Slackware:

  • S.u.S.E

    • OpenSUSE

RedHat:
RedHat 9.以后分为RedHat Enterprise Linux:RHEL 和Fedora Core

  • RedHat Enterprise Linux:RHEL

    • Centos:Community Enterprise OS : 可以看做是RedHat的山寨版.

  • Fedora Core:每6个月发行一个版本.

linux发展史:https://zh.wikipedia.org/wiki/Linux历史#.E5.A4.A7.E4.BA.8B.E5.B9.B4.E8.A1.A8
linux发行版分支时间线:
https://upload.wikimedia.org/wikipedia/commons/1/1b/Linux_Distribution_Timeline.svg?uselang=zh-cn
下载:https://commons.wikimedia.org/wiki/File:Linux_Distribution_Timeline.svg?uselang=zh-cn

Linux内核:https://www.kernel.org/

3.描述Linux的哲学思想,并按照自己的理解对其进行解释

1.一切皆文件 把几乎所有资源都抽象为文件形式,包括硬件设备,设置通信接口. open().read(),write(),close(),delete(),create()
2.由众多功能单一的程序组成,一个程序只做一件事.并且做好.
3.尽量避免和用户交互 易于以编程的方式实现自动化任务.
4.使用文本文件保存配置信息 文本是最容易实现的底层接口,可以用简单的编辑器就可以操作.

文件是什么?众多的文件如何有效的组织起来?
目录:路径映射.
文件:存储空间存储的一段流式数据,对数据可以做到按名存取.

文件系统:   层级结构,有索引.
/:  原始初起点.
倒置树状结构;

如:/dev/pts/2
最左侧/:表示根路径
其他的/:表示路径分隔符
Linux路径分隔符是/
windows是
文件路径表示:
绝对路径:从根表示的路径
相对路径:从当前位置表示的路径

文件名使用法则:
严格区分字符大小写:file1,File1 ,FILE1 是不同的.
目录也是文件,同一路径下,文件不能同名
支持/以外的任意字符.
最长不超过255字符.

用户有家目录:
用户的起始目录,普通用户管理文件的位置.

工作目录:
basename : 最右侧的文件名或目录名
dirname:basename左侧的路径

命令:
~]# basename 文件路径或目录路径/PATH/TO/SOMEFILE
SOMEFILE
~]# dirname 文件路径或目录路径/PATH/TO/SOMEFILE
/PATH/TO


4.说明Linux系统命令的使用格式,详细介绍ifconfig,echo,tty,startx,export.pwd,history,shutdown,poweroff,reboot,hwclock,date命令的使用,并配合相应的示例阐述.

day02#lesson03

[root@nodel ~]# COMMAND
prompt:
root:当前登录的用户
nodel:当前主机的主机名.非完整格式
~ :用户当前所在的目录,也成为工作目录
#:命令提示符
#:管理员账号,为root,最高权限,能执行所有操作
$:普通用户.非root用户.不具有管理权限,不能执行系统

Linux命令的语法通用格式:
# COMMAND OPTIONS ARGUMENTS
COMMAND :
发起命令:请求内核将某一个二进制程序运行为一个进程.

程序–>进程
静态–>动态(有生命周期)

命令本身是一个可执行的程序文件:二进制的格式的文件,有可能会调用共享库文件:
多数系统程序文件都存放在:
/bin, /sbin, /usr/bin, /usr/sbin , /usr/local/bin , /usr/local/sbin
普通命令:/bin, /usr/bin, /usr/local/sbin
管理命令:/sbin , /usr/sbin , /usr/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

注意:并非所有的命令都有一个在某目录下对应的的可执行文件

命令必须遵循特定格式规范:windows(exe,msi) , linux(ELF)
查看文件类型:
~]#file 文件路径


命令分为两类:
由shell程序的自带的命令:内置命令(builtin)
独立的可执行程序文件,文件名即命令名:外部命令

shell程序是独立的程序,负责解析用户提供的命令:
环境变量:
PATH:从哪些路径中查找用户键入的命令字符串对应的命令文件:(查找顺序,从左往右)
~]# echo $PATH

[root@localhost ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
查看命令类型:
type COMMAND

OPTIONS:
指定命令的运行特性;

选项有两种表现形式:
长选项:  –word ,如:–help , –human -readable
长选项 不能合并
短选型:-C  如:-l , -d
有些命令选项没有-
如果多个短类型选项可以进行合并,-l -d –> -ld
ARGUENTS:

命令作用的对象,就是命令对什么有效.

不同的命令参数:有些命令可以同时带多个参数,多个参数之间已空白字符分隔

如:
~]# ls -ld /var /etc

常用命令:
ifconfig,echo,tty,startx,export.pwd,history,shutdown,poweroff,reboot,hwclock,date

ifconfig:
查看IP地址:
ifconfig或ip addr show

echo:
echo 回显
echo [SHORT-OPTION]… [STRING]…
echo LONG-OPTION

-n     do not output the trailing newline 不加换行符
-e     enable interpretation of backslash escapes  让转义生效
\n:换行
\t :tab键,制表符

STRING可以使用引号,
单引号:强引用.变量不执行替换
双引号:弱引用 , 变量会被替换
注意:变量正规引用使用${name}

tty:
查看当前设备终端
[root@localhost ~]# tty
/dev/pts/0

startx:
启动桌面程序.

centos7 最小化安装的话,没有桌面应用.可以参考如下方式安装,
http://unix.stackexchange.com/questions/181503/how-to-install-desktop-environments-on-centos-7
使用xshell远程ssh连接可能启动不了桌面.

export:
将shell变量输出为环境变量,或者将shell函数输出为环境变量。

pwd:
printing working directory
显示工作目录

history:
命令历史:shell进程会其会话中保存此前用户提交执行过的命令;
~]# history
定制history的功能,可通过环境变量实现:
HISTSIZE:shell进程可保留的命令历史的条数;
HISTFILE:持久保存命令历史的文件;
.bash_history
HISTFILESIZE:命令历史文件的大小;

eg:

[root@localhost ~]# echo $HISTSIZE 
1000 
[root@localhost ~]# echo $HISTFILE 
/root/.bash_history 
[root@localhost ~]# echo $HISTFILESIZE 
1000

命令用法:
history [-c] [-d 偏移量] [n]
或 history -anrw [文件名]
或 history -ps 参数 [参数…]

-c: 清空命令历史;
-d offset:删除指定命令历史, 如 history -d 10 2 删除第10条历史
-r: 从文件读取命令历史至历史列表中;
-w:把历史列表中的命令追加至历史文件中;
history n:显示最近的n条命令;

调用命令历史列表中的命令:
!#:再一次执行历史列表中的第#条命令;
!!:再一次执行上一条命令;
!STRING:再一次执行命令历史列表中最近一个以STRING开头的命令;

注意:命令的重复执行有时候需要依赖于幂等性;

调用上一条命令的最后一个参数:
快捷键:ESC, .
字符串:!$

控制命令历史记录的方式:
环境变量:HISTCONTROL
ignoredups:忽略重复的命令;
ignorespace:忽略以空白字符开头的命令;
ignoreboth:以上两者同时生效;

修改变量的值:
NAME='VALUE'

shutdown:
关机或重启命令;
shutdown [OPTIONS…] [TIME] [WALL…]

OPTIONS:
-h : halt
-r:重启
-c:取消
TIME:
now
hh:mm : 指定时间
+m: 几分钟后

WALL:发送广播

poweroff:
关机命令:
Centos 7:
~]# systemctl poweroff
~]# systemctl reboot

*:
~]# poweroff
~]# reboot
~]# halt
reboot:
重启;
hwclock:
hwclock – query or set the hardware clock (RTC)
查询或设置硬件时钟

hwclock [function] [option…]

option:
-s : –hctosys : 已硬件为准,把系统调整为与预硬件时间相同
-w : –systohc : 已系统为准,把硬件调整为与系统时间相同

  1. 1[root@localhost ~]# date 


  2. 2Mon Sep 19 16:38:51 EDT 2016 


  3. 3[root@localhost ~]# hwclock 


  4. 4Mon 19 Sep 2016 01:39:12 PM EDT  –0.532864 seconds 


  5. 5[root@localhost ~]# hwclock -s 


  6. 6[root@localhost ~]# date 


  7. 7Mon Sep 19 13:39:46 EDT 2016 


date:
显示日期时间:
date [OPTION]… [+FORMAT]
FORMAT:格式符
%F     full date; same as %Y-%m-%d
%T     time; same as %H:%M:%S
%Y     year
%m     month (01..12)
%d     day of month (e.g., 01)
%H     hour (00..23)
%I     hour (01..12)
%M     minute (00..59)
%S     second (00..60)
%s     seconds since 1970-01-01 00:00:00 UTC    //时间戳

  1. 1[root@localhost ~]# date 


  2. 2Mon Sep 19 13:02:31 EDT 2016 


  3. 3[root@localhost ~]# date +%F 


  4. 420160919 


  5. 5[root@localhost ~]# date +%T 


  6. 613:09:08 


  7. 7[root@localhost ~]# date +'%Y-%m-%d %H:%M:%S' 


  8. 820160919 13:11:01 


  9. 9[root@localhost ~]# date +%s 


  10. 101474305077 


设定日期时间:
date [MMDDhhmm[[CC]YY][.ss]]    //月日小时分钟年份(2位或4位).秒钟

  1. 1[root@localhost ~]# date 101008082013.08 


  2. 2Thu Oct 10 08:08:08 EDT 2013 


  3. 3[root@localhost ~]# date 0919161916.08 


  4. 4Mon Sep 19 16:19:08 EDT 2016 


5.如何在Linux系统上获取命令的帮助信息,请详细列出,并描述man文档的章节是如何划分的,

day02#lesson03
获取命令的帮助:
内部命令:
help COMMAND

外部命令:
1.命令自带简要格式的使用帮助
~]# COMMAND –help
2.使用手册
位置: /usr/share/man

  1. 1[root@localhost ~]# ls /usr/share/man 


  2. 2cs  es  id  ko     man1p  man2x  man3x  man5   man6x  man8   man9x  pt     sk  zh_CN 


  3. 3da  fr  it  man0p  man1x  man3   man4   man5x  man7   man8x  mann   pt_BR  sv  zh_TW 


  4. 4de  hu  ja  man1   man2   man3p  man4x  man6   man7x  man9   pl     ru     tr 


~]# man COMMAND
man 帮助文档结构:
SECTION: NAME:功能性说明
SYNOPSIS:语法格式
DESCRIPTION:描述
OPTIONS:选项
EXAMPLES:示例
AUTHOR:作者
BUGS:报告陈谷BUG的方式
SEE ALSO:参考
…等等

SYNOPSIS:语法格式
[] : 可选内容
<>:必须
a|b|c : 多选一
… :同类内容可以出现多个.

使用手册:压缩格式的文件,有章节之分
1.用户命令
2.系统调用
3.C库调用
4.设备文件和特殊文件
5.文件格式(配置文件格式)
6.游戏使用帮助
7.杂项
8.管理工具和守护进程

~]# man CHAPTER COMMAND     查找指定章节下手册
并非每个COMMAND在所有章节下都有手册
查看:
~]# whatis COMMAND

[root@localhost ~]# whatis passwd
sslpasswd (1ssl)     – compute password hashes
passwd (1)           – update user's authentication tokens

注意:其执行过程是查询数据库进行的.
手动更新数据库:
~]# make whatis

man命令打开手册的操作方法:
翻屏:
空格行:向文件尾翻一屏
b:向文件首部翻一屏
Ctrl+D:向文件尾翻半屏
Ctrl+u:向文件首翻半屏
回车:向文件尾翻一行
k:向文件首部翻一行
G:跳转到最后一行
#G:跳转到指定行
1G:跳转至文件首部
查找:
/keyword:从首部向尾部查找,不区分大小写
?keyword:从尾部向首部查找
n:与查找命令方向相同
N:与查找命令方向相反
退出:
q:退出

man命令的选项:
-M  /PATH/TO/SOMEDIR 到指定目录下查找命令手册并打开

3.info COMMAND
获取命令的在线文档
4.应用自带的帮助文档
/usr/share/doc/APP-VERSION
5.主流发行版的官方文档
如:
6.程序的官方文档
7.搜索引擎
google
关键字 filetype:pdf    //查找pdf
关键字 site:域名     //查找某个域名下面的资料

推荐书籍:google hacking技术手册:
http://down.51cto.com/data/1867431
http://www.hicode.cn/download/view-software-19272.html

6.请罗列Linux发行版的基础目录名称命名法及功用规定

FHS:
Filesystem Hierarchy Standard : 文件系统层级标准

  1. 1[root@localhost ~]# ls / 


  2. 2bin  boot  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var 


  3. 3 


/bin:所有用户可用的基本命令程序文件;
/sbin:供系统管理使用的工具程序;
/boot:引导加载器必须用到的各静态文件:kernel, initramfs(initrd), grub等;
/dev:存储特殊文件或设备文件;

  • 设备有两种类型:字符设备(线性设备)、块设备(随机设备);

/etc:系统程序的配置文件,只能为静态;
/home:普通的家目录的集中位置;一般每个普通用户的家目录默认为此目录下与用户名同名的子目录,/home/USERNAME;
/root:管理员的家目录;可选;
/lib:为系统启动或根文件系统上的应用程序(/bin, /sbin等)提供共享库,以及为内核提供内核模块

  • libc.so.*:动态链接的C库;

  • ld*:运行时链接器/加载器;

  • modules:用于存储内核模块的目录;

/lib64:64位系统特有的存放64位共享库的路径;

1
64位特有

/media:便携式设备挂载点,U盘,cdrom, floppy等;
/mnt:其它文件系统的临时挂载点;
/opt:附加应用程序的安装位置;可选路径;第三方
/srv:当前主机为服务提供的数据;
/tmp:为那些会产生临时文件的程序提供的用于存储临时文件的目录;可供所用户执行写入操作;有特殊权限;
/usr:usr Hierarchy,全局共享的只读数据路径;
子目录:

  • bin, sbin

  • lib, lib64

  • include:C程序头文件;

  • share:命令手册页和自带文档等架构特有的文件的存储位置

  • local:另一个层级目录;

  • X11R6:X-Window程序的安装位置

  • src:程序源码文件的存储位置

/usr/local:Local hierarchy,让系统管理员安装本地应用程序;也通常用于安装第三方程序;
/var:/var Hierarchy,存储常发生变化的数据的目录;
子目录:

  • 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:基于内存的虚拟文件系统,用于为内核及进程存储其相关信息;它们多为内核参数,例如net.ipv4.ip_forward, 虚拟为net/ipv4/ip_forward, 存储于/proc/sys/, 因此其完整路径为/proc/sys/net/ipv4/ip_forward;
/sys:sysfs虚拟文件系统提供了一种比proc更为理想的访问内核数据的途径;其主要作用在于为管理Linux设备提供一种统一模型的的接口;

/sys参考:
https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/
FHS参考:
http://www.pathname.com/fhs/
http://www.pathname.com/fhs/pub/fhs-2.3.html

原创文章,作者:luoluo,如若转载,请注明出处:/48078

评论列表(1条)

  • 马哥教育
    马哥教育 2016-09-22 09:49

    看的出来很用心,写的很好,多注意一下排版的问题

联系我们

400-080-6560

在线咨询:点击这里给我发消息

邮件:1660809109@qq.com

工作时间:周一至周五,9:30-18:30,节假日同时也值班

友情链接:万达娱乐直属QQ  万达主管  万达娱乐招商QQ  测试  万达开户  万达招商  华宇招商  万达开户  万达招商QQ