文章目录

  • 前言
  • 目录结构
  • 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 显示网络状态和端口占用信息
  • 工作中学习的
    • crontab 定时调度
  • 面试题总结

  

  

  

  

前言

  

博主在前一段时间的面试中被问到了一些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 移动文件与目录或重命名

  
基本语法:

  1. mv + oldNameFile + newNameFile:重命名
  2. 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 表示显示哪个进程在调用

  

  

  

  

工作中学习的

  
  

crontab 定时调度

  
进行定时任务的设置
  
基本语法:

  crontab [选项]

选项 功能
-e 编辑crontab定时任务
-l 查看已编辑的crontab定时任务
-r 删除当前用户所有的crontab任务

  
编写调度指令:

默认有5个*占位符,即 * * * * * ,含义是 每分钟定时执行一次。

5个占位符 含义 范围
第一个* 一小时内的第几分钟 0-59
第二个* 一天中的第几小时 0-23
第三个* 一个月内的第几天 1-31
第四个* 一年中的第几月 1-12
第五个* 一周中的星期几 0-7(0和7都代表星期日)

  
其他特殊符号:

特殊符号 含义
* 代表任何时间 / “每”。比如第一个*就代表一小时内每分钟都执行一次
*/n 代表每隔多久执行一次。比如 */10 * * * * ,代表每隔10分钟执行一次
, 代表不连续的时间。比如 0 8,12,16 * * * ,代表每天的8 12 16点0分都要执行一次
- 代表连续的时间范围。比如 0 5 * * 1-6,代表在周一到周六的5点0分执行

  
真实案例:

  

  

  

  

面试题总结

  

该部分总结面试中遇到的答不上来的问题,持续更新~

  

(1)给你一个进程的名字,比如a进程,用一行命令停止a进程

ps -ef | grep a | awk '{print $2}' | xargs kill -9

别让 Linux 成为拿offer的阻碍相关推荐

  1. Linux C/C++ 学习路线(已拿腾讯、百度 offer)(转载)

    Linux C/C++ 学习路线(已拿腾讯.百度 offer) 摘自:https://blog.51cto.com/14419148/2416408 lee哥说架构 0人评论 4236人阅读 2019 ...

  2. Linux C/C++ 学习路线(已拿腾讯、百度 offer)

    一.秋招 Linux C/C++ offer 情况 二.Linux C/C++ 方向的一些思考 三.计算机基础知识的梳理 四.C++ 方向的深入学习路线 五.项目 + 亮点 + 面试的一些思考 六.总 ...

  3. Linux C/C++ 学习路线(已拿腾讯、百度 offer)2

    一.秋招 Linux C/C++ offer 情况 二.Linux C/C++ 方向的一些思考 三.计算机基础知识的梳理 四.C++ 方向的深入学习路线 五.项目 + 亮点 + 面试的一些思考 六.总 ...

  4. Edge on Linux?微软:会有的,但不是现在

    开发四年只会写业务代码,分布式高并发都不会还做程序员? >>>   基于 Chromium 内核的新版 Edge 已经发布预览版本了,据说适用于 macOS 系统的版本也即将面世. ...

  5. https://en.wikipedia.org/wiki/Linux Foundation

    https://en.wikipedia.org/wiki/Linux_Foundationhttps://en.wikipedia.org/wiki/Linux_Foundation 目录 Goal ...

  6. 深入理解Linux内核第3版--笔记-1.pdf

    深入理解Linux内核第3版.pdf         Understanding the Linux Kernel, 3rd Edition Preface    The Audience for T ...

  7. 某讯T9程序员推荐,Linux C/C++ 学习路线(内附资料)

    前言 Linux C/C++ 从零基础到大神的学习路线,自己的真实学习路线,干货很多,建议收藏,认真阅读. 在校期间,我一直走的都是 Linux C/C++ 学习路线,历经暑期实习.秋招决战.校招期间 ...

  8. Linux C/C++ 学习路线

    一.秋招 Linux C/C++ offer 情况 二.Linux C/C++ 方向的一些思考 三.计算机基础知识的梳理 四.C++ 方向的深入学习路线 五.项目 + 亮点 + 面试的一些思考 六.总 ...

  9. Linux:黑客传说(开源精神)(转)

    转自 http://news.cnblogs.com/n/118078/ 注:本文来自环球财经记者刘洋 今年,Linux 迎来了它的20岁生日.据称从4月开始,全球各地都在筹划着如何庆祝这一生日.但到 ...

最新文章

  1. [LeetCode]--38. Count and Say
  2. 伪语言PHP,PHP语言之伪静态几种做法
  3. CTF的一道安卓逆向
  4. OpenCV参考手册之Mat类详解1
  5. PHP如何添加变量 $_SERVER
  6. 在企业内部使用openssl创建私有CA
  7. 自定函数获取datagrid,datalist,rpeater控件中header,footer栏中控件
  8. 从深圳到南阳-13天单骑3000里回家记
  9. angualr 单选全选方法(适用购物车/各种列表删除等)
  10. Python正则表达式,看完这篇文章就够了...#华为云·寻找黑马程序员#
  11. C++复习笔记3——类与对象(赋值重载、临时对象、const、static)
  12. LoRa网关市场现状及未来发展趋势
  13. Lucene学习总结之一:全文检索的基本原理
  14. 【K8S】K8s部署Metrics-Server服务
  15. ORAN C平面 Section Type 6
  16. 青龙面板+傻妞+JD(自用)
  17. linux使用虚拟ip路由问题,linux – 来自主机的虚拟机的IPv6公共路由
  18. 投影仪对和电视哪个对眼睛好?有区别吗?
  19. PyQtGraph库的部分踩坑记录
  20. css3 立方体3d旋转效果

热门文章

  1. 农业农资产品英语词汇
  2. SpringBoot如何下载压缩文件
  3. Android 获取用户安装的app信息
  4. 分销返佣系统——创业会员
  5. 用matplotlib绘制带误差的条形图及中英文字体设置
  6. 牛客动态规划基础题单 1002 舔狗舔到最后一无所有
  7. (超)低延迟视频流传输的未来
  8. 如何设计网站的登录和注册功能
  9. 数据安全学习概念理解——明文与密文的区别
  10. 修改项目APP名字后,在真机运行报错:The provisioning profile specified in your build settings (“haotian”) has an AppI