1:基本知识
1.1:家目录作用
/
处于linux系统树形结构的最顶端,它是linux文件系统的入口,所有的目录、文件、设备都在 / 之下
/bin
bin是Binary的缩写。常用的二进制命令目录。比如 ls、cp、mkdir、cut等;和/usr/bin类似,一些用户级gnu工具
/boot
存放的系统启动相关的文件,例如:kernel.grub(引导装载程序)
/dev
dev是Device的缩写。设备文件目录,比如声卡、磁盘……在Linux中
一切都被看做文件。终端设备、磁盘等等都被看做文件
设备文件: /dev/sda,/dev/sda1,/dev/tty1,/dev/tty2,/dev/pts/1, /dev/zero, /dev/null, /dev/cdrom
/etc
常用系统及二进制安装包配置文件默认路径和服务器启动命令目录
passwd 用户信息文件
shadow 用户密码文件
group 存储用户组信息
fstab 系统开机启动自动挂载分区列表
hosts 设定用户自己的IP与主机名对应的信息
/home
普通用户的家目录默认存放目录
/lib
库文件存放目录,函数库目录
/lost+found
只有centos6存在
默认为空,被FSCK(file system check用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查)用来放置零散文件(没有名称的文件) 当系统非法关机后,这里就会存放一些文件。
在centos6版本下,每个分区的挂载点下会有些目录
/mnt
/media
一般用来临时挂载存储设备的挂载目录,比如有cdrom、U盘等目录
在CENTOS7中会挂载到/run下面
/opt
表示的是可选择的意思,有些软件包也会被安装在这里
/proc
操作系统运行时,进程(正在运行中的程序)信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里。/proc目录是伪装的文件系统proc的挂载目录,proc并不是真正的文件系统。因此,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。也就是说,这个目录的内容不在硬盘上而是在内存里
查看咱们的CPU信息
cat /proc/cpuinfo
/sys
系统目录,存放硬件信息的相关文件
/run
运行目录,存放的是系统运行时的数据,比如进程的PID文件
/srv
服务目录,存放的是我们本地服务的相关文件
/sbin
大多数涉及系统管理的命令都存放在该目录中,它是超级权限用户root的可执行命令存放地,普通用户无权限执行这个目录下的命令,凡是目录sbin中包含的命令都是root权限才能执行的
/tmp
该目录用于存放临时文件,有时用户运行程序的时候,会产生一些临时文件。/tmp就是用来存放临时文件的。/var/tmp目录和该目录的作用是相似的,不能存放重要数据,它的权限比较特殊
[root@network ~]# ls –ld /tmp
drwxrwxrwt 10 root root 12288 Oct 3 20:45 /tmp/ 粘滞位(sticky bit)目录的sticky位表示这个目录里的文件只能被owner和root删除
/var
系统运行和软件运行时产生的日志信息,该目录的内容是经常变动的,存放的是一些变化的文件。比如/var下有/var/log目录用来存放系统日志的目录,还有mail、/var/spool/cron
/usr
存放应用程序和文件,
/usr/bin 普通用户使用的应用程序
/usr/sbin 管理员使用的应用程序
/usr/lib 库文件Glibc(32位)
/usr/lib64 库文件Glibc
/lib
/lib64
都在/usr/目录下
这个目录里存放着系统最基本的动态链接共享库,包含许多被/bin/和/sbin/中的程序使用的库文件,目录/usr/lib/中含有更多用于用户程序的库文件。作用类似于windows里的DLL文件,几乎所有的应用程序都需要用到这些共享库
注:lib***.a是静态库
lib***.so是动态库
静态库在编译时被加载到二进制文件中
动态库在运行时加载到进程的内存空间中
简单的说:这些库是为了让你的程序能够正常编译运行的
其实类似于WIN中.dll文件,几乎所有的应用程序都需要用到这些共享库
2:用户与组
1.用户的分类
Linux用户三种角色
超级用户:root拥有对系统的最高的管理权限UID=0
系统用户:它是具有一定特权的用户,它们一般不需要用来登录系统
本地用户:具有一些普通权限,进行日常维护
UID的概念
系统用户UID:1-999(linux7版本) 1-499(linux6版本)
本地用户UID:1000+(linux7版本) 500+(linux6版本)
UID:是每个用户的身份标示,类似于每个人的身份证号码
用户配置文件
/etc/passwd
注释:记录了每个用户的一些基本属性,并且对所有用户可读,每一行记录对应一个用户,每行记录通过冒号进行分隔
文件内容结构
由于passwd不再保存密码信息,所以用x占位代表。
用户组文件
/etc/group
注释:用户组的所有信息存放地儿,并且组名不能重复
用户对应的密码信息
/etc/shadow
注释:因为passwd文件对所有用户是可读的,为安全起见把密码从passwd中分离出来放入这个单独的文件,该文件只有root用户拥有读权限,从而保证密码安全性
该文件只有root用户可以访问采用MD5加密算法
2.1:用户管理
添加用户
useradd 用户名
-c 注释用户设置对账户的注释说明文字
-d 主目录指定用来取代默认的/home/username的主目录
-m 若主目录不存在,则创建它。-r与-m相结合,可为系统账户创建主目录
-M 不创建主目录
-e date 指定账户过期的日期。日期格式为MM/DD/YY
-f days 帐号过期几日后永久停权。若指定为-,则立即被停权,若为-1,则关闭此功能
-g 用户组 指定将用户加入到哪个用户组,该用户组必须存在
-G 用户组列表 指定用户同时加入的用户组列表,各组用逗分隔
-n 不为用户创建私有用户组
-s shell 指定用户登录时使用的shell,默认为/bin/bash
-r 创建一个用户ID小于500的系统账户,默认不创建对应的主目录
-u 用户ID手动指定新用户的ID值,该值必须唯一,且大于499
-p password 为新建用户指定登录密码。此处的password是对应登录密码经MD5加密后所得到的密码值,不实真实密码原文,因此在实际应用中,该参数选项使用较少,通常单独使用passwd命令来为用户设置登录密码。
useradd -r -d 用户路径 用户名
删除用户
userdel 用户名
-r 为可选项,若带上该参数,则在删除该账户的同时,一并删除该账户对应的主目录。
设置用户密码
passwd 用户名
-d 删除用户密码
-l 锁定用户密码
-u 解锁账户密码
-S 要查询当前账户的密码是否被锁定
2.2:用户组管理
创建用户组
groupadd 用户组名
若命令带有-r参数,则创建系统用户组,该类用户组的GID值小于1000;
若没有-r参数,则创建普通用户组,其GID值大于或等于1000
删除用户组
groupdel 用户组名
用户添加到指定的组,使其成为该组的成员
gpasswd -a 用户账户 用户组名
从用户组中移除某用户
gpasswd -d 用户账户 用户组名
添加用户组管理员
gpasswd -A 用户账户 要管理的用户组
2.1:用户组的权限
设置文件或目录的拥有者
chown 用户名:用户组 文件夹或文件
2.修改文件或文件夹权限
chmod 权限 文件或文件夹
u =用户(user),g=组(group),o=其他(other),a=所有(all)
+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。
r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。
r w x
4 2 1
r w x 的含义,
r(read)是只读权限,w(write)是写的权限,x(execute)是可执行权限,
---是没有任何权限。
3:防火墙
4:文件的增删改查
查看文件
命令:ls
ls【选项】目录或文件
-a显示所有文件(包括隐藏文件)
-l 显示详细信息
创建目录
命令:mkdir
mkdir【选项】目录名
-p 递归创建目录
创建文件
命令:touch
显示当前工作目录
命令:pwd
切换目录
命令:cd
cd 目录名
复制文件或目录
命令:cp
cp【选项】目录名
-R/r:递归处理,将指定目录下的所有文件与子目录一并处理
-p 把源文件或目录下的所具有的权限一同复制 到 目标目录或文件
-r 复制目录
移动文件或目录
命令:mv
删除文件或目录
命令:rm
rm【选项】目录名
-f 强制删除,没有提示
-r 删除目录
* 代表所有
查看文件的内容
命令:cat
命令:tail
查看文件后几行
tail [选项] [文件]
-f 循环读取
-c<数目> 显示的字节数
-n<行数> 显示行数
命令:head
查看文件前几行
head [选项] [文件]
-q 隐藏文件名
-v 显示文件名
-c<字节> 显示字节数
-n<行数> 显示的行数
命令:less
分页显示
查询文件
命令:find
语法:
find [目录] –name 内容
输出显示
命令:echo
5:硬盘配置
硬盘分区
命令:fdisk
fdisk 【硬盘路径】
p、打印分区表。
n、新建一个新分区。
d、删除一个分区。
q、退出不保存。
w、把分区写进分区表,保存并退出。
硬盘格式化
命令:mkfs
选项 说明
-V 显示详细执行过程
-t 指定文件系统类型,默认ext4
fs-options 传递给真正的文件系统构建器的特定选项。虽然没有保证,但大多数文件系统构建器都支持下列选项
-l filename 从指定文件中读取坏块列表
-c 创建文件系统之前进行坏道检测
-v 显示详细执行过程
举例:
mkfs -t xfs /dev/sdb1
挂载硬盘
命令:mount
-a 挂载 /etc/fstab 中的所有文件系统
-r 只读挂载
-w 读写挂载
-t 指定挂载的文件系统类型
查看硬盘uuid
命令:blkid
永久挂载硬盘
配置文件位置/etc/fstab
卸载硬盘
命令:umount
-a 卸除/etc/mtab中记录的所有文件系统。
-h 显示帮助。
-n 卸除时不要将信息存入/etc/mtab文件中。
-r 若无法成功卸除,则尝试以只读的方式重新挂入文件系统。
-t<文件系统类型> 仅卸除选项中所指定的文件系统。
-v 执行时显示详细的信息。
-f 强制卸载(硬盘占用)
6:vim编辑器命令
命令:vim
wq 保存退出
wq! 保存退出
q 退出
q! 强制退出
dd 删除当前行列
gg 移动到第一行
G 跳转最后一行
ggVG 权限
i 插入文件内容
u 复原前一个动作
Ctrl+r 重做上一个动作
7:sed命令(文件内容处理)
命令:sed
语法:sed[选项]“命令”文件
举例:
(1)删除某行
#删除第一行
sed '1d' test.txt
#删除最后一行
sed '$d' test.txt
#删除第一行到第二行
sed '1,2d' test.txt
(2)显示某行
#显示第一行
[root@bogon z3]# sed -n '1p' test.txt
#显示最后一行
[root@bogon z3]# sed -n '$p' test.txt
#显示第一行到第二行
[root@bogon z3]# sed -n '1,2p' test.txt
(3)使用模式进行查询
#查询包括关键字ruby所在所有行
sed -n '/ruby/p' test.txt
#查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
sed -n '/\$/p' test.txt
(4)增加一行或多行字符串
cat test.txt
Hello!
ruby is me,welcome to my blog.
End
#第一行后增加字符串"drink tea"
sed '1a drink tea' test.txt
Hello!
drink tea
ruby is me,welcome to my blog.
End
#第一行到第三行后增加字符串"drink tea"
sed '1,3a drink tea' test.txt
Hello!
drink tea
ruby is me,welcome to my blog.
drink tea
end
drink tea
#第一行后增加多行,使用换行符\n
sed '1a drink tea\nor coffee' test.txt
Hello!
drink tea
or coffee
ruby is me,welcome to my blog.
end
(5)代替一行或多行
#第一行代替为Hi
sed '1c Hi' test.txt
Hi
ruby is me,welcome to my blog.
End
#第一行到第二行代替为Hi
sed '1,2c Hi' test.txt
Hi
end
(6)替换一行中的某部分
格式:sed ‘s/要替换的字符串/新的字符串/g’ (要替换的字符串可以用正则表达式)
#替换ruby为bird
[root@bogon z3]# sed -n '/ruby/p' test.txt | sed 's/ruby/bird/g'
#删除ruby
[root@bogon z3]# sed -n '/ruby/p' test.txt | sed 's/ruby//g'
(7)插入
#在文件test.txt中最后一行直接输入"bye"
[root@bogon z3]# sed -i '$a bye' test.txt
[root@bogon z3]# cat test.txt
Hello
ruby is me,welcome to my blog.
end
bye
(8)删除文档中匹配行
sed -i '/匹配字符串/d' filename
(9)替换匹配行中的某个字符串
sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' filename