引言:本文旨在记录本人学习Hadoop时的笔记心得
基础命令
Linux文件系统基础知识
Linux文件系统概念
- 操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统
- 文件系统的结构通常叫做目录树结构,从“斜杠/根目录”开始
- Linux号称“万物皆文件”,意味着针对Linux的操作,大多数时间是在针对Linux文件系统操作
文件系统通用特性
- 几乎主流的文件系统都是从“/根目录”开始的,而Windows文件系统会以盘符来区分不同的文件系统
- 目录树中节点分为两个种类:目录(dictionary)、文件(file)
- 从根目录开始,路径具有唯一性,即想要到达某文件,有且仅有一条路径
- 只有在目录下才可以继续创建下一级目录,在文件处停止蔓延
易混概念
- 当前路径:也叫当前工作目录,是当下用户所处的位置
- 相对路径:相对当前工作目录开始的路径,会随当前路径变化而变化
- 绝对路径:不管工作目录在哪,绝对路径都是从/根目录开始的,具有唯一性
举个例子: 我在根目录下进入/bacon目录,此时/bacon就是当前工作目录,即当前路径。我访问该目录下次一级目录/fizz内的文件spam.txt,此时我的相对路径就是 ./fizz/spam.txt,相应的当前路径变为/fizz,而我的绝对路径是/bacon/fizz/spam.txt
特殊符号
-
. —目录或文件名字以.开始表示是隐藏的文件,如果路径以.开始表示当前路径
-
.. —当前目录的上一级目录
-
~ —当前用户的Home目录,比如root用户的Home目录是/root
-
/ —根目录
# 进入当前目录下的a
cd ./a
# 进入根目录下的a
cd /a
# 进入当前目录上一级下的a
cd ../a
# 进入当前操作用户Home目录下的a
cd ~/a
# 进入当前目录下的a a是隐藏的
cd .a
Linux命令帮助手册
- help
[root@node1 ~]# ls --help
用法:ls [选项]... [文件]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.
Mandatory arguments to long options are mandatory for short options too.
-a, --all 不隐藏任何以. 开始的项目
-A, --almost-all 列出除. 及.. 以外的任何项目
--author 与-l 同时使用时列出每个文件的作者
……
- man
Linux常用操作命令
显示目录内容:
- ls(list files):用于显示指定工作目录下的内容(列出当前工作目录所含文件及子目录)
- -a 显示所有文件及目录
- -l 除文件名称外,也详细列出文件型态、权限、拥有者、文件大小等信息
注:ls -l 等价于 ll
ls path
ls -a path # 查看所有文件,包括隐藏文件
ls -l = ll # 查看文件详细信息,包括权限、类型、时间、大小等
ll -h path # 表示以人性化的显示内容
ll * # *通配符表示任意字符,?表示有且只有一个字符
切换目录:
- cd(change directory):用于切换当前工作目录,切换路径可以是绝对路径或相对路径。若路径省略,则切换至Home目录
- ~ 表示为Home目录
- . 表示当前所在目录
- .. 表示当前目录上一级目录
pwd # 查看自己当前所在目录
cd path # 注意路径是相对路径还是绝对路径
cd /path # 访问Home目录下的path目录
cd ./path # 访问当前目录的下一级目录path
cd ../path # 访问当前目录上一级的子目录path
cd ~ # 访问根目录
创建与删除:
- mkdir(make directory):创建目录
- -p 确保父目录名称存在,不存在就创建一个
- touch:创建一个空文件
- rm(remove):删除文件或目录
- -f 强制删除,无需确认
- -r 将目录及以下所有递归逐一删除
mkdir /a/b/c # 创建一串目录,会失败,因为不存在父目录/a
mkdir ./a # 在当前目录下创建目录/a
mkdir -p /a/b/c # 在Home目录创建一串目录/a/b/c
rm -rf /a/b/c # 快速删除Home目录中的/a/b/c
rm -rf ./a # 快速删除当前目录下的/a
rm -rf /* # 全删了,等坐牢吧
复制与移动:
- cp(copy file):复制文件或目录
- -r 若给出的源文件是一个目录文件,此时将复制该目录下所有子目录和文件
- mv(move file):为文件或目录改名,或将文件或目录移动到其他位置
cp [options] source... directory
mv source_file(文件) dest_file(文件)
# 将源文件名source_file 改为目标文件名dest_file
mv source_file(文件) dest_directory(目录)
# 将文件source_file 移动到目标目录dest_directory中
mv source_directory(目录) dest_directory(目录)
# 目录名dest_directory 已存在:将source_directory 移动到目录名dest_directory 中
# 目录名dest_directory 不存在:source_directory 改名为目录名dest_directory
mv source_directory(目录) dest_file(文件)
# 会报错
文件内容查看:
- cat(concatenate):连接文件并打印到标准输出设备如console控制台上,适合小文件
- more:类似cat,但会一页一页地展示,翻页结束自动退出,适合大文件
- tail:查看文件结尾部分
- -n 用于设置显示行数,默认为10,即显示十行内容
- -f 用于实时显示文件动态追加的内容。只要文件有更新就可以看到最新的文件内容
文件内容修改与生成:
- | 管道命令:将前一个命令执行的结果作为内容传递给下一个命令,可以形成多级管道
- echo:将内容输出到console控制台上,相当于print
- > 输出重定向(覆盖):command > file 意思是执行command然后将输出的内容存入file中,若file中已经存在内容,则会被新内容覆盖。若不存在file,则新建一个file并将输出内容存入其中
- >> 输出重定向(追加):command >> file 与 command > file不同之处在于,新内容会追加在file文件的末尾而不是覆盖
echo 111 # 输出111
echo "Hello World" # 输出Hello World,注意不带引号
echo Hello World # 同样输出Hello World,也不带引号
echo 111 > 4.txt # 将111覆盖4.txt的内容
cat 4.txt # 读取4.txt的内容并展示到console控制台上,为111
echo 222 >> 4.txt # 将222追加到4.txt末尾
cat 4.txt # 输出为111 222,注意在console上是换行展示的
解压缩命令:
- 打包、解包:
- tar(tape archive):常用于备份文件。是用来建立,还原备份文件的工具程序,可以加入、解开备份文件内的文件
- -c 或 --create:建立新的备份文件
- -x 或 --extract 或 --get:从备份文件中还原文件
- -v 或 --verbose:显示指令执行过程
- -f <备份文件> 或 --file=<备份文件>:指定备份文件
- tar(tape archive):常用于备份文件。是用来建立,还原备份文件的工具程序,可以加入、解开备份文件内的文件
# 打包
tar -cvf test.tar 1.txt 2.txt # 格式为:tar -cvf 打包名.tar 文件或目录
# 解包
tar -xvf test.tar # 格式为:tar -xvf 打包名.tar (-C 指定解包目录)
- 打包压缩、解包解压缩:在打包备份或者解包的过程中,可以通过指定压缩算法,对打包的文件进行压缩,解压的时候也需要指定相应的算法
- -z 或 --gzip 或 --ungzip:通过gzip指令处理备份文件
- 重要的搭配:tar -zxvf xxxxxx.tar.gz
# 打包
tar -zcvf test.tar.gz 1.txt 2.txt # 指定压缩算法进行压缩
tar -zcvf test.tgz 1.txt 2.txt
# 解包
tar -zxvf test.tar.gz # 指定解压算法进行解压
tar -zxcf test.tgz -C /root/ # 设定解压到指定目录
系统命令
时间、日期查看
- date:显示或设定系统的日期与时间,可以指定显示格式
date +"%Y-%m-%d %H:%M:%S" # 要注意大小写的区别以及"+"后不接" "
更详细的显示格式如下:
%% 一个文字的 %
%a 当前locale 的星期名缩写(例如: 日,代表星期日)
%A 当前locale 的星期名全称 (如:星期日)
%b 当前locale 的月名缩写 (如:一,代表一月)
%B 当前locale 的月名全称 (如:一月)
%c 当前locale 的日期和时间 (如:2005年3月3日 星期四 23:05:25)
%C 世纪;比如 %Y,通常为省略当前年份的后两位数字(例如:20)
%d 按月计的日期(例如:01)
%D 按月计的日期;等于%m/%d/%y
%e 按月计的日期,添加空格,等于%_d
%F 完整日期格式,等价于 %Y-%m-%d
%g ISO-8601 格式年份的最后两位 (参见%G)
%G ISO-8601 格式年份 (参见%V),一般只和 %V 结合使用
%h 等于%b
%H 小时(00-23)
%I 小时(00-12)
%j 按年计的日期(001-366)
%k hour, space padded ( 0..23); same as %_H
%l hour, space padded ( 1..12); same as %_I
%m month (01..12)
%M minute (00..59)
%n 换行
%N 纳秒(000000000-999999999)
%p 当前locale 下的"上午"或者"下午",未知时输出为空
%P 与%p 类似,但是输出小写字母
%r 当前locale 下的 12 小时时钟时间 (如:11:11:04 下午)
%R 24 小时时间的时和分,等价于 %H:%M
%s 自UTC 时间 1970-01-01 00:00:00 以来所经过的秒数
%S 秒(00-60)
%t 输出制表符 Tab
%T 时间,等于%H:%M:%S
%u 星期,1 代表星期一
%U 一年中的第几周,以周日为每星期第一天(00-53)
%V ISO-8601 格式规范下的一年中第几周,以周一为每星期第一天(01-53)
%w 一星期中的第几日(0-6),0 代表周一
%W 一年中的第几周,以周一为每星期第一天(00-53)
%x 当前locale 下的日期描述 (如:12/31/99)
%X 当前locale 下的时间描述 (如:23:13:48)
%y 年份最后两位数位 (00-99)
%Y 年份
%z +hhmm 数字时区(例如,-0400)
%:z +hh:mm 数字时区(例如,-04:00)
%::z +hh:mm:ss 数字时区(例如,-04:00:00)
%:::z 数字时区带有必要的精度 (例如,-04,+05:30)
%Z 按字母表排序的时区缩写 (例如,EDT)
- cal(calendar):用于显示当前或指定日期的公历
cal 27 6 3000 # 显示3000年6月27日这个月的日历
输出为:
六月 3000
日 一 二 三 四 五 六
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
cal -y 2030 # 显示2030年全年的日历
输出为:
2030
一月 二月 三月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 1 2 1 2
6 7 8 9 10 11 12 3 4 5 6 7 8 9 3 4 5 6 7 8 9
13 14 15 16 17 18 19 10 11 12 13 14 15 16 10 11 12 13 14 15 16
20 21 22 23 24 25 26 17 18 19 20 21 22 23 17 18 19 20 21 22 23
27 28 29 30 31 24 25 26 27 28 24 25 26 27 28 29 30
31
四月 五月 六月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 6 1 2 3 4 1
7 8 9 10 11 12 13 5 6 7 8 9 10 11 2 3 4 5 6 7 8
14 15 16 17 18 19 20 12 13 14 15 16 17 18 9 10 11 12 13 14 15
21 22 23 24 25 26 27 19 20 21 22 23 24 25 16 17 18 19 20 21 22
28 29 30 26 27 28 29 30 31 23 24 25 26 27 28 29
30
七月 八月 九月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 6 1 2 3 1 2 3 4 5 6 7
7 8 9 10 11 12 13 4 5 6 7 8 9 10 8 9 10 11 12 13 14
14 15 16 17 18 19 20 11 12 13 14 15 16 17 15 16 17 18 19 20 21
21 22 23 24 25 26 27 18 19 20 21 22 23 24 22 23 24 25 26 27 28
28 29 30 31 25 26 27 28 29 30 31 29 30
十月 十一月 十二月
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 2 3 4 5 1 2 1 2 3 4 5 6 7
6 7 8 9 10 11 12 3 4 5 6 7 8 9 8 9 10 11 12 13 14
13 14 15 16 17 18 19 10 11 12 13 14 15 16 15 16 17 18 19 20 21
20 21 22 23 24 25 26 17 18 19 20 21 22 23 22 23 24 25 26 27 28
27 28 29 30 31 24 25 26 27 28 29 30 29 30 31
内存、磁盘使用率查看
- free:显示内存状态。包括使用情况,如实体内存,虚拟的交换文件内存,共享内存区段,还包括系统核心使用的缓存区等
- df(disk free):显示目前在Linux系统上的文件系统磁盘使用情况统计
进程查看
- ps(process status):显示当前进程的状态,类似于Windows的任务管理器
- jps:JDK自带命令,查看本机运行的java进程情况(需安装JDK)
ps -ef | grep 进程名 # 查看本机运行的所有进程
# 通常根据查询到的进程号,结合 kill -9 进程号 来杀死进程