工业大数据
一、工业大数据运维
1、Linux基础
常用命令:
1、nmtui:网络管理TUI
选项:
Edit a connection(编辑连接)
Aetivate a connection(启用连接)
Set system hostname(设置系统主机名)
2、systemctl restart network:重启网络服务
3、ls:罗列当前文件夹下所有文件
4、which:查看文件位置
5、ls -s 文件路径:创建快捷方式
| 命令 | 说明 |
|---|---|
| ps [-au] | 用于查看系统进程 ps -axu 查看目前所有进程 |
| pidof [服务名称] | 用于查看某个指定服务进程的PID值 |
| kill [-9] 进程1 进程2 | 用于向进程发送强制终止信号 |
| clear | 用于清除字符终端屏幕内容 |
| reboot | 用于重新启动系统 |
| alias | 用于创建命令的别名 |
| wget | 用于在终端中下载网络文件 |
| who | 用于查看当前登入主机的用户终端信息 |
| echo | 用于在终端输出字符串或变量提取后的值 |
| poweroff | 用于立即停止系统 |
(1)Linux文件管理系统
1、Linux系统中一切都是文件,包括:目录、字符设备、块设备、套接字、打印机 2、找到一个文件的步骤:依次进入该文件所在磁盘分区 -> 进入该分区下的具体目录 -> 找到该文件 3、Linux系统中一切文件都是从 根(/) 目录开始,并按照文件系统层次化标准采用树形结构来存放文件
4、Linux系统中的文件和目录名称 严格区分大小写,且文件名称不得包含斜杠
5、系统目录作用:
| 目录 | 作用 |
|---|---|
| /mnt | 挂载目录 |
| /opt | 用户安装软件的目录 |
| /root | 超级用户所在家目录 |
| /home | 非root用户所在家目录 |
| /bin | 脚本目录 |
| /boot | 启动目录 |
| /dev | 设备目录 |
| /etc | 配置文件目录 |
| /user | 当前用户目录 |
| /tmp | 临时目录 |
(2)基础命令
命令区分大小写,在命令行中,可以使用Tab键自动补齐命令和检测命令是否书写正确,利用向上或向下的光标键,可以翻阅曾经执行过的历史命令,并可以再次执行
通过man 命令查看帮助文档,通过history查看历史记录
通过 nmtui配置网卡和主机名
(3)文件和目录命令
| 命令 | 说明 |
|---|---|
| mkdir [ -p ] 目录名 | 用于创建一个目录 |
| rmdir [ -p ] 目录名 | 用于删除空目录 |
| touch 文件名 | 用于建立空白文件 |
| cp [ -r ] 源文件 目标文件 | 用于文件或目录的复制 |
| mv 源文件或目录 目标文件或目录 | 用于文件或目录的移动或重命名 |
| rm [ -rf ] 文件名或目录名 | 用于文件或目录的删除 |
| grep [ 参数 ][ 正则 ] [目录或文件] | 用于查找文件中包含有指定字符串的行 |
| 命令 | 说明 |
|---|---|
| pwd | 用于显示用户当前所处的目录 |
| cd [- path] | 用来在不同目录中进行切换 |
| ln [ -s ] [目录或文件] | 用来列出文件或目录信息 |
| cat 文件名 | 用于滚屏显示文件内容 |
| more [+/ -num(大小) ] 文件名 | 用于分屏显示文件内容。Enter(移动一行),Space(移动一页) Q(退出) |
| head [-n num] | 用于显示文件的开头部分,默认显示前10行的内容 |
| tail [ -n num] | 用于显示文件的末尾部分,默认显示尾部10行的内容 |
(4)用户和用户组命令
| 命令 | 说明 |
|---|---|
| useradd [-g 用户组] | 新建用户,[指定默认用户组] |
| passwd [username] | 设置口令 |
| userdel [-r] username | 删除用户 |
| su - [username] | 切换用户身份 |
| 命令 | 说明 |
|---|---|
| groupadd <组名> | 创建用户组 |
| groupdel <组名> | 删除用户组 |
| gpasswd -a [用户名] 组名 | 为组群添加用户 |
| sudo <命令名称> | 用于给普通用户提供额外的权限 visudo |
(5)文件权限管理
文件:操作系统存储信息的基本结构,是一种信息的集合,文件名是其唯一的标识。
Linux没有 ”扩展名“的概念 ,也就是说文件的名称和该文件的种类没有直接的关联。
Linux中的 每一个文件或目录都包含有访问权限,这些访问权限决定了谁能访问和如何访问这些文件和目录
文件和目录有 读、写、执行等三种权限,根据赋予的权限不同,三种不同的用户(所有者、用户组、其他用户)能够访问不同的目录或者文件
一般 " - " 代表文件 " d " 代表目录 " l " 代表快捷方式
修改权限
chmod命令,格式:chmod 选项 文件 有数字表示法和文字表示法
数字表示法:将 读取(r)、写入(w)、执行(x) 分别以数字 4、2、1 表示,没有就为0
文字表示法:4种字母表示不同用户 ( user、group、other、all)分别以三种字符(read、write、execute)表示
示例
chmod u+r /etc/file
chmod u=rw,g=w /etc/file
修改用户和用户组
chown命令,格式:chown [选项] 用户或组 文件
示例
chown -R 用户名.用户组 文件1 文件2
2、Linux高级
(1)vim编辑器
文本编辑器,可执行 输出、删除、查找、替换、块操作。vim是全屏幕文本编辑器,没有菜单只有命令。
vim -r 文件名:打开非正常退出的文件,并恢复它
工作模式:
编辑模式 (默认):进入vim默认进入编辑模式, vim等待编辑命令输入而不是文本输入
输入模式 (a\i\o):在编辑模式按(插入i、附加a、打开o、修改c、取代r、替换s)可进入输入模式
命令模式 (:):编辑模式下,“ : ”进入命令模式,命令执行完毕自动进入编辑模式
常用命令
| 命令--移动光标的方法 | 说明 |
|---|---|
| n | 数值,光标向下移动n行 |
| 0或按键home | 移动到光标所在行首 |
| $或end | 移动到光标所在行末 |
| G | 移动到文件最后一行 |
| nG | n为数值,移动到文件的第n行, |
| gg | 移动到文件第一行 |
| 命令--查找与替换 | 说明 |
|---|---|
| /word ?word | 向下/向上寻找名称为word的字符串 |
| 按键n | 重复前一个查找动作 |
| 按键N | 与按键n相反,对上一个查询动作反向操作 |
| :n1,n2 s/word1/word2/g | 在第n1~n2行寻找word1字符串并替代为word2 |
| :1,$ s/word1/word2/g | 从第一行到最后一行寻找word1字符串,并将该字符串取代为word2 |
| :% s/word1/word2/gc | 全部替换,且在取代前显示提示字符给用户确认(confirm)是否需要取代 |
| 命令--删除、复制与粘贴 | 说明 |
|---|---|
| dd | 删除光标所在的那一整列 |
| ndd | n为数值,删除光标所在的向下列,如:20dd是删除20列 |
| yy | 复制光标所在的那一行 |
| nyy | n为数值。复制光标处向下n行,列如20yy是复制20行 |
| p, P | 小写p将已复制的数据粘贴在光标下一行,大写P则为粘贴在光标上一行 |
| ZZ | 若文件没有更改,则不存储离开,若已更改,则存储后离开 |
| u | 撤销、复原前一个动作 |
| . | 重复前一个动作,常用重复删除、重复粘贴等动作 |
| 命令--拓展 | 说明 |
|---|---|
| :e! | 恢复到文件初始状态 |
| :w [filename] | 将编辑的数据存储成为另一个文件(类似于另存为) |
| :n1,n2 w [filename] | 将n1到n2的内容存储成filename这个文件 |
| :! command | 暂时退出vim到命令列模式下执行command的显示结果 |
| :set nu | 显示行号 |
| :set nonu | 取消行号 |
| :noh | 取消搜索标注的高亮 |
| :set fileformat=unix | 将window中文件格式转换为unix文件格式,主要是换行符不一样 |
(2)输入输出重定向
定义:不使用系统的 标准输入端口、标准输出端口、标准错误端口,而进行重新的指定,所以重定向分为输入重定向、输出重定向、错误重定向。通常情况下,重定向到一个文件。在shell中,要实现重定向主要依靠重量定向符,即shell是检查命令行中有无重定向符来决定是否需要实施重定向.
| 重定向符 | 说明 |
|---|---|
| < | 输入重定向,当需要的输入是在一个已存在的文件中时,就可以使用输入重定向 |
| >(覆盖) 或 >>(追加) | 输出重定向,把一个命令的输出重定向的到一个文件中,而不是显示在屏幕上 |
| 2>或2>> | 错误重定向,把一个命令执行的错误重定向到一个文件中,如果没有错误,则清空保存的文件 |
| &> | 同时实现输出重定向和错误重定向 |
拓展:
/dev/null 空设备,丢弃从find或grep等命令送来的错误信息
cat /dev/null > err_file 清空数据
(3)配置远程控制任务
SSH(Secure shell)是一种能够以安全的方式提供远程登录的协议,也是目前远程管理Linux系统的首选方式。想要使用SSH协议来远程管理Linux系统,则需要部署配置sshd服务程序。sshd是基于SSH协议开发的一款远程管理服务程序,提供了两种安全验证的方法:
· 基于口令的验证——用账户和密码来验证登录
· 基于密钥的验证——需要在本地生成密钥对,然后把密钥对中的公钥上传至服务器,并于服务器中的公钥进行比较;该方式相对来说更安全
远程传输命令
scp(secure copy)是一个基于SSH协议在网络之间进行安全传输的命令,其格式为"scp [ -r ] 本地文件 远程账户@远程IP地址:远程目录"。
yum包管理器
尽管RPM可以完成软件的安装、卸载、查询等操作,但运用起来依然比较繁琐,特别是处理软件的依赖关系,在这种情况下安装软件会是非常痛苦的。yum软件仓库便是为了进一步降低软件安装难度和复杂程度而设计的技术
RHEL先将发布后的软件存放到yum服务器内,在分析这些软件得到依赖属性问题,将软件内的记录信息写下来,然后将这些信息分析后记录成软件想关性的清单列表。当用户端有软件安装的需求时,用户端主机会主动地像网络上面的yum服务器的容器网址下载清单列表,然后通过清单列表的数据与本机RPM数据库已存在的软件数据相比较,就能够一次性安装所有需要的具有依赖属性的软件了
yum基本指令
| 命令 | 作用 |
|---|---|
| yum repolist all | 列出所有仓库 |
| yum install all | 列出仓库中所有软件包 |
| yum install 软件包名称 | 安装软件包 |
| yum remove 软件包名称 | 一处软件包 |
| yum clean all | 清除所有仓库缓存 |
| yum info 软件包名称 | 查看软件包信息 |
拓展:
查询yum服务器是否有需要安装的软件:yum list | grep xx软件列表
(4)压缩与解压
命令:tar、gzip、zip、unzip
1.gzip
不能压缩目录。通过 jempel-ziv算法压缩后,可以节省 60%以上的存储空间,以及网络传输率
1 命令格式:gzip [选项] 源文件
2 选项说明:
3 -d 解压压缩文件
4 -l 列出压缩文件的相关信息
5 -r 递归处理,将指定目录下的所有文件及子目录一并处理
6 -v 显示指令执行过程
2.tar
使用tra命令打出来的包我们常称为tar包
1 命令格式:tar [选项] -f 备份文件名称 源文件或目录
2 选项说明:
3 -w 遭遇问题时先询问用户
4 -t 列出备份文件的内容
5 -r 新增文件到已存在的备份文件的结尾部分
6 -v 显示指令执行过程
7 -c 建立新的备份文件
8 -x 从备份文件中还原文件
9 -z 通过gzip指令处理备份文件
10 -C <目的目录> 切换到指定的目录
11 -h 不建立符号连接们直接复制该链接所指向的原始文件
12 --delete 从备份文件中删除指定的文件
13 --remove-files 文件加入备份文件后,就将其删除
14 --exclude <范本样式> 排除符合范本样式的文件
(5)安装MariaDB
1 查看yum源:yum list martadb*
2 安装:yum install -y mariadb-server.x86_64
3 启动服务:systemctl start mariadb
4 修改密码:mysql_secure_installation
3、Shell Script编程
shell脚本程序时解释型的,也就是说shell脚本程序不需要进行编译,就能直接逐条解释,逐条执行脚本程序的源语句。
shell脚本程序的处理对象只能是文件、字符串、命令语句,不像其他的高级语言有丰富的数据类型和数据结构
注意:
· 命令的执行是从上而下、从左而又进行的。
· 命令、选项与参数间的多个空格都会被忽略掉
· # 可作为注解。
(1)运行shell script程序
1 直接命令下达:shell.sh 文件必须要具备可读与可运行(rx)的权限
2 以bash程序来运行:通过bash shell.sh 或 sh shell.sh 来运行
Linux默认会把 /bin 目录设置到$PATH内。此时,若shell.sh 在 /bin 内具有rx的权限,那就直接输入shell.sh即可运行该脚本程序
(2)编写第一个shell script脚本
1 #!/bin/bash
2
3 clear
4 echo "Hello Word" > files.sh
5 echo 创建完成
6 exit
(3)变量的定义与使用
1 NAME="Tom" // 变量名大写,等号的前后不能带空格
2 echo $NAME
3 echo ${NAME}是我的名字
[注意] 变量名外面的花括号是可选的,加不加都行,加花括号是为了帮助解释器识别变量的边界
(4)变量类型
1.局部变量:脚本或命令中定义,仅在当前实例中有效
2.环境变量:所有程序,包括shell启动的程序,都能访问,仅在必要的时候设置
3.系统中的用户工作环境设置文件
* 登录环境设置文件:/etc/profile
* 非登录环境设置文件:/etc/bashrc
4.用户设置的环境文件
*登录环境设置文件:$HOME/.bash_profile
*非登录环境设置文件:$HOME/.bashrc
[ 注意] 系统中的用户工作环境设置文件对所有用户均生效,而用户设置的环境设置文件对用户自身生效
[^] 只有在特定的情况下才读取profile文件,确切地说是在用户登录的时候读取。当运行shell脚本以后,就无需再读profile
(5)对话式脚本
使用 read命令可以让用户输入相应内容,脚本中通过变量进行接收,标准输入读取单行数据
1 语法:read [-ers] [-n number] [-p prompt] [-t timeout] [name ...]
2 参数说明:
3 -p 后面跟提示信息,即在输入前打印提示信息
4 -e 在输入的时候可以使用命令补全功能
5 -n 后跟一个数字,定义输入文本的长度
6 -r 屏蔽\,如果没有该选项,则\作为一个转义字符,如果有的话 \ 则是正常字符
7 -s 安静模式,在输入字符时不在屏幕上显示,
8 -t 后面跟秒数,定义输入字符等待的时间
(6) 数值运算
利用 [ 计算式 ] 来进行数值运算。数值运算有:+、-、、/、%、***
判断式扩展
| 测试表达式符号 | test | [ ... ] | [[ ... ]] 字符串的升级 | ((...)) 数字的升级 |
| 边界是否需要空格 | yes | yes | yes | no |
| 整数比较操作符 | -eq、-gt、-lt、-ge、-le | -eq、-gt、-lt、-ge、-le | -eq、-gt、-lt、-ge、-le | ==、>、<、>=、<= |
与上面表格对应
逻辑操作符:!、-a、-o !、-a、-o !、&&、|| !、&&、||
[[ ... ]]:支持字符串的模式匹配和正则表达式,把右边的作为一个模式,而不仅仅是一个字符串。[[ ]]中匹配字符串或通配符,不需要引号
(( ... )):整数型的计算扩展,不支持浮点型。如果表达式的结果为0,那么返回的退出状态码为1
{ }:对大括号中的文件名做扩展。在大括号中,不允许有空白:
第一种:对大括号中的以逗号分割的文件列表进行拓展。如:touch {a, b}.txt结果为a.txt,b.txt
第二种:对大括号中以点点分割的顺序文件列表起拓展作用,如:touch {a..d}.txt的结果为a.txt b.txt c.txt d.txt
1 示例:
2 判断1 > 10 ?
3 ((1 > 10))
4 echo $?
5 1
6 ((1>10)) && echo 成立 || echo 不成立
7 不成立
4、程序结构
(1)if ... then语句
1 if [ 条件判断式1 ]; then
2 执行程序
3 elif [ 条件判断式2 ]; then
4 执行程序
5 else
6 执行程序3
7 fi
(2)while不定循环
1 while [ 条件condition ]
2 do
3 程序段落
4 done # 循环结束
(3)for 固定循环
1 for var in con1 con2 con3 ...
2 do
3 程序段落
4 done
5 示例:
6 for i in 1 2 3 4 5 6 7;do
7 echo $i
8 done
写法2
1 for i in `seq 0 4`;do echo $i;done # 0 1 2 3 4
2 for i in $(seq 0 4); do echo $i;done # 0 1 2 3 4
3 for i in `seq 9 -1 0`;do echo $i;done # 9 8 7 6 5 4 3 2 1 0
4 for i in { 1..4 }; do echo $i;done # 1 2 3 4
c语言版
1 #!/bin/bash
2 for ((i=0; i <= 5; i++)); do
3 echo "hello word"
4 done
(4)循环控制
sleep:休眠多少秒
break:终止循环
contiune:跳出本次循环