前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux学习笔记(1)

Linux学习笔记(1)

作者头像
发布2018-09-03 18:08:06
1.3K0
发布2018-09-03 18:08:06
举报
文章被收录于专栏:WD学习记录WD学习记录

Linux教程

Linux系统的启动过程分为5个阶段:

  • 内核的引导
  • 运行init
  • 系统初始化
  • 建立终端
  • 用户登录系统

init程序的类型:

  • SysV: init, CentOS 5之前, 配置文件: /etc/inittab。
  • Upstart: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。
  • Systemd: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。

内核引导:

计算机打开电源后,首先是BIOS开机自检,按照BIOS中设置的启动设备(通常是硬盘)来启动。操作系统接管硬件后,首先读入/boot目录下的文件。

运行init:

init进程是系统所有进程的起点,没有这个进程,系统中任何进程都不会启动。

init程序首先是需要读取配置文件/etc/inittab

运行级别:

许多程序需要开机启动,在windows叫服务,在linux叫做守护进程(deamon)。init进程的一大任务就是去运行这些开机启动的程序。Linux允许为不同的场合,分配不同的开机启动程序,叫做运行级别(runlevel)。也就是说,启动时根据运行级别,确定要运行哪些程序。

Linux系统有7个运行级别:

  • 运行级别0:系统停机状态,系统默认运行级别不能为0,否则不能正常启动
  • 运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
  • 运行级别2:多用户状态(没有NFS)
  • 运行级别3:完全的多用户状态(有NFS),登录后进入控制台命令行模式
  • 运行级别4:系统未使用,保留
  • 运行级别5:X11控制台,登录后进入图形GUI模式
  • 运行级别6:系统正常关闭重启,默认运行级别不能设为6,否则不能正常启动

系统初始化

在init配置文件中有:

代码语言:javascript
复制
 si::sysinit:/etc/rc.d/rc.sysinit 

调用执行了/etc/rc.d/rc.sysinit,而rc.sysinit是一个bash shell脚本,主要是完成一些系统初始化的工作,rc.syinit是每一个运行级别都要首先运行的重要脚本。

它主要完成的工作有:激活交换分区,检查磁盘,加载硬件模块以及其它一些需要优先执行任务。

代码语言:javascript
复制
l5:5:wait:/etc/rc.d/rc 5

上面这一行表示以5为参数运行/etc/rc.d/rc,/etc/rc.d/rc是一个shell脚本,接受5作为参数,去执行/etc/rc.d/目录下所有的rc启动脚本,/etc/rc.d/rc5.d/目录中的这些启动脚本实际上都是一些连接文件,而不是真正的rc启动脚本,真正的rc启动脚本事实上都是放在/etc/rc.d/init.d/目录下。

而这些rc启动脚本有着类似的用法,它们一般能接受start、stop、restart、status等参数。

/etc/rc.d/rc5.d中的rc启动脚本通常是K或S开头的连接文件,对于以S开头的启动脚本,将以start参数来运行。

如果反响存在相应的脚本也存在K打头的连接,而且已经处于运行态了(以/var/lock/subsys下的文件作为标志),则将首先以stop作为参数停止这些已经启动了的守护进程,然后重新运行

这样做是为了保证是当init改变运行级别时,所有相关的守护进程都将重启。

至于每个运行级中将运行哪些守护进程,用户可以通过chkconfig或setup中的system services来自行设定。

建立终端

rc执行完毕之后,返回init。这时候基本系统环境已经设置好了,各种守护进程也已经启动了。init接下来会打开6个终端,以便用户登录系统。在inittab中以下6行定义了6个终端:

代码语言:javascript
复制
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6

2、3、4、5的运行级别中都将以respawn方式运行mingetty程序,mingetty程序能打开终端、设置模式。

同时,它会显示一个文本登录界面,在这个界面中会提示用户输入用户名,而用户输入的用户将作为参数传给login程序来验证用户的身份。

用户登录系统

用户登录的方式有三种:

  • 命令行登录
  • ssh登录
  • 图形界面登录

对于运行级别为5的图形方式用户来说,他们的登录是通过一个图形化的登录界面,登录成功后可以直接进入KDE,Gnome等窗口管理器。

Linux的账号验证程序是login,login会接受mingetty传来的用户名作为用户名参数。然后login会对用户名进行分析:如果用户名不是root,且存在/etc/nologin文件,login将输出nologin文件的内容,然后退出。

这通常用来系统维护时防止非root用户登录,只有/etc/securetty中登记了的终端才允许root用户登录,如果不存在这个文件,则root用户可以在任何终端上登录。

/etc/usertty文件用户对用户做出附加访问限制,如果不存在这个文件,则没有其他限制。

bg2013081707
bg2013081707

Linux预设提供了六个命令窗口终端机让用户登录,默认登录是第一个窗口,也就是tty1,这六个窗口分别为tty1,tty2,tty3,...,tty6。可以切换。如果安装了图形界面,默认情况下是进入图形界面的。

Linux关机

正确的关机流程为:sync>shutdown>reboot>halt

关机指令为shutdown

代码语言:javascript
复制
sync 将数据由内存同步到硬盘中。

shutdown 关机指令,你可以man shutdown 来看一下帮助文档。例如你可以运行如下命令关机:

shutdown –h 10 ‘This server will shutdown after 10 mins’ 这个命令告诉大家,计算机将在10分钟后关机,并且会显示在登陆用户的当前屏幕中。

Shutdown –h now 立马关机

Shutdown –h 20:25 系统会在今天20:25关机

Shutdown –h +10 十分钟后关机

Shutdown –r now 系统立马重启

Shutdown –r +10 系统十分钟后重启

reboot 就是重启,等同于 shutdown –r now

halt 关闭系统,等同于shutdown –h now 和 poweroff

不管是重启系统还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中。

关机的命令有:shutdown –h now halt poweroff 和 init 0

重启的命令有:shutdown –r now reboot init 6

Linux系统目录结构

  • /bin:bin是Binary的缩写,这个目录存放着最经常使用的命令
  • /boot:这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件
  • /dev:dev是Devices(设备)的缩写,该目录下存放的是Linux的外部设备,在linux中访问设备的方式和访问文件的方式是相同的。
  • /etc:这个目录用来存放所有的系统管理所需要的配置文件和子目录
  • /home:用户的主目录,在Linux中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
  • /lib:这个目录存放着系统最基本的胴体连接共享库,其作用类似于Windows里的dll文件,几乎所有的应用程序都需要用到这些共享库
  • /lost+found:这个目录一般是空的,当系统非法关机后,这里就存放了一些文件
  • /media:linux系统会自动识别一些设备,例如U盘,光驱等,当识别后,linux会把识别的设备挂载到这个目录下。
  • /mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了
  • /opt:这是给主机额外安装软件所拜访的目录。默认是空的
  • /proc:这个目录是一个虚拟的目录,它是系统内存的映射,可以通过直接访问这个目录来获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里边的文件,比如可以通过下面的命令来屏蔽主机的ping命令,使别人无法ping你的机器:
代码语言:javascript
复制
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • /root:该目录为系统管理员,也称作超级权限者的用户主目录
  • /sbin:s是Super User的意思,这里存放的是系统管理员使用的系统管理程序
  • /selinux:这个目录是Redhat/CentOS所特有的目录,Selinux是一个安全机制,类似于windows的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
  • /srv:该目录存放一些服务启动之后需要提取的数据
  • /sys:这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。 sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。 该文件系统是内核设备树的一个直观反映。 当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中被创建。
  • /tmp:用来存放一些临时文件
  • /usr:这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录
  • /usr/bin:系统用户使用的应用程序。
  • /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序
  • usr/src:内核源代码默认的防止目录
  • /var:这个目录下存放着不断扩充的东西,习惯将那些经常被修改的目录放在这个目录下,包括各种日志文件

linux系统中,有几个目录是比较重要的,不要误删或者随意更改内部文件

/etc:是系统中的配置文件,更改了该目录下的文件可能会导致系统不能启动

/bin,/sbin,/usr/bin,/usr/sbin:这是系统预设的执行文件的放置目录,比如ls在/bin/ls目录下

/bin和/usr/bin是给系统用户使用的指令(除root外的普通用户),而/sbin,/usr/sbin则是给root使用的指令。

/var:这是非常重要的一个目录,系统上很多程序的日志被记录到这个目录下,具体为/var/log,另外mail的预设放置也是在这里。

Linux文件基本属性

Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限,为了保护系统的安全性,linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。

在Linux中第一个字符代表这个文件时目录、文件或链接文件等:

  • 当为[d]则是目录
  • 当为[-]则是文件
  • 若是[I]则表示为链接文档(link file)
  • 若是[b]则表示为装置文件里面的可供储存的接口设备(可随机存取装置)
  • 若是[c]则表示为装置文件里面的串行端口设备,如键盘、鼠标(一次性读取装置)

接下来的字符中,以三个为一组,且均为[rwx]三个参数,分别代表可读read、可写write、可执行execute。需要注意的是,这三个权限的位置不会改变,如果没有权限就会出现减号-。

363003_1227493859FdXT
363003_1227493859FdXT

属主指该文件的拥有者

属组表示所有者的同组用户。

可以使用数字来代表各个权限:

r:4

w:2

x:1

每种身份(owner/group/ohers)各自的三个权限分数是需要累加的。

Linux文件与目录管理

Linux的目录结构为树状结构,最顶级的目录为根目录/。

其他目录通过挂载可以将它们添加到树中,通过解除挂载可以移除它们。

几个常见的处理目录的命令:

  • ls:列出目录
  • cd:切换目录
  • pwd:显示目前的目录
  • mkdir:创建一个新的目录
  • rmdir:删除一个空的目录
  • cp:复制文件或目录
  • rm:移除文件或目录

ls(列出目录):

ls选项与参数:

  • -a:全部的文件,连同隐藏档(开头为.的文件)一起列出来
  • -d:仅列出目录本身,而不是列出目录内的文件数据
  • -l:长数据串列出,包含文件的属性与权限等等数据

cd(切换目录)

pwd(显示目前所在的目录)

mkdir(创建新目录)

代码语言:javascript
复制
mkdir [-mp] 目录名称

选项与参数:

  • -m:配置文件的权限,直接配置
  • -p:帮助直接将所需要的目录(包含上一级目录)递归创建起来

rmdir(删除空的目录)

代码语言:javascript
复制
rmdir [-p] 目录名称

-p:连同上一级空的目录一起删掉

cp(复制文件或目录)

代码语言:javascript
复制
[root@www ~]# cp [-adfilprsu] 来源档(source) 目标档(destination)
[root@www ~]# cp [options] source1 source2 source3 .... directory
  • -a:相当于-pdr的意思
  • -d:若来源档为连结档的属性(link file)
  • -f:为强制(force)的意思,若目标文件已经存在且无法开启,则移除后再尝试一次
  • -i:若目标档(destination)已经存在,在覆盖时会先询问动作的进行
  • -l:进行硬式连结(hard link)的连结档创建,而非复制文件本身
  • -p:连同文件的属性一起复制过去,而非使用默认属性属性(备份常用)
  • -r:递归持续复制,用于目录的复制行为
  • -s:复制成为符号连结档(symbolic link),即【捷径】文件
  • -u:若destination比source旧才升级destination

rm(移除文件或者目录)

代码语言:javascript
复制
rm [-fir]
  • -f:就是force的意思,忽略不存在的文件,不会出现警告信息
  • -i:互动模式,删除前会询问使用者是否动作
  • -r:递归删除!最常用的在目录的删除了,是非常危险的选项

mv(移动文件与目录,或修改名称)

Linux文件内容查看

常用命令:

  • cat:从第一行开始显示文件内容
  • tac:从最后一行开始显示
  • nl:显示的时候输出行号
  • more:一页一页的显示文件内容
  • less与more类似,但是更好的是可以往前翻页
  • head:只看头几行
  • tail:只看尾巴几行

Linux磁盘管理

Linux磁盘管理好坏直接关系到整个系统的性能问题

Linux磁盘管理常用三个命令为df、du和fdisk:

  • df:列出文件系统的整体磁盘使用量
  • du:检查磁盘空间的使用量
  • fdisk:用于磁盘分区

df命令参数功能:检查文件系统的磁盘空间占用情况。可以利用该命令来获取硬盘被占用了多少空间,目前还剩下多少空间等信息。

代码语言:javascript
复制
df [-ahikHTm] [目录或文件名]

选项与参数:

  • -a:列出所有的文件系统,包括系统特有的/proc等文件系统
  • -k:以KBytes的容量显示各文件系统
  • -m:以MBytes的容量显示各文件系统
  • -h:以人们较易阅读的GBytes、MBytes、KBytes等格式自行显示
  • -H:以M=1000K取代M=1024K的进位方式
  • -T:显示文件系统类型,连同该partition的filesystem名称也列出
  • -i:不用硬盘容量,而以inode的数量来显示

du命令也是查看使用空间的,但是与df命令不同的是linux du命令是对文件和目录磁盘使用的空间的查看,还是df命令有一些区别的。

代码语言:javascript
复制
du [-ahskm] 文件或目录名称

选项与参数:

  • -a:列出所有文件与目录容量,因为默认仅统计目录底下的文件量而已
  • -h:以人民较易读的容量格式(G/M)显示
  • -s:列出总量而已,而不列出每个个别的目录占用量
  • -S:不包括子目录下的总计,与-s有点差别
  • -k:以KBytes列出容量显示
  • -m:以MBytes列出容量显示

fdisk是Linux的磁盘分区表操作工具

代码语言:javascript
复制
fdisk [-l] 装置名称

选项与参数:-l:输出后面接的装置所有的分区内容。若仅有fdisk -l,则系统将会把整个系统内能够搜寻到的装置的分区均列出来

磁盘格式化:磁盘分割完毕后自然是文件系统的格式化,格式化的命令如下:

代码语言:javascript
复制
mkfs [-t 文件系统格式] 装置文件名

选项与参数:-t:可以接文件系统格式,例如:ext3、ext2、vfat等(系统有支持才会生效)

磁盘检验,fsck(file system check)用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查。

代码语言:javascript
复制
fsck [-t 文件系统] [-ACay] 装置名称

选项与参数:

  • -t:给定档案系统的形式,若在/etc/fstab中已有定义或kernel本身已支援的则不需加上词参数
  • -s:义序一个一个执行fsck的指令来检查
  • -A:对/etc/fstab中所有列出来的分区做检查
  • -C:显示完整的检查进度
  • -d:打印出e2fsck的debug结果
  • -p:同时又-A条件时,同时有多个fsck的检查一起执行
  • -R:同时有-A条件时,省略/不检查
  • -V:详细显示模式
  • -a:如果检查有错则自动恢复
  • -r:如果检查有错则由使用者回答是否修复
  • -y:选择指定检测每个文件时自动输入yes,在不确定哪些是不正常的时候,可以执行# fsck -y全部检查修复

磁盘挂载与卸除

Linux的磁盘挂载使用mount命令,卸载使用umount命令,挂载语法:

代码语言:javascript
复制
mount [-t 文件系统] [-L Label名] [-o 额外选项] [-n]  装置文件名  挂载点

磁盘卸载命令umount语法:

代码语言:javascript
复制
umount [-fn] 装置文件名或挂载点

选项与参数:

  • -f:强制卸除!可以用在类似网络文件系统NFS无法读取到的情况下
  • -n:不升级/etc/mtab 的情况下卸除

vi/vim

基本上vi/vim共分为三种模式,分别是命令模式(Command mode),输入模式(Insert mode)和底线命令模式(Last line mode)。这三种模式的作用分别是:

命令模式:

用户刚刚启动vi/vim,便进入了命令模式,此状态下敲击键盘动作会被Vim识别为命令,而非输入字符。以下是常用的几个命令:

  • i 切换到输入模式,以输入字符
  • x删除当前光标所在处的字符
  • :切换到底线命令模式,以在最底一行输入命令

命令行模式只有一些最基本的命令,因此仍要依靠命令模式输入更多的命令

输入模式:

在输入模式中,可以使用以下按键:

  • 字符按键以及Shift组合,输入字符
  • ENTER,回车键,换行
  • BACK SPACE,退格键,删除光标前一个字符
  • DEL,删除键,删除光标后一个字符
  • 方向键,在文本中移动光标
  • HOME/END,移动光标到行首、行尾
  • Page Up/Page Down,上下翻页
  • Insert,切换光标为输入、替换模式,光标将变成竖线、下划线
  • ESC,推出输入模式,切换到命令模式

底线命令模式:

底线命令模式可以输入单个或多个字符的命令,可用的命令非常多,基本的命令有:

  • q 退出程序
  • w 保存文件
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年08月05日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Linux系统的启动过程分为5个阶段:
  • init程序的类型:
  • 内核引导:
  • 运行init:
  • 运行级别:
  • 系统初始化
  • 建立终端
  • 用户登录系统
  • Linux关机
  • Linux系统目录结构
  • Linux文件基本属性
  • Linux文件与目录管理
  • Linux文件内容查看
  • Linux磁盘管理
  • vi/vim
  • 命令模式:
  • 输入模式:
  • 底线命令模式:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档