(17)——Linux引导流程
最后更新于:2022-04-01 14:44:46
## 一、系统引导流程
第一步:固件fireware(CMOS/BIOS)——POST加点自检(与操作系统无关)
这一步主要是检查硬盘等硬件是否能正常工作
CMOS:是固化在主板上,详细:[http://school.cfan.com.cn/news/cfannews/2007-06-06/1181111816d66664.shtml](http://school.cfan.com.cn/news/cfannews/2007-06-06/1181111816d66664.shtml)
BIOS:BIOS是固件的操作界面
CMOS是用来保存硬件参数信息的,而BIOS是用来修改这些参数的程序,简单地说:BIOS就是用来设置CMOS参数的手段,CMOS里面保存了BIOS设定的参数和结果,即“我们通过BIOS设置程序对CMOS参数进行修改”,比如我们需要修改系统启动顺序,在调整时,我们是通过BIOS设置为“光驱→硬盘→软驱”依次启动的,那么这个启动顺序的数据就保存在CMOS中。
hwclock硬件时钟(固化在固件中的时钟)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb949b1f.jpg)
可以看到我的系统时钟和硬件时钟不同,下面来修改系统时钟和硬件时钟。
如果hwclock是正确的
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb9613cb.jpg)
可以用hwclock –help 查看参数
第二步:
自举程序BootLoader(GRUB)——载入内核
MBR(mast boot record):位于磁盘的第一个柱面的第一个扇区
关于MBR详细请看:[http://blog.csdn.net/hbrqlpf/article/details/3007863](http://blog.csdn.net/hbrqlpf/article/details/3007863)
/etc/grub.conf配置文件中记录关于系统内核的详细信息,我们进去看一下
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb97fdb4.jpg)
系统内核版本是2.6.18
2:表示主版本号
6:表示次版本号(奇数表示测试版)
18:末版本号
后面还记录了内核文件的路径root=LABEL=/rhgb quiet initrd /initrd-2.6.18-128.e15.img
第三步:载入内核后(Kernel)——驱动硬件
启动进程(init)
系统首先会启动init进程,该进程启动后读取inittab文件,执行缺省运行级别,从而继续引导过程。在Linux系统中,init是第一个可以存在的进程,它的PID恒为1,但它必须向一个更高级的功能负责:PID为0的内核调度器(Kernel scheduler),从而获得CPU时间。
孤儿进程:父进程死掉后子进程还存在,则子进程被称为孤儿进程(系统检测到孤儿进程后会让init做父进程)。
僵尸进程:子进程死掉后父进程不知道,则子进程被称为僵尸进程。
第四步:读取执行配置文件/etc/inittab
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb9926cc.jpg)
0:表示关机
1:表示单用户模式(只有root账号,类似于Windows的安全模式,没有图形界面)
2:字符界面多用户模式,没有NFS服务
3:字符界面多用户模式,有NFS服务
4:待使用(自定义级别)
5:图形化的多用户模式(系统缺省级别)
6:表示重启
查看当前系统的运行级别(runlevel)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb9aefc6.jpg)
切换运行级别 ( init 级别)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb9c11fa.jpg)
## 二、inittab文件剖析
1、在inittab中所有条目采取以下格式
id:run-levels:action:process
id:标识符,一般为两位数字字母
run-level:指定运行级别,可以指定多个
action:指定运行状态
process:指定要运行的脚本/命令
2、action常用取值
initdefault:指定系统缺省启动的运行级别(例如在里面可以修改运行级别2后系统启动后进入字符界面)
sysinit:系统启动执行process中指定的命令。
wait:执行process中的命令,并等其结束后再执行其他命令
once:执行process中的命令,不等待其结束
ctrlaltdel:按下ctrl+alt+del时执行process指定的命令
powerfail:当出现电源错误时执行process指定的命令,不等待其结束
powerokwait:当电源恢复时执行process指定命令
respan:一旦process命令终止,便重新运行该命令
3、各个级别服务程序脚本
/etc/rc.d/init.d目录下包含各个运行级别的服务程序脚本
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb9dcaea.jpg)
/etc/rc.d/rc[0123456].d分别存放对应运行级别的服务程序脚本的符号链接,链接到init.d目录中的相应脚本
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb9f0de6.jpg)
K代表杀死该进程
S代表启动该脚本进程
K和S后面的数字代表执行顺序
(16)——Ubuntu中建立ftp服务
最后更新于:2022-04-01 14:44:43
1、安装vsftpd,如下图所示:sudo apt-get install vsftpd
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb824e60.jpg)
2、查看本机是否可以连接ftp
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb83fdbe.jpg)
如上图所示,发现login failed了,怎么办呢?我们来看看vsftpd的配置文件vsftpd.conf。![快哭了](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8babbf599.gif)
别急,我退不出去了,输入bye回车吧!
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb85cdbb.jpg)
咦![疑问](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-04-19_57160edc82666.gif)
,我的/etc下面怎么两个vsftpd.conf文件,先不要管下面这个/etc/init/vsftpd.conf ,下面我们进到配置文件/etc/vsftpd.conf中看看
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb87443d.jpg)
我们从里面可以看到这句话,匿名的用户默认是被禁止的,改成anonymous_enable=YES 按下Esc后输入 :wq 保存修改
有关vi编辑器的使用请看:[http://blog.csdn.net/dawanganban/article/details/9748023](http://blog.csdn.net/dawanganban/article/details/9748023)
接下来重启ftp服务
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb891371.jpg)
再次测试本地连接ftp
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb8a417f.jpg)
看见上面的 Login successful了吗?ok 接下来我们再从客户端远程连接一下ftp,先ping一下ip看通不通
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb8b915c.jpg)
可以ping通,如果不通的朋友可以检查一下网线和防火墙(Linux的),连接ftp试一下
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb8d69ac.jpg)
查看目录
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb8ec00f.jpg)
看到如上信息就说明ok啦,如果有的朋友使用win7或win8就会看不到上面的结果啦,去关闭防火墙(windows的),重新打开控制台连接一下试试吧。
下面我们开始上传文件吧
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb90cc8a.jpg)
怎么回事啊![惊讶](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-01-20_569f5ccae167f.gif)
,严重文件传输错误!,现在我们是匿名用户,ftp是不允许匿名上传的,匿名用户只能下载。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb92b6b2.jpg)
现在用普通用户登录,就可以上传了,你会发现用root用户不能登录,这是为什么呢?这是为了安全考虑,默认情况下不允许root上传。
(15)——文件系统
最后更新于:2022-04-01 14:44:41
## 一、文件结构
为了能在设备上存储与读取文件,我们需要在分区上创立文件系统
文件系统记录目录与文件我们称之为文件结构
每一个文件系统在Linux里都被解释成由一个根目录为起点的目录结构
Linux将各个文件系统挂载在系统目录树中使用
## 二、文件系统
对应不同的操作系统与设备,计算机里有许许多多文件系统
不同的文件系统存放、搜索文件的方式都有不同,所以Windows不能使用Linux硬盘数据。
Linux支持多种文件系统的读写 ,ext2 ext3 MS-DOS VFAT FAT BSD 部分也支持NTFS
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb7c405c.jpg)
df 命令:文件系统的磁盘空间使用情况报告
-T :printType 文件系统类型
-h :磁盘容量以易读的方式显示
还可以列出指定的文件系统类型
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb7d9741.jpg)
Linux自身最主要使用的是ext2/ext3文件系统
整个Linux认识的文件系统其实都是VFS在管理,用户并不需要知道每个分区上的文件系统是什么,VFS会主动帮我们做好读取操作。
## 三、ext2/ext3文件系统
ext2/ext3文件系统支持rwx权限及文件属性
ext2/ext3文件系统采用block+inode的方式存放文件
ext2/ext3文件系统上有一块空间被称为超级块(superblock)用于存放文件系统的元数据,诸如卷标名、block数、inode数等等。
inode存放文件的元数据,包含文件权限、属性、更改时间等等数据(相当于文件或目录的指针)
## 四、ReiserFS文件系统
一个非常优秀的文件系统
可轻松管理上百G的文件系统
先进的日志机制
高效的磁盘空间利用
独特的搜寻方式
## 五、文件属性
在ext2/3文件中,对每一个文件,还提供了额外的属性支持
用户可以用lsattr来检查文件的属性
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb7f048a.jpg)
系统用户可以用chattr来改变文件的属性 + 添加 - 删除
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb80fb2f.jpg)
添加了 i 属性则文件不可以被更改、不可以被重命名、不可以被删除
## 六、ext3文件系统
ext3文件系统即一个添加了日志功能的ext2,可与ext2文件系统无缝兼容
ext2文件系统可以通过增加日志的方式简单的升级为ext3文件系统
ext3文件系统支持三种日志模式
规则(默认,仅记录元数据)
日志化(将数据像元数据一样记录日志)
写回(只在fsck时发生)
## 七、使用文件系统
为了使用一个文件系统,往其中存读文件,用户需要先挂载该文件系统。
挂载文件系统的指令是mount
语法:mount -t 文件系统类型 [其他参数] 设备 挂载点
-t :文件系统类型,用于指定挂载文件系统的类型,现在不需要了,内核可以自动识别
-o:补充追加的参数
ext2文件系统默认采用的参数:rw、suid、dev、exec、auto、nouser、asyno
## 八、/etc/fstab
配置文件系统挂载信息
mount文件系统时若出现的参数不全,系统会从/etc/fstab中读取参数补全
系统启动会参考/etc/fstab中的配置项自动加载文件系统
也被fsck、dump、quotaon、swapon等程序使用
## 九、当前挂载文件系统
用户可以通过直接键入mount后回车来检查当前挂载中的文件系统
用户也可以通过查看/etc/mtab文件来查看当前挂载中的文件系统
由于时间原因,最后这几篇写的比较粗糙,望读者见谅,后面会及时补充。
(14)——硬件配置与管理
最后更新于:2022-04-01 14:44:38
## 一、设备文件
Linux沿袭了Unix的风格,将所有设备看成一个文件
设备文件分为两种:
块设备文件(b):比如硬盘、光驱
字符设备文件(c):比如串口、键盘
设备文件一般存放在/dev目录下
## 二、常用的块设备文件
/dev/hd[a-t] : IDE设备
/dev/sd[a-z] :SCSI设备 包括SATA设备和U盘
/dev/fd[0-7] :标准软驱
/dev/md[0-31] :软raid设备
loop[0-15] :本地回访设备
ram[0-19] :内存
## 三、常用字符设备文件
/dev/null :无限数据接收设备
/dev/zero :无限零资源
/dev/tty[0-31] :虚拟终端
/dev/ttyS[0-9] :串口
/dev/lp[0-3] :并口
/dev/console :控制台
/dev/fb[0-31] :framebuffer
## 四、常用的符号连接设备文件
/dev/cdrom ---->/dev/hd[a-t] ,sd[a-z] ![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb723df0.jpg)
/dev/modem----->/dev/ttyS[0-9]
/dev/pilot----->/dev/ttyS[0-9]
## 五、设备文件的使用
用户可以通过操作设备文件来完成对设备的操作。
echo hell > /dev/tty2
在第二个tty终端上显示’hello'
cp /dev/fd0 /dev/fd1
将第一个软驱中的软盘拷入第二个软驱中的软盘
dd if=/dev/hda of=/root/mbr bs=512 count=1
备份第一个硬盘上的mbr为/root目录下的mbr文件
## 六、dd命令
dd指令是一个功能强大的copy命令
支持在拷贝文件的过程中转换文件格式
支持指定范围的复制
常用参数
if = 文件名 :指定源文件
of=文件名:指定目标文件
bs=xxx :指定块的大小
count=n:指定复制块的数量
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb735476.jpg)
if相当于< of相当于 >
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb74763b.jpg)
## 七、mknod
系统用户可以用mknod指令来建立所需的设备文件
语法: mknod 文件名 文件类型 主号 从号
主号与从号可以在
/usr/share/doc/MAKEDEV-3.15.2/devices.txt中找到
也可以用MAKDEV创建
## 八、硬盘的结构
对于每一个硬盘
主引导记录/Master Boot Record/MBR
硬盘分区表/Standard Partition Table/SPT
主分区/Primary Partition
扩展分区/Extended Partition
逻辑分区/Logical Partition
## 九、硬盘分区
一块硬盘只能有四个分区
用户可以也只能将一个主分区变成扩展分区
在扩展分区,用户可以以链接表方式建立逻辑分区
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb75c4e3.jpg)
通常,硬盘的最小物理组成单位是扇区
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb7805ad.jpg)
主引导区:存放磁盘引导信息,MBR只能记录4个分区(主分区和扩展分区)其中扩展分区只能有一个,所以最多可以有下面分区方法:
P+P+P+P
P+P+P+E
主分区:
扩展分区:存放额外的分区信息(主引导分区MBR只能记录4个分区),扩展分区不能直接使用,要划分成逻辑分区,考虑到磁盘的连续性,一般建议将扩展分区放在最后面的柱面内。
如果一个硬盘安装在IDE1的主盘,分成6个分区,每个分区的代号是什么?
第一种分区方法:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb792630.jpg)
第二种分区方法:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb7aad9c.jpg)
上面是两种分区方法,还有其他的分区方法,在每个分区的最前面第一个扇区有一个特殊的快,称为超级块,方法一种扩展分区指向的是/dev/hda4的超级块,方法二中扩展分区指向的是/dev/hda2的超级块。
注意上面的第二种分区方式,/dev/hda2 /dev/hda3 /dev/hda3 已经被预留,所以扩展分区从/dev/hda5开始
## 十、特殊目录
1.建议不可与root分区分开的目录:
Linux在启动的时候,开始核心只会载入一个分区 / ,但是启动的时候会用到很多命令与函数库以及配置文件所以 /lib /sbin /bin /etc要和 / 在一个分区,/dev 是所有设备的目录,启动时使用,也要和 / 在一个分区。
2、建议最好独立成为单一分区的目录
也有一些目录由于安全和特殊需要,希望独立成为分区,例如:/home /usr /var /tmp等
/home :系统用户的家目录,使用最频繁的目录,一般会分配最大硬盘份额
/usr :程序的安装目录,也可以独立出来,读取也很频繁
## 十一、一般主机分区与目录的配置
系统通常是在/usr中,个人数据放在/home中,启动数据放在/etc中。可将系统划分为下面分区(可以参考)
/ 可分配约1G以内
/boot 大约50M就可以,启动文件并不大
/usr 通常比较大(安装数据)大概10G
/home 通常比较大(用户数据)剩下的空间
/var 至少1G以上
(13)——用户管理
最后更新于:2022-04-01 14:44:36
## 一、检查用户身份
用户可以使用下列指令了解用户身份
who :查询当前在线的用户
groups :查询用户所属组
id :显示当前用户信息
finger :查询用户信息
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb686177.jpg)
## 二、添加用户
用指令添加命令
useradd <username>
passwd <passwd>
系统实际添加用户的标准步骤
编辑 /etc/passwd 与 /etc/group
创建用户主目录
从 /etc/skel拷贝文件与目录
让新用户获得其主目录与文件的拥有权
给新用户一个密码
## 三、更改/删除用户
1、更改用户资料可以通过:
redhat - config - users 或 kusers之类的图形界面工具完成
在字符界面下可以使用usermod指令来更改
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb69bfd7.jpg)
重要参数: -c -d -e -G -g -S -u -p -L
设定用户密码过期
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb6afc97.jpg)
2、系统管理者可以用userdel指令来删除已存在的用户
参数-r可以帮助系统将一个用户的目录等一并删除。
## 四、/etc/passwd文件
passwd文件中记录的是用户的登录信息
每一行代表一个用户,用:分割成七项,即用户的基础登录信息。
添加或删除一个用户,最基础的操作,即在passwd文件中添加或删除个人记录
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb6c31d1.jpg)
login name :登录用名(比如:root)
passwd:密码(为了安全在另外一个文件)
uid:用户身份编号(uid是0则是系统管理员,1-99是保留给系统作为默认账户使用的,uid>=500则是一般账号)
gid:登录默认所在组编号(/etc/group)
full name :用户全名或注释
hom directory :用户主目录
shell :用户默认使用shell
## 五、Home 目录
login.defs中的create home选项决定系统在建立用户的时候是否同时创建其主目录
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb6d7330.jpg)
系统在建立用户主目录时,会将/etc/skel下的内容复制到新目录下。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb6e889b.jpg)
最后,系统会使该目录与其下的文件归属于新用户。
chown -R user.group 目录名
## 六、/etc/shadow
目前,Rad Hat Linux 默认将用户密码储存在/etc/shadow文件中
passwd文件默认权限为644,shadow文件默认权限为400
shadow文件支持密码过期设定功能
shadow文件中每一行表示一个系统用户的密码记录,用:号分割
用户可以通过authconfig来设定是否使用shadow文件及md5加密
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb70f574.jpg)
shadow文件详细
登录用名
用户密码(一般经过md5加密)
从1970年1月1日起到密码上一次更改的时间
密码再过几天可以被变更(0表示随时可以被变更)
密码再过几天必须被变更(99999表示永远不过期 )
密码过期后几天后账号会被取消
从1970年1月1日算起,多少天后账号失效
## 七、组管理
系统中组的信息,记录在/etc/group中
系统用户可以直接修改/etc/group文件达到更改组数据的目的,也可以使用以下指令
groupadd :添加一个组
groupdel:删除一个存在组
groupmod:更改组的信息
用户可用newgrp指令改变当前所在组
## 八、组文件
/etc/group中的每一行代表一个组,用:隔开不同项
group_name :组名
passwd:组密码(一般不用)
GID:组身份编号
user_list:组成员列表
(12)——系统监视2
最后更新于:2022-04-01 14:44:34
## 四、控制进程
kill :语法 kill [-signal] PID 向进程传送一个特定的讯号,默认为15(终结)
kill -l :列出所有可以由kill传递的讯号
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb5ccfb8.jpg)
1 :重启进程
2 :相对于ctrl + c
9 :强制结束进程
killall 后面可接进程名称
## 五、进程优先级
进程的优先级,用nice值来表示
nice :以一个不同的nice值来运行指令
进程默认nice值是0,范围-20~19,一般用户只能设置0~19,而root用户可以从-20到19,值越小优先级越高
nice -n num command
renice :改变一个运行进程的nice值
renice -n pid
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb5e201f.jpg)
在top中直接按下键盘r会出现如下,输入PID回车后在输入进程等级也可以改变
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb601c9d.jpg)
## 六、前台和后台
默认情况下,一个命令执行后,此指令将独占shell,并拒绝其他输入。我们称之为前台进程。反之则称为后台进程。
对每一个控制台,都允许多个后台进程。
对前台/后台进程的控制与调度,被称为任务控制。
## 七、将进程丢入后台
command & :将一个进程直接丢入后台运行。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb614c1e.jpg)
nohup command & :将一个进程直接丢入后台运行,而且在该控制台退出后,进程仍不挂断。
ctrl + z :将一个正在运行的前台进程暂停,并丢入后台。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb625b17.jpg)
## 八、工作
jobs :列出系统当前的后台进程
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb6388b9.jpg)
fg :将后台进程拉回到前台
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb64aa11.jpg)
bg :激活后台暂停的进程
## 九、/proc目录
/proc目录是一个虚拟的文件系统,包含了来自正在运行着的核心的信息
用户可以通过cat /proc/下的文件,来获得系统信息
这些信息包括系统硬件、网络设置、内存使用,及其他一些东西
/proc/sys目录下的文件,允许系统管理员更改,这些变动会直接影响当前核心
/proc/cmdline 系统的启动信息
/proc/cpuinfo cpu信息
/proc/devices 系统设备信息
/proc/filesystem
/proc/iterrupts
......
系统中所有进程都会以进程PID号作为目录名在/proc/目录下
注意:不要读取kcore文件
## 十、系统日志
系统日志记录着系统运行中的记录信息
在服务或系统发生故障的时候,通过查询系统日志,可以帮助我们诊断。
系统日志可以预警安全问题
系统日志一般都存放在/var/log目录下
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb65ea1f.jpg)
## 十一、常用的系统日志
cat /var/log/dmsg 或 dmsg
核心启动日志
/var/log/messages
系统报错日志
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb670595.jpg)
/var/log/maillog
邮件系统日志
/var/log/xferlog
FTP服务用日志
/var/log/secure
安全信息,系统登录与网络连接的信息
/var/log/wtmp
登录记录
(11)——系统监视1
最后更新于:2022-04-01 14:44:31
## 一、了解系统状况
uname:显示系统信息
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb4c0ef7.jpg)
hostname:显示主机名
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb4d2506.jpg)
last:列出最近的用户登录
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb4e4b49.jpg)
lastlog:列出每一个用户的最近登录情况
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb506e2b.jpg)
free:显示内存使用状况
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb51b49e.jpg)
还可以使用vmstat显示详细的内存信息
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb52ef60.jpg)
top:系统监视器
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb54272f.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb55fa69.jpg)
## 二、进程
系统通过进程来完成工作
每一个进程都有一个独立的进程号,系统通过调用进程号来调度操控进程。
系统的原始进程是init, init的PID总是1
一个进程可以产生另一个进程,除了init之外,所有的进程都有父进程。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb5783f1.jpg)
## 三、查询进程
查询进程的指令 ps [option]
ps -A 或 ps -e 列出所有进程
ps -a 显示与终端无关的所有进程
ps -u 列出有效用户的相关进程
ps -x 列出完整信息
ps -l 以一种详细的方式显示进程信息
ps -f 以一种完整的方式显示进程信息
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb58b3bb.jpg)
pstree 可以用来以树状的方式表现进程的父子关系
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb59cc07.jpg)
top是一个常用的系统监视工具(前面已经说过)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb5aeb8b.jpg)
(10)——bash2
最后更新于:2022-04-01 14:44:29
## 七、命令行表达式
命令行输出——“ ”
将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,则转义。
双引号不能将 \ $ ` ! 符号的特殊功能禁止
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb3f41ab.jpg)
命令行输出——' '
将一串字符当成一个字符串来对待,如果字符串中包含特殊含义的字符,不转义。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb4119ea.jpg)
执行引用符——· ·
引用命令的执行结果,也就是说引用号里面的内容会最先被执行。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb423b5c.jpg)
数学运算——$[ ]
在中括号内的表达式会被数学计算
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb434987.jpg)
逸脱符—— \
用于取消命令行中字符的特殊含义
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb44905d.jpg)
用于表示一行未结束
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb45a636.jpg)
命令行结束符—— ;
用于在一行内分隔两个独立命令,表示一行已结束,作用相当于回车键
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb46bcb2.jpg)
pwd ; ls -l
子shell激活——( )
在小括号内的命令行表示激活一个子shell后在子shell中运行
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb480e22.jpg)
## 八、逻辑运算符
shell命令行支持在同一行的多条命令中插入&& ||
&& :当前一条指令执行时再执行后一条指令
|| :当期一条指令执行失败时再执行后一条指令
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb49cba8.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb4ae543.jpg)
## 九、登录shell
默认情况下,在shell改变变量、umask、alias,只在此次登录中有效。一旦logout后再login,则设定恢复初始值。
一个通过登录而得到的shell,一般是用户的初始shell
在登录shell下激活的shell采用登录shell的环境设定
登录shell从配置文件中读取其环境设置
## 十、定制登录shell
bash在用户登录时从四个文件中读取环境设置
全局设置文件:
/etc/profile :针对系统整个环境设置,对所有用户,比如PATH、MAIL
/etc/bashrc :
用户设置文件
~/.bashrc
~/.bash_profile
## 十一、其他shell设定文件
~/.bash_logout :在用户logout的时候自动执行
~/.bash_history:用户login时自动读取其内容并加载到内存history记录中,logout时将内存history记录写入。
/etc/profile.d/*.sh :在/etc/profile中被执行,其中的环境设定,也会被全局引用
## 十二、常用快捷键
ctrl + d :输入已结束。在shell下相当于一个exit
ctrl + c :键盘中断请求。
ctrl + s & ctrl + q :暂停/恢复屏幕输出
ctrl + l :清屏,相当于clear
Tab :自动补完命令行与文件名
Tab键双击可以列出所有可能匹配的结果
(9)——bash1
最后更新于:2022-04-01 14:44:27
## 一、Shell简介
Shell :命令行解释器,是用户与系统沟通时的媒介
在Unix系统中有各种Shell, Linux采用bash为其默认shell
系统可以使用的shell记录在 /etc/shells中
## 二、bash
bash :Bourne Again Shell的缩写
GNU计划的一个组件
与Unix上的Bourne Shell完全兼容。
支持命令行输入、操作历史查询、快捷键、使用变量等功能。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb2ed90e.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb30b099.jpg)
## 三、预定义环境变量
在bash中有很多预定义环境变量(预先定义好名称和使用的变量)
系统通过预定义环境变量来定义shell的环境
用户可以用set或env查询当前的环境变量
set可以查看环境变量(所有shell)以及本地变量(当前shell),evn只能查看环境变量.
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb31ca1c.jpg)
常用的预定义环境变量
HOME : 当前用户的主目录
PATH : 当前用户的可执行文件搜索路径
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb32e18d.jpg)
LANG : 程序应该使用的默认语言
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb3404b8.jpg)
PS1 : 行提示符
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb352fcd.jpg)
## 四、history
在bash中输入histroy指令可以查询用户的过往操作。
内存中记录的过往指令数根据环境变量中HISTSIZE而定
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb36313f.jpg)
history表存储在内存中,在用户logout时会记录入用户的主目录下的.bash_history文件中。在下次login时载入。
.bash_history中的指令数根据环境变量中的HISTFILESIZE而定。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb374efc.jpg)
强制写入:![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb3876a3.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb39ed8b.jpg)
## 五、调用过往指令
使用!来调用过往指令
!! :重复执行上一条指令
!a :重复执行上一条以a为首的指令
!number :重复执行上一条在history表中记录号码为number的指令
!-number :重复执行前第number条指令
!$ :截取上一条指令的最后一个值
可以用<ctrl + r> 来在history表中查询某天过往指令
## 六、alias
在shell下键入alias可以查询当前alias列表
用户可以alias来为一条命令取一个简单的别名
用户也可以用unalias来取消一条别名记录
alias记录在shell中总是先行
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb3b0ecd.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb3ca86b.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb3de983.jpg)
(8)——文件查找与文件管理2
最后更新于:2022-04-01 14:44:25
## 四、压缩
gzip, gunzip
Linux标准压缩工具
对文本文件可以达到75%的压缩率
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb1d2657.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb1e494f.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb201d9a.jpg)
compress, uncompress
旧的Unix压缩工具
bzip2, bunzip2
更新的Linux压缩工具
比gzip有着更高的压缩率
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb214d35.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb22661c.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb237449.jpg)
## 五、打包(tar)
用于在磁带机、软盘、ZIP设备上做备份。也可以备份在一个硬盘文件上。(并不提供压缩功能)
主要参数:
c :将文件备份出来
v :将过程输出
f :打包后改变文件名
t :列出tar包中的内容
x :从一个文件中解出备份
z :使用gzip工具压缩
j :使用bz2工具进行压缩
C :改变打包后文件路径
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb24931c.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb25cd29.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb25cd29.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb274cbe.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb29e9f6.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb2b194b.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb2c5da9.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb2d8eb5.jpg)
## 六、备份与还原文件系统(dump / restore)
备份与还原ext2/3文件系统
不可以在其他文件系统上使用
可以选择进行完全备份或增量备份
dump -0u -f /var/tmp/hda2dump /dev/hda1 :将/dev/hda1备份到 /var/tmp/hda2dump文件中
0 :代表完全备份
u :将备份记录写入 /etc/dumpdates (备份分区顶层目录才可以使用该参数)
f :指定备份到文件的路径
restore -rf /var/tmp/hda2dump :将备份文件还原
r :还原备份文件
t :列出备份文件里面的内容
f :指定备份文件
(7)——文件查找与文件管理1
最后更新于:2022-04-01 14:44:22
## 一、可执行文件的搜索
which
显示一个可执行文件的完整路径
按照alias—>$PATH的顺序查找
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb0b2fb7.jpg)
查看系统的环境变量
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb0c8aef.jpg)
whereis
搜索一个可执行工具及其相关配置、帮助
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb0dd6da.jpg)
slocate
slocate或locate 关键字
所有文件名及其所在路径包含关键字段的文件与目录都会显示
slocate先将当前目录结构做成一个数据库,然后在此数据库中搜索匹配记录
find
find [路径] [参数] [表达式]
从指定路径下递归向下搜索文件
支持按照各种条件方式搜索
支持对搜索得到的文件进一步用指令操作
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb1042ad.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb116f2d.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb128e83.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb13a026.jpg)
以文件类型查找
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb157af3.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb16a142.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb17f9ee.jpg)
## 二、操作找到的文件
语法: find [路径] [参数] [表达式] -exec 指令 {} \ ;
{} 代表find找到的文件
\ 禁止转意
; 表示本行命令的结束
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb19594e.jpg)
## 三、常用的文件操作指令
wc 统计文字的行、词、字数
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb1adced.jpg)
grep 显示文件中匹配关键字的行
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb1bf983.jpg)
sort 按序重排文本并送显示
diff 报告文本差异内容
comp 报告文本差异位置
uniq 去除文件中的重复行
cut 显示文件中的某一列
paste 将文本按列拼接
(6)——过滤器、输入输出及管道
最后更新于:2022-04-01 14:44:20
## 一、过滤器
Linux中的应用工具分为三种:
交互工具
过滤器
编辑器
能够接受数据,过滤再输出的工具,称之为过滤器
对过滤器和进程,存在着输入源与输出对象
## 二、输入、输出、重定向
输入:过滤器的数据来源
——标准输入stdin(0):默认是键盘
输出:过滤器的数据去向
——标准输出stdout(1):默认是终端屏幕
错误输出:报错讯息与标准输出走不同的I/O通道
——标准错误输出stderr(2):默认是终端屏幕
重定向:标准输入、输出与错误输出,都可以用特定符号改变数据来源或去向
## 三、输入重定向
使用" < "来重定向输入源
大多数工具都会以其后的文件名为输入源
有一些过滤器一定需要添加 < 以明确输入源
cmmond < file (将原本需要键盘输入的通过文件读取)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baff3a59.jpg)
如上面,将.pash_profile中的所有大写字符改成小写字符
## 四、从当前文档输入
使用 << 让系统将一次键盘的全部输入,先送入虚拟的”当前文档“,然后一次性输入
需要一对字母、符号或字符串作为起始终结标识符
可以选择任意符号作为起始终结标识符
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb02c336.jpg)
## 五、输出重定向
使用 > 改变数据输出目标
例如:ls -l > listfile
将当前目录下的文件以长模式显示,然后写入listfile文件
文件已有内容会被全部消除
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb03e975.jpg)
## 六、覆盖与追加
使用 >进行输出重定向,文件的原内容会被覆盖
ls -l > listfile
使用 >>可以将输出追加入文件
ls -l >> listfile
## 七、错误输出重定向
系统错误与标准输出使用的I/O管道不同
默认情况下,系统报错会显示到终端屏幕上
使用 2 >将错误讯息重定向到一个文件
find / -type s 2 > /dev/null
使用 2 >> 将错误讯息追加入一个文件
find / -name passwd 2>> results
## 八、双重输出重定向
使用 >和 2>可以将一次操作的正确、错误输入,被单独地送到不同的地方:
find / -perm -2 2> error > results
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb054803.jpg)
使用&>将所有输入都送向同一个地方:
find / -perm +6000 > file
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb06b7a7.jpg)
另一种方式
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb084599.jpg)
## 九、管道
使用 |将前一个过滤器的输出直接送入后一个过滤器的输入
ls -l | grep pass
允许多重管道
注意管道前过滤器的输出与管道后过滤器的输入数据类型匹配
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bb0a005a.jpg)
## 十、重定向、管道的常用范例
ls -l | more
分屏显示当前目录下的文件
cat < filea > fileb
拷贝filea到fileb
cat file.* > file
将数个小文件合并成一个文件
(5)——目录
最后更新于:2022-04-01 14:44:18
## 一、目录
目录在文件类型上用d来表示,用 / 分割目录层
Linux操作系统 都有且仅有一个起始目录,我们用一个单独的 /来表示,称其为根目录。
对每一个Shell和操作环境,都有一个当前的工作目录。
## 二、 . 文件与 ..文件
在每一个目录下都有一个.文件与 .. 文件。
. 文件是对当前目录的一个硬链接
.. 文件是对上级目录的一个硬链接
## 三、目录的权限
目录也是一种文件
目录上的读写执行权限与普通文件有所不同:
读:用户可以读取目录内的文件
写:单独使用没有作用。与执行权限连用可以在目录内添加与删除文件。
执行:用户可以进入目录,调用目录内的资料
## 四、强制位于冒险位
除了读写执行权限以外,ext2文件系统还支持强制位(setuid和setgid)与冒险位(sticky)的特别权限。
针对u, g, o, 分别有set uid, set gid, 及 sticky
强制位与冒险位添加在执行权限的位置上。如果该位置上原已有执行权限。则强制位与冒险位以小写字母的方式表示,否则,以大写字母表示。
set uid与set gid在u和g的x位置上各采用一个s,sticky使用一个t
(1)set gid对目录的作用
默认情况下用户建立的文件属于用户当前所在的组。
目录上设置了setgid,表示此目录中,任何人建立的文件,都会属于目录所属的组。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baf353f6.jpg)
如何查看默认用户及组呢? id 用户名
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baf47f5b.jpg)
添加强制位权限
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baf5ea33.jpg)
添加强制位权限后再来在该目录下建立文件
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baf7297e.jpg)
(2)冒险位对目录的作用
默认情况下,如果一个目录上有w和x权限,则任何人可以在此目录中建立与删除文件。
一旦目录上设置了冒险位,则表示在此目录中,只有文件的拥有者、目录的拥有者与系统管理员可以删除文件。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baf843b6.jpg)
(3)强制位对
文件
的作用
在可执行文件上,用户可以添加set uid 和set gid
默认情况下,用户执行一个指令,会以该用户的身份来运行程序。
指令文件上的强制位,可以让用户执行指令,以指令文件的拥有者或所属组的身份运行进程
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baf95d47.jpg)
(4)设置强制位与冒险位
用户可以用chmod指令来为文件设置强制位与冒险位
set uid : chmod u + s 文件名
set gid : chmod g + s 文件名
sticky : chmod o + t 文件名
强制位与冒险位也可以通过一个数字加和,放在读写执行的三位数字前来指定
4(set uid)
2(set gid)
1(sticky)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bafa981d.jpg)
注意:set uid 只能在文件上面设定、set gid能在目录和文件上面设定、sticky只能在目录上面设定
## 五、umask
每个用户建立文件时,此文件都会有默认权限
默认权限的值由环境中的umask值来确定
用户可以自主改动umask值,并在改动后建立的文件上得到体现
一般用户的默认uask值为002,系统用户的默认umask值为022.
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bafbadf7.jpg)
如果没有umask时文件默认权限是rw-rw-rw-、目录默认权限是rwxrwxrwx
上面的新建文件的权限计算方法,没有umask时默认权限减去umask值
rw-rw-rw-
6 6 6
0 2 2 (去掉组写权限、和普通用户写权限)
6 4 4
rw-r--r--
由此可见,如果要去掉某个权限,则umask该位就是该权限码
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bafcd0ce.jpg)
## 六、根目录下的目录
Linux目录遵循FHS标准:[http://www.pathname.com/fhs/](http://www.pathname.com/fhs/)
FHS标准规范了每个目录下应该放什么数据,如下表:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bafde6cc.jpg)
/ :根目录,一般建议在根目录下只有目录,不要直接有文件。根目录是启动时系统第一个载入的分区,所以,所有启动过程会用到的文件都应该放在这个分区。如:/etc /bin /dev /lib /sbin 这5个子目录都应该与根目录连在一起,不可独立成为某个分区。
/bin :存储常用用户指令
/boot :这个目录主要目的是存放Linux系统启动时用到的文件。启动会用到的Linux的核心文件。这个目录下面的文件vmlinuz就是linux的核心。如果引导程序选择grub,这个目录内还有 /boot/grub子目录
/dev :在Linux系统上,任何设备都以文件类型存放在这个目录中。访问这个目录下面的某个文件,就等于访问某台设备。设备又分为字符设备,例如键盘、鼠标等,块设备,例如硬盘、光盘等。在此目录下的文件会多出两个属性,分别是主设备号和辅助设备号。
/etc :存储系统、服务的配置目录与文件,一般这个目录下的文件是可以让一般用户看的,但只有root用户可以修改。
/home :存放个人主目录
/ib :存放库文件,诸如核心模块、驱动
/lost+found :存储fsck用的孤儿文件,系统出现异常,产生错误时,会将一些遗失的片段放于此目录下,通常这个目录会自动出现在某个分区最顶层的目录下。
/mnt :系统加载文件系统时用的常用挂载点
/opt :第三方工具使用的安装目录
/proc :虚拟文件系统,包含系统讯息等资料
/root :root用户的主目录
/sbin :存储系统管理用指令,这个目录是给root用户管理用的
/tmp :临时文件的暂存点
/usr :存放与用户直接相关的文件与目录
/var :存储在系统运行中可能会更改的数据
(4)——文件
最后更新于:2022-04-01 14:44:16
## 一、检查文件
用ls -l以长模式查看文件的详细信息,包含当前目录的硬盘使用空间、文件类型、文件权限、硬连接数、文件拥有者、文件所属组、文件大小、更改时间、文件名称。
用file检查文件类型
由于linux中的文件名中没有扩展名,所以可能需要用file来查看文件类型。
## 二、文件类型
在linux中,所有东西都被当成文件。
文件权限前的一个字母用来表示文件类型:
-:一般文件
d:目录文件
b:块设备文件(如,硬盘)
c:字符设备文件(如,键盘、鼠标)
l:链接文件(相当于Window中的快捷方式)
p:人工管道
## 三、文件权限
对于每一个文件,Linux都提供了一套文件权限系统。
文件权限系统,将操作文件的用户都分成三类:
文件的拥有者(u)
文件所属组的成员(g)
其他用户(0)
## 四、文件权限类型
对于每一类用户,权限系统又分别提供他们三种权限
读(r):用户是否有权力读文件的内容
写(w):用户是否有权利改变文件的内容
执行(x):用户是否有权利执行文件
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae17d87.jpg)
-rw-r--r-- :表示这是一个一般文件、拥有者有读写权限、所属组有读权限、其他人有读权限
1:
root root:第一个root代表该文件的拥有者、第二个root表示该文件的所属组。
1089:表示文件的大小
Apr 26 04:27:表示修改时间
anacoda-ks.cfg:文件名
## 五、更改文件权限
使用chmod来改变文件的当前权限
chmod [-R] 权限 文件名
只有文件的拥有者和root才可以改变文件的权限
rw- r-- r--
chmod u+x install.log #给文件拥有者增加了一个执行权限(u:表示文件拥有者,x:表示执行权限)
chmod u-x install.log #取消文件拥有者的执行权限
chmod u=rwx #给文件拥有者所有权限
r w x
4 2 1
rw- r-- r--
6 44
chmod 644 #给该文件赋予上面的rw-- r-- r--权限(用数字方式)
chmod -R 644 #更改目录的权限
## 六、建立链接
硬链接:ln 源文件 新建链接名
软连接:ln -s 源文件 新建链接名
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae2c6c1.jpg)
给原文件 /home/test.txt 中输入内容
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae3d9f7.jpg)
可以看到硬链接 tom.txt中的内容和 /home/test.txt中的内容一致。
删除原文件/home/test.txt
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae50e0b.jpg)
可以看到硬链接还是存在的,里面的内容还在。上面是硬链接下面我们来看看软链接:
首先重新创建一个/home/test.txt文件,里面输入字符串
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae640a4.jpg)
创建软链接
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae76a36.jpg)
我们再删除原文件,看看软链接是否还能打开
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae8873a.jpg)
目录是不可以建立硬链接的,但是可以建立软链接
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae9a857.jpg)
下面我们给上面的jack目录里面创建一个文件,再来看看他的软链接jack1中是否有这个文件
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baeb1de9.jpg)
## 七、ext2/3中文件的构成
在ext2和ext3文件系统中,文件以inod+block的方式存在。
一旦用rm指令删除文件中的inode记录。文件无法找回。
stat指令可以用来检查文件的block与inode状况。
## 八、所属用户
每一个文件都有一个拥有者。文件的拥有者可以改变文件的权限。
root用户可以用chown来改变文件的拥有者。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baec51a2.jpg)
## 九、所属组
每一个文件只能属于一个指定的组
文件的拥有者与root用户,可以用chgrp来改变文件所属组
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baef41f6.jpg)
也可以使用chown同时更改文件的拥有者和所属组
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baf1161d.jpg)
## 十、文件名
文件名最大为255个字符
开头为 . 的文件为隐藏文件
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baf2229f.jpg)
(3)——基础使用
最后更新于:2022-04-01 14:44:13
## 一、设备文件
设备在Linux中以特殊文件的形式存在
块(block)设备文件
字符(character)设备文件
设备文件所在位置
查看设备类型
## 二、虚拟控制台及用户身份切换
在系统中有12个虚拟控制台,前6个可供用户本地登录
用户可以用Alt + Fn(n=1~12)来切换
用su可以用来切换用户身份 su - username
注意:su username 开启的是一个非登录shell
su - username 开启的是一个登录shell
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bade520a.jpg)
exit可以返回上一个用户
提示:Ubuntu的默认root密码是随机的,即每次开机都有一个新的root密码。我们可以在终端输入命令 sudo passwd,然后输入当前用户的密码,enter,终端会提示我们输入新的密码并确认,此时的密码就是root新密码。修改成功后,输入命令 su root,再输入新的密码就ok了。
>在X Window中Linux会提供6个终端来让用户选择 Ctrl + Alt + F1 ~ F6
按下 Ctrl + Alt + F7可以回到图形界面
## 三、离开系统(必须是root用户)
1、重启
reboot
shutdown -r now
init 6
2、关机
halt
shutdown -h now
poweroff
init 0
## 四、正确的关机方法
查看系统的使用状态: who 命令查看在线用户, netstat -a 查看网络联机状态
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bae049e6.jpg)
通知在线用户关机时刻
定时关机: shutdown -h 20:30 或 shutdown -h +10 //10分钟后关机
定时关机并通知:shutdown -h +30 'The system will reboot' //再过三十分钟系统会重启,并显示后面的消息给所有在线的用户
仅发出警告,不关机:shutdown -k now 'This system will reboot'
通常重启的方法:sync;sync;sync;reboot
通常关机的方法:shutdown -h now
(2)——基础指令
最后更新于:2022-04-01 14:44:11
ls :列出文件和目录
ls -l :列出文件和目录的详细信息
ls -a:列出所有的文件和目录(包括隐藏目录)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bac95088.jpg)
cp:拷贝文件
cp 源文件目录 目标目录
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bacaae1a.jpg)
cp -r :拷贝目录
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bacbcda9.jpg)
mv :移动或重命名文件
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8baccf551.jpg)
移动并修改文件名
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bace0c9e.jpg)
rm:删除文件
rm -f :强制删除
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bad0014c.jpg)
touch :创建空文件或更新文件时间(如果文件已经存在)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bad16af5.jpg)
更新文件时间
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bad2c8d5.jpg)
cd :改变当前路径
绝对路径:以根目录开始 cd /home
相对路径:相对于当前目录 cd home
pwd:查看当前完整路径
pwd -P :显示出实际路径,而非使用链接路径
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bad40149.jpg)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bad7ff02.jpg)
mkdir:创建目录
rmdir:删除空目录
rm -rf:删除目录及文件
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bad94052.jpg)
cat :查看文件,第一行到最后一行连续在屏幕上显示(内容少的文件比较实用)
tac:反向显示(最后一行先显示,注意是将cat反写)
more:逐屏查看文件
> 空格 :向下翻页
> Enter :向下一行
> /string :向下搜索
> q :离开
less:逐行查看文件,less比more更加灵活。使用more的时候,没有办法向前翻页,只能向后看,若使用less,可以使用[PageUp] [PageDown]翻页
> 空格:向下翻页
> [PageUp] :向上翻页
> [PageDown] :向下翻页
> /string 向下搜索
> ?string :向上搜索
> n:重复前一个搜索
> N :反向重复前一个搜索
date:显示与更改当前系统时间
cal:显示系统日历
df:查看磁盘信息
df -h
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bada9b8b.jpg)
du:计算文件或目录占用磁盘空间大小
du -h
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8badbc05f.jpg)
head :查看文件开头部分内容(默认10行)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8badcf28b.jpg)
tail:查看文件后面部分内容
od :查看非纯文本文件
> -t :后面可接各种“类型”的输出,例如
> a :使用默认字符输出
> c :使用ASCII字符来输出
> d[size] :使用10进制来输出数据,每个整数占用size字节
> f[size] :使用浮点来输出
> o[size] :使用8进制
> x[size] :使用16进制
(1)——Linux系统入门
最后更新于:2022-04-01 14:44:09
今天在阿里云申请了一个centos系统的云服务器,以前对linux了解的只是皮毛,记了几个命令还给忘了![快哭了](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8babbf599.gif)
,整了半天都弄不好,作为一个做过javaweb开发的coder实在是惭愧啊,决定从今天开始学习Linux,并将学习的结果作为笔记和大家一块交流和进步,就开始我们今天的学习吧。
## 一、计算机的五大单元
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-05-13_5735736545cd0.gif)
## 二、Linux用户环境
1、内核(Kernel)
内核管理的事项有:系统调用接口(实现开发人员与核心的沟通)、进程控制,合理分配CPU资源、内存管理、文件系统管理
2、Shell
shell用于接收用户的命令,与Kernel进行沟通
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8babdd531.jpg)
3、终端模拟器(Terminal Emulator)
4、X Window系统
5、窗口管理器(Window Manager)
6、桌面环境(Desktop Enviroment)
## 三、登录方式
1、本地登录
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8babef55a.jpg)
2、远程方式登录(这里我用putty)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bac0d7a7.jpg)
## 四、提示符与home目录
[root@stationXX root]#
解释:[登录的用户名@主机名 当前目录]# (# root用户, $ 普通用户)
~ :home目录,是用户登录系统后默认的目录(如上图),相当于Windows系统的我的文档目录。
root用户的home目录是跟目录,一般用户的home目录是home目录。
## 五、创建用户
以root用户登录:
创建jack用户,创建后必须用passwd 创建密码激活用户,如果root设置的密码过于简单会提示。
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bac1ffb6.jpg)
以刚创建的jack用户登录,并更改密码(如果密码过于简单则不会更改成功)
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bac33651.jpg)
## 六、运行命令
指令名 【选项】【参数】
ls :显示文件目录
ls -l:列出详细信息
ls -l 指定目录: 列出指定目录的详细信息
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bac455a6.jpg)
## 七、帮助和在线帮助
--help :例如 ls --help
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bac59057.jpg)
man 指令: 例如 man ls
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bac6d090.jpg)
退出,按 q
info指令: info ls
## 八、man的使用技巧
我们在使用man命令的时候,实际上是调用的manpage
manpage在/usr/share/man目录下,分为几个章节,如下:
![](https://docs.gechiui.com/gc-content/uploads/sites/kancloud/2016-06-14_575f8bac8002b.jpg)
man1 用户在shell环境中可以操作的命令或可执行文件
man2 系统内核可调用的函数与工具等
man3 一些常用的函数与函数库,大部分为c的函数库
man4 设备文件的说明,通常在/dec下的文件
man5 配置文件或者是某些文件的格式
man6 游戏
man7 惯例与协议等,例如linux文件系统、网络协议、ASCII code等说明
man8 系统管理员可用的管理命令
man9 跟kernel有关的文件
前言
最后更新于:2022-04-01 14:44:07
> 原文出处:[鸟哥的Linux私房菜笔记](http://blog.csdn.net/column/details/dawanganban-linux-n.html)
作者:[dawanganban](http://blog.csdn.net/dawanganban)
**本系列文章经作者授权在看云整理发布,未经作者允许,请勿转载!**
# 鸟哥的Linux私房菜笔记
> 今天在阿里云申请了一个centos系统的云服务器,以前对linux了解的只是皮毛,记了几个命令还给忘了,整了半天都弄不好,作为一个做过java web开发的coder实在是惭愧啊,决定从今天开始学习Linux,并将学习的结果作为笔记和大家一块交流和进步。