02 linux 基础(2)
shell 基本维护命令
获取联机帮助
使用 man
命令可以找到特定的联机帮助页,并提供简短的命令说明。一般语法格式为:
联机帮助页提供了指定命令 commandname 的相关信息,包括:名称、函数、语法以及可选参数描述等。无论帮助有多长,都遵循这个格式显示。在页面很多的情况下使用 PageUp 和 PageDown 键翻页。最后,使用“:q
”退出帮助页面。
通常联机帮助信息包括以下几个部分:
- NAME:命令的名称
- SYNOPSIS:命令的语法格式
- DESCRIPTION:命令的一般描述以及用途
- OPTIONS:描述命令所有的参数或选项
- SEE ALSO:列出联机帮助页中与该命令直接相关或功能相近的其他命令
- BUGS:解释命令或其输出中存在的任何已知的问题或缺陷
- EXAMPLES:普通的用法示例
- AUTHORS:联机帮助页以及命令的作者
passwd
- 出于系统安全考虑,Linux 系统中的每一个帐号都必须同时具备用户名和密码。
- 可以使用 passwd 命令,为已有账户重新修改用户口令。
- 需要说明的是,超级用户 root 可以修改所有其他用户的口令,而普通用户只能修改自己的用户口令,如果确要修改超级用户或其他用户口令的话,需要具有超级用户的权限。
- passwd 命令的一般语法格式为:
- 单独使用 passwd 命令,意为修改当前用户自己的口令。下面命令实例用于修改用户自己的口令。
su
- su 命令用于临时改变用户身份,具有其他用户的权限。普通用户可以使用 su 命令临时具有超级用户的权限;超级用户也可以使用普通用户身份完成一些操作。当需要放弃当前用户身份,可以使用
exit
命令切换回来。su 命令的一般语法格式为:
- 选项“-c”表示执行一个命令后就结束;-m 表示仍保留环境变量不变;-表示转换用户身份时,同时使用该用户的环境。
- 单独使用 su 命令,默认为要转换为超级用户 root。下面命令实例临时获取超级用户 root 的权限。可以从命令提示符中可以看出,“linux”用户使用
su
命令切换为 root 用户。
echo
echo 命令用于在标准输出——显示器上显示一段文字,一般起到提示作用。echo 命令的一般语法格式为:
- 选项-n 表示输出文字后不换行。提示信息字符串可以加引号,也可以不加。
date
date 命令用于显示和设置系统日期和时间。date 命令的一般语法格式为:
- 选项
-s
表示按照 datestr 日期显示格式设置日期;单独使用 date 命令,用于显示系统时钟中当前日期。时间的格式为:“hh:mm:ss”,日期格式为:“mm/dd/yy”。
clear
clear 命令用于清除屏幕上的信息。清屏后,sell 命令提示符移动到屏幕左上角。clear 命令的一般语法格式为:
由于 shell 命令是逐行执行,执行结果也将随即显示。因此,用户在使用命令终端窗口时,终端窗口会很快就会被字符占满。clear 可以帮助清理一下窗口中杂乱的字符显示。
ctrl+l
也能起到同样的作用。
df
df 命令用于查看磁盘空间的使用情况。查看磁盘空间是用户应当经常做的事情,因为谁也不希望看到根或/var 分区在不经意间填满,以便及时清理。df 命令的一般格式为:
–其中,参数 Filesystem 表示物理文件系统。各选项的含义如表所示。
选项 | 含义 |
---|---|
-a | 显示所有物理文件系统的使用情况,包括虚拟文件系统,如/proc、/sys 等 |
-T | 显示物理文件系统的文件格式类型 |
-h | 物理文件系统大小按兆字节为单位显示 |
-k | 物理文件系统大小按千字节为单位显示 |
du
du 列出目录和文件所使用的磁盘块数,每块占 512 个字节。
常用参数:
-
-a :仅列出空闲的文件数
-
-h :列出磁盘的使用情况(KB)
-
-s :列出总的空闲空间(KB)
例:
#du –h /etc
用户管理
用户管理相关文件介绍
用户的属性
- 用户名
- 口令
- 用户 ID(UID)
- 用户主目录(HOME)
- 用户 shell
/etc/passwd 文件
/etc/passwd 文件是系统能够识别的用户清单。用户登陆时,系统查询这个文件,确定用户的 UID 并验证用户口令
- 登陆名
- 经过加密的口令
- UID
- 默认的 GID
- 个人信息
- 主目录
- 登陆 shell
/etc/group 文件
- 包含了 UNIX 组的名称和每个组中成员列表
- 每一行代表一个组,包括 4 个字段:组名、加密的口令、GID 号、成员列表,彼此用逗号隔开。
添加用户 adduser
语法:adduser
/etc/adduser.conf
FIRST_UID=1000
LAST_UID=29999
USERS_GID=100
DHOME=/home
DSHELL=/bin/bash
SKEL=/etc/skel
SKEL 模板
/etc/skel 目录是被 /usr/sbin/useradd 使用
把想要新用户拥有的配置文件从/etc/skel 目录拷贝,常用的文件:
- .bash_profile
- .bashrc
- .bash_logout
- .dircolors
- .inputrc
- .vimrc
添加新用户的过程
-
系统
- 编辑 passwd 和 shadow 文件,定义用户帐号
- 设置一个初始口令
- 创建用户主目录,用 chown 和 chmod 命令改变主目录的属主和属性
-
为用户所进行的步骤
- 将默认的启动文件复制到用户主目录中
- 设置用户的邮件主目录并建立邮件别名
用户管理相关命令介绍
设置初始口令
- 使用
passwd
命令可以修改用户口令 - root 用户可以修改任何用户的口令
语法:passwd [-k] [-l] [u] [-f] [-d] [-S] username
使用方法:passwd username
修改用户属性
•usermod
语法:usermod [-u uid [-o]] [-g group] [-G gropup,…]
[-d home [-m]] [-s shell] [-c comment]
[-l new_name] [-f inactive][-e expire]
[-p passwd] [-L|-U] name
举例用户 oldname 改名为 newname,注意要同时更改家目录:
usermod –d /home/newname –m –l newname oldname
删除用户
deluser
语法: deluser
使用方法:
deluser --remove-home user1
删除用户 user1 的同时删除用户的工作目录
添加用户组
addgroup
语法: addgroup groupname
删除用户组
delgroup
语法: delgroup groupname
linux 进程管理相关命令
进程的概念
程序的一次执行就是一个进程。
程序的两次执行就,产生了 p1 和 p2 进程。
使用 ps 命令查看进程
显示进程 (process) 的动态
语法:
ps [options]
常见的参数:
- -A 列出所有的行程
- -w 显示加宽可以显示较多的资讯
- -au 显示较详细的资讯
-aux
/-elf
显示所有包含其他使用者的行程
进程的状态标志
- D: 不可中断的静止
- R: 正在执行中
- S: 阻塞状态
- T: 暂停执行
- Z: 不存在但暂时无法消除
- <: 高优先级的进程
- N: 低优先级的进程
- L: 有内存分页分配并锁在内存中
top 命令
- 监视进程
- 通常会全屏显示,而且会随着进程状态的变化不断更新
- 整个系统的信息也会显示,为查找问题提供了便利
- 可以显示系统总共有多少 CPU 和内存资源以及负载平衡等信息。
pstree 命令
将所有行程以树状图显示, 树状图将会以 pid (如果有指定) 或是以 init 这个基本进程为根,如果有指定使用者 id, 则树状图会只显示该使用者所拥有的进程。
参数:
- -a 显示该进程的完整指令及参数, 如果是被记忆体置换出去的进程则会加上括号
- -c 如果有重覆的进程名, 则分开列出
使用 kill 命令终止进程
使用 kill 命令终止进程
kill [-signal] PID
signal 是信号,PID 是进程号
kill 命令向指定的进程发出一个信号 signal,在默认的情况下,kill 命令向指定进程发出信号 9/15,正常情况下,将杀死那些不捕捉或不忽略这个信号的进程。
linux 文件系统的类型和结构
Linux 文件系统的类型
文件系统类型
linux 是一种兼容性很高的操作系统,支持的文件系统格式很多,大体可分以下几类:
- 磁盘文件系统:指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB 存储器、磁盘阵列等。常见文件系统格式有:autofs、coda、Ext(Extended File sytem,扩展文件系统)、Ext3、Ext4、VFAT、ISO9660(通常是 CD-ROM)、UFS(Unix File System,Unix 文件系统)、FAT、FAT16、FAT32、NTFS 等;
- 网络文件系统:是可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。常见文件系统格式有:NFS、Samba 等;
- 专有/虚拟文件系统:不驻留在磁盘上的文件系统。常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和 LOOPBACKFS(Loopback File System,回送文件系统)。
文件系统类型
- 目前 Ext4 是 Linux 系统广泛使用的一种文件格式。在 Ext3 基础上,对有效性保护、数据完整性、数据访问速度、向下兼容性等方面做了改进。
- 最大特点是日志文件系统:可将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪。
SCSI 与 IDE 设备命名
-
sata 硬盘的设备名称是“/dev/sda”
–/dev/sda1 含义?
–/dev/sdb3 含义?
-
IDE 硬盘的设备名称是“/dev/hda”
–/dev/hdc2 含义?
-
如果很在意系统的高性能和稳定性,应该使用 SCSI 硬盘
cat /proc/partitions
查看硬盘具体信息。
Linux 分区的命名方式
- 字母和数字相结合
- 前两个字母表示设备类型
- “hd”代表 IDE 硬盘
- “sd”表示 SCSI 或 SATA 硬盘
- 第三个字母说明具体的设备
- “/dev/hda”表示第一个 IDE 硬盘
- “/dev/hdb”表示第二个 IDE 硬盘
交换分区
将内存中的内容写入硬盘或从硬盘中读出,称为内存交换(swapping)。交换分区最小必须等于计算机的内存。可以创建多于一个的交换分区。尽量把交换分区放在硬盘驱动器的起始位置。
Linux 文件系统的结构
文件系统逻辑结构
某所大学的学生可能在一两万人左右,通常将学生分配在以学院-系-班为单位的分层组织机构中。若需要查找一名学生时,最笨的办法是依次问询大学中的每一个学生,直到找到为止。如果按照从学院、到系、再到班的层次查询下去,必然可以找到该学生,且查询效率高。这种树形的分层结构就提供了一种自顶向下的查询方法。
如果把学生看作文件,院-系-班的组织结构看作是 Linux 文件目录结构,那么就同样可以有效地管理数量庞大的文件。
一直使用微软 Windows 操作系统的用户似乎已经习惯了将硬盘上的几个分区,并用 A:、B:、C:、D:等符号标识。存取文件时一定要清楚存放在哪个磁盘的哪个目录下。
Linux 的文件组织模式犹如一颗倒置的树,这与 Windows 文件系统有很大差别。所有存储设备作为这颗树的一个子目录。存取文件时只需确定目录就可以了,无需考虑物理存储位置。
分区与目录的关系:
在 Windows 下,目录结构属于分区;在 Linux 下,分区属于目录结构。
-
如何知道文件存储的具体硬件位置呢?
在 Linux 中,将所有硬件都视为文件来处理(一切皆文件),包括硬盘分区、CD-ROM、软驱以及其他 USB 移动设备等。为了能够按照统一的方式和方法访问文件资源,Linux 中提供了对每种硬件设备相应的设备文件。一旦 Linux 系统可以访问到硬件,就将其上的文件系统挂载到目录树中的一个子目录中。
例如,用户插入 USB 移动存储器,Ubuntu Linux 自动识别后,将其挂载到“/media/disk”目录下。而不象 Windows 系统将 USB 存储器作为新驱动器,表示为“F:”盘。
Linux 文件系统就是一个树形的分层组织结构。将根(/)作为整个文件系统的惟一起点,其他所有目录都从该点出发。将 Linux 的全部文件按照一定的用途归类,合理地挂载到这颗“大树”的“树枝”或“树叶”上,如图所示。而这些全不用考虑文件的实际存储位置,无论是存在硬盘上,还是在 CD-ROM 或 USB 存储器中,甚至是网络终端。
目录名 | 描述 |
---|---|
/ | Linux 文件系统根目录 |
/bin | 存放系统中最常用的可执行文件(二进制) |
/boot | 存放 Linux 内核和系统启动文件,包括 Grub、lilo 启动器程序 |
/dev | 存放所有设备文件,包括硬盘、分区、键盘、鼠标、USB、tty 等 |
/etc | 存放系统的所有配置文件,例如 passwd 存放用户账户信息,hostname 存放主机名等 |
/home | 用户主目录的默认位置 |
/initrd | 存放启动时挂载 initrd.img 映像文件的目录,以及载入所需设备模块的目录。 |
/lib | 存放共享的库文件,包含许多被/bin 和/sbin 中程序使用的库文件 |
/lost+found | 存放由 fsck 放置的零散文件 |
/media | Ubuntu 系统自动挂载 CD-ROM、软驱、USB 存储器后,存放临时读入的文件 |
/mnt | 该目录通常用于作为被挂载的文件系统的挂载点 |
/opt | 作为可选文件和程序的存放目录,主要被第三方开发者用来简易地安装和卸装他们的软件包 |
/proc | 存放所有标志为文件的进程,它们是通过进程号或其他的系统动态信息进行标识,例如 cpuinfo 文件存放 CPU 当前工作状态的数据 |
/root | 根用户(超级用户)的主目录 |
/sbin | 存放更多的可执行文件(二进制),包括系统管理、目录查询等关键命令文件 |
/srv | |
/sys | |
/tmp | 存放用户和程序的临时文件,所有用户对该目录都有读写权限 |
/usr | 用于存放与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。以下罗列了/usr 中部分重要的目录。 |
---|---|
/usr/X11R6: | X Window 系统 |
/usr/bin | 用户和管理员的标准命令 |
/usr/include | c/c++ 等各种开发语言环境的标准 include 文件 |
/usr/lib | 应用程序及程序包的连接库 |
/usr/local | 系统管理员安装的应用程序目录 |
/usr/local/share | 系统管理员安装的共享文件 |
/usr/sbin | 用户和管理员的标准命令 |
/usr/share | 存放使用手册等共享文件的目录 |
/usr/share/dict | 存放词表的目录 |
/usr/share/man | 系统使用手册 |
/usr/share/misc | 一般数据 |
/usr/share/sgml | SGML 数据 |
/usr/share/xml | XML 数据 |
/var | 通常用于存放长度可变的文件,例如日志文件和打印机文件。以下罗列了/var 其中部分重要的目录。 |
/var/cache | 应用程序缓存目录 |
/var/crash | 系统错误信息 |
/var/games | 游戏数据 |
/var/lib | 各种状态数据 |
/var/lock | 文件锁定纪录 |
/var/log | 日志记录 |
/var/mail | 电子邮件 |
/var/opt | /opt 目录的变量数据 |
/var/run | 进程的标示数据 |
/var/spool | 存放电子邮件,打印任务等的队列目录。 |
/var/tmp | 临时文件目录 |
基本目录
-
绝对路径和相对路径
在认识到 Linux 文件系统是树形分层的组织结构,且只有一个根节点之后。在 Linux 文件系统中查找一个文件,只要确定文件名和路径,就可以惟一确定这个文件。
-
绝对路径:指文件在文件系统中的准确位置。通常在本地主机上,以根目录为起点。例如“/usr/games/gnect”就是绝对路径。
-
相对路径:指相对于用户当前位置的一个文件或目录的位置。例如,用户处在 usr 目录中时,只需要“games/gnect”就可确定这个文件。
Linux 文件系统与 Windows 文件系统比较
Linux 文件系统 | Windows 文件系统 | |
---|---|---|
文件格式 | 使用的主要文件格式有:EXT2、EXT3、RerserFS、ISO9660、vfat 等 | 使用的主要文件格式有:FAT16、 FAT32、NTFS 等 |
存储结构 | 逻辑结构犹如一颗倒置的树。将每个硬件设备视为一个文件,置于树形的文件系统层次结构中。因此,Linux 系统的某一个文件就可能占有一块硬盘,甚至是远端设备,用户访问时非常自然 | 逻辑结构犹如多颗树(森林)。将硬盘划分为若个分区,与存储设备一起(例如 CD-ROM、USB 存储器等),使用驱动器盘符标识,例如 A:代表软驱、C:代表硬盘中的第一个分区等。 |
与硬盘分区的关系 | 分区在目录结构中 | 目录结构在分区中 |
文件命名 | Linux 文件系统中严格区分大小写,MyFile.txt 与 myfile.txt 指不同的文件。区分文件类型不依赖于文件后缀,可以使用程序 file 命令判断文件类型。 | windows 文件系统中不区分大小写,MyFile.txt 与 myfile.txt 是指同一个文件。使用文件后缀来标识文件类型。例如使用“.txt”表示文本文件。 |
路径分隔符 | Linux 使用斜杠“/”分隔目录名,例如“/home/usr/share”,其中第一个斜杠是根目录(/),绝对路径都是以根目录作为起点 | Windows 使用反斜杠“\”分隔目录名,例如“C:\program \username”,绝对路径都是以驱动器盘符作为起点 |
文件与目录权限 | Linux 最初的定位是多用户的操作系统,因而有完善文件授权机制,所有的文件和目录都有相应的访问权限 | Windows 最初的定位是单用户的操作系统,内建系统时没有文件权限的概念,后期的 Windows 逐渐增加了这方面的功能 |
文件系统相关命令
file
在 Linux 文件系统中,文件扩展名不总是被使用或被一致地使用。如果一个文件没有扩展名,或者文件与其扩展名不符时怎么办呢?file 命令功能用于判定一个文件的类型。file 命令一般语法格式为:
其中 filename 是文件名。命令的输出将显示该文件是二进制文件、文本文件、目录文件、设备文件,还是 Linux 中其他类型的文件。
ln
创建链接文件:
Linux 中有两种类型的链接:
- 硬链接是利用 Linux 中为每个文件分配的物理编号——inode 建立链接。因此,硬链接不能跨越文件系统。
- 软链接(符号链接)是利用文件的路径名建立链接。通常建立软链接使用绝对路径而不是相对路径,以最大限度增加可移植性。(类似快捷方式)
需要注意的是,如果是修改硬链接的目标文件名,链接依然有效;如果修改软链接的目标文件名,则链接将断开;对一个已存在的链接文件执行移动或删除操作,有可能导致链接的断开。假如删除目标文件后,重新创建一个同名文件,软链接将恢复,硬链接不再有效,因为文件的 inode 已经改变。
ln 命令可以用于创建文件的链接文件。ln 命令一般语法格式为:
其中,选项“-s”表示为创建软链接。在缺省情况下,创建硬链接。参数 target 为目标文件,link_name 为链接文件名。如果链接文件名已经存在但不是目录,将不做链接。目标文件可以是任何一个文件名,也可以是一个目录。
压缩文件
-
归档文件是将一组文件或目录保存在一个文件中。
-
压缩文件也是将一组文件或目录保存一个文件中,并按照某种存储格式保存在磁盘上,所占磁盘空间比其中所有文件总和要少。
- 归档文件仍是没有经过压缩的,它所使用的磁盘空间仍等于其所有文件的总和。因而,用户可以将归档文件再进行压缩,使其容量更小。
- gzip 是 Linux 中最流行的压缩工具,具有很好的移植性,可在很多不同架构的系统中使用。bzip2 在性能上优于 gzip,提供了最大限度的压缩比率。如果用户需要经常在 Linux 和微软 Windows 间交换文件,建议使用 zip。
压缩工具 | 解压工具 | 文件扩展名 |
---|---|---|
gzip | gunzip | .gz |
bzip2 | bunzip2 | .bz2 |
zip | unzip | .zip |
gzip 与 gunzip 命令
与 zip 明显区别在于只能压缩一个文件,无法将多个文件压缩为一个文件。gzip 命令符号模式的一般语法格式为:
其中,filename 表示要压缩的文件名,gzip 会自动在这个文件名后添加扩展名为.gz,作为压缩文件的文件名。
选项 | 描述 |
---|---|
-l | 查看压缩文件内的信息,包括文件数、大小、压缩比等参数,并不进行文件解压 |
-d | 将文件解压,功能与 gunzip 相同 |
-num | 指定压缩比率,num 为 1~9 个等级 |
gunzip 命令符号模式的一般语法格式为:
- 其中,选项“-f”用于解压文件时,对覆盖同名文件不做提示。
- 在执行 gzip 命令后,它将删除旧的未压缩的文件并只保留已压缩的版本。以下命令以最大的压缩率对文件 file_1 进行压缩,生成 file_1.gz 文件。使用“-l”选项可以查看压缩的相关信息。最后使用 gunzip 命令对文件进行了解压。与压缩时相反,file_1.gz 文件会被删除,继之生成 file_1。
tar
tar 命令主要用于将若干文件或目录合并为一个文件,以便备份和压缩。当然,之后出现 tar 程序的改进版本,可以实现在合并归档的同时进行压缩。tar 命令符号模式的一般语法格式为:
选项 | 描述 |
---|---|
-t | 显示归档文件中的内容 |
-x | 释放归档文件 |
-u | 更新归档文件 |
-c | 创建一个新的归档文件 |
-v | 显示归档和释放的过程信息 |
-f | 用户指定归档文件的文件名,否则使用默认名称 |
-j | 由 tar 生成归档,然后由 bzip2 压缩 |
-z | 由 tar 生成归档,然后由 gzip 压缩 |
如果想查看一下归档文件中的详细内容,使用类似以下命令:
使用以下命令完成 tar 文件的释放。其中,“tar -xjf”和“tar –xzf”等效与先解压缩后释放 tar 文件。
网络配置
网络配置基础
选择自定义或者局域网,如果用的是校园的局域网的网络的话,要选择 nat。
配置 IP 地址
第一种方式——命令
第一步:修改静态 ip。
bleaaach@bleaaach-virtual-machine:~$ sudo vi /etc/network/interfaces
以下分别为配置静态 IP 和动态 IP 时,配置文件“/etc/network/interfaces”的实例。
第二步,配置 dns:
DNS 客户端配置文件—resolv.conf
Ubuntu Linux 将 DNS 服务器地址保存在配置文件/etc/resolv.conf 中。
依然延续上面的例子,添加 DNS 服务器 IP 地址后,查看配置文件/etc/hosts,如下所示。
第三步:
sudo vi /etc/rc.local
写入:
每次启动 linux,就会启动这个,就能实现永久有效了。
第四步:重启服务。
wdl@ubuntuwdl:~$ sudo /etc/init.d/networking restart
可以通过 ping 测试网络。
第二种方式——图形界面
进入设置:
断开连接再重新连接上,就可以重新配置了。(要和本地 ip 处于同一个子网)
网络相关命令
Ifconfig 命令
ifconfig 是 GNU/Linux 中配置网卡的基本命令,包含在 net-tools 软件包中。它可用于显示或设置网卡的配置,如 IP 地址、子网掩码、最大分组传输数、IO 端口等,还可以启动或禁用网卡。ifconfig 命令有以下两种格式:
ifconfig 的第一种格式用于查看当前系统的网络配置情况;第二种格式用于配置网卡,包括添加、删除网卡,以及绑定多个 IP 地址等。
从下面的运行结果可以看出,主机有两个接口 eth0、lo。lo 代表主机本身,也称回送接口(Loopback),其 IP 地址约定为 127.0.0.1。
如果主机安装了第二块、第三块网卡,则有 eth1,eth2 标识。常见的接口类型还有以下几种(N 表示接口号):
- pppN 表示调制解调设备
- wlanN 表示无线网卡
- trN 表示令牌环网卡
如果只是关心某个网络设备,可以在 ifconfig 后面加上接口名称,则只显示该设备的相关信息,例如: