首页 / LINUX / Linux核心技能与应用
Linux核心技能与应用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Linux核心技能与应用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含39070字,纯文字阅读大概需要56分钟。
内容图文
![Linux核心技能与应用](/upload/InfoBanner/zyjiaocheng/926/5e379a1dbedd49bdbdee81dee15c7acf.jpg)
Linux核心技能与应用
- Linux系统与安装
- CentOS7的基础使用
- CentOS7的安装与网络
- Shell脚本
- 系统服务
- 内存与磁盘管理
- linux开发神器
Linux系统与安装
linux操作系统的发展
Unix→DOS→GNU→Linus→Linus\GNU=Linux
苹果的macOS和Linux基于Unix,Windows基于MS-DOS
Linux的核心称之为内核,Linux系统能正常工作并不只包括内核,还包括一些外部基本程序包括:文本编辑器、编译器、外壳Shell
各个操作系统之间关系
macOS和Linux的设计是基于Unix、模仿了其运行模式
目前大部分的Windows版本是基于革命性的windows NT内核
Linux发行版
因为Linux是开源的,所以有很多版本。Linux发行版就是简化用户安装程序,并且配套内核、api、预装应用程序。
Linux发行版之间的主要区别:
- 安装的方法不一样(优秀的发行版安装简单)
- 安装应用程序的方式不一样
- 预装的应用程序不一样
不同的Linux发行版:
- Red Hat(红帽):性能稳定(但自9.0版本后停止维护更新)。企业版RHEL
- Fedora:Red Hat的社区后继版,免费但维护成本高
- CentOS:RHEL的克隆版、免费的
- Deepin:对最优秀开源的软件进行集成配置
- Debian:算是迄今为止最遵循GNU规范的Linux系统
- Ubuntu:Debian的分支
安装CentOS7
使用virtualBox安装centOS7镜像
virtualBox官网下载安装
https://www.virtualbox.org/wiki/Downloads
下载使用阿里云的centOS7镜像
https://developer.aliyun.com/mirror/centos?spm=a2c6h.13651102.0.0.3e221b11lrCqZP
CentOS7的基础使用
root用户与普通用户
我们使用终端操作
登录后终端命令行显示的解释:
[liur@10 ~]$ ==== [用户名@所在主机名 所在目录]$=普通用户权限被限制 #root超级管理员
普通用户切换root用户:sudo su
查看现用户名或者现主机名:whoami/hostname
退出root用户:ctrl + D / exit
命令行的长短参数
- 短参数:一个字母
比如commond -n -p -v,多个短参数可以合并commond -npv,字母的大小写有区别
ls -a 获取包括隐藏文件的列表
- 长参数:多个字母
比如commond --param1 --param2
短参数和长参数可以合并使用,有时候长参数和短参数有相同的意义:ls -a与ls --all意义相同
长短参数赋值不同:
- 短参数 commond -n 20
- 长参数 commond --p=20
查找、文件、目录、权限基本命令操作
tab等操作
tab键:可补全命令和文件名
按上下键按通过时间显示使用过的命令、histroy命令可以查看之前用过的所有命令,并且可以 !编号 的形式使用历史命令
一些常用快捷键:
- ctrl + R 查找命令
- ctrl + A 光标跳到开头和home一样
- ctrl + E 光标跳到结尾和end一样
- 清屏ctrl + L 或者clear命令
- ctrl + D 结束退出
- Shift + PaUp 和鼠标一样的上下滚屏
- ctrl + u 删除光标左侧
- ctrl + k 删除光标右侧
- ctrl + w 删除左侧单词
- ctrl + y 黏贴回上面三种
linux的文件组织
Linux文件组织:普通文件 特殊文件
pwd显示当前所在linux系统位置
which命令可用于显示对应的可执行程序在哪个位置。例如:which pwd
浏览和切换目录 ls cd du
- ls -l
- ls -lh
- ls -lt
- ls -a
- cd …
du命令是真正的统计目录大小 du -h目录大小 du -a目录和文件大小 du -sh总大小
浏览和创建文件
cat 查看整个文件
less 按页数查看:空格 p键 回车 q键 (/搜索字符 n键 N键) = h键
tail
tail -f -s 4 4秒检查文件新内容
head
touch 文件
mkdir 目录 -p
文件的复制、移动、删除和链接
- cp -r 复制
- mv 剪切 重命名文件
- rm -i -f -r
- ln 硬链接=只能指向文件=不同的文件名指向同样的inood文件内容 ls -i查看inood
- ln -s 软链接=可以链接目录
用户和权限
Linux的用户分为:超级用户、群组用户、其他用户
root超级用户可以新增用户
root专属用户命令:
useradd、passwd、userdel(userdel -r toms可以把home下的用户家目录也删除)
root专属群组命令:
groupadd、groupsdel、usermod(-l用户重命名 -g改变用户群组)
注意点:
root在用户add后要设置密码才能使用
如果在创建用户时不分配组,会自动创建和用户名相同的组
用户与群组操作:
usermod -G friends1,friends2 liur --批量分群组
usermod -g freinds liur
usermod -l liur_rename liur
groups liur --获得liur所属的所有群组
usermod -aG friend3 liur --不删除原有群组关系,加入新群组
root用户可以根据群组和用户等来分配文件的权限
把文件权限分给所属群组用户-chown–root专属命令
chown 用户名 文件名 -- 改变文件所有者
chown -R(递归修改) 用户名:群组名 文件名 --改变文件群组和所有者
chgrp 群组名 文件名 -- 改变文件群组
文件访问权限-chmod–文件所有者也可使用的命令
文件权限符d/-/lrwx------.
文件所有者-文件所属群组用户-其他用户
r=4 w=2 x=1
chmod 的绝对用法:chmod 777 file.txt
chmod 的相对用法:ugo对应权限符三组
chmod u+rx file.txt
chmod go+rw file.txt
chomod gu=rwx filetxt
chomod -R 777 目录 递归赋权
linux软件与配置文件
配置文件
Linux的配置文件、脚本文件一般在etc目录下
- 比如bashrc终端配置文件
- profile其他需登录终端配置
- .nanorc nano的配置文件,如果家目录没配置就加载etc下的配置 nano -miA 激活、鼠标缩进、一行最开始
profile配置加载时会加载bashrc,修改bashrc等于修改了profile
配置文件修改后需重新登录生效,想要立即生效要用source命令 source .bashrc
软件管理工具yum命令
linux下的软件都是一个软件安装包.rpm结尾
Linux用户一般都是软件仓库下载软件、CentOS系统会有默认的仓库但是下载速度较慢
我们编辑软件仓库文件修改成离我们最近的仓库,文件位置:
/etc/yum.reos.d/CentOS-Base.repo
更改成阿里镜像源方式:https://blog.csdn.net/fxbin123/article/details/80072793
yum update 软件名称
yum upgrade 软件名称
yum intall
yum remove
yum search
如果源仓库没用的.rpm软件就去官网下载,用rpm命令
rpm -i *.rpm 用于安装
rpm -e *.rpm 用于卸载
RTFM阅读命令手册man命令使用手册
man + 数字 + 函数/命令
man 3 rand 可查看c语言的random函数使用手册
man ls ls的使用
例如cp命令在man手册里的用法:
apropos 关键字 可以查看手册中出现此关键字描述的命令,用于查找命令
和man相关的参数 -h --help
whatis 参数名 解释此参数
如果不想在linux系统看man查出的文档,可在百度输入同样的命令例man ls,也可以找到方便阅读
查找、过滤、统计重复、排序、剪切进阶命令操作
查找文件locate和find
区别:locate对于名字查找是包含,find是完全匹配,find也可以用*号通配符匹配
- locate在文件数据库查找文件
一般新建的文件locate找不到,24小时后更新文件数据库后可以找到updatedb可以马上更新文件数据库,然后就可以找到了 - find命令是从磁盘查找文件,但是查找较慢
find 何处 何物 做什么
find /var/log -name new_file.txt
find / -name new_file.txt --根目录下查找
find / -size +10M 查找大于10兆的文件
find / -type d
find / -type f
find . -name "new" -type d 查找名字为new的目录
- find高级用法:操作查找出的文件
find / -name new_file.txt -delete
-exec调用命令
find / -name new_file.txt -exec -chomod 600 {} \;
通过-exec来操作权限,{}代表被查找出的所有文件,\;是固定结尾
grep(过滤器):查找关键字在文件中的位置grep -i path /etc/profile 忽略关键字大小写
grep -n path /etc/profile 显示行号
grep -v path /etc/profile 除此行的其他行
grep -r path /etc 递归查找目录下所有
grep -E ^path /etc 正则匹配 -以path为首
grep -E [Pp]ath /etc 正则匹配
grep -E [0-4] /etc 正则匹配
grep -E [a-zA-Z] /etc 正则匹配
sort为文件内容进行排序
sort zimu.txt 排序后不改变源文件
sort -o zimu_sort.txt zimu.txt output命令输出到文件
sort -r zimu.txt 倒序
sort -R zimu.txt 随机倒序
sort -n zimu.txt 数字从小到大排序
wc命令:文件的统计 word count缩写
wc name.txt
行数 单词数 字节数 文件名
uniq删除连续的重复行
uniq zimu_uniq.txt zimu.txt
uniq -c zimu.txt 统计重复行数
uniq -d zimu.txt 只显示重复行的值
cut:剪切文件内容
命令的重定向、管道、流(<、<<、|)
- 重定向:命令的结果输入到其他地方
- 管道:一个命令的输出代表一个命令的输入
- 流:比较抽象,参考java
命令的作用终点:终端、文件、或作为其他命令的开始
①重定向符号>和>>
把命令运行结果输入到文件中
cut -d , -f 1,2 file.csv > new_file.csv
“>”输出到创建的新闻界, 但是会覆盖本目录下的同名此文件所以谨慎使用,如果只想使用>不想覆盖,可以输出到/dev/null里,这个是linux系统里一直为空的一个特殊文件
">>"是追加到文件末尾,不会覆盖文件,比>安全
重定向的输入< 接收从文件输入的命令 << 接收从键盘的输入
输入和输出混合使用:
sort -n << hei > new_sort.txt 2>&1
②stdin-0、stdout-1、stderr-2 流-文件描述符
比如普通cut > 只能将标准输出输入到新文件(默认1>)
将标准错误输出到新文件是 2> 符号
cut not_file.txt > file.txt 2> error_file.txt
即使not_file.txt不存在,这样也不会报错了
如果标准和错误都想输出cut not_file > file_txt 2>&1
③管道符号 |
建立命令管道,算重定向流的一种
cut -d , -f 1 cut_file.txt | sort > new_sort.txt
解释:du统计文件大小 -n默认正序排序 -r倒序 head显示前十条数据
监测系统活动和查看进程ps和top
Linux系统的特点:多用户多任务
在windows下可以用ctrl+alt+delete来结束使我们宕机的进程
linux呢?
w:检查当前系统有哪些用户在登录使用
ctrl+alt+f2可以进入tty2终端 ctrl+alt+f3可以进入tty1终端
ps和top:列出运行的进程
简单来说进程就是在内存中运行的程序,一个程序可能有多个进程
如window的ctrl+alt+delete命令可以查看进程
ps:进程状态静态列表 process+status
ps -ef:列出所有进程
ps -efH:子父进程列出
pstree命令:树状显示进程
ps -u 用户:当前用户的进程
ps -aux | less:内存cpu显示 less进行分页
ps -aux --sort -pcpu | less:按cpu使用率排序
例:按内存、cpu排序的前10个进程
进程操作和系统重启htop、glances、halt、reboot、poweroff
相对于ps静态显示进程,top命令就是动态的,且可以操作进程
top进入后:q、b、f/F(默认按%cpu排序)、u输入root只显示root进程,k、esc、s
centos7中有很多好看号用的top软件,如glances
安装命令:
htop:sudo yum install htop -y
终端中的复制粘贴:ctrl+shift+c ctrl+shift+v
终端中退出ctrl+c
结束一个进程kill -9 进程pid,pid可以通过ps或者top获取
结束一个进程名 killall 程序名
halt关闭系统
reboot重启系统
poweroff关机不用root用户
先后台系统灵活切换&、nohup、ctrl+Z、jobs、bg、fg
&和nohup在后台运行进程:优点是不用等待,挂到后台运行进程我们就可以做其他事
cp a.file b.file &
sudo find / -name "*.log" > log_output.txt 2>&1 &
&缺点:当用户注销或网络断开则后台进程取消,nohup防止了这种hup问题,对于远程连接需一直执行的命令一般使用nohup
ctrl+Z、jobs、bg、fg
linux中进程的五种状态:R S D T Z
如果没用把进程弄成&,又想的话,就ctrl+Z将此进程暂停,再bg默认最后一个进程或者 bg %进程号 重新开始
jobs命令显示此终端后台进程状态
fg和bg相反,将后台命令转为前台
前后台进程切换命令总结
定时和延时执行at、atq、atrm、corntab
at:延时让一个程序执行一次
在指定时刻执行指令:at 22:10 回车后输入命令 touch date.txt 输出EFO结束符也就是ctrl+D
at 22:22 12/31/21 美国日期月/日/年
在指定时间间隔后执行程序
at now +10 minutes/hours/years....
atq:列出正等待执行的at任务 q=quque
atrm:删除正在等待执行的任务 编号
; && || 命令连接的使用
touch file1.txt;sleep 10s;rm file1.txt
;无论前面的命令是否执行成功都执行后面的命令
&&前面的命令执行成功才执行后面的命令
||前面的命令执行失败执行的命令
crontab命令:定时执行程序
crontab包含corntab和corn
corntab是去维护每个用户的定时任务文件,corn是具体执行任务
corntab参数-l显示 -e编辑 -r删除
10 22 * * * touch /home/liur/file/file.txt
echo "export EDITOR=nano" >> ~/.bashrc
source .bashrc
文件解压与压缩
参考:
https://www.cnblogs.com/rickzhai/p/6432240.html
常用:
通过tar命令联合gzip归档和压缩:tar -zcvf 解压:tar -zxvf
通过tar命令联合bzip2归档和压缩:tar -jcvf 解压:tar -jxvf
这里要明确打包归档和压缩是两个不同的概念
tar:多个文件归档为一个文件
-cvf crate verbose file
-xvf extract verbose file
-tf
-rf
gzip、bzip2:压缩归档为tar.gz、tar.bz2结尾的压缩文件
gunzip、bunzip2:解压缩tar.gz、tar.bz2结尾的压缩文件
显示压缩文件内容:
我们之前学过查看文件内容可以用cat、less、more
查看gzip压缩文件用zcat、zless、zmore
查看bzip压缩文件用bzcat、bzless、bzmore
linux解压来自windows的.zip或.rar文件:
zip/zip -r/unzip/unzip -l
操作示例
mkdir guidang
touch 1.txt 2.txt 3.txt
tar -cvf guidang.tar /home/liur/guidang
或者
tar -cvf guidang.tar 1.txt 2.txt 3.txt
-- guidang.tar
tar -xvf guidang.tar
--1.txt 2.txt 3.txt
tar -tf guidang.tar
--/home/liur/guidang/1.txt /home/liur/guidang/2.txt /home/liur/guidang/3.txt
tar -rf 4.txt
gzip guidang.tar
-- guidang.tar.gz
-- zcat guidang.tar.gz
ungzip guidang.tar.gz
-- guidang.tar
vim的使用
vim操作
yum install vim
vim
vimtutor 教程
①Vim有四种模式:
交互模式:剪切、粘贴、撤销等
插入模式:i esc
命令模式:退出、保存、语法高亮、显示行号
可视模式(不常用)
基本操作:
交互模式:移动hjkl上下左右、home/end、w
不保存强制退出:q! 保存退出:wq
高级操作–交互模式/命令模式下:
dd 删除光标在行
dw 删除单词
d0/d$
yy 复制
p 粘贴 7p 粘贴七次
u 撤销 4u 撤销
ctrl + r取消撤销
gg 第一行 G最后一行 x + gg 跳转到指定行 :set nu 显示行号 :set nonu 不显示行号
分屏、合并、查找–交互模式下:
查询替换:
/ ? n/N
:s/旧字符串/新字符串 当前光标所在行第一行所有
:s/旧字符串/新字符串/g 当前光标所在行所有
:#,# s/旧字符串/新字符串/g 指定行号
:% s/旧字符串/新字符串/g 文件所有 ====最常用
合并文件 :r 文件名
分屏 :sp水平 :vsp垂直
运行外部命令: :!ls 可以不离开vim操作其他
可视模式-从交互模式开始:
v字符可视模式 V行可视模式 ctrl + v块可视模式 用方向键去选中
配合d可以快速删除
vim配置
可以去vim官网下载插件
有些选项参数的配置可以使vim进入文档就生效,如显示行号
在家目录下创建.vimrc 和之前的.nanorc
:set no选项名
:set 选项名
:set 选项名?
:set 选项名=10
具体配置
syntax on "配置语法高亮
showcmd 显示当前命令 显示输入2yy dd等命令
set number 显示行号
set ignorecase 查找忽略大小写
set mouse=a 激活鼠标=进入可视模式
可以参考别人的vim配置文件=git下csdn下
进入救援模式
忘记root密码或者因修改配置文件导致系统无法启动等原因进入救援模式
此时按下e键
进入编辑模式
设置selinux永久permission
vim /etc/selinux/config/
重新设置root密码
passwd 输入至少8位的新密码
// touch /.autorelabel
exit退出
reboot重启
其他问题进入救援模式:https://blog.csdn.net/hdyebd/article/details/83754257
CentOS7的安装与网络
安装CentOS7
可以选择安装有图形界面的DVD.iso包
也可以选择安装只有黑底白字的minimal版本
配置网络
普通模式下网络是NAT模式,所以进入的虚拟机是内网,与其他主机ping不通。NAT模式下的ip是:10.0.0.15的内网地址
所以此服务器的网络模式需改成”桥接模式“,此模式可以使此服务器连接到外网且可以ping通,桥接模式下变成了IPV4分配的192.168.0.105 其他服务器可以ping通这个主机的地址
virtualbox四种网络模式介绍:
https://blog.csdn.net/shouldnotappearcalm/article/details/54933189
连接远程终端SSH
什么是ssh
服务器客户机之间的通信需遵循http(未加密)、https(加密)、talnet(未加密)、ftp(文件传输协议)、电子邮件协议等协议。
linux种服务器客户机之间的通信一般遵循SSH协议
ssh结合了对称加密与非对称加密方法,通过非对称加密安全的传递对称加密的公钥,之后都用对称加密的公钥传递数据
ssh加密解释:
A客户端 B服务器
(想使用对称加密密钥dcjm) (通过RSA算法生成了一对公私钥)
①B服务器将公钥rsagy传递给A客户端
②A客户端接收后用rsagy加密dcjm传输给B服务器
③B服务器用私钥解密出 对称加密的公钥是dcjm
④然后双方通信一直用对称加密的dcjm密钥。因为从没有把dcjm通过明文传输所以这样比较安全。
openssh
Windows客户端一般安装SSH工具,如Putty、XShell、SecureCRT
MacOS已经有SSH工具不用安装
Linux系统直接yum install openssh-clients
服务器安装openssh-server
需远程连接服务器的客户端安装openssh-client
服务器openssh-server安装完成后会在后台启动一个守护进程sshd,也可手动开启
yum install openssh-server
sudo systemctl start sshd
sudo systemctl stop sshd
sudo systemctl status sshd
sudo systemctl enable sshd --开机自启动
openssh配置文件
SSH客户端配置:/etc/ssh/ssh_config
SSH客户端家配置:~/.ssh/config
SSH服务端配置:/etc/ssh/sshd_config
①客户端config常用配置参数
Host别名、HostName远程主机名、Port远程主机端口、User用户名
Host lianjie
HostName 192.168.0.105
Port 22
User root
通过修改局部config文件访问其他主机:
②服务器端config常用配置参数
Port、PermitRootLogin、PasswordAuthentication、PubkeyAuthentication、PermitEmptyPasswords
ssh免密码登录
ssh连接远程服务器的两种验证方式
- 基于口令的验证:帐户和密码登录
- 基于密钥的验证:公钥验证登录
基于密钥的验证:
- 在客户机中生成密钥对(公钥和私钥):ssh-keygen 会在.ssh目录下生成id_rsa和id_rsa.pub两个文件
- 把客户机的公钥传输到服务器:ssh-copy-id root@192.168.0.105 会在服务器下的~/.ssh/authorized_keys生成这个文件
这样客户机对服务器就可以直接ssh root@ip 免密码登录了
如果有了公钥验证登录还想输入密码登录就用客户端输入以下命令
参考:https://www.cnblogs.com/xubing-613/p/6846451.html
文件传输
文件传输常用方式:wget、scp、ftp、sftp、rsync
①wget:直接从终端控制台下载文件,只需给出文件的HTTP或者FTP地址
wegt 参数/-c继续下载 url地址 ==可以看到下载进度条
②scp:网间拷贝
scp 源文件名/user@ip:file_name 目标文件名/user@ip:file_name
可以两个linux系统之间互拷贝文件
scp命令默认22端口和ssh一样,用scp -p 7821 user@ip:file_name 来指定端口
③ftp:
使用ftp:在公用的FTP服务器或者私有的FTP服务器下载
安装
sudo yum install ftp -y
连接法国的ftp服务器
ftp -p ftp.fr.debian.org
用户名一般输入:anonymous(匿名的意思)密码随便
然后就进入ftp操作,命令和linux中差不多
用ftp上传和下载:
put 上传
get 下载
!xxx 在本地运行命令
④sfpt:
sftp是安全的,基于ssh,需要用户和密码
sftp user@ip
sftp -oPort 3592 user@ip
进入ftp后的操作和ftp一样
⑤rsync:同步备份 remote synchronize 可以说是更智能的scp命令
应用场景:一个电脑将目录备份到另一个电脑并且可以增量备份,不会删除源目录文件
rsync -arv Image/ backups/
rsync -arv --delete Image/ user@ip:backups/ 删除源目录文件
windows和linux互传软件
https://www.cnblogs.com/yihr/p/9668278.html
https://www.cnblogs.com/chy18883701161/p/12353224.html
IP与网络
ipv4与ipv6
- IPv4版本:0255.0255.0255.0255
- IPv6版本:把IPv4的32位变成128位 如fe80::b8b7:95b2:c321:f8e9%11
ip与自定义解析域名
主机名(域名):www.github.com
IP:202.61.89.142
host 主机名 可以得到ip地址(会变)
host ip地址可以得到主机名
场景:每次远程连接linux服务器都要输入ip地址很麻烦,可以自定义解析域名
可以在/etc/hosts 自定义ip地址与主机名的解析
比如我这里转换连接就不用输入ip了,输入主机名即可
whois 域名 ===可以进行解析
网络接口
①查看网络接口:ifconfig / ip addr
ifconfig 是net-tools工具下的,现在已经停止维护了。ifconfig可能显示:eth0 lo wlan0 这是三种网络接口
ip addr 是 iproute2工具下的,现在正在维护的,和net-tools工具有对应的新命令
②开启或关闭网络接口
sudo ifconfig interface(eth0/enp0s3/wlan0等等) state(up/down)
③网络统计
网络统计命令netstat(net-tools工具下)
https://www.cnblogs.com/ggjucheng/archive/2012/01/08/2316661.html
查询命令在系统哪里、且在什么包下
[liur@105 root]$ which ip
/usr/sbin/ip
[liur@105 root]$ rpm -qf /usr/sbin/ip
iproute-4.11.0-30.el7.x86_64
[liur@105 root]$ yum info iproute
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
* base: mirrors.aliyun.com
* epel: mirrors.bfsu.edu.cn
* extras: mirrors.aliyun.com
* updates: mirrors.aliyun.com
Installed Packages
Name : iproute
Arch : x86_64
Version : 4.11.0
Release : 30.el7
Size : 1.8 M
Repo : installed
From repo : anaconda
Summary : Advanced IP routing and network device configuration tools
URL : http://kernel.org/pub/linux/utils/net/iproute2/
License : GPLv2+ and Public Domain
Description : The iproute package contains networking utilities (ip and rtmon, for example)
: which are designed to use the advanced networking capabilities of the Linux
: kernel.
netstat -i:网络接口的统一信息
netstat -utan:列出所有开启的连接(TCP/UDP)
netstat -ta:TCP
netstat -ua:UDP
port端口:物理端口和虚拟端口(80,21,110端口等),可以通过端口加ip去访问别人电脑
我在工作常用的:
netstat -tunlp | grep 10135 查出占用此端口的进程号,然后kill掉 netstat统计网络与端口
ps -ef | grep shop.jar 查看此程序被哪个进程号运行着,然后kill掉 ps命令看静态进程
virtualbox在设置虚拟机为桥接网卡模式后,如果公司所在网络是内网,则无法ping通外网如baidu等
需要在图形界面用火狐登录公司的上网地址,输入账号的密码连接到外网。没有图形界面则curl 模拟post提交账号密码到网页实现登录
如果不想使虚拟机连接公司网络并且想上外网,可以主机登录连接公司网络进入外网,虚拟机通过两张网卡的设置连接主机,通过主机连接外网。两张网卡设置为网络地址转换NAT和仅主机模式,具体设置
https://www.cnblogs.com/shizhijie/p/9859020.html
https://blog.csdn.net/u014389734/article/details/79794171?utm_medium=distribute.pc_relevant.none-task-blog-baidujs_title-0&spm=1001.2101.3001.4242
nmcli con show查看网卡配置
DHCP动态分配IP及静态分配IP
如果在阿里云买的云服务器,IP地址是固定的
但是虚拟机IP地址是DHCP动态分配的
/etc/sysconfig/network-scripts/ifcfg-enp0s 网络配置文件下可以看到
修改网络连接,如从NAT网络模式变成桥接网卡模式(这个模式会默认DHCP动态分配ip)
DHCP:局域网内部的设别或者网络供应商自动分配IP
52机器的配置:
设置网关和dns
如果想变成静态ip
BOOTPROTO=static
IPADDR=192.168.0.108
NETMASK=255.255.255.0 二进制形式:1111111.1111111.1111111.0000000
GATEWAY=192.168.0.1
DNS1=192.168.1.1
保存配置文件
systemctl restart network 重启
除了上述方法还可以使用nmtui以文字形式的用户界面来控制网络管理器
网络管理器查看设备联网服务是否启动
systemctl status NetworkManager
nmtui
Shell脚本
shell是什么
shell是管理命令行的程序
shell也有很多种版本,如下:
以rc结尾的命令多为配置文件,即软件运行之前会去读取的初始化文件
如:.bashrc(bash shell的初始化文件) .vimrc .zshrc等等
安装shell
centos一般默认的是sh
切换shell:chsh
[liur@105 root]$ chsh
Changing shell for liur.
New shell [/bin/bash]: /bin/sh
由bash切换到sh
为什么要切换shell?脚本可能是通过各种shell语法写的
第一个Shell脚本
创建脚本文件
vim test.sh
权限变成可执行 chmod +x test.sh
echo $PATH 显示当前环境变量路径
把test.sh拷贝到任意路径下可在任意地方直接运行,不用在当前目录下./test.sh运行
引号的作用
#!/bin/bash
message='Hello world'
message1=$'Hello \' world'
echo $message #输出变量
单引号' :会忽略变量中的所有特殊字符
双引号'' :会忽略变量中的大多数特殊字符,不包括$ \ ·。意味着可以对变量值进行替换(echo "xxx $message")
反引号`:执行命令,例如下
message3=·pwd·
echo "my dictionary is $message3"
echo ./test.sh
echo -e 'hello J \n hello M ’ :-e输出\n换行符
#!/bin/bash
read -p "please input your name:" -n 5 name
echo -e "\n$name"
变量、参数、数组
bash脚本中所有都是字符,没有数字运行。但是let可以使字符串变成数字进行运算
[liur@105 ~]$ let "a = 5*5"
[liur@105 ~]$ echo "$a"
25
如果要使用小数点运算,就使用bc命令
定义环境变量,在linux中的所有脚本中通用
env:显示shell中的所有环境变量
常用的环境变量:SHELL 、HOME
可以自定义环境变量:export EDITOR
定义参数变量,./test.sh 参数1 参数2 参数3
在脚本中如何使用呢? $#参数的数目 $0被运行的脚本名称 $1第一个参数 $2第二个参数 $N第N个参数
1 #!/bin/bash
2
3 echo "the jiaoben is $#,have $0 params."
4 echo "param one $1 , param one $2"
[liur@105 ~]$ ./test.sh 1 2
the jiaoben is 2,have ./test.sh params.
param one 1 , param one 2
shift参数变量一个接一个的被使用,常用于循环
echo "param one $1"
shift
echo "param one now $1"
[liur@105 ~]$ ./test.sh 1 2
param one 1
param one now 2
数组,bash下标index从0开始,但是zsh等其他可能index是从1开始的
array=(‘value0,value1,value2’)
array[5]=‘value5’
echo ${array[*]}
条件语句
if[ xx ];
then
做这个
else
做这个
fi
if[ xx ]
then
做这个
elif[ xx ]
then
做这个
else
做这个
fi
case替换很多ifelse
#!/bin/bash
read -p "please input a filename : " file
case $file in
"1" | "3")
echo "Hello 1"
;;
"2")
echo "Hello 2"
;;
*)
echo "every"
;;
esac
if[ xx ] && [yy]
if[ xx ] || [yy]
测试字符串、数字、文件
字符串:
$string1 = $string2
$string1 != $string2
-z $string1 是否为空
-n $string1 是否不为空
数字:
-eq -ne -lt -le -gt -ge
文件:
#!/bin/bash
read -p "please input a filename : " file
if [ -e $file ]
then
echo -e "\n this is $file"
else
echo -e "\n there is no file"
fi
循环语句
while
while [ xx ]
do
做某事
done
#!/bin/bash
#直到输入yes才退出
while [ -z $response ] || [ $response != "yes" ]
do
read -p "please inour response :" response
done
until
与while相反
for
for in '字符串1' "变量1" "变量2"
do
对每一个字符串都循环做某事
done
for param in `ls *.sh`
do
cp $param $param-copy.sh
done
常规for循环
for param in `seq 1 2 10`
1\3\5\7\9
Shell的函数
function 函数名{}
函数名(){} #括号里不能有参数
传递参数
testfunction(){
echo $param
}
# 像运行shell脚本一样在后面跟上参数
testfunction 1
testfunction 2
函数返回值
#shell没有返回值,但是可以返回状态
./function.sh myFIle
myFIle文件作为$1参数传入函数体内
变量的作用范围:
local a=‘xx’; 函数内部使用
函数外定义var2=yy可在脚本任意函数内使用
重载函数:command
ls (){
command ls -lh
}
#重写ls命令为显示文件按大小
ls
Shell实现图片展示网页
ImageMagic 中的 covert命令 生成缩略图 -thumbnail
#!/bin/bash
# Verification of parameter(验证参数)
# If no parameter, use a default value(如果没有给出参数,那么用默认值 gallery.html )
if [ -z $1 ]
then
output='gallery.html'
else
output=$1
fi
# Preparation of files and folders(准备文件和目录)
echo '' > $output
if [ ! -e thumbnails ]
then
mkdir thumbnails
fi
# Beginning of HTML(HTML 文件的开头)
echo '<!DOCTYPE html>
<html>
<head>
<title>My Gallery</title>
</head>
<body>
<p>' >> $output
# Generation of thumbnails and the HTML web page(生成图片的缩略图和 HTML 的页面主体)
for image in `ls *.jpg *.png *.jpeg *.gif 2>/dev/null`
do
convert $image -thumbnail '200x200>' thumbnails/$image
echo ' <a href="'$image'"><img src="thumbnails/'$image'" alt=""/></a>' >> $output
done
# End of HTML(HTML 文件的结尾)
echo ' </p>
</body>
</html>' >> $output
用Shell做统计练习
grep -io a word.txt | wc -l
i忽略大小写 o一个单词可能有多个a,每个a都在每行展示 wc -l 统计行数
#!/bin/bash
# Verification of parameter
# 确认参数
if [ -z $1 ]
then
echo "Please enter the file of dictionary !"
exit
fi
# Verification of file existence
# 确认文件存在
if [ ! -e $1 ]
then
echo "Please make sure that the file of dictionary exists !"
exit
fi
# Definition of function
# 函数定义
statistics () {
for char in {a..z}
do
echo "$char - `grep -io "$char" $1 | wc -l`" | tr /a-z/ /A-Z/ >> tmp.txt
done
sort -rn -k 2 -t - tmp.txt
rm tmp.txt
}
# Use of function
# 函数使用
statistics $1
系统服务
守护进程和初始化进程服务
之前学习的 ps和top可以静态和动态的查看进程
ps -o ppid,pid,tt,cmd
在linux中有些系统销毁才会停止的守护进程(PID为1),一般守护进程名字后面都会有个d,列入httpd、sysd
管理系统服务systemd/systemctl
systemd/system V不是命令,是包含一组命令的集合
systemd-analyze blame 查看服务启动时间
systemd-analyze 查看系统内外核启动时间
systemctl就是其中管理服务的命令、ctl是control控制的缩写
systemctl list-units-files --type=service
systemctl list-units --type=target --all
[liur@105 ~]$ systemctl get-default
graphical.target
[liur@105 ~]$ systemctl set-default graphical.target
journalctl命令管理systemd日志
journalctl -u chronyd.service
指定服务日志
SELinux安全子系统
SELinux是一个MAC强制访问系统,防止一个下载的程序在后台偷偷收集信息。
①对服务程序功能进行限制
②文件资源的访问限制
防火墙和SELinux的区别?
防火墙是对外的,SELinux是对内程序的限制
[liur@105 conf]$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 31
[liur@105 conf]$ getenforce
Enforcing
#重启后就会默认用配置文件的selinux配置方式运行
[liur@105 conf]$ sudo setenforce 0
[sudo] password for liur:
[liur@105 conf]$ getenforce
Permissive
[liur@105 conf]$ vim /etc/selinux/config
为什么将Apache配置文件中的/var/www/html默认访问首页改成home/web下就不能访问了呢?
原因是这两个目录的安全上下文不同,SELinux限制了访问,将SELinux关闭即可,或者对此文件进行管理”SELinux“
-Z 目录安全上下文 -d显示目录本身,而不是内容
管理”SELinux“设置此目录的上下文
semanage [选项] [文件名]
semanage不存在
yum provides semanage #找到哪一个包提供的命令
yum install policycoreutils-python 安装完成即可使用semanage
semanage -i 查询 -a添加 -m修改 -d删除
semanage fcontext -a -t(类型) httpd_sys_content_t(通过-Z看到的类型) /home/web/*
restorecon -Rv /home/web 重启SELinux安全策略的上线文
再看home/web的-Z可以看到安全上下文变成了我们刚才设置的
内存与磁盘管理
查看登录用户、硬盘、内存、cup、主机硬件、磁盘分区等信息
查看连接此虚拟机用户 w
查看设备挂载目录情况 df -h
查看内存情况 free -g/-m
查看主机硬件信息
uname -a
cat /proc/cpuinfo
cat /proc/meminfo
查看磁盘分区 fdisk -l
磁盘分区、物理设备和文件系统
磁盘分区:硬盘HDD/SSD 软盘
磁盘分区指把磁盘划分逻辑区域存储
磁盘分区格式:FAT16 FAT32 NTFS(最好用)https://www.ntfsformac.cn/changjianwenti/nf-qbssm.htm
文件系统:实现了软件与硬件的可视化
Windows就以上的磁盘分区格式
Linux:ext2 ext3(日志型文件系统) ext4(ext3的plus) xfs(Centos使用的默认文件系统)
磁盘分区:主分区/引导分区/swap分区(把硬盘当缓存用但速度慢)/根分区(相当于windows的c盘)
物理设备:
h开头是ide接口硬盘 s开头是sata接口硬盘
第二个总是d是设备的意思
第三个a/b/c表示第几块,第四个1/2/3表示第几个分区
字符设备和块设备、dd命令
parted -l
gparted 需安全,可以图形界面查看磁盘分区情况
/dev下
字符设备:是指I/O传输过程中以字符为单位进行传输的设备,键盘、打印机、串口、tty都是字符设备。在dev下以c开头的文件
ls -l /dev/null 字符设备
ls -l /dev/zero 字符设备 无线的二进制0
块设备:将信息存储在这些块中,文件熟悉标识是b
ls -l /dev/sda?
dd命令:磁盘拷贝并可以在中途进行转换
转储(复制)某个磁盘数据
dd if=/dev/sda1 of=backupfile
dd if=/dev/zero bs=5M count=10 of=aFile
创建带“黑洞”的文件
dd if=/dev/zero bs=5M count=10 seek=20 of=bFile
动态就属于文件空洞大小
ls 和 du 命令
ls -lh 和 du -h都可以查看文件大小
ls -lh 查看bFile是150M 因为seek也算进进去了
du -h 查看是50M
但为什么说du命令才是真正的呢?
ls统计文件逻辑大小(照理说的大小)
du是统计文件在硬盘中占有的实际大小
挂载硬件设备mount和umount
硬件设备拿到后先分区、然后格式化磁盘、才能挂载硬件使用
所谓的挂载就是要用硬盘里的数据时,先将其与已存在的文件目录进行关联
mount挂载
mount 文件系统 挂载目录 感觉是创建了个软连接
mkdir backupdir
mount /dev/sda1 /backupdir 重启后失效
永久挂载:
格式:设备文件 挂载目录 格式类型 权限选项 是否备份 是否自检
查/etc/fstab
umount 挂载点或者设备文件
添加硬盘设备和交换分区fdisk和mkfs命令
fdisk命令用于管理磁盘分区,集增删转换于一身,命令格式为:fdisk 磁盘名称
管理新增的 fdisk dev/sdb 然后输入相应的参数
设置完成后查看分区 ls -l /dev/sd??
mkfs命令用于格式化了,指定文件系统,格式:mkfs.文件类型名称
设置xfs格式完成
然后硬盘挂载
最后查看挂载情况
从sdb分出一份空间作为swap交换分区用fdisk命令分区出sdb2
mkswap /dev/sdb2 创建swap分区
将sdb2添加到主Swap分区 swapon /dev/sdb2
记得设置永久挂载
linux开发神器
版本控制git/svn
版本控制软件SCM git分布式/svn集中式
集中式:一个服务器集中管理用户提交的代码(需联网)
分布式:每个用户本地都有全部的代码、但现在还是有个服务器管理用户代码
安装和配置Git
yum install git -y
git --version
git config --global color.ui/diff/status auto
git config --global user.name "xxx"
git config --global --replace-all user.name "新名字"
git config --global user.email "xxx"
git config --list 或者查看家目录下的 vim ~/.gitconfig 文件查看或者编辑配置
设置git命令别名
git config --global alias.co checkout
Linux服务器连接到GitHub
申请一个GitHub账号
Linux通过ssh-keygen -C “你的git邮箱” 在家.ssh目录下生成公私钥
把公钥拷贝到github账号设置里的SSH设置
Linux验证是否成功输入 ssh -T git@github.com
git clone xxxxxx 通过git的ssh安装如nodejs等
apache
安装Apache的服务程序
yum install httpd
systemctl start httpd
ps -ef | grep httpd
sudo systemctl enable httpd
sudo systemctl is-enable httpd
主机输入ip:80可以进入apache的测试页
问题?windows无法通过网页访问此虚拟机的测试页
答:因为虚拟主机开启了firewalld防火墙守护进程,进程没有把80端口开放给其他主机
firewalld
查看已开放的防火墙
sudo firewall-cmd --list-ports
解决①:关闭firewalld守护进程
systemctl stop firewalld
解决②:firewalld守护进程开放80端口
firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放5672端口
firewall-cmd --zone=public --remove-port=5672/tcp --permanent #关闭5672端口
firewall-cmd --zone=public --query-port=5672/tcp #查看5672端口是否开放
firewall-cmd --reload # 配置立即生效
端口开放关闭、防火墙查看,端口被进程占用情况等:
https://www.cnblogs.com/heqiuyong/p/10460150.html
配置Apache服务器
主要配置在 /etc/httpd下,主配置文件 /etc/httpd/conf/httpd.conf,配置文件下的重要配置:
修改配置文件后,重启服务
systemctl reload httpd
Apache的虚拟主机功能
①配置apache的虚拟主机基于IP
为enp0s3进行edit更多的ip,然后重新查看配置文件会发现有多的ip
为配置文件新增:
systemctl restart httpd
这样访问192.168.0.10等可以进到这个页面
②配置apache的虚拟主机基于域名
修改/etc/hosts文件
192.168.0.10 www.tfkj.com www.66.com
ping www.tfkj.com 回来的是192.168.0.10的包
配置跟上面差不多
然后通过网页访问域名就可以看到
https安全证书
http默认端口是80,https默认端口是443
开端口
firewall-cmd --zone=public --add-port=443/tcp --permanet
firewall-cmd --reload
firewall-cmd --list-ports
安装mod_ssl
重启
/etc/httpd/conf.d/ssl/conf
系统提供的证书:有效期1年
/etc/pki/tls/private/localhost.key 私钥
/etc/pki/tls/certs/localhost.crt 证书
自签名证书:openssl
httpd下pki生成私钥
openssl genrsa -out server.key 2048
生成签名证书请求文件
openssl req -new -key server.key -out server.csr
有了server.csr和server.key就生成证书server.crt
openssl x509 -req -days 3650 -in server.csr -signkey server.key -out server.crt
将生成的server.crt和server.key放进openssl对应目录
编辑http关于ssl的文件
/etc/httpd/conf.d/ssl/conf
systemctl restart httpd
tomcat
简单总结下,tomcat是一个中间件,在B/S架构中,浏览器发出的http请求经过tpmcat中间件,转发到最终的目的服务器上,响应消息再通过tomcat返回给浏览器。
tomcat所做的事情主要有:开启监听端口监听用户的请求,解析用户发来的http请求然后访问到你指定的应用系统,然后你返回的页面经过tomcat返回给用户。
Apache,Nginx和Tomcat的区别:
Apache全称是 Apache Http Server Project, Tomcat全称是 Apache Tomcat。
Apache和 Nginx用于处理静态资源, tomcat用来处理动态资源。
Apache和Nginx相比,Nginx适合做前端服务器,适合做负载均衡。
一般情况下,使用的时候,都是 Apache+Tomcat一起使用或者 Nginx+tomcat一起使用。
安装jdk:
yum search java | grep openjdk
java运行时环境 java开发环境dev
安装tomcat:
yum install tomcat
tomcat version
systemctl enable tomcat
systemctl status tomcat 查看tomcat服务状态
rpm -ql tomcat 查看tomcat配置文件
这样安装tomcat会自动安装java运行环境
yum search java | grep openjdk 查看java的包
vim /etc/tomcat/server.xml 端口配置
vim /etc/tomcat/tomcat.conf 主配置文件
下载tomcat运行web的相关包
yum install tomcat-webapps tomcat-admin-webapps
开启8080端口
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --reload
此tomcat的应用程序在此目录下
/var/lib/tomcat/webapps
jenkins
将jenkins.war放到tomcat的webapp下,启动tomcat即可
如果是用yum安装的tomcar,则需把jenkins.war的安全上下文修改成和yum安装的tomcat一样,不然会受SELinux的管制启动不起来。
避免此问题可以用wget安装
访问http://192.168.0.106:8080/jenkins
nginx
tomcat服务器的局限
tomcat作为服务器的局限:
tomcat的Coyote Web不能直接用于客户端连接
处理静态文件效率低
不支持https
解决办法:
使用Apache或Nginx作为代理服务器将请求转发到tomcat,Web服务器将管理https连接、访问限制和静态页面,只有对Java应用程序的请求会被转发到Tomcat
Web服务器和Tomcat应用服务器之间的通信方式
- 使用http协议
- Web服务器将会做一个Http重定向到Tomcat服务器
- 使用某些特殊插件、例如仅适用于Apache的mod_jk插件,该插件用特殊协议在Apache和Tomcat之间通信
什么是反向代理?安装nginx
什么是代理服务器?
代理服务器是客户端和服务器的中介
apache、nginx、IIS称为服务器三巨头
相比Apache服务器,Nginx更适合高并发。Apache是阻塞性同步多进程的服务器。Nginx异步、非阻塞是事件驱动型的服务器
nginx是什么?
https://cnblogs.com/wcwnina/p/8728391.html
安装Nginx服务器
首先yum安装EPEL源,EPEL是基于Fedora的项目,为红帽系操作系统提供额外的软件如centos操作系统
yum install epel-release
yum install nginx
systemctl start nginx systemctl命令启动服务启动失败,因为之前安装了apache服务器,都是80端口
systemctl status httpd
systemctl stop httpd
systemctl start nginx
systemctl enable nginx
因为yum安装的nginx,所以可以使用rpm -ql nginx 查看配置文件所在位置
配置Apache监听其他端口
因为现在apache正占用80端口访问http,所以要设置nginx监听80端口的http以及443端口的https
①改变httpd(apache)监听的80和443端口为7080端口和7443端口
vim /etc/httpd/conf/httpd.conf 修改http监听为7080端口
vim /etc/httpd/conf.d/ssl.conf 修改https监听为7443端口
firewall-cmd --zone=public --add-port=7080/tcp --permanent
firewall-cmd --zone=public --add-port=7443/tcp --permanent
firewall-cmd --reload
firewall-cmd --list-ports
selinux设置 setenforce 0
start httpd.service
systemctl status httpd.service
配置nginx作为反向代理服务器
②改变nginx监听80和443
rpm -ql nginx看配置文件位置
/etc/nginx/nginx.conf主配置文件
查看配置文件 /etc/nginx/nginx.conf其中配置了所有conf.d下的配置文件都生效
新建www.test.com.conf文件 www.test2.com.conf文件
修改 主机名
修改 反向代理我们的服务器ip与端口
在主机上设置ip与主机映射配置文件 /etc/hosts
10.206.14.241 www.test.com www.test2.com
在window上C:\Windows\System32\drivers\etc\hosts设置10.206.14.241 www.test.com www.test2.com 否则window访问会报462错误
www.test.com.conf
server {
listen 80;
server_name www.test.com;
charset utf8;
access_log /var/log/nginx/www.test.com.access.log main;
location / {
proxy_pass http://10.206.14.241:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
www.test2.com.conf
server {
listen 80;
server_name www.test2.com;
charset utf8;
access_log /var/log/nginx/www.test.com.access.log main;
location / {
proxy_pass http://10.206.14.241:7080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启nginx服务后,接下来就可以试验
http://10.206.14.241:8080/jenkins
http://10.206.14.241/jenkins
http://www.test.com/jenkins/
http://10.206.14.241:7080
http://10.206.14.241
http://www.test2.com
这里会遇到一个问题,我的浏览器在window访问都是https访问,https://10.206.14.241/jenkins无法请求到
所以配置https访问
首先设置https证书之前的章节有讲到
然后配置www.test.com.conf配置文件
server {
listen 80;
server_name www.test.com;
charset utf8;
access_log /var/log/nginx/www.test.com.access.log main;
#设置http请求转发到https
return 301 https://$host$request_uri;
location / {
proxy_pass http://10.206.14.241:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name _;
root /usr/share/nginx/html;
#
#设置成生成证书的目录
ssl_certificate "/etc/nginx/pki/server.crt";
#设置成生成证书的目录
ssl_certificate_key "/etc/nginx/pki/server.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
#
# # Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
proxy_pass http://10.206.14.241:8080;
}
error_page 404 /404.html;
location = /404.html {
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
}
}
现在无论访问
http://www.test.com/jenkins/
还是
https://www.test.com/jenkins/
都会默认转到https
docker容器引擎
sudo yum remove docker-ce docker-ce-cli containerd.io
sudo yum install -y yum-utils
sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io
sudo systemctl start docker
sudo docker run hello-world
试试运行centos
docker run -it centos bash
exit 退出centos容器
docker images
docker ps -a 历史运行容器
docker ps 运行当中容器
https://www.runoob.com/docker/docker-tutorial.html 菜鸟教程
zabbix监控
学习
https://www.cnblogs.com/clsn/p/7885990.html
内容总结
以上是互联网集市为您收集整理的Linux核心技能与应用全部内容,希望文章能够帮你解决Linux核心技能与应用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。