大数据之路之Linux篇
Posted ╭⌒若隐_RowYet——大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据之路之Linux篇相关的知识,希望对你有一定的参考价值。
目 录
1.Linux简介篇
1.1 为什么要学习Linux
- 工作需要,从事IT工作或多或少都要设计Linux;
- 迟早老子会有钱,要买一台苹果Mac坐在星巴克追剧,那你会发现,Mac的命令行模式竟然和Linux惊人的相识,我每次用到Mac命令行操作都是直接网上直接copy的,不知道啥意思,这是我一个做设计的朋友跟我吐槽的,嘿嘿,就怕哪天你copy了个
rm -rf *
- 每次看美国大片,发现那些电脑高手都在一个黑框框里啪啦啪啦的敲键盘,他们在敲啥呢?想不想成为他们一样的高手?
1.2 Linux是什么
Linux
,全称GNU/Linux
,含义linux is not unix,自身解释自己,是一套免费使用和自由传播的类Unix操作系统;说白了就是跟你平时用的Windows一样是个操作系统,起到连接管理计算机硬件和软件的一个大程序;
因为具有免费(有商业版收费)、完全开源、支持多用户多任务,跑程序任务稳定
等优点,让他在程序员界是灰常有名气的,企业级项目基本都会部署到Linux系统;
错觉:Linux比Window安全?该命题不一定成立,为啥有此错觉 ,因为在中国,整Windows的人比整Linux的人多,自然发现的隐患就多;
1.3 Linux创始人
林纳斯·本纳第克特·托瓦兹(Linus Benedict Torvalds,1969年12月28日- )
,看名字就知道他和Linux之前的关系吧,芬兰赫尔辛基人,著名的大佬程序员,我辈之楷模,一般人我不告诉他,git
也是他的杰作,牛吧?主要是头发还多,不用担心学Linux会秃头了吧?
1.4 Linux主要发行版本
Linux还分不同的版本?是的,正经来说,Linux指的是Linux的内核,但是很多组织及机构呢基于这个内核上进行了自己特色的二次开发,就形成了各自特色的Linux系统;
主要发型版本有Ubuntu,RedHat,CentOS(大数据用的较多,据说快消亡了,初学者不建议用)、AlmaLinux、Rocky Linux、Oracle Linux、Debian、deepin、opensuse、fedora等……
系统间的指令和玩法95%都相同,所以懂得一个就能懂得其他的,莫慌!
1.5 Linux和Unix前世今生
-
上世纪70年代,美国通用电气、麻省理工、贝尔实验室三家合力开发分时操作系统Multics,遗憾最后整个计划以失败告终,但是却流下了宝贵的思想和代码;
-
贝尔实验室的大佬
Ken.Thompson
就十分珍惜这些代码,自己在贝尔实验室继续努力,基于B语言开发了一个文件管理系统,其中的思想理念至今保留在了Unix和Linux上,即万物皆文件
,小系统问世后在贝尔实验室内部使用,好评如潮; -
Ken.Thompson
的好基友Dennis Ritchie
用完后更是称赞不已,觉得这东西不该只局限于贝尔实验室,应该被推广全世界,针对当时的不足以及B语言的不足,于是二位大佬又在B语言的基础上开发了C语言(牛,除了佩服只能佩服),并且用C语言重写了文件管理系统,命名Unix
; -
80代,商业巨头们闻到了
Unix
的商机,各自开发了自己的Unix
系统;同时也暴露除了两个弊端,商业版价格昂贵不开源;Unix必须跑在高性能的巨型计算机上; -
商业巨头插手后,大多数
Unix
收费,其中有个免费开源版本美国电话电报公司AT&T System V
,被荷兰阿姆斯特丹的Vrije大学计算机科学系的Andrew S. Tanenbaum
教授改写,命名Minix
,用于教学工作,同时还提出一个构思,希望基于Minix
的改进,Unix有一天能跑在个人计算机上; -
Richard M.Stallman
大佬,当时首屈一指的权威骇客,痛斥商业巨头对对软件的封闭,认为软件应该开源,商业应该靠服务赚钱,GUN
拟定普遍公用版权协议(GeneralPublicLicense,简称GPL),GPL协议下认为自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开,即设定一个开源、免费的内核,内核以上的各种服务,应用可以是商业巨头门的收费内容;Linux的成功就得益于GPL协议。 -
大佬Linus基于
GUN
计划和Minix
思想,写了第一版Linux内核,放到了网上,引起了很多技术大佬的反应,各地网络界的雷锋纷纷支持改进,Linux开始不断发展; -
商业大佬们再次发现商机,基于Linux内核发展自己的Linux系统;于是百花齐放;
以下开始讲Linux基础及实操;采用和版本:CentOS7
,这个版本也是大数据集群用的最多的一个版本;
2.Linux系统基础篇
2.1 Linux安装
为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;
2.2 Linux用户管理、组管理、权限管理
为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;
2.3 Linux磁盘基础知识、分类、分区、挂载、卸载、扩容等操作;
为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux基础篇——Linux磁盘操作(磁盘基础知识、分类、分区、挂载、卸载、扩容)详解
2.4 Linux网络配置(配置网卡、固定IP,固定hostname,终端远程登录)
为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux基础篇——Linux网络配置(配置网卡、固定IP,固定hostname,终端远程)详解
2.5 Linux开关机、重启
注意:如果是服务器,关机,重启,一定要在工作群或者邮件先通知相关的服务器user,该服务器是否可以重启,否则容易造成部分user的文件丢失,这时你少不了被请喝茶;而且开关机的账号一定要有sudo权限或者是root才行。
sync
:把内存的数据同步到磁盘上
当我们关机或者重启时,都应该先执行3遍sync,防止数据丢失。重要的事做三遍;
shutdown
shutdown -h now
:表示立即关机
shutdown -h 1
:表示1分钟后关机
shutdown -r now
:立即重启
shutdown -k 5 “Waring:maybe the system will be shutdown”
:给所有系统的用户发一条警告信息,实际不会重启
man shutdown
:查看更多的shutdown参数使用
halt
halt
:直接使用,关机,简单
- halt:直接使用,关机
reboot
reboot
重启系统
logout
logout
:注销用户
登录时少用root账号登录,以避免操作失误的损失
平时可登录普通账户,再用“su - 用户名”切换成管理员登录,或者指令前面加sudo
,临时将root权限赋值给该账号,前提是要该账号有sudo
权限,不懂的可以参考本文2.2 Linux用户管理、组管理、权限管理
init
init 6
:重启系统,这里采用的是Linux的运行级别,在3.1 Linux运行级别及找回root密码
会细讲
init 0
:关机,这里采用的是Linux的运行级别,在3.1 Linux运行级别及找回root密码
会细讲
2.6 Linux的主要目录介绍
Linux的目录中有且只有一个根目录
;Linux是以文件的形式管理我们的设备,因此linux系统,一切皆为文件,而细分一下又可以理解为只有文件夹和文件两种;
Linux的目录存放有规划,乱放文件显得自己菜
利用tree
命令,查看linux的根目录\\
下的主要文件夹;
`sudo yum -y install tree`
tree -L 1
.
├── bin -> usr/bin
├── boot
├── data
├── dev
├── etc
├── home
├── lib -> usr/lib
├── lib64 -> usr/lib64
├── media
├── mnt
├── opt
├── proc
├── root
├── run
├── sbin -> usr/sbin
├── srv
├── sys
├── tmp
├── usr
└── var
或者可视化软件MobaXterm``xftp
查看根目录下的主要文件夹如图2.6.1;
这些主要目录的解释如下;
/bin:
是Binary的缩写,这个目录存放着最经常使用的命令。/sbin:
s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。/home:
存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。/root:
该目录为系统管理员,也称作超级权限者的用户主目录。/lib:
系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。/lost+found:
这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件。/etc:
所有的系统管理所需要的配置文件和子目录my.conf。/usr/local:
这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录,博主就喜欢把工具装在/usr/local/tools
下/boot:
存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件。/proc:
这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。/srv:
service的缩写,该目录存放一些服务启动之后需要提供的数据。/sys:
这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs。/tmp:
这个目录是用来存放一些临时文件的。/dev:
类似windows的设备管理器,把所有的硬件用文件的形式存储。/media:
linux系统会自动识别一些设备,例如U盘光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。/mnt:
系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里面的内容了。/opt:
这是给主机额外安装软件所摆放的目录,如安装ORACLE数据库就可放到该目录下。默认为空。/usr/local:
这是另一个给主机额外安装软件所安装的目录,一般是通过编译源码的方式安装的程序。/var:
这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下,包括各种日志文件。/selinux:
SELinux是一种安全子系统,它能控制程序只能访问特定文件。
3.Linux实操进阶篇
3.1 Linux运行级别及找回root密码
为了避免太臃肿,链接到博主的另一篇博客,图文并茂的讲解;Linux基础篇——Linux运行级别及找回root密码
3.2 Linux实用指令
3.2.1 帮助指令man、help
用法
man [命令或配置文件]
help [命令或配置文件]
man ls
help cd
3.2.2 文件目录类指令
用法
-
pwd:Print Working Directory,显示当前工作目录的绝对路径
。 -
ls:-a:显示当前目录所有的文件和目录,包括隐藏的; -l:以列表的方式显示信息。常用:ls -al 或ll
-
cd:切换文件夹,cd ~:回到自己的家目录;cd …:回到当前目录的上一级目录。
-
mkdir:创建目录;-p:创建多级目录。
-
rmdir:删除空目录。rmdir不能删除非空的目录。如果需要删除非空的目录,需要使用rm -rf。
-
cp:拷贝文件到指定目录; -r:递归复制整个文件夹。-f:强制覆盖不提示的方法:
-
rm:移除文件或目录; -r:递归删除整个文件夹; -f:强制删除不提示。
-
mv:移动文件与目录或重命名,两种功能!
-
touch:创建空文件。可以一次性创建多个文件;
-
ln 给文件创建一个软连接,类似windows的快捷方式 用法:ln -sf [源文件或目录] [软连接名]
# 查看当前路径 pwd
[root@centos-7 local]# pwd
/usr/local
# 预览当前路径的文件 ls -al 或 ll
[root@centos-7 local]# ls -al
总用量 0
drwxr-xr-x. 12 root root 131 5月 27 2021 .
drwxr-xr-x. 13 root root 155 5月 27 2021 ..
drwxr-xr-x. 2 root root 6 4月 11 2018 bin
drwxr-xr-x. 2 root root 6 4月 11 2018 etc
drwxr-xr-x. 2 root root 6 4月 11 2018 games
drwxr-xr-x. 2 root root 6 4月 11 2018 include
drwxr-xr-x. 2 root root 6 4月 11 2018 lib
drwxr-xr-x. 2 root root 6 4月 11 2018 lib64
drwxr-xr-x. 2 root root 6 4月 11 2018 libexec
drwxr-xr-x. 2 root root 6 4月 11 2018 sbin
drwxr-xr-x. 5 root root 49 5月 27 2021 share
drwxr-xr-x. 2 root root 6 4月 11 2018 src
# 创建文件夹 mkdir
[root@centos-7 local]# mkdir tools
# 创建多级文件夹 mkdir -p
[root@centos-7 local]# mkdir -p tools/java
# 切换目录 cd
[root@centos-7 local]# cd tools/
# 预览该目录下的内容
[root@centos-7 tools]# ls
java
# copy文件
[root@centos-7 tools]# cp /root/anaconda-ks.cfg java/
[root@centos-7 tools]# cd java
[root@centos-7 java]# ls
anaconda-ks.cfg
# 重命名文件
[root@centos-7 java]# mv anaconda-ks.cfg anaconda-ks.cfg_bak
[root@centos-7 java]# ls
anaconda-ks.cfg_bak
# 新建文件
[root@centos-7 java]# touch test.sh
[root@centos-7 java]# ls
anaconda-ks.cfg_bak test.sh
# 创建软链接
[root@centos-7 java]# ln -sf test.sh test
[root@centos-7 java]# ll
总用量 4
-rw-------. 1 root root 1719 2月 9 10:54 anaconda-ks.cfg_bak
lrwxrwxrwx. 1 root root 7 2月 9 10:55 test -> test.sh
-rw-r--r--. 1 root root 0 2月 9 10:55 test.sh
# 删除文件
[root@centos-7 java]# rm -rf anaconda-ks.cfg_bak
[root@centos-7 java]# ll
总用量 0
lrwxrwxrwx. 1 root root 7 2月 9 10:55 test -> test.sh
-rw-r--r--. 1 root root 0 2月 9 10:55 test.sh
3.2.6 文件查看指令
cat:查看文件内容。只能浏览文件,而不能修改文件。 -n:显示行号。 结尾加上 | more:分页显示,不会全部一下显示完。
more:是一个基于VI编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more还内置了很多快捷键: 空白键(Space):向下翻一页 Enter:向下翻一行 q:立刻离开more,不再显示该文件内容 Ctrl + F:向下滚动一屏 Ctrl + B:返回上一屏 = :输出当前行的行号 :f 输出文件名和当前行的行号
less:用来分屏查看文件内容,与more相似,但是更强大,支持各种显示终端。less指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容。对于显示大型文件具有较高的效率。
head:显示文件的开头部分。-n 5:看前面5行内容。
tail:输出文件中尾部的内容。 -n 5:看后面5行内容。 -f:时事追踪该文档的所有更新,Ctrl+z结束
>指令:输出重定向。如果不存在会创建文件,否则会将原来的文件内容覆盖。
>>指令:追加。如果不存在会创建文件,否则不会覆盖原来的文件内容,而是追加到文件的尾部。
echo:输出内容到控制台。
history:查看历史指令。
# cat 查看文件内容
[root@centos-7 doc]# pwd
/usr/local/doc
[root@centos-7 doc]# ll
总用量 32
-rw-r--r--. 1 root root 26850 2月 9 11:54 learn_english.txt
-rw-r--r--. 1 root root 12 2月 9 11:55 test.txt
[root@centos-7 doc]# cat learn_english.txt
[root@centos-7 doc]# cat learn_english.txt | more
# more less 分页显示文件内容
[root@centos-7 doc]# more learn_english.txt
[root@centos-7 doc]# less learn_english.txt
# haed 显示文件开头 或者前5行
[root@centos-7 doc]# head learn_english.txt
[root@centos-7 doc]# head -n 5 learn_english.txt
# tail 显示文件末尾,-n 5:看后面5行内容。 -f:时事追踪该文档的所有更新
[root@centos-7 doc]# tail -n 5 learn_english.txt
[root@centos-7 doc]# tail -n 5 -f learn_english.txt
# echo 输出到屏幕
[root@centos-7 doc]# echo "hello world"
hello world
# 出书重定向>和追加>>
[root@centos-7 doc]# echo "hello world" > test.txt
[root@centos-7 doc]# cat test.txt
hello world
[root@centos-7 doc]# echo "hello linux" >> test.txt
[root@centos-7 doc]# cat test.txt
hello world
hello linux
# 查看历史命令
[root@centos-7 doc]# history
[root@centos-7 doc]# history | grep echo
139 echo "hello world" >> learn_english.txt
142 echo "hello world" > test.txt
159 echo "hello world" > test.txt
161 echo "hello world"
162 echo "hello linux" >> test.txt
164 history | grep echo
# 查看历史命令也可以按住 Ctrl+r,然后输入你要的命名,没有的话一直按Ctrl+r,往上找,直到找到为止
(reverse-i-search)`ech': echo "hello world"
#同时方向键 ↑和↓也可以切换历史命令
[root@centos-7 doc]# history | grep echo
3.2.7 日历指令date、cal
-date:显示当前日期和时间
- date “+%Y”:显示当前年份
- date “+%d”:显示当前月份
- date “+%Y-%m-%d %H:%M:%S”:显示年-月-日 时:分:秒
- 设置日期:date -s 字符串时间
cal:查看日历指令
;
- cal [月] [年份]:显示某一年或月的日历
# date用法
[root@centos-7 doc]# date "+%Y-%m-%d %H:%M:%S"
2022-02-09 00:12:31
[root@centos-7 doc]# date -s "20220209"
2022年 02月 09日 星期三 00:00:00 CST
# cal 用法
[root@centos-7 doc]# cal 10 02 2022
二月 2022
日 一 二 三 四 五 六
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
[root@centos-7 doc]# cal -3
一月 2022 二月 2022 三月 2022
日 一 二 三 四 五 六 日 一 二 三 四 五 六 日 一 二 三 四 五 六
1 1 2 3 4 5 1 2 3 4 5
2 3 4 5 6 7 8 6 7 8 9 10 11 12 6 7 8 9 10 11 12
9 10 11 12 13 14 15 13 14 15 16 17 18 19 13 14 15 16 17 18 19
16 17 18 19 20 21 22 20 21 22 23 24 25 26 20 21 22 23 24 25 26
23 24 25 26 27 28 29 27 28 27 28 29 30 31
3.2.8 查找指令find、location、grep
find
:从指定目录向下递归的遍历其各个子目录,将满足条件的文件或者目录显示在终端。
- find (搜索范围) -name (文件名):按照指定的文件名查找模式查找文件。
- find (搜索范围) -user (用户名):按照指定的用户名查找模式查找文件。
- find (搜索范围) -size (+多少/-多少/多少):按照指定的文件大小查找模式查找文件(大于多少/小于多少/等于多少)
- 查询 /目录下所有.txt的文件:
find / -name "*.txt"
locate
:locate (搜索文件), 可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定的文件。 locate指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。 在第一次运行之前,必须使用updatedb
指令创建locate数据库。grep
:过滤查找,表示将前一个命令的处理结果输出传递给后面的命令处理。经常跟管道一起使用。
grep [选项] 查找内容 源文件 -n:显示匹配行及行号。 -i:忽略大小写字母。
# find 用法,查找所有txt文件
find / -name "*.txt"
# 查找当前的root用户的文件
[root@centos-7 doc]# find -user root
.
./learn_english.txt
./test.txt
./others
# 查找当前文件大于27k
[root@centos-7 doc]# find -size +25k
./learn_english.txt
# locate 查找文件路径
[root@centos-7 /]# locate learn_english.txt
/usr/local/doc/learn_english.txt
# locate 模糊定位
[root@centos-7 /]# locate "learn_"
/usr/local/doc/learn_english.txt
/usr/share/help/C/orca/howto_learn_modes.page
# grep 查看过滤文本内容
[root@centos-7 /]# cat /usr/local/doc/learn_english.txt | grep -n "hello"
221:hello world
3.2.12 压缩和解压指令
gzip/gunzip
:压缩文件/解压
- gzip (文件):压缩为.gz文件,原来文件不保留。
- gunzip (文件):解压缩,同样也不保留源文件。
zip/unzip
:压缩文件/解压
- zip [选项] (压缩后文件xxx.zip) (将要压缩的文件)
- unzip [选项] (要解压的文件xxx.zip)
- zip -r:递归压缩,即压缩目录
- unzip -d (目录):指定解压后的文件的存放目录
tar
:打包指令,最后打包后的文件是.tar.gz的文件
tar [选项] xxx.tar.gz (打包的内容)
选项与参数:
-c : 创建打包文件, 可搭配 -v 来察看过程中被打包的文件名( filename)
-t : 察看打包文件的内容含有哪些文件名, 重点在察看“文件名”就是了;
-x : 解打包或解压缩的功能, 可以搭配 -C ( 大写) 在特定目录解开,特别留意的是, -c, -t, -x 不可同时出现在一串命令行中。
-z : 通过 gzip 的支持进行压缩/解压缩: 此时文件名最好为 *.tar.gz
-j : 通过 bzip2 的支持进行压缩/解压缩: 此时文件名最好为 *.tar.bz2
-J : 通过 xz 的支持进行压缩/解压缩: 此时文件名最好为 *.tar.xz,特别留意, -z, -j, -J 不可以同时出现在一串命令行中
-v : 在压缩/解压缩的过程中, 将正在处理的文件名显示出来!
-f filename: -f 后面要立刻接要被处理的文件名! 建议 -f 单独写一个选项啰! ( 比较不会忘记)
-C 目录 : 这个选项用在解压缩, 若要在特定目录解压缩, 可以使用这个选项。
-p( 小写) : 保留备份数据的原本权限与属性, 常用于备份( -c) 重要的配置文件
-P( 大写) : 保留绝对路径, 亦即允许备份数据中含有根目录存在之意;
–exclude=FILE: 在压缩的过程中, 不要将 FILE 打包!
- 压缩:tar -zcvf (压缩后文件名) (要压缩的文件)
- 解压:tar -zxvf (要解压的文件)
- 解压到指定目录:tar -zxvf (要解压的文件) -C (指定目录),指定解压到的目录要存在。
# gzip 压缩和gunzip解压
[root@centos-7 doc]# ll
总用量 32
-rw-r--r--. 1 root root 26850 2月 9 2022 learn_english.txt
drwxr-xr-x. 2 root root 6 2月 8 00:06 others
-rw-r--r--. 1 root root 24 2月 9 2022 test.txt
[root@centos-7 doc]# gzip learn_english.txt
[root@centos-7 doc]# ll
总用量 8
-rw-r--r--. 1 root root 1119 2月 9 2022 learn_english.txt.gz
drwxr-xr-x. 2 root root 6 2月 8 00:06 others
-rw-r--r--. 1 root root 24 2月 9 2022 test.txt
[root@centos-7 doc]# gunzip learn_english.txt.gz
[root@centos-7 doc]# ll
总用量 32
-rw-r--r--. 1 root root 26850 2月 9 2022 learn_english.txt
drwxr-xr-x. 2 root root 6 2月 8 00:06 others
-rw-r--r--. 1 root root 24 2月 9 2022 test.txt
# zip 和 unzip
[root@centos-7 doc]# zip learn_english.zip learn_english.txt
adding: learn_english.txt (deflated 96%)
[root@centos-7 doc]# ll
总用量 36
-rw-r--r--. 1 root root 26850 2月 9 2022 learn_english.txt
-rw-r--r--. 1 root root 1267 2月 8 01:28 learn_english.zip
drwxr-xr-x. 2 root root 6 2月 8 00:06 others
-rw-r--r--. 1 root root 24 2月 9 2022 test.txt
[root@centos-7 doc]# unzip learn_english.zip
Archive: learn_english.zip
replace learn_english.txt? [y]es, [n]o, [A]ll, [N]one, [r]ename: y
inflating: learn_english.txt
[root@centos-7 doc]# ll
总用量 36
-rw-r--r--. 1 root root 26850 2月 9 2022 learn_english.txt
-rw-r--r--. 1 root root 1267 2月 8 01:28 learn_english.zip
drwxr-xr-x. 2 root root 6 2月 8 00:06 others
-rw-r--r--. 1 root root 24 2月 9 2022 test.txt
# tar解压和压缩
[root@centos-7 doc]# tar -zcvf ../files/learn_english.tar.gz ./learn_english.txt
./learn_english.txt
[root@centos-7 doc]# ls ../files/
learn_english.tar.gz
[root@centos-7 doc]# cd ../files/
[root@centos-7 files]# ll
总用量 4
-rw-r--r--. 1 root root 1204 2月 8 01:37 learn_english.tar.gz
[root@centos-7 files]# tar -zxvf ./learn_english.tar.gz -C ../doc/
./learn_english.txt
tar: ./learn_english.txt:时间戳 2022-02-09 11:54:20 是未来的 123292.314216 秒之后
以上就是一些常用的linux命令,实际的linux命令是列举不全的,而且不同版本系统的linux命令也会略有差别,需要读者有举一反三的精神,有问题多百度。
3.3 Linux调度任务crontab,at
- 基本语法
crontab
[选项] - 选项说明
选项 | 功能 |
---|---|
-e | 编辑crontab定时任务 |
-l | 查询crontab任务 |
-r | 删除当前用户所有的crontab任务 |
# 查看crontab任务
[root@centos-7 files]# crontab -l
no crontab for root
# 编辑crontab任务
[root@hadoop101 ~]# crontab -e
# 进入crontab编辑界面。会打开vim编辑你的工作。
#新增,然后wq! 保存退出后就可生效
*/1 * * * * echo "hello world" >> /usr/local/doc/hello.txt
# 然后监控该文件,发现确实每分钟会追加一条hello world,证明成功了
[root@centos-7 doc]# tail -n 50 -f /usr/local/doc/hello.txt
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
hello world
# 再查看crontab任务
[root@centos-7 files]# crontab -l
*/1 * * * * echo "hello world" >> /usr/local/doc/hello.txt
# 删除root下的所有crontab
[root@centos-7 files]# crontab -r
# 再查看crontab任务
[root@centos-7 files]# crontab -l
no crontab for root
- 编辑crontab任务
语法:cron时间表达式 shell语句或者shell脚本
:简单的直接写shell语句,复杂的要写入shell脚本,然后执行shell脚本;
cron时间表达式具体说明如表3.3.2,这一块是重点;
项目 | 含义 | 取值范围 |
---|---|---|
第一个“*” | 一小时当中的第几分钟 | 0-59 |
第二个“*” | 一天当中的第几小时 | 0-23 |
第三个“*” | 一个月当中的第几天 | 1-31 |
第四个“*” | 一年当中的第几月 | 1-12 |
第五个“*” | 一周当中的星期几 | 0-7(0和7都代表星期日) |
cron时间表达式中的特殊符号含义如表3.3.3,主要是针对一些特殊的调度取值范围。
特殊符号 | 含义 |
---|---|
* | 代表任何时间。比如第一个“*”就代表一小时中每分钟都执行一次的意思。 |
, | 代表不连续的时间。比如“0 8,12,16 * * * 命令”,就代表在每天的8点0分,12点0分,16点0分都执行一次命令 |
- | 代表连续的时间范围。比如“0 5 * * 1-6命令”,代表在周一到周六的凌晨5点0分执行命令 |
*/n | 代表每隔多久执行一次。比如“*/10 * * * * 命令”,代表每隔10分钟就执行一遍命令 |
cron时间表达式的一些例子。
时间举例 | 含义 |
---|---|
45 22 * * * 命令 | 在22点45分执行命令 |
0 17 * * 1 命令 | 每周1 的17点0分执行命令 |
0 5 1,15 * * 命令 | 每月1号和15号的凌晨5点0分执行命令 |
40 4 * * 1-5 命令 | 每周一到周五的凌晨4点40分执行命令 |
*/10 4 * * * 命令 | 每天的凌晨4点,每隔10分钟执行一次命令 |
0 0 1,15 * 1 命令 | 每月1号和15号,每周1的0点0分都会执行命令。注意:星期几和几号最好不要同时出现,因为他们定义的都是天。非常容易让管理员混乱。 |
注意:时至今日,crontab调度因为其命令行操作的不方便以及易错性,早已经基本不用了,取而代之的是各种稳定的调度器,如Azkaban、DolphinScheduler等,但是其经典cron时间表达式却一直在各种时间调度器上沿用,希望读者必须牢记掌握。
at
一次性调度任务
选项与参数:
-m
: 当 at 的工作完成后, 即使没有输出讯息, 亦以 email 通知使用者该工作已完成。
-l
: at -l 相当于 atq, 列出目前系统上面的所有该使用者的 at 调度;
-d
: at -d 相当于 atrm , 可以取消一个在 at 调度中的工作;
-v
: 可以使用较明显的时间格式列出 at 调度中的工作列表;
-c
: 可以列出后面接的该项工作的实际指令内容。
TIME
: 时间格式, 这里可以定义出“什么时候要进行 at 这项工作”的时间, 格式有:
HH:MM
如04:00
,在今日的HH:MM
时刻进行, 若该时刻已超过, 则明天的HH:MM
进行此工作。
HH:MM YYYY-MM-DD
如;04:00 2015-07-30
强制规定在某年某月的某一天的特殊时刻进行该工作!
HH:MM[am|pm] [Month] [Date]
如:04pm July 30
也是一样, 强制在某年某月某日的某时刻进行!
HH:MM[am|pm] + number [minutes| hours|days|weeks]
如now + 5 minutes , 04pm + 3 days
就是说, 在某个时间点“再加几个时间后”才进行。
# 5分钟后执行保存
[hadoop@centos-7 system]$ at now + 5 minutes
at> /bin/sync
at> /bin/sync
at> /sbin/reboot
at> <EOT> # 按ctrl+d 结束
job 1 at Tue Feb 22 11:01:00 2022
# 查看该账号下的at工作
[hadoop@centos-7 system]$ at -l
1 Tue Feb 22 11:01:00 进阶大数据架构师学习路线