(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,并将学习的结果作为笔记和大家一块交流和进步。
';