第五章 首次登陆与在线求助 man page
由于Mac OSX和Linux均基于Unix,所以我尽管安装了Cent OS的虚拟机,但是图省事在macOS Sierra上进行学习,而鸟哥是在Cent OS上进行教学,所以小部分操作是无法实现的。无法实现的便用原书vbird@www ~,可以实现的用sh-3.2或者appletekiMacBook-Pro
5.1 首次登陆系统
Linux默认的情况下有6个Terminal提供给用户以使用,切换的方式为使用 [Ctrl]+[Alt] +[F1]~[F6] 的组合按钮。系统将[F1]~[F6]命名为tty1~tty6的操作界面环境。
[Ctrl]+[Alt]+[F1]~[F6]:文字界面登陆tty1~tty6终端;(运行等级 run level 3)
[Ctrl]+[Alt]+[F7]:图形界面桌面。(运行等级 run level 5)。 或者直接在tty1~tty6执行如下命令:[vbird@www ~] $ startx 。前提已经安装X WINDOW且tty7没有被占用。
以root登陆操作系统:
注销操作系统:
显示日期与时间的命令:date
显示日历的命令:cal
还有reboot、halt、poweroff 可以用来重启或关机
后面紧跟的r、w、x为读、写、执行权限。 依次为三组:文件所有者、同用户组的权限、其他非本用户组的权限。
权限的意义:
可分享的:可以分享给其他系统挂载的目录,所以包括执行文件与用户的邮件等数据。
目录树:
appletekiMacBook-Pro:~ apple$ su root
注销操作系统:
sh-3.2# exit
5.2 在命令行模式下执行命令
命令格式基本如下:
sh-3.2# command [-options] parameter1 parameter2
其中,command为命令或者可执行文件。
显示当前语言:
<pre name="code" class="html">sh-3.2# echo $LANG
zh_CN.UTF-8
修改语言为英文
sh-3.2# LANG=en_US
sh-3.2# date
2016年10月31日 星期一 16时22分16秒 CST
sh-3.2# date +%Y/%m/%d
2016/10/31
sh-3.2# date +%H:%M
16:22
显示日历的命令:cal
sh-3.2# cal [[month] year]
简单计算器:bc
sh-3.2# bc
其中,默认为整数输出,要输出n位小数,需输入 scale=n; 退出计算器,输入 quit;
[TAB]命令:连续按两次TAB键,为命令补齐(第一个命令后)和文件补齐(第二个命令后)。若直接双键TAB,即查询当前系统有多少条命令。
[Ctrl]+c命令:停下当前执行程序,与之类似的还有[Ctrl]+z以及[Ctrl]+\。
[Ctrl]+d命令:结束键盘输入,即输入EOF ,在文字界面内执行相当于exit。
5.3 Linux系统的在线求助man page 与info page
man + 命令 :查询该命令的说明。代号 | 代表内容 |
1 | 用户在shell环境可以操作的命令或者可执行文件 |
2 | 系统内核可调用的函数与工具等 |
3 | 一些常用的函数(function)与函数库(library),大部分为C的函数库 |
4 | 设备文件的说明,通常在/dev文件下 |
5 | 配置文件或者某些文件的格式 |
6 | 游戏 |
7 | 惯例与协议 |
8 | 系统管理员可用的管理命令 |
9 | kernel有关的文件 |
特别的,执行 man null,会发现 NULL(4),也就是说,NULL是一个设备文件。
代号 | 内容说明 |
NAME | 简短的命令、数据名称说明 |
SYNOPSIS | 简短的命令执行语法(syntax)简介 |
DESCRIPTION | 较为完整的说明 |
OPTIONS | 针对SYNOPSIS部分中,有列举的所有可用的选项说明 |
COMMANDS | 当这个程序(软件)在执行的时候,可以在此程序(软件)中执行的命令 |
FILES | 这个程序或数据所使用或参考或连接到的某些文件 |
SEE ALSO | 这个命令或数据有相关的其他说明 |
EXAMPLE | 一些可以参考的范例 |
BUGS | 是否有相关的错误 |
按键 | 进行的工作 |
空格键 | 向下翻一页 |
[PAGE DOWN] | 向下翻一页 |
[PAGE UP] | 向上翻一页 |
[HOME] | 返回第一页 |
[END] | 转到最后一页 |
/string | 向下查询string字符串 |
?string | 向上查询string字符串 |
n,N | 利用/或?查询字符串时,可以用n来继续下一个查询,用N来进行反向查询。 |
q | 结束这次的man page |
man +(-f) +命令:获得命令的更多信息。 相当于 whatis。
man +数字+命令:指定执行哪一个指令。
man +(-k)+关键字 查找有关键字的说明。相当于 apropos。
执行 whatis 和 apropos 时要先创建 whatis 数据库,用 makewhatis 来建库。
info + 命令:也是用来查询命令用法或者文件的格式。
名称 | 意义 |
FILE | 代表这个info page 的数据是来自某info格式的文件 |
NODE | 代表当前的页面所在节点 |
NEXT | 下一节点的名称 |
UP | 回到上一层的节点总揽界面 |
PREV | 前一个节点 |
MENU | 各节点列表 |
按键 | 进行工作 |
空格键 | 向下翻一页 |
[PAGE DOWN] | 向下翻一页 |
[PAGE UP] | 向上翻一页 |
[TAB] | 在节点之间移动,有节点的地方通常会以 “ * ” 显示 |
[ENTER] | 当光标在节点上面时,可以按下回车进入该节点 |
B | 移动光标到该Info界面当中的第一个节点处 |
E | 移动光标到该info界面当中的最后一个节点处 |
N | 前往下一个节点处 |
P | 前往上一个节点处 |
U | 向上移动一层 |
S(/) | 在info page当中进行查询 |
H | 显示求助菜单 |
? | 命令一览表 |
Q | 结束这次的info page |
5.4 超简单文本编辑器: nano
nano + 文件名:编辑文件
按键 | 功能 |
[CTRL]+G | 获得在线帮助 |
[CTRL]+X | 离开nano软件,若有修改则会提示是否需要保存 |
[CTRL]+O | 保存文件,前提是你拥有权限 |
[CTRL]+R | 从其他文件读入数据,可以将某个文件的内容贴在本文件中 |
[CTRL]+W | 查询字符串 |
[CTRL]+C | 说明当前光标所在列数和行数 |
[CTRL]+_ | 可以直接输入行号,让光标快速移动到该行 |
[ALT]+Y | 开启或关闭校正语法功能 |
[ALT]+M | 可以支持鼠标移动光标的功能 |
5.5 正确的关机方法
who:查看有谁在线
netstat -a:查看网络的联机状态
ps -aux:查看后台执行的程序
sync:数据同步写入硬盘
shutdown 相关指令: shutdown [-t秒] [-arkhncfF] 时间 (警告信息)
参数:
-t sec:后面接秒数,过几秒关机
-k:不要真的关机,只是发送警告信息出去
-r:在将系统的服务停掉后就重启
-h:在将系统的服务停掉后,就关机
-n:不经过init程序,直接以shutdown的功能关机
-f:关机并开机之后,强制略过fsck的磁盘检查
-F:系统重启之后,强制进行fsck的磁盘检查
-c:取消正在执行的shutdown命令内容
时间:这是一定要加入的参数,制定系统关机时间。
范例:
sh-3.2# shutdown -h 10 'I WILL SHUTDOWN AFTER 10 MINS'
还有reboot、halt、poweroff 可以用来重启或关机
init:切换执行等级。使用方法: init+n。
run level执行等级分为以下几种:
run level 0:关机
run level 3:纯命令行模式
run level 5:含有图形界面模式
run level 6:重启
5.6 开机过程问题排解
断电或者关机不正常那个所导致的文件系统发生错误以及磁盘使用率过高或者主机所在环境不良 是文件系统发生错误的常见原因。
使用fsck +分区名 来修复损坏的分区。
硬盘要划分不同分区。
忘记root密码:重启系统,疯狂按e键进入grub模式,选择kernel再次按e,在界面的最后输入single。回车再按b键,进入tty1终端,输入passwd修改密码。
第六章 Linux的文件权限与目录配置
6.1 用户与用户组
1.文件所有者
2.用户组概念: 每个账户都可以有多个用户组的支持。
3.其他人的概念:其中root是权限最高的。
6.2 Linux文件权限概念
执行 ls -al
sh-3.2# ls -al
drwxrwxrwx 4 apple wheel 136 10 15 15:20 write
1 | 2 | 3 | 4 | 5 | 6 | 7 |
权限 | 连接 | 所有者 | 用户组 | 文件容量 | 修改日期 | 文件名 |
字符 | 文件类型 |
[d] | 目录 |
[-] | 文件 |
[l] | 连接文件 |
[b] | 设备文件里的可供存储的接口设备 |
[c] | 设备文件的串行端口设备 |
后面紧跟的r、w、x为读、写、执行权限。 依次为三组:文件所有者、同用户组的权限、其他非本用户组的权限。
第二列表明有多少个文件名连接到此节点。
第三列表明这个文件或者目录的所有者。
第四列表示这个文件的所属用户组。
第五列为这个文件的容量大小,默认单位为B。
第六列为这个文件的创建日期或者最近修改日期。
第七列为文件名。 如果前面多个“.”,则代表是隐藏文件。
chgrp:改变文件所属用户组
sh-3.2# chgrp [-R] 用户组名 dirname/filename
-R代表递归,也就是连同子目录一起更改。
chown:改变文件所有者
sh-3.2# chown [-R] 账号名称 文件或目录
-R也代表递归。
chmod:改变权限
sh-3.2# chmod [-R] xyz 文件或目录
-R也代表递归。而xyz是三个数字,每一位是不同用户的权限,比如x代表文件所有者的权限。其值为r、w、x权限的累加,其中r=4、w=2、x=1。
也可以使用符号类型改变文件权限,如下表:
chmod | u g o a | +(加入) -(除去) =(设置) | r w x | 文件或目录 |
权限的意义:
对文件而言,r是可读取此文件的内容。w是可以编辑、修改文件的内容。x是可以执行该文件。
对目录而言,r是可以读取目录结构列表。w是可以更改目录结构,包括新建、删除、重命名文件或目录、转移文件或目录的位置。x是代表用户能否进入该目录。
Linux文件是没有所谓扩展名的,只要有x权限就可以被执行,不过与成功与否无关。
Linux文件下分为:1.普通文件 2.纯文本文件 3.二进制文件 4.数据格式文件 5.目录 6.连接文件 7.设备与设备文件(字符设备与块设备) 8. 套接字 9. 管道
Linux文件长度限制:
单一文件或目录的最大容许文件名为255个字符;包含完整路径名称及目录(/)的完整文件名为4096个字符。
6.3 Linux目录配置
Linux目录配置标准:FHS。
Filesystem Hierarchy Standard的主要目的是为了让用户可以了解已安装的软件通常放置于那个目录下。
可分享的(shareable) | 不可分享的(unshareable) | |
不变的(static) | /usr(软件放置处) /opt(第三方软件) | /etc(配置文件) /boot(开机与内核文件) |
可变动(variable) | /var/mail(用户邮件信箱) /var/spool/news(新闻组) | /var/run(程序相关) /var/lock(程序相关) |
不可分享的:自己机器上面运行的设备文件或者是与程序有关的socket文件等,只和自身机器有关
不变的:有些数据是不会经常变动的,跟随者distribution而不变。函数库、文件说明等被系统管理员所管理的主机服务配置文件。
可变动的:经常改变的数据,比如登陆文件、新闻组等。
目录 | 应放置文件内容 |
/(root、根目录) | 与开机系统有关 |
/usr(UNIX software resource) | 与软件安装执行有关 |
/var(variable) | 与系统运作过程有关 |
根目录(/)的意义与内容
1.根目录极为重要,所有的目录均有根目录衍生,而且也与开机、还原、系统修复等操作有关。
2.根目录所在分区应越小越好,且应用程序所安装的软件最好不要与根目录放在同一个分区。
目录 | 应放置文件内容 |
/bin | 系统有很多放置执行档的目录,但/bin比较特殊。因为/bin放置的是在单人维护模式下还能够被操作的指令。在/bin底下的指令可以被root与一般帐号所使用,主要有:cat,chmod(修改权限), chown, date, mv, mkdir, cp, bash等等常用的指令。 |
/boot | 主要放置开机会使用到的档案,包括Linux核心档案以及开机选单与开机所需设定档等等。Linux kernel常用的档名为:vmlinuz ,如果使用的是grub这个开机管理程式,则还会存在/boot/grub/这个目录。 |
/dev | 在Linux系统上,任何装置与周边设备都是以档案的型态存在于这个目录当中。 只要通过存取这个目录下的某个档案,就等于存取某个装置。比要重要的档案有/dev/null, /dev/zero, /dev/tty , /dev/lp*, / dev/hd*, /dev/sd*等等 |
/etc | 系统主要的设定档几乎都放置在这个目录内,例如人员的帐号密码档、各种服务的启始档等等。 一般来说,这个目录下的各档案属性是可以让一般使用者查阅的,但是只有root有权力修改。 FHS建议不要放置可执行档(binary)在这个目录中。 比较重要的档案有:/etc/inittab, /etc/init.d/, /etc/modprobe.conf, /etc/X11/, /etc/fstab, /etc/sysconfig/等等。 另外,其下重要的目录有:/etc/init.d/ :所有服务的预设启动script都是放在这里的,例如要启动或者关闭iptables的话: /etc/init.d/iptables start、/etc/init.d/ iptables stop /etc/xinetd.d/ :这就是所谓的super daemon管理的各项服务的设定档目录。 /etc/X11/ :与X Window有关的各种设定档都在这里,尤其是xorg.conf或XF86Config这两个X Server的设定档。 |
/home | 这是系统预设的使用者家目录(home directory)。 在你新增一个一般使用者帐号时,预设的使用者家目录都会规范到这里来。比较重要的是,家目录有两种代号: ~ :代表当前使用者的家目录,而 ~guest:则代表用户名为guest的家目录。 |
/lib | 系统的函式库非常的多,而/lib放置的则是在开机时会用到的函式库,以及在/bin或/sbin底下的指令会呼叫的函式库而已 。 什么是函式库呢?妳可以将他想成是外挂,某些指令必须要有这些外挂才能够顺利完成程式的执行之意。 尤其重要的是/lib/modules/这个目录,因为该目录会放置核心相关的模组(驱动程式)。 |
/media | media是媒体的英文,顾名思义,这个/media底下放置的就是可移除的装置。 包括软碟、光碟、DVD等等装置都暂时挂载于此。 常见的档名有:/media/floppy, /media/cdrom等等。 |
/mnt | 如果妳想要暂时挂载某些额外的装置,一般建议妳可以放置到这个目录中。在古早时候,这个目录的用途与/media相同。 只是有了/media之后,这个目录就用来暂时挂载用了。 |
/opt | 这个是给第三方协力软体放置的目录 。 什么是第三方协力软体啊?举例来说,KDE这个桌面管理系统是一个独立的计画,不过他可以安装到Linux系统中,因此KDE的软体就建议放置到此目录下了。 另外,如果妳想要自行安装额外的软体(非原本的distribution提供的),那么也能够将你的软体安装到这里来。 不过,以前的Linux系统中,我们还是习惯放置在/usr/local目录下. |
/root | 系统管理员(root)的家目录。 之所以放在这里,是因为如果进入单人维护模式而仅挂载根目录时,该目录就能够拥有root的家目录,所以我们会希望root的家目录与根目录放置在同一个分区中。 |
/sbin | Linux有非常多指令是用来设定系统环境的,这些指令只有root才能够利用来设定系统,其他使用者最多只能用来查询而已。放在/sbin底下的为开机过程中所需要的,里面包括了开机、修复、还原系统所需要的指令。至于某些伺服器软体程式,一般则放置到/usr/sbin/当中。至于本机自行安装的软体所产生的系统执行档(system binary),则放置到/usr/local/sbin/当中了。常见的指令包括:fdisk, fsck, ifconfig, init, mkfs等等。 |
/srv | srv可以视为service的缩写,是一些网路服务启动之后,这些服务所需要取用的资料目录。 常见的服务例如WWW, FTP等等。 举例来说,WWW伺服器需要的网页资料就可以放置在/srv/www/里面。呵呵,看来平时我们编写的代码应该放到这里了。 |
/tmp | 这是让一般使用者或者是正在执行的程序暂时放置档案的地方。这个目录是任何人都能够存取的,所以你需要定期的清理一下。当然,重要资料不可放置在此目录啊。 因为FHS甚至建议在开机时,应该要将/tmp下的资料都删除。 |
目录 | 应放置的内容 |
/lost+found | 这个目录是使用标准的ext2/ext3档案系统格式才会产生的一个目录,目的在于当档案系统发生错误时,将一些遗失的片段放置到这个目录下。 这个目录通常会在分割槽的最顶层存在,例如你加装一个硬盘于/disk中,那在这个系统下就会自动产生一个这样的目录/disk/lost+found |
/proc | 这个目录本身是一个虚拟文件系统(virtual filesystem)喔。 他放置的资料都是在内存当中,例如系统核心、行程资讯(process)(是进程吗?)、周边装置的状态及网络状态等等。因为这个目录下的资料都是在记忆体(内存)当中,所以本身不占任何硬盘空间。比较重要的档案(目录)例如: /proc/cpuinfo, /proc/dma, /proc/interrupts, /proc/ioports, /proc/net/*等等。呵呵,是虚拟内存吗[guest]? |
/sys | 这个目录其实跟/proc非常类似,也是一个虚拟的档案系统,主要也是记录与核心相关的资讯。 包括目前已载入的核心模组与核心侦测到的硬体装置资讯等等。 这个目录同样不占硬盘容量。 |
目录 | 应放置文件内容 |
/usr/X11R6/ | 为X Window System重要数据所放置的目录,之所以取名为X11R6是因为最后的X版本为第11版,且该版的第6次释出之意。 |
/usr/bin/ | 绝大部分的用户可使用指令都放在这里。请注意到他与/bin的不同之处。(是否与开机过程有关) |
/usr/include/ | c/c++等程序语言的档头(header)与包含档(include)放置处,当我们以tarball方式 (*.tar.gz 的方式安装软件)安装某些数据时,会使用到里头的许多包含档 |
/usr/lib/ | 包含各应用软件的函式库、目标文件(object file),以及不被一般使用者惯用的执行档或脚本(script)。 某些软件会提供一些特殊的指令来进行服务器的设定,这些指令也不会经常被系统管理员操作, 那就会被摆放到这个目录下啦。要注意的是,如果你使用的是X86_64的Linux系统, 那可能会有/usr/lib64/目录产生 |
/usr/local/ | 统管理员在本机自行安装自己下载的软件(非distribution默认提供者),建议安装到此目录, 这样会比较便于管理。举例来说,你的distribution提供的软件较旧,你想安装较新的软件但又不想移除旧版, 此时你可以将新版软件安装于/usr/local/目录下,可与原先的旧版软件有分别啦。 你可以自行到/usr/local去看看,该目录下也是具有bin, etc, include, lib...的次目录 |
/usr/sbin/ | 非系统正常运作所需要的系统指令。最常见的就是某些网络服务器软件的服务指令(daemon) |
/usr/share/ | 放置共享文件的地方,在这个目录下放置的数据几乎是不分硬件架构均可读取的数据, 因为几乎都是文本文件嘛。在此目录下常见的还有这些次目录:/usr/share/man:联机帮助文件 /usr/share/doc:软件杂项的文件说明 /usr/share/zoneinfo:与时区有关的时区文件 |
/usr/src/ | 一般原始码建议放置到这里,src有source的意思。至于核心原始码则建议放置到/usr/src/linux/目录下。 |
目录 | 应放置的文件 |
/var/cache/ | 应用程序本身运作过程中会产生的一些暂存档 |
/var/lib/ | 程序本身执行的过程中,需要使用到的数据文件放置的目录。在此目录下各自的软件应该要有各自的目录。 举例来说,MySQL的数据库放置到/var/lib/mysql/而rpm的数据库则放到/var/lib/rpm去 |
/var/lock/ | 某些装置或者是文件资源一次只能被一个应用程序所使用,如果同时有两个程序使用该装置时, 就可能产生一些错误的状况,因此就得要将该装置上锁(lock),以确保该装置只会给单一软件所使用。 举例来说,刻录机正在刻录一块光盘,你想一下,会不会有两个人同时在使用一个刻录机烧片? 如果两个人同时刻录,那片子写入的是谁的数据?所以当第一个人在刻录时该刻录机就会被上锁, 第二个人就得要该装置被解除锁定(就是前一个人用完了)才能够继续使用 |
/var/log/ | 非常重要。这是登录文件放置的目录。里面比较重要的文件如/var/log/messages, /var/log/wtmp(记录登入者的信息)等。 |
/var/mail/ | 放置个人电子邮件信箱的目录,不过这个目录也被放置到/var/spool/mail/目录中,通常这两个目录是互为链接文件。 |
/var/run/ | 某些程序或者是服务启动后,会将他们的PID放置在这个目录下 |
/var/spool/ | 这个目录通常放置一些队列数据,所谓的“队列”就是排队等待其他程序使用的数据。 这些数据被使用后通常都会被删除。举例来说,系统收到新信会放置到/var/spool/mail/中, 但使用者收下该信件后该封信原则上就会被删除。信件如果暂时寄不出去会被放到/var/spool/mqueue/中, 等到被送出后就被删除。如果是工作排程数据(crontab),就会被放置到/var/spool/cron/目录中。 |
目录树:
绝对路径与相对路径: . 和./ 代表当前目录, .. 和../ 代表上一层目录