当前仓库属于暂停状态,部分功能使用受限,详情请查阅 仓库状态说明
1 Star 2 Fork 0

Kaz / prolearn
暂停

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
linux_basis.md 19.93 KB
一键复制 编辑 原始数据 按行查看 历史
Kaz 提交于 2020-12-26 18:03 . hadoop

Linux 基础

一.linux 的命令提示符

用户登录系统后,可以看到每条命令前都有提示符:

[root@localhost ~]#
  • []:这是提示符的分隔符号,没有特殊含义
  • root:显示的是当前的登录用户
  • @:分隔符号,没有特殊含义
  • localhost:当前系统的简写主机名(完整主机名是 localhost.localdomain)。
  • ~:代表用户当前所在的目录。
  • #:命令提示符,Linux用这个符号标识用户权限等级。如果是超级用户,提示符就是 #;如果是普通用户,提示符就是 $。

二.Linux的目录结构

  • / 根目录
    • /bin/ 存放着经常使用的指令
    • /boot/ 存放启动系统核心文件的目录
    • /dev/ 存放各种设备文件的目录
    • /etc/ 存放配置文件的目录
    • /home/ 用户的主目录
    • /lib/ 系统的静态库
    • /media/ 光驱、软驱、USB存储设备加载所用的目录
    • /mnt/ 加载的文件系统目录
    • /opt/ 某些可选软件安装后放入此目录
    • /proc/ 不是真正的文件系统,操作系统运行时,进程信息及内核信息(比如cpu、硬盘分区、内存信息等)存放在这里
    • /root/ root 用户的主目录
    • /sbin/ 存放系统管理命令,一般只供 root 用户使用
    • /tmp/存放系统运行过程中的临时文件,一般在系统重启后将被清空

home 目录

home 目录是用户登录后的初始目录,用 ~ 表示。

  • 超级用户roothome目录:/root
  • 普通用户的home目录:/home/用户名

工作目录

就是当前所在目录。

隐藏的文件和目录

. 开头的文件和目录默认是隐藏的,如 .git

常见目录的表示

  • / 根目录
  • ~ 当前用户的home 目录
  • - 进入此目录之前所在的目录
  • .. 上一级目录
  • . 当前目录

当路径以这些字符开头时,系统会从这些字符开头所代表的的路径开始查找,否则从工作目录开始查找。

三.文件操作

1.查看当前目录

pwd

2.切换当前目录

cd 路径

3.显示当前目录下的文件和文件夹

使用 ls 指令

  • 显示详细信息:添加 -l
  • 显示隐藏文件: 添加 -a

[$]文件名的颜色

  • 白色:表示普通文件
  • 蓝色:表示目录
  • 绿色:表示可执行文件
  • 红色:表示压缩文件
  • 浅蓝色:链接文件
  • 红色闪烁:表示链接的文件有问题
  • 黄色:表示设备文件
  • 灰色:表示其他文件

[$]详细信息中,各列的含义

例如 lrwxrwxrwx. 1 root root 12 9月 2 11:05 hadoop -> hadoop-2.9.2

对其进行分列:

列名
文件类型 l
所有者权限 rwx
组用户权限 rwx
其他用户权限 rwx
链接数(子目录数) 1
用户名 root
组名 root
文件大小(字节) 12
上次修改 9月 2 11:05
文件名和链接信息 hadoop -> hadoop-2.9.2
  1. 文件类型
符号 含义
- 普通文件
d 目录文件
p 管理文件
l 链接文件
b 块设备文件
c 字符设备文件
s 套接字文件
  1. 所有者权限、组用户权限、其他用户权限
符号 含义
r 可读
w 可写
x 可执行
- 无权限

例如:

lrwxrwxrwx.  1 root root     12 9月   2 11:05 hadoop -> hadoop-2.9.2
drwxr-xr-x. 10  501 dialout 161 9月   2 11:31 hadoop-2.9.2
lrwxrwxrwx.  1 root root     12 9月   2 10:32 jdk -> jdk1.8.0_201
drwxr-xr-x.  7   10     143 245 12月 16 2018 jdk1.8.0_201

4.创建文件和文件夹

  1. 创建文件
touch file1 file2 ...
  1. 创建文件同时编辑文件内容
vi file
  1. 创建文件夹
mkdir dirname
  • 参数 -p--parents:若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录

5.删除文件和文件夹

  1. 删除空文件夹
rmdir dirname
  • 参数 -p--parents:若所要建立目录的上层目录为空,则会一并删除上层目录
  1. 删除非空文件夹
rm -rf path
  1. 删除文件

rm [命令选项] filename

常用命令选项:

  • -f:强制删除文件或目录;
  • -r或-R:递归处理,将指定目录下的所有文件与子目录一并处理;
  • -i:删除已有文件或目录之前先询问用户。

6.复制和移动

  1. 复制文件和文件夹
cp [命令选项] 源文件 目的文件

常用选项:

  • -f:强行覆盖文件或目录,不论目标文件或目录是否已存在;
  • -i:覆盖既有文件之前先询问用户;
  • -p:保留源文件或目录的属性;
  • -R/r:递归处理,将指定目录下的所有文件与子目录一并处理。
  1. 移动文件和文件夹
mv [命令选项] 源文件 目的文件

常用选项:

  • -f:强行覆盖文件或目录,不论目标文件或目录是否已存在;
  • -i:覆盖既有文件之前先询问用户;
  • -p:保留源文件或目录的属性;
  • -R/r:递归处理,将指定目录下的所有文件与子目录一并处理。

7.查看文件内容

  1. cat 命令查看文件内容

格式:

cat [-nb] 文件名...

选项:

  • -n--number:由1开始对所有输出的行数编号;
  • -b--number-nonblank:和-n相似,只不过对于空白行不编号。
  1. head [-n number] file 命令查看文件开头部分

选项:

  • -n:查看前 number 行的内容,默认为 10
  1. tail [-n number] file 命令查看文件的末尾部分,用法同 head

8.链接

概念

链接是某个文件或目录的别名,分为 软链接硬链接 两种。

  1. 软链接:产生一个特殊的文件,该档案的内容是指向另一个文件或目录的位置

    • 以路径的形式存在
    • 可以跨文件系统
    • 可以对一个不存在的文件名进行链接
    • 可以对目录进行链接

    软链接通常用于给一些软件包起个别名,方便访问。如创建一个软链接 /hadoop -> /hadoop-2.9.2 ,这样就可以直接 访问 hadoop文件夹 来实现访问 hadoop-2.9.2文件夹 的目的。

  2. 硬链接:一个档案可以有多个名称

    • 以文件副本的形式存在,但不占用空间
    • 不允许给目录创建硬链接
    • 硬链接只有在同一个文件系统中才能创建

操作

  1. 创建软链接
ln -s 文件夹路径 链接名
  1. 创建硬链接
ln 文件名 链接名

9.文本编辑

操作方法概述

  1. 进入编辑页面 vi fileName,此时默认是命令模式。此时不可以编辑文本。
  2. 输入 iao 进入输入模式。此时可以编辑文本。
  3. Esc 键回到命令模式
  4. : 键进入底线命令模式
  5. 输入 q 表示退出;输入 w 表示保存文件;输入 q! 表示不保存退出;输入 wq 表示保存并退出。

模式概述

  1. 命令模式:用户刚刚启动 vi/vim,便进入了命令模式。此状态下敲击键盘动作会被 Vim 识别为命令,而非输入字符。

    常用命令:

    • i:进入输入模式
    • x:删除光标处所在字符
    • ::切换底线命令模式,在最底一层输入命令。
  2. 输入模式:

    常用按键:

    • 字符按键以及Shift组合:输入字符
    • enter:换行回车
    • backspace:退格
    • del:删除光标后一个字符
    • 方向键:移动光标
    • HOME/END:移动到行首/行尾
    • Page Up/Page Down:上/下翻页
    • Insert:切换输入/替换模式,光标将变成竖线/下划线。
    • ESC:返回命令模式
  3. 底线命令模式

    常用按键:

    • q:退出
    • q!:不保存退出
    • wq:保存退出
    • w:保存

四.压缩和解压

1.tar打包和解包

  1. 打包文件和目录
tar -cvf 生成的tar名称 路径...
  • -c 建立新的归档文件
  • -v 处理过程中输出相关信息
  • -f 对普通文件操作
  1. 解包
tar -xvf tar包名 [-C 目录] 
  • -x从备份文件中还原文件
  • -v 处理过程中输出相关信息
  • -f 对普通文件操作

2.gzip 压缩和解压

  1. 使用 gzip命令 对 tar 文件进行压缩,在当前路径下生成压缩文件:
gzip tar包名
  1. 使用 tar 命令压缩
tar -zcvf 生成的tar.gz名称 路径...
  • -c 建立新的归档文件
  • -v 处理过程中输出相关信息
  • -f 对普通文件操作
  • -z 以gz对文件/目录进行压缩解压
  1. 使用 gunzip 命令解压
gunzip tar.gz名称
  1. 使用 tar 命令解压
tar -zxvf 生成的tar.gz名称
  • -x从备份文件中还原文件
  • -v 处理过程中输出相关信息
  • -f 对普通文件操作
  • -z 以gz对文件/目录进行压缩解压

3.zip 压缩和解压

  1. 压缩文件
zip -r 生成的zip名称 路径...
  1. 解压文件
unzip zip名称

4.bzip2压缩和解压

  1. 使用 bzip2tar 文件进行压缩,在当前路径下生成压缩文件:
bzip2 tar名称
  1. 使用 tar命令压缩文件
tar -jcvf 生成的tar.bz2名称 路径...
  • -c 建立新的归档文件
  • -v 处理过程中输出相关信息
  • -f 对普通文件操作
  • -j 以bzip2对文件/目录进行压缩解压
  1. 使用 bunzip2 命令解压
bunzip2 tar.bz2名称
  1. 使用 tar 命令解压
tar -jxvf 生成的tar.bz2名称
  • -x从备份文件中还原文件
  • -v 处理过程中输出相关信息
  • -f 对普通文件操作
  • -j 以bzip2对文件/目录进行压缩

五.用户操作

1.创建和删除用户

  1. 创建用户
useradd -m 用户
  • -m:表示创建该用户的工作目录
  1. 删除用户:必须以root权限才能执行
userdel -fr 用户
  • -f:表示强制删除用户
  • -r:表示删除与用户相关的文件

2.密码管理

  1. 使用 passwd 命令设置密码:必须以root权限才能执行
passwd 用户

执行后系统会提示输入两次密码

  1. 使用 passwd 命令清理密码:必须以root权限才能执行
passwd -d 用户
  • -d 表示删除密码
  1. chpasswd 批量修改密码

要批量更新用户密码,需要用户名和密码写入到一个文件中:

用户1:密码1
用户2:密码2
...

然后输入:

chpasswd < 保存的文件名

3.登录其他用户

  1. 使用 login 指令:login [用户名],该命令会提示输入用户名(如果命令没有填写用户名)和密码
  • -p:告诉login指令不销毁环境变量;
  • -h:指定远程服务器的主机名
  1. 使用 su 命令切换用户身份:su [用户名] 不指定用户名时,切换为 root 用户。 su命令用于切换当前用户身份到其他用户身份,变更时须输入所要变更的用户帐号的密码。

    当使用su命令切换用户后,使用exit命令退出当前身份,返回原有登录用户身份。

    如果当前用户身份是root,则使用su命令切换到其他用户的时候不需要相应用户的密码

    • -c<指令>--command=<指令>:执行完指定的指令后,即恢复原来的身份;
    • -l--login:改变身份时,也同时变更工作目录,以及HOME,SHELL,USER,logname。此外,也会变更PATH变量;
    • -m,-p--preserve-environment:变更身份时,不要变更环境变量;
    • -s<shell>--shell=<shell>:指定要执行的shell。

4.查看当前用户

使用 whoami 指令。

六.环境变量

1.概述

环境变量是操作系统中用来指定操作系统运行环境的一些参数。它可以被 shell 脚本和程序获取。

比如说, JAVA_HOME 这个环境变量可以方便其他程序找到 JAVA 的安装目录。

  • 局部变量:只对某次登录或某次程序执行起作用

  • 全局变量:对整个系统起作用

  • 用户变量:针对某个用户的环境变量

  • 系统变量:针对所有用户的环境变量

  • 永久变量:通过修改配置文件,配置之后变量永久生效。其中用户变量的配置文件为 ~/.bashrc,系统变量的配置文件为 /etc/profile。操作系统加载时会执行这些文件来设置环境变量。

  • 临时变量:使用命令如 export 等命令设置,设置之后马上生效,重启命令行后失效。

2.PATH

  • PATH 是存放系统用来搜索可执行文件路径的一个环境变量。
  • 它包含了多个路径,且路径之间通过 : 隔开。
  • 如果没有 PATH,所有可执行文件都需要加上路径,如运行 java 需要写成 ~/jdk/bin/java 而不是 java

$PATH:/usr/locar/new/bin

3.查看环境变量

  1. 查看全局变量 envprintenv 命令
  2. 查看全局变量和局部变量 set
  3. 查看某个全局变量 printenv 环境变量名称
[root@node1 ~]# printenv PATH
/root/app/jdk/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/app/hadoop/bin:/root/bin
  1. 查看某个局部变量或全局变量echo $环境变量名称
  2. 将环境变量作为命令的一部分执行 $环境变量名称
cd $JAVA_HOME

4.设置临时变量

  1. 设置局部变量(等号两边不要加空格,如值中有空格,则值两边需要加上引号)
变量名=
a=1
a='hello world'
  1. 导出局部变量为全局变量:export 变量名=值
export a=$a

5.设置永久变量

  1. 首先需要打开相应的文件(用户变量的配置文件为 ~/.bashrc,系统变量的配置文件为 /etc/profile),在文件中添加 export 指令
export JAVA_HOME=/root/app/jdk
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:.
  1. 由于这些文件只会在系统启动时被自动加载,所以要想让环境变量立即生效,需要将这个文件当成命令手动执行一次。 source 文件名
source /etc/profile

/etc/profile~/.bashrc 是没有执行权限的,默认无法直接执行,只能通过 source 命令来执行。

七.网络基础

动态IP和静态IP

概述

  1. 动态IP采用 DHCP(动态主机配置协议),每次启动时,主机会被分配一个动态的IP地址。也就是说,同一台机器,每次启动后,得到的IP不一定相同。

    Hadoop 和 SSH 等服务需要获取主机的IP地址,如果每次启动的IP不一致,则每次都要手动修改服务器的ip,不方便。

  2. 静态IP需要手动配置,但每次启动后,得到的IP是相同的。

  3. Linux 系统安装后默认使用动态IP。

  4. Linux 系统下,若需要配置静态IP,需要在系统安装时配置静态IP,或修改 /etc/sysconfig/network-scripts/ 下的网卡配置文件 ifcfg-ens33ifcfg-eth0

设置静态IP

  1. ifconfig 命令获取IP地址、子网掩码。

  2. VMWare 的虚拟网络编辑器里获取网关IP、子网掩码、子网IP。

  3. vi打开网卡配置文件。 需要修改的配置:

    • BOOTPROTO:改为 static
    • IPADDR:改为之前获取的 IP地址,
    • GATEWAY:改为上面查到的网关IP
    • NETMASK:改为上面查到的子网掩码
    • DNS1:与自己的电脑保持一致(设置-网络和Internet-查看网络属性)
    • DNS2(可选):与自己的电脑保持一致
  4. 保存文件,输入 service network restartsystemctl restart netwrok 重启网络。

hosts

  1. hosts 文件主要作用是定义IP地址和主机名的映射关系。当访问一个域名时,系统会优先从 hosts 中找到域名对应的IP地址,如果未找到,则通过 DNS 服务器来寻找IP地址。
  2. 文件位置: /etc/hosts
  3. 文件格式:
IP1 域名1 域名2 ...
IP2 域名3 域名4 ...
...
  1. 用途:
    • 屏蔽某些网站。
    • 为某些 IP 设置一些好记的名称,如 node1
    • 修改本机的主机名。

防火墙

  1. 防火墙用来禁止/允许某些IP地址和端口访问主机,或禁止/允许主机访问某些IP地址和端口。
  2. 禁止某些端口可以关闭不常用的服务,禁止IP可以屏蔽一些网络攻击。
  3. 常见的linux防火墙有 iptablesfirewalld 两种。

firewalld防火墙基本操作

  1. 查看服务状态
systemctl status firewalld
  • 出现Active: active (running)切高亮显示则表示是启动状态。

  • 出现 Active: inactive (dead)灰色表示停止。

  1. 查看防火墙是否在运行
firewall-cmd --state
  1. 开启/关闭/重启防火墙

关闭防火墙会给主机带来严重的安全隐患!

service firewalld start # 开启
service firewalld stop # 关闭
service firewalld restart # 重启
  1. 开启/关闭/查询端口
firewall-cmd --query-port=端口/tcp # 查询端口是否开启
firewall-cmd --permanent --add-port=端口/tcp # 永久开启端口
firewall-cmd --permanent --remove-port=端口/tcp # 永久移除开启的端口
  1. 重载防火墙配置
firewall-cmd --reload

SSH

  1. SSHSecure Shell 的缩写,通常用于远程登录(如 XShell登录虚拟机上的 linux),默认端口为 22
  2. SSH的认证方式:
    • 基于口令的安全认证:每次登录的时候都要输入用户名和密码, 由于要在网络上传输密码, 可能存在中间人攻击的风险
    • 基于密钥的安全认证:配置公钥完成后,拥有公钥的服务器便可以直接登录当前服务器,无需密码。

免密登录

需要先安装 ssh-copy-idssh-keygen 两个软件包

  1. 生成一个公钥:
ssh-keygen  -t rsa -N ''
  • -t: 密钥类型, 可以选择 dsa | ecdsa | ed25519 | rsa。

  • -f: 密钥目录位置, 默认为当前用户home路径下的.ssh隐藏目录, 也就是~/.ssh/, 同时默认密钥文件名以id_rsa开头。

  • -C: 指定此密钥的备注信息, 需要配置多个免密登录时, 建议携带。

  • -N: 指定此密钥对的密码, 如果指定此参数, 则命令执行过程中就不会出现交互确认密码的信息了。

  1. 分发公钥到其他服务器
ssh-copy-id 远程地址

此时远程地址所在服务器就可以操作当前的服务器。

远程文件分发

  1. scp(secure copy) 命令用于 Linux 之间复制文件和目录。
scp [可选参数] file_source file_target 
  • -p:保留原文件的修改时间,访问时间和访问权限。
  • -q: 不显示传输进度条。
  • -r: 递归复制整个目录。
  • -v:详细方式显示输出。
  1. file_sourcefile_target 用于指定源和目标路径。

  2. 远程地址的写法:

    • 用户名@远程服务器IP:远程服务器的绝对路径
    • 远程服务器IP:远程服务器的绝对路径
scp -r hadoop/etc/hadoop root@node2:~/hadoop/etc/hadoop
1
https://gitee.com/pikoyo/prolearn.git
git@gitee.com:pikoyo/prolearn.git
pikoyo
prolearn
prolearn
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891