一. Linux文件系统
Linux采用层级式树状目录结构,全部文件至于一个根目录"/",在此根目录下再创建其它的目录。在Linux中,一切皆文件。
1.inode 是什么?有什么作用呢?
inode 是 linux/unix 文件系统的基础。
- 硬盘的最小存储单位是扇区(Sector),块(block)由多个扇区组成。**文件数据存储在块中。**块的最常见的大小是 4kb,约为 8 个连续的扇区组成(每个扇区存储 512 字节)。一个文件可能会占用多个 block,但是一个块只能存放一个文件。
- 虽然,我们将文件存储在了块(block)中,但是我们还需要一个空间来存储文件的 元信息 metadata :如某个文件被分成几块、每一块在的地址、文件拥有者,创建时间,权限,大小等。这种 存储文件元信息的区域就叫 inode,译为索引节点:i(index)+node。 每个文件都有一个 inode,存储文件的元信息。
- 可以使用 stat 命令可以查看文件的 inode 信息。每个 inode 都有一个号码,Linux/Unix 操作系统不使用文件名来区分文件,而是使用 inode 号码区分不同的文件。
简单来说:inode 就是用来维护某个文件被分成几块、每一块在的地址、文件拥有者,创建时间,权限,大小等信息。
简单总结一下:
- inode :记录文件的属性信息,可以使用 stat 命令查看 inode 信息。
- block :实际文件的内容,如果一个文件大于一个块时候,那么将占用多个 block,但是一个块只能存放一个文件。(因为数据是由 inode 指向的,如果有两个文件的数据存放在同一个块中,就会乱套了)
2. Linux 文件类型
Linux 支持很多文件类型,其中非常重要的文件类型有: 普通文件,目录文件,链接文件,设备文件,管道文件,Socket 套接字文件等。
- 普通文件(-) : 用于存储信息和数据, Linux 用户可以根据访问权限对普通文件进行查看、更改和删除。比如:图片、声音、PDF、text、视频、源代码等等。
- 目录文件(d,directory file) :目录也是文件的一种,用于表示和管理系统中的文件,目录文件中包含一些文件名和子目录名。打开目录事实上就是打开目录文件。
- 符号链接文件(l,symbolic link) :保留了指向文件的地址而不是文件本身。
- 字符设备(c,char) :用来访问字符设备比如硬盘。
- 设备文件(b,block) : 用来访问块设备比如硬盘、软盘。
- 管道文件(p,pipe) : 一种特殊类型的文件,用于进程之间的通信。
- 套接字(s,socket) :用于进程间的网络通信,也可以用于本机之间的非网络通信。
3. Linux常用目录
- /bin: 存放二进制可执行文件(ls、cat、mkdir 等),常用命令一般都在这里;
- /etc: 存放系统管理和配置文件;
- /home: 存放所有用户文件的根目录,是用户主目录的基点,比如用户 user 的主目录就是/home/user,可以用~user 表示;
- /usr : 用于存放系统应用程序;
- /opt: 额外安装的可选应用程序包所放置的位置。一般情况下,我们可以把 tomcat 等都安装到这里;
- /proc: 虚拟文件系统目录,是系统内存的映射。可直接访问这个目录来获取系统信息;
- /root: 超级用户(系统管理员)的主目录(特权阶级o);
- /sbin: 存放二进制可执行文件,只有 root 才能访问。这里存放的是系统管理员使用的系统级别的管理命令和程序。如 ifconfig 等;
- /dev: 用于存放设备文件;
- /mnt: 系统管理员安装临时文件系统的安装点,系统提供这个目录是让用户临时挂载其他的文件系统;
- /boot: 存放用于系统引导时使用的各种文件;
- /lib : 存放着和系统运行相关的库文件 ;
- /tmp: 用于存放各种临时文件,是公用的临时文件存储点;
- /var: 用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等;
- /lost+found: 这个目录平时是空的,系统非正常关机而留下“无家可归”的文件(windows 下叫什么.chk)就在这里。
二. Vi和Vim
Vi是Linux内置的文本编辑器,Vim是Vi的增强版,具有程序编辑的能力
Vi和Vim有三种模式:正常模式,编辑模式,命令行模式
- 正常模式输入i进入编辑模式,输入":"进入命令行模式,在命令模式中输入wq会保存并退出,q会退出,!q会强制退出
Vim中的快捷键:
- yy:拷贝当前行
- nyy:拷贝n行
- p:粘贴
- dd:删除当前行
- /关键词:查找某个关键词
- set nu:设置文件行号
- set nonu:取消文件行号
- G:到最末行
- gg:到最首行
- u:撤销
- set nu+行号+shift + g:光标移动到指定行
三. 用户管理
Linux是多任务多用户操作系统,任何一个要使用系统资源的用户,必须先申请一个账号,而每个用户属于一个用户组。
常用指令 :
- useradd 用户名:添加用户
- passwd 用户名:给用户设置密码
- userdel 用户名:删除用户,但保留用户家目录
- userdel -r 用户名:删除用户,并删除用户家目录
- usermod 选项 用户名:修改帐号
- id 用户名:查询用户的id,gid,所在组名称
- su 用户名:切换用户
- exit:切换到原用户
用户组相关:
- groupadd 组名:添加组
- groupdel 组名:删除组
- useradd -g 用户组 用户名:增加用户时直接加上组
- usermod -g 用户组 用户名:修改用户的组
用户和组的相关文件:
- 用户配置文件:/etc/passwd
- 组配置文件:/etc/group
- 口令配置文件:/etc/shadow (存放密码)
四. 常用指令
1. 指定运行级别:
Linux共有七种运行级别:
0:关机
1:单用户(root密码丢失可使用该级别修改密码)
2:多用户无网络
3:多用户有网络
4:保留
5:图形界面
6:重启
- init [级别]:进入指定级别
2. 帮助指令:
- man [命令或配置文件]
- help [命令]
最好直接在百度上找
3. 目录类:
-
pwd:显示当前工作目录的绝对路径
-
ls [选项] [目录或文件]:查看目录所有内容信息
-a:显示隐藏文件
-l:以列表方式显示信息 -
cd:切换路径
cd …(或cd…/): 切换到上一层目录
cd /: 切换到系统根目录
cd ~: 切换到用户主目录 -
mkdir:创建目录
-p创建多级目录 -
rmdir:删除空目录
4. 文件类:
- touch:创建新文件
- cp [选项] source dest:拷贝文件
-r 递归拷贝整个文件夹 - rm:删除文件
rm -rf:递归强制删除整个文件 - mv:移动文件或重命名文件
mv 原文件 新文件 (重命名)
mv 原文件 目标目录 (移动文件) - cat:查看文件内容
-n显示行号 - more:分页查看文件 一般使用|more
- less:分页查看文件,但是一次加载一部分而不是整个文件(用于查看大型文件)
- “>”:输出重定向,会将原文件内容覆盖
- “>>”:输出重定向,追加到原文件末尾
如 ls -l > a.txt 会将查询到的内容写到a.txt中 - “&>”:无论命令是否正确执行,都会将原文件内容覆盖
- “&>>”:无论命令是否正确执行,都会追加到原文件末尾
- echo:输出内容到控制台
- head:显示文件开头部分(默认前10行)
- tail:显示文件尾部内容
tail -f 文件:实时追踪文档所有更新 - ln:软链接
- history:查看已执行过的命令
history+数字:显示最近的几个指令
!行号:再执行一次对应行号的指令
5.时间日期类:
- date:显示当前时间
- date “+%Y%m%d%H%M%S”:显示年月日时分秒
- date -s 时间:设置系统时间
- cal:查看日历
- cal 年份:查看一年的日历
6.搜索查找类:
- find [搜索范围] [选项]:从指定目录向下递归地遍历各个子目录
- -name:按文件名查找
- -user:查找该用户的文件
- -size:按大小查找 (+n大于 -n小于 n等于,如find /home -size +20M搜索/home下大于20M的文件)
- grep [选项] 查找内容 源文件:过滤查找
-n:显示行号 -i:忽略字母大小写
通常配合管道符:如 cat hello.txt | grep xxx
7.压缩解压类
- zip/unzip
zip [选项] xxx.zip 源文件或目录
-r:递归压缩文件 -d<目录>:指定解压缩后的存放目录 - tar:打包指令
tar -zcvf xxx.tar.gz 源文件:打包
tar -zxvf xxx.tar.gz:解压缩(-C可以指定解压到哪个目录)
五. 组管理和权限管理
Linux中每个文件都有所有者,所在组和其他组的概念,查看文件时的前三个权限就分别对应这三个概念的权限:
其中权限分为:
- r:可读 ,r 也可以用数字 4 表示
- w:可修改(文件权限),可删除(目录权限),w 也可以用数字 2 表示
- x:可执行(文件权限),可进入(目录权限),x 也可以用数字 1 表示
需要注意的是: 超级用户可以无视普通用户的权限,即使文件目录权限是 000,依旧可以访问。
常用命令:
- chown 用户名 文件名:修改文件所有者
- chgrp 组名 文件名:修改文件所在组
-R:使其子文件和目录递归生效 - chmod 数字 文件名:修改文件权限
其中 r=4 w=2 x=1,修改权限只需把需要的权限数字相加
如 chmod 751 xx.txt
六. 定时任务调度
-
crontab [选项]:
-e:编辑定时任务
-l:查询定时任务
-r:删除当前用户所有任务 -
定时任务的前五个数字分别代表 分,小时,天,月,星期几
如 */1 * * * * ls -l > to.txt:每隔一分钟把查到的内容写到to.txt中
0 2 * * * /home/mytask3.sh:每天两点执行mytask3.sh脚本
参数:
*代表任何时间
,代表不连续的时间
-代表连续的时间范围
/代表每隔多少时间
\
七. 磁盘分区、挂载
Linux磁盘采用挂载的方式,将一个分区和一个目录联系起来
常用指令:
- lsblk -f :查看系统的分区和挂载情况
- df -lh:查看当前磁盘使用情况
- du -h/目录:查询指定目录磁盘使用情况
- tree:以树状显示目录结构
- 统计文件个数: ls -l /home | grep “^-” | wc -l
- 统计文件个数(包含子文件): ls -lR /home | grep “^-” | wc -l
八. 网络
1. 配置IP地址
Linux的IP地址可以自动获取或指定固定的IP地址,作为服务器时应该使用固定的IP地址
配置方法:
修改网卡的配置文件 vim /etc/sysconfig/network-scripts/ifcfg-ens33
并修改ONBOOT=yes,BOOTPROTO=static,修改IPADDR,GATEWAY(网关),DNS
2. 常用命令
- ifconfig:查看当前系统的网卡信息:
- ping:查看与某台机器的连接情况:
- netstat -an:查看当前系统的端口使用
3. 如何查看端口的占用情况
- lsof -i:端口号
- netstat -tunlp |grep 端口号,用于查看指定的端口号的进程情况
九. 进程管理
- ps -aux | grep xxx :查看指定进程
内容包括:PID,TTY(终端机号),TIME(进程消耗CPU时间),CMD(正在执行的命令或进程),VSZ(占用虚拟内存),RSS(使用物理内存情况),STAT(进程状态,S为休眠,r运行,z僵死进程) - ps -ef:查看父进程
- pstree:以树状形式查看进程信息
- kill [选项] 进程号:通过进程号杀死进程
-9:强制进程立即停止 - killall 进程名称:通过进程名称杀死进程
- sudo + 其他命令:以系统管理者的身份执行指令,也就是说,经由 sudo 所执行的指令就好像是 root 亲自执行。
服务管理:
- systemctl:列出所有activeunit
- systemctl list-units-all:列出所有unit,包括unactive的
- systemctl [status | is-active | stop | start | is-enabled(是否开机自启动) | disabled(禁止开机自启动) | enable | restart | mask(注销)] 服务名
进程监控:
- top:动态监控进程执行情况
输入 u+用户名,可监视特定用户
输入 k+pid,可杀死指定进程
P:以CPU使用率排序
M:以内存使用率排序
N:以PID排序
q:退出 - netstat -anp:监控网络状态
十. RPM与YUM
- rpm -q 软件名:查看有没有安装某软件
- rpm -e 软件名:卸载软件
- rpm -ivh RPM包全路径名:安装软件
- yum list | grep xx 软件名:查看在yum服务器上有没有该软件
- yum install 软件名:安装软件