文章目录
- 前言
- 目录结构
- VI/VIM 编辑器
- 是什么
- 一般模式
- 编辑模式(插入模式)
- 命令模式
- 模式间转换
- 常用基础命令(重要)
- 帮助命令
- man 获得帮助信息
- help 获得 shell 内置命令的帮助信息
- type 查看某命令是内置命令还是外部命令
- 常用快捷键
- 文件目录类
- pwd 显示当前工作目录的绝对路径
- ls 列出目录的内容
- cd 切换目录
- mkdir 创建一个新的目录
- rmdir 删除一个空的目录
- touch 创建空文件
- cp 复制文件或目录
- rm 删除文件或目录
- mv 移动文件与目录或重命名
- cat 查看文件内容
- more 文件内容分屏查看器
- less 分屏显示文件内容
- echo 输出内容到控制台
- head 显示文件头部内容
- tail 输出文件尾部内容
- > 覆盖 和 >> 追加
- ln 创建链接
- history 查看已经执行过的历史命令
- 时间日期类
- date 显示当前时间
- date 显示非当前时间
- date 设置系统时间
- cal 查看日历
- 用户管理命令
- useradd 添加新用户
- passwd 设置用户密码
- id 查看用户是否存在
- cat /etc/passwd 查看创建了哪些用户
- su 切换用户
- userdel 删除用户
- who 查看登录用户信息
- sudo 设置普通用户具有 root 权限
- usermod 修改用户
- 用户组管理命令
- groupadd 新增组
- groupdel 删除组
- groupmod 修改组
- cat /etc/group 查看创建了哪些组
- 文件权限类
- 文件属性
- chmod 改变权限
- chown 改变拥有者
- chgrp 改变所属组
- 搜索查找类
- find 查找文件或者目录
- locate 快速定位文件路径
- grep 过滤查找及“|”管道符
- 压缩和解压类
- gzip 压缩 / gunzip 解压缩
- zip 压缩 / unzip 解压缩
- tar 打包压缩
- 进程管理类
- ps 查看当前系统进程状态
- kill 终止进程
- pstree 查看进程树
- netstat 显示网络状态和端口占用信息
- 面试题总结
前言
博主在前一段时间的面试中被问到了一些Linux的基本命令,答的那叫一个相当的粗糙。因为博主之前为了快点学组件框架、做项目、把简历撰写完成,很多东西都是囫囵吞枣的学习。现在心仪的offer拿到了,必须回过头来重新深入理解一下没有掌握的知识!
目录结构
-
/bin :
是binary二进制的缩写,存放可以直接执行的常用命令(二进制目录,二进制是可以直接执行的机器码)。 -
/sbin :
system binary 系统级二进制命令目录,存放系统管理员(超级用户)才能使用的系统管理工具。 -
/home :
是普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 -
/root :
系统超级管理员的用户主目录。 -
/etc :
存放系统管理所需要的配置文件和子目录。 -
/opt :
optional,给主机额外安装软件提供的目录,默认是空的。比如安装一个MySQL数据库就可以放到这个目录下。 -
/usr :
存放用户的很多应用程序和文件,类似于Windows下的program files目录,非常重要! -
/boot :
存放启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件。 -
/media(CentOS6):
Linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux会把识别的设备挂载到这个目录下。(CentOS7移到了 /run/media) -
/mnt :
该目录让用户临时挂载别的文件系统,可以将外部的存储挂载在 /mnt 上,然后进入该目录就可以查看里面内容了。 -
/var :
存放不断扩充的东西。一般将经常被修改的目录放在这个目录下,包括各种日志文件。 -
/tmp :
存放一些临时文件。 -
/dev :
device,类似于Windows的设备管理器,把所有的硬件设备用文件的形式存储(一切皆文件)。 -
/lib :
系统开机所需要的最基本的动态链接共享库。其作用类似于Windows里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。 -
/proc :
process,这个目录是一个虚拟的目录,它是系统内存的映射,可以通过直接访问这个目录来获取系统信息。 -
/srv :
service,存放一些服务启动之后需要提取的数据。 -
/sys :
这是Linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs。
VI/VIM 编辑器
是什么
- VI 是Unix操作系统和类Unix操作系统中最通用的文本编辑器。
- VIM 编辑器是从 VI 发展出来的一个性能更强大的文本编辑器。可以主动的以字体颜色辨别语法的正确性,方便程序设计。VIM 与 VI编辑器完全兼容。
一般模式
以 vi/vim 打开一个文档就直接进入一般模式了(这是默认的模式)。在这个模式中,可以使用上下左右
按键移动光标,可以使用删除字符
或删除整行
来处理文档内容,也可以使用复制、粘贴
处理文档数据。
语法 | 功能描述 |
---|---|
yy | 复制光标当前一行 |
数字yy / y数字y | 复制从当前行到下面的n行 |
p | 粘贴到光标所在的下一行 |
数字p | 粘贴多行 |
u | 撤销(回滚,类似ctrl+z) |
ctrl+r | 反撤销(类似ctrl+shift+z) |
dd | 删除光标当前行 |
数字dd / d数字d | 删除光标后多少行(含光标行) |
x | 剪切光标位置的字符,相当于delete,删右边字符 |
X | 剪切光标左边的字符,相当于backspace退格键 |
w | 光标跳到下一个单词 |
shift+4($) | 光标移动到行尾 |
shift+6(^) | 光标移动到行头 |
r+字符/数字等 | 把光标位置的东西改成新字符,相当于做了个替换 |
R | 进入替换模式,输入的会依次替换后面的内容 |
e | 朝后跳,跳到当前词的词尾(当前光标不在词尾)/ 下一个词的词尾(当前光标在词尾) |
b | 朝前跳,跳到当前词的词头(当前光标不在词头)/ 上一个词的词头(当前光标在词头) |
gg / H | 光标移动到整篇文档的开头 |
G / L | 光标移动到最后一行行头 |
数字+G | 跳转到指定行的行头 |
yw | 复制一个词 |
dw | 删除一个词 |
y+shift+4(y$) | 复制从当前光标到行尾 |
y+shift+6(y^) | 复制从行头到当前光标 |
编辑模式(插入模式)
在一般模式中可以进行删除、复制、粘贴等的动作,但是却无法编辑文件内容的!需要按下i,I,o,O,a,A
等任何一个字母之后才会进入编辑模式。
通常在Linux中,按下这些按键时,在画面的左下方会出现INSERT 或 REPLACE
的字样,此时才可以进行编辑。而如果要回到一般模式, 则需要按下Esc
这个按键即可退出编辑模式。
(1)进入编辑模式:
命令 | 功能 |
---|---|
i | 当前光标前 |
a | 当前光标后 |
o | 当前光标行的下一行 |
I | 光标所在行最前 |
A | 光标所在行最后 |
O | 当前光标行的上一行 |
(2)退出编辑模式:
按Esc
键 退出编辑模式,之后所在的模式为一般模式。
命令模式
在一般模式当中,输入 : / ?
中的任何一个按钮,就可以进入命令模式(光标移动到最底下那一行)。
在这个模式当中, 提供搜寻资料
的动作。而读取、存盘、大量取代字符、 离开 vim编辑器 、显示行号等动作是在此模式中执行的。
命令 | 功能 |
---|---|
:w | 保存 |
:q | 退出 |
:wq | 保存并退出 |
:q! | 不保存强制退出 |
/要查找的词(此时会开启高亮) | n 查找下一个,N 查找上一个 |
:noh | 取消高亮显示 |
:set nu | 显示行号 |
:set nonu | 关闭行号 |
: s/old/new | 当前光标所在位置的替换 |
: s/old/new/g | 当前行的全局替换 |
:%s/old/new | 替换每一行的第一个匹配词 |
:%s/old/new/g | 替换全篇文档所有的匹配词 |
模式间转换
常用基础命令(重要)
Shell 可以看作是一个命令解释器,提供了交互式的文本控制台界面。可以通过终端控制台来输入命令,由 shell 进行解释并最终交给内核执行。本章就将分类介绍常用的基本 shell 命令。
帮助命令
man 获得帮助信息
man 是 manual (手册) 的缩写
基本语法:
man + 命令或配置文件 功能描述:获得帮助信息
help 获得 shell 内置命令的帮助信息
一部分基础功能的系统命令是直接内嵌在 shell 中的,系统加载启动之后会随着 shell 一起加载,常驻系统内存中,这部分命令被称为“内置(built-in)命令”;对应的其它命令 被称为“外部命令”。
基本语法:
help+ 命令 功能描述:获得 shell 内置命令的帮助信息
type 查看某命令是内置命令还是外部命令
基本语法:
type+ 命令 功能描述:如果是内置命令会显示出来;没写内置就是外部。
常用快捷键
快捷键 | 功能 |
---|---|
ctrl + c | 停止进程 |
ctrl+l | 清屏,等同于 clear;彻底清屏是:reset(重新启动当前shell环境) |
tab | 提示(更重要的是可以防止敲错) |
上下键 | 查找执行过的命令 |
文件目录类
pwd 显示当前工作目录的绝对路径
pwd:print working directory 打印工作目录
功能:显示当前工作目录的绝对路径
ls 列出目录的内容
ls:list 列出目录内容
(1)基本语法:
ls + 参数 + 目录或文件
(2)选项说明:
参数 | 功能 |
---|---|
-a | 全部的文件,连同隐藏的 (开头为 . 的文件) 一起列出来 |
-l | 长数据串列出,包含文件的属性与权限等等数据(ls-l相当于ll) |
(3)显示说明:
每行列出的信息依次是:
文件类型与权限 链接数 文件属主 文件属组 文件大小(用byte表示) 建立或最近修改的时间 名字
cd 切换目录
cd:Change Directory 切换路径
(1)基本语法:
cd + 参数
(2)参数说明:
参数 | 功能 |
---|---|
cd 绝对路径 | 切换路径 |
cd 相对路径 | 切换路径 |
cd ~或者 cd | 回到自己的home/家目录 |
cd - | 回到上一次所在目录 |
cd … | 回到当前目录的上一级目录 |
cd -P | 跳转到实际物理路径,而非快捷方式路径 |
mkdir 创建一个新的目录
mkdir:Make directory 建立目录
(1)基本语法:
mkdir + 参数 + 要创建的目录
(2)参数说明:
参数 | 功能 |
---|---|
-p | 创建多层目录 |
rmdir 删除一个空的目录
rmdir:Remove directory 移除目录
(1)基本语法:
rmdir + 要删除的空目录
(2)说明:
rmdir 命令用来删除空目录,如果目录非空则会报错。可以使用 rm 删除目录中的文件后,使用 rmdir 删除目录。也可以使用 rm -rf 替代 rmdir 命令。
touch 创建空文件
基本语法:
touch + 文件名称
cp 复制文件或目录
(1)基本语法:
cp + (-r) + source dest 功能描述:复制 source文件到 dest
(2)参数说明:
-r:递归复制整个文件夹
source:源文件
dest:目标文件
rm 删除文件或目录
(1)基本语法:
rm + 参数 + deleteFile 功能描述:删除目录中所有内容
(2)参数说明:
参数 | 功能 |
---|---|
-r | 递归删除目录中所有内容 |
-f | 强制执行删除操作,而不提示用于确认 |
-v | 显示指令的详细执行过程 |
mv 移动文件与目录或重命名
基本语法:
- mv + oldNameFile + newNameFile:重命名
- mv + moveFileDir + targetFolderDir:移动文件
cat 查看文件内容
查看文件内容,从第一行开始显示
基本语法:
cat + 参数 + 要查看的文件
参数:-n 功能:显示所有行的行号,包括空行
more 文件内容分屏查看器
more 指令是一个基于 VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键。
(1)基本语法:
more + 要查看的文件
(2)操作说明:
操作 | 功能 |
---|---|
空格键 (space) | 向下翻一页 |
Enter | 向下一行 |
q | 立刻离开 more,不再显示该文件内容 |
Ctrl+F | 向下滚动一屏 |
Ctrl+B | 返回上一屏 |
= | 输出当前行的行号 |
:f | 输出文件名和当前行的行号 |
less 分屏显示文件内容
less 指令用来分屏查看文件内容,它的功能与 more 类似,但是比 more 更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率。
(1)基本语法:
less + 要查看的文件
(2)操作说明:
操作 | 功能 |
---|---|
空格键 (space) | 向下翻一页 |
pagedown | 向下翻一页 |
pageup | 向上翻一页 |
/字符串 | 向下搜寻字符串。n:向下查找,N:向上查找 |
?字符串 | 向上搜寻字符串。n:向上查找,N:向下查找 |
q | 退出less |
echo 输出内容到控制台
基本语法:
echo + 参数 + 输出内容
参数:-e 功能:支持反斜杠 (\) 控制的字符转换(加了 -e 就能使用控制字符了)
控制字符 | 作用 |
---|---|
\ | 输出\本身 |
\n | 换行符 |
\t | 制表符,也就是 Tab 键 |
head 显示文件头部内容
head 用于显示文件开头部分的内容,默认情况下 head 指令显示文件的前 10 行内容。
基本语法:
-
head + 文件:
查看文件头10行内容 -
head + -n + 数字 + 文件:
如 head -n 5 文件,查看文件头5行内容。可以写任意数字。
参数:-n 行数 功能:指定显示头部内容的行数
tail 输出文件尾部内容
tail 用于显示文件尾部的内容,默认情况下 tail 指令显示文件的后 10 行内容。
(1)基本语法:
-
tail + 文件:
查看文件尾部10行内容 -
tail + -n + 数字 + 文件:
如 tail -n 5 文件,查看文件尾部5行内容。可以写任意数字。 -
tail + -f + 文件:
实时追踪该文档的所有更新
(2)选项:
选项 | 功能 |
---|---|
-n 行数 | 输出文件尾部 n 行内容 |
-f | 显示文件最新追加的内容,监视文件变化 |
> 覆盖 和 >> 追加
不用vim打开一个文件,直接在命令行就能修改文件内容。
基本语法:
-
ls -l > 文件:
列表的内容写入文件中(覆盖写) -
ls -al >> 文件:
列表的内容追加到文件的末尾 -
cat 文件 1 > 文件 2:
将文件1的内容覆盖到文件2 -
cat 文件 1 >> 文件 2:
将文件1的内容追加到文件2 -
echo “内容” > 文件:
把内容覆盖写到文件里 -
echo “内容” >> 文件:
把内容追加写到文件里
ln 创建链接
软链接也称为符号链接,类似于 windows 里的快捷方式,有自己的数据块,主要存放 了链接其他文件的路径。
基本语法:
(1)ln 创建硬链接
ln + 原文件或目录 + 硬链接名 功能:给原文件创建一个硬链接
(2)ln -s 创建软链接
ln -s + 原文件或目录 + 软链接名 功能:给原文件创建一个软链接
(3)删除链接:
rm -rf 链接名
,而不是 rm -rf 链接名/
如果使用 rm -rf 链接名/
删除,会把链接对应的真实目录下内容删掉!
软硬链接区别:
硬链接:
所有创建的链接都指向同一个文件的 inode(索引节点)。如果删除源文件,没影响,因为其他硬链接仍然可以访问 inode 信息,访问到对应存储的数据空间,这样相当于文件还是存在的。可以防止误删。只有当源文件和所有的硬链接全删除后,当前文件才算是真正的被删掉了。
PS:默认创建的文件的硬链接数是1
软链接:
相当于Windows的快捷方式。删除源文件,软链接文件依然存在,但是无法通过软链接访问源文件,此时软连接已经失效。
history 查看已经执行过的历史命令
基本语法:
history 功能:查看已经执行过的历史命令
时间日期类
date 显示当前时间
基本语法:
注意:这里的+
是要敲出来的!+必须写!
(1) date:显示当前时间(年月日星期时分秒)
(2) date +%Y:显示当前年份(2022)
(3) date +%y:显示当前年份后两位(22)(有点模糊,一般不用)
(4) date +%m:显示当前月份
(5) date +%d:显示当前是哪一天
(6) date +%S:显示当前秒数
(7) date +%s:显示当前秒数对应的时间戳
(8) date +%Y-%m-%d-%H:%M:%S:显示当前年月日时分秒。
如果想用空格分隔,就必须加引号""
,如:date “+%Y-%m-%d %H:%M:%S”
date 显示非当前时间
基本语法:
(1) date -d ‘1 days ago’:显示昨天时间
(2) date -d ‘-1 days ago’:显示明天时间
(3) date -d ‘2 hours ago’:显示2小时前时间
date 设置系统时间
基本语法:
date -s “字符串时间”
date -s “2022-10-31 17:54:18”
cal 查看日历
基本语法:
cal + 选项:如果不加选项,就显示本月日历
选项 | 功能 |
---|---|
具体某一年 | 显示这一年的全日历信息 |
-数字 | 显示当前时间周围的几个月份日历 |
-m | Monday,把周一放在最前面 (一般外国人不都把周日放前面嘛) |
-y | 系统时间本年度的信息 |
用户管理命令
useradd 添加新用户
基本语法:
(1) useradd 用户名:添加新用户(默认组是和用户名一样的组)
(2) useradd -g 组名 用户名:添加新用户到某个组
passwd 设置用户密码
基本语法:
passwd 用户名:设置用户密码
id 查看用户是否存在
基本语法:
id 用户名:查看用户是否存在
cat /etc/passwd 查看创建了哪些用户
当然,more和less都可以
基本语法:
cat /etc/passwd
su 切换用户
su: swith user 切换用户
基本语法:
(1) su 用户名:切换用户,只能获得用户的执行权限,不能获得环境变量
(2) su - 用户名:切换到用户并获得该用户的环境变量及执行权限
userdel 删除用户
基本语法:
(1) userdel 用户名:删除用户但保存用户主目录
(2) userdel -r 用户名:用户和用户主目录,都删除( 删除用户的同时,删除与用户相关的所有文件)
who 查看登录用户信息
基本语法:
(1) whoami:显示自身用户名称
(2) who am i:显示登录用户的用户名以及登陆时间
sudo 设置普通用户具有 root 权限
基本语法:
sudo + 命令:使普通用户临时具有管理员权限
注意:
sudo 之前需要在 /etc/sudoers 文件里配置,使它拥有使用 sudo 的权限,因为默认普通用户不能 sudo
usermod 修改用户
基本语法:
usermod -g 用户组 用户名:把指定用户名的用户,它的用户组替换成指定的用户组
例:usermod -g people tony:把 tony 的用户组改成 people(默认当然是tony了)
用户组管理命令
每个用户都有一个用户组,系统可以对一个用户组中的所有用户进行集中管理。
不同 Linux 系统对用户组的规定有所不同, 如Linux下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。
用户组的管理涉及用户组的添加、删除和修改。组的增加、删除和修改实际上就是对 /etc/group文件的更新。
groupadd 新增组
基本语法:
groupadd 组名
groupdel 删除组
基本语法:
groupdel 组名
groupmod 修改组
基本语法:
groupmod -n 新组名 老组名
cat /etc/group 查看创建了哪些组
基本语法:
cat /etc/group:查看所有组相关信息(包含了系统用户组)
文件权限类
文件属性
Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限。
为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定。在Linux中我们可以使用 ll 或者 ls -l 命令来显示一个文件的属性以及文件所属的用户和组。
(1)从左到右的 10 个字符表示:
第 0 位 (首位) 表示类型:
在Linux中第一个字符代表这个文件是目录、文件或链接文件等等
- 代表文件
d 代表目录
l 代表链接
c 代表字符类型的设备文件(鼠标键盘输入操作涉及字符)
b 代表块设备文件(硬盘)
第 1-3 位表示属主权限(属主:该文件的所有者/创建者)
第 4-6 位表示属组权限(属组:该文件所有者的同组用户)
第 7-9 位表示其他用户权限
PS:如果没有权限,就是 -
(2)rwx 对于文件和目录的不同解释:
1、作用于文件:
r
代表可读 (read):可以读取,cat 等查看文件内容
w
代表可写 (write):可以对文件内容修改。但是不代表可以删除或重命名该文件,删除/重命名一个文件的前提条件是对该文件所在的目录有 w写权限,才能删除该文件。
x
代表可执行 (execute):可以被系统执行
2、作用于目录:
r
代表可读 (read):可以读取,ls 等查看目录内容
w
代表可写 (write):可以修改,目录内创建、删除、重命名 (文件或目录)
x
代表可执行 (execute):可以进入该目录
(3)ll 命令显示文件基本属性介绍:
chmod 改变权限
基本语法:
(1)第一种方式变更权限
chmod ugoa +-= rwx 文件或目录
解释:u:user所属者、g:group所属组、o:other其他人、a:all所有人(u、g、o 的总和)
+和=都是赋予权限,-是取消权限
例:chmod g+w helloWorld.sh
(2)第二种方式变更权限
chmod 数字 文件或目录
解释:r=4 w=2 x=1 rwx=4+2+1=7 rw=6 rx=5 wx=3
如果是0,则 r e x 三个权限都没有
例:chmod 644 helloWorld.sh 等价于 chmod u+rw,go+r helloWorld.sh
参数:
-R:修改整个文件夹里面的所有文件的所有者、所属组、其他用户的权限(递归修改)
例:修改整个study文件夹里面的所有文件的所有者、所属组、其他用户都具有可读可写可执行权限
chmod -R 777 study/
chown 改变拥有者
基本语法:
chown (-R) 所有者名 文件或目录:改变文件或者目录的所有者。加上 -R 是递归改变,该目录下的所有文件或目录都会更改。
chgrp 改变所属组
基本语法:
chgrp 所属组名 文件或目录:改变文件或者目录的所属组
搜索查找类
find 查找文件或者目录
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件显示在终端。
基本语法:
find 待查找的路径 参数 (如果不写路径,则默认从当前路径开始查找)
参数说明:
参数 | 功能 |
---|---|
-name | 按文件名:按照指定的文件名查找文件 |
-user | 按拥有者:查找属于指定用户名的文件 |
-size | 按文件大小:按照指定的文件大小查找文件,单位为: b —— 块(512 字节) c —— 字节 w —— 字(2 字节) k —— 千字节 M —— 兆字节 G —— 吉字节 |
举例:
(1)按文件名:根据名称查找 /opt/module/ 目录下的 .txt 文件
find /opt/module/ -name "*.txt"
(2)按拥有者:查找 /opt/module/ 目录下,用户名称为 mq 的文件
find /opt/module/ -user mq
(3)按文件大小:在 /opt/module/ 目录下查找大于200m的文件(+n 大于 、-n小于 、n等于)
find /opt/module/ -size +200M
locate 快速定位文件路径
locate 指令利用事先建立的系统中所有文件名称及路径的 locate 数据库实现快速定位指定的文件。
locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate (默认每天自动更新一次,手动更新命令:updatedb )。
基本语法:
locate 搜索文件
grep 过滤查找及“|”管道符
管道符,“|”,表示将前一个命令的处理结果传递给后面,作为后面命令的参数再进行处理
基本语法:
grep 选项 查找的内容 源文件
选项 | 功能 |
---|---|
-n | 显示匹配行及行号 |
PS:find、locate找的是文件名,而grep找的是文件内容
例:查找 helloWorld.txt 文件中包含 hadoop 的行
grep -n hadoop /opt/module/helloWorld.txt
或
cat /opt/module/helloWorld.txt | grep -n hadoop
压缩和解压类
gzip 压缩 / gunzip 解压缩
基本语法:
gzip 文件 :压缩文件,只能将文件压缩为 *.gz 文件
gunzip 文件.gz :解压缩文件
提示:
(1)只能压缩文件不能压缩目录
(2)压缩后不保留原来的文件
(3)同时压缩多个文件会产生多个压缩包
实操:
(1)压缩文件 hello.txt
[mq@hadoop102 ~]# gzip hello.txt
[mq@hadoop102 ~]# ls
hello.txt.gz
(2)解压缩
[mq@hadoop102 ~]# gunzip hello.txt.gz
[mq@hadoop102 ~]# ls
hello.txt
zip 压缩 / unzip 解压缩
基本语法:
zip 选项 XXX.zip(压缩后的名称) 将要压缩的内容 :压缩文件或目录
unzip 选项 解压到的路径 XXX.zip :解压缩文件
zip选项 | 功能 |
---|---|
-r | 压缩目录 |
unzip选项 | 功能 |
---|---|
-d | 指定解压后文件的存放目录 |
提示:
zip 压缩命令在windows/linux都通用,可以压缩目录且保留源文件
实操:
(1)压缩 hello.txt 和 world.txt,压缩后的名称为 helloWorld.zip
[mq@hadoop102 ~]# zip helloWorld.zip hello.txt world.txt
(2)解压 helloWorld.zip 到指定目录
[mq@hadoop102 ~]# unzip -d /opt/module/ helloWorld.zip
tar 打包压缩
tar打包压缩 = 打包之后再用gzip压缩(两个功能一次满足)
基本语法:
tar 选项 XXX.tar.gz(打包之后的名称) 将要打包进去的文件或目录 :打包并压缩后的文件格式 .tar.gz
选项 | 功能 |
---|---|
-c | 产生 .tar 打包文件 |
-v | 显示详细信息 |
-f | 指定压缩后的文件名 |
-z | 打包同时压缩 |
-x | 解包.tar 文件 |
-C | 解压到指定目录 |
实操:
(1)打包多个文件和目录
[mq@hadoop102 ~]# tar -zcvf test.tar.gz hello.txt world.txt mq/
(2)解压到指定目录
[mq@hadoop102 ~]# tar -zxvf test.tar.gz -C /opt/module/
进程管理类
进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。
ps 查看当前系统进程状态
ps:process status 进程状态
基本语法:
ps aux | grep xxx :查看系统中所有进程
ps -ef | grep xxx :可以查看子父进程之间的关系
选项 | 功能 |
---|---|
a | 列出带有终端的所有用户的进程 |
x | 列出当前用户的所有进程,包括没有终端的进程 |
u | 面向用户友好的显示风格 |
-e | 列出所有进程 |
-u | 列出某个用户关联的所有进程 |
-f | 显示完整格式的进程列表 |
功能说明:
(1)ps aux 显示信息说明
USER:该进程是由哪个用户产生的
PID:进程的 ID 号
%CPU:该进程占用 CPU 资源的百分比,占用越高,进程越耗费资源
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗费资源
VSZ:该进程占用虚拟内存的大小,单位 KB
RSS:该进程占用实际物理内存的大小,单位 KB
TTY:该进程是在哪个终端中运行的。对于 CentOS 来说,tty1 是图形化终端, tty2-tty6是本地的字符界面终端。pts/0-255 代表虚拟终端。
STAT:进程状态。常见的状态有:R:运行状态、S:睡眠状态、T:暂停状态、Z:僵尸状态、s:包含子进程、l:多线程、+:前台显示
START:该进程的启动时间
TIME:该进程占用 CPU 的运算时间,注意不是系统时间
COMMAND:产生此进程的命令名
(2)ps -ef 显示信息说明
UID:用户 ID
PID:进程 ID
PPID:父进程 ID
C:CPU 用于计算执行优先级的因子。数值越大,表明进程是 CPU 密集型运算,执行优先级会降低;数值越小,表明进程是 I/O 密集型运算,执行优先级会提高
STIME:进程启动的时间
TTY:完整的终端名称
TIME:CPU 时间
CMD:启动进程所用的命令和参数
补充:
(1)如果想查看进程的 CPU 占用率和内存占用率,可以使用 aux
[mq@hadoop102 ~]# ps aux
(2)如果想查看进程的父进程 ID 可以使用 -ef
[mq@hadoop102 ~]# ps -ef
kill 终止进程
基本语法:
kill [选项] 进程号 :通过进程号杀死进程
killall 进程名称 :通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用
选项 | 功能 |
---|---|
-9 | 表示强迫进程立即停止 |
实操:
(1)杀死浏览器进程
[mq@hadoop102 桌面]# kill -9 5102
(2)通过进程名称杀死进程
[mq@hadoop102 桌面]# killall firefox
pstree 查看进程树
基本语法:
pstree -p :显示进程的 PID
pstree -u :显示进程的所属用户
netstat 显示网络状态和端口占用信息
基本语法:
netstat -anp | grep 进程号 :查看该进程网络信息
netstat –nlp | grep 端口号 :查看网络端口号占用情况
选项 | 功能 |
---|---|
-a | 显示所有正在监听(listen)和未监听的套接字(socket) |
-n | 拒绝显示别名,能显示数字的全部转化成数字 |
-l | 仅列出在监听的服务状态 |
-p | 表示显示哪个进程在调用 |
面试题总结
该部分总结面试中遇到的答不上来的问题,持续更新~
(1)给你一个进程的名字,比如a进程,用一行命令停止a进程
ps -ef | grep a | awk '{print $2}' | xargs kill -9