linux入门到地狱
linux—001入门
-
IT圈必备(前端工作者用的比较少)
-
老旧电脑跑linux不容易卡
-
我代码没保存windows闪退,僵停(vs2019卡掉线),重启更新,占用cpu内存服务报错pip各种bug 出来生态环境友好其他的全是bug(bug时间成本超过了windows快捷友好生态) 那就说明windows已经没有存在的意义了 买苹果或者去换linux是更好的选择
-
安全性高
-
- 大量的可用软件及免费软件
- 良好的可移植性及灵活性
- 优良的稳定性和安全性
- 支持几乎所有的网络协议及开发语言
-
系统选择
-
redhat
- redhat公司收费版
- centos和其他开源版本组成
-
linux/unix/arch
- 原生内核
-
debain
-
ubuntu/kali
-
deppin(兼容很多windows软件)
-
centos/redhat
- 入门学习
- 大多数常规主流服务器的选择
- 更新缓慢但是极为稳定
-
ubuntu
- 拥有较多的网络服务
- debain系拥有较好的桌面生态环境
- debain包相对多了很多拥有良好的包管理
- 对日常软件的兼容(deb)
-
kali
- 拥有大量网络安全工具
- 同时自带了debain大多数常用的依赖关系
-
用户比例
- 根据Stack Overflow的开发者调查报告,2022年将Linux作为主要操作系统的比例达到了40.23%,而macOS的比例为31.07% cloud.tencent.com。虽然这个数据是2022年的,但我们可以大致推测,2023年的比例可能会有所增长,但应该不会有太大的变动。
- 另外,Statcounter的数据显示,Linux的市场份额为2.76%,macOS为14.51%,Windows为75.21% zhuanlan.zhihu.com。这个数据可能更能反映出整体的用户比例,因为它包括了所有的桌面操作系统用户,不仅仅是开发者。
- 在游戏平台Steam上,Linux用户占比1.44%,而Windows用户占比为96.11% cloud.tencent.com。这个数据显示,在游戏用户中,Windows的占比依然非常高。

linux—002基础命令
- 菜鸟linux基础命令手册
- 包管理
# pm命令用于管理软件。rpm原本是 Red Hat Linux 发行版专门用来管理 Linux 各项套件的程序,由于它遵循 GPL 规则且功能强大方便,因而广受欢迎。逐渐受到其他发行版的采用。RPM 套件管理方式的出现,让 Linux 易于安装,升级,间接提升了 Linux 的适用度。能被rpm命令安装的软件包一般以.rpm为文件后缀。
rpm -ivh [package_name] #安装软件包
rpm -evh [package_name] #卸载软件
rpm -qlp *.rpm #列出rpm包的内容
rpm -qa |grep [字符串] #在已安装的所有软件中查询包含某字符串的软件版本
rpm -ql [软件名] #列出该软件所有文件与目录所在的完整文件名
rpm -qc [软件名] #列出软件的所有设置文件
rpm -qR [软件名] #查询某软件依赖的其他软件
rpm -qf [文件名] #查询文件属于哪个软件包# yum命令是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。
# 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令。# 国内源
# 1备份配置文件
cd /etc/yum.repos.d
7z a Centos-Base.repo.7z Centos-Base.repo
# 删
rm Centos-Base.repo
# 下载源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo
# 清理缓存
yum clean all# yum命令
yum makecache #更新源(安装新源后执行)
yum clean all #清除缓存目录(/var/cache/yum)下的软件包及旧的headers
yum list |grep #显示所有已经安装和可以安装的程序包
yum info [package-name] #显示安装包信息
yum -y install [package-name] #安装软件,默认选yes
yum remove [package-name] #卸载
yum deplist rpm #查看程序rpm依赖情况
yum update #更新全部软件包
yum group list #列出组
yum group install "Security Tools" #安装‘Security Tools’软件组
yum search #检索安装包#DNF是新一代的rpm软件包管理器。它正在逐步取代yum命令。
dnf repolist #该命令用于显示系统中可用的 DNF 软件库
dnf repolist all #该命令用于显示系统中可用和不可用的所有的 DNF 软件库
dnf list #用户系统上的所有来自软件库的可用软件包和所有已经安装在系统上的软件包
dnf list installed #该命令用于列出所有安装了的 RPM 包
dnf list available #用于列出来自所有可用软件库的可供安装的软件包
dnf search [pakage] #用该命令来搜索软件包
dnf provides /bin/bash #查找某一文件的提供者
dnf info nano #查看软件包详情
dnf install [pakage] #安装软件包
dnf update systemd #该命令用于升级指定软件包
dnf check-update #该命令用于检查系统中所有软件包的更新
dnf update #该命令用于升级系统中所有有可用升级的软件包
dnf remove [pakage] #删除系统中指定的软件包
dnf autoremove #删除无用孤立的软件包
dnf clean all #删除缓存的无用软件包
dnf history #查看您系统上 DNF 命令的执行历史
dnf grouplist #该命令用于列出所有的软件包组
dnf groupinstall ‘Educational Software’ #该命令用于安装一个软件包组
dnf groupupdate ‘Educational Software’ #升级一个软件包组中的软件包
dnf groupremove ‘Educational Software’ #该命令用于删除一个软件包组
dnf reinstall [pakage] #该命令用于重新安装特定软件包
- echo
## >指令覆盖文件原内容并重新输入内容,若文件不存在则创建文件。
```bash
#!/bin/bash
echo "Raspberry" > test.txt#>>指令向文件追加内容,原内容将保存。
echo "Raspberry" > test.txt
echo "Intel Galileo" >> test.txt#操作使用变量
#!/bin/bash
FILE="test-json.txt"
echo -e "{" > $FILE
echo -e "\t\"name\":\"xukai871105\"" >> $FILE
echo -e "}" >> $FILE# 进阶:操作脚本
#!/bin/sh
function ergodic(){for fileName in ` ls $1 `doif [ -d $1"/"$fileName ]thenergodic $1"/"$fileName else# echo $fileNameif [[ ${fileName} == 'start-service.sh' ]]; then# echo `pwd`/$fileNameecho $1/$fileNamesh $1/start-service.sh start $1 &fifidone
}
INIT_PATH="/data/saleserver/startup"
ergodic $INIT_PATH
linux—003极限压缩
sudo 7za a -t7z -m0=lzma -mx=9 -mfb=64 -md=32m -ms=200m -mf -mhc -mhcf yourfile.7z ./yourfile.dmp &
#-t7z指定压缩格式为7z,-m0=lzma2指定压缩方法为LZMA2,-mx=9指定压缩等级为9,-mfb=64指定字典大小为64MB,-md=32m指定固实块大小为32MB,-ms=on开启固实模式,-mf: 开启可执行文件压缩过滤器。,-mhc: 开启档案文件头压缩,-mhcf: 开启档案文件头完全压缩
#要将名为dir1的文件夹压缩到名为archive.7z的7z文件中
- 7z 拓展
- 使用LZMA算法的命令
7z a -t7z -m0=lzma
- LZMA2算法的命令
7z a -t7z -m0=lzma2
- bzip2算法的命令
7z a -tbzip2
- gz算法
7z a -tgzip archive.tar.gz file_to_compres
-
-
LZMA and LZMA2(基于改良与优化后的LZ77算法LZMA2是LZMA的改良版本,提供比LZMA更好的多线程支持。但是压缩率在某些情况下可能更糟)bzip2 算法为了使用LZMA2达到最佳压缩率,建议使用1或2个CPU线程。如果将LZMA2与两个以上的线程一起使用,则7-zip将数据拆分为多个块,并分别压缩这些块(每个块2个线程)。7z格式适用于压缩大文件或者文件夹,能提供较高的压缩比。
-
bz 文件格式BWT (Burrows-Wheeler Transform) 算法 为文本文件提供高速和相当不错的压缩率。适合压缩文本文件和源码。
-
gz 文件格式Deflate算法是ZIP和GZip格式的标准压缩,压缩率较低,提供了快速的压缩和解压缩。Deflate方法仅支持32 KB字典。gz格式可有效地压缩文本中的重复字符,例如HTML文件、CSS文件、JavaScript文件需要快速压缩和解压缩的场景。对于复杂的文件类型甚至无压缩效果.
-
-
tar(只起打包作用,无压缩=x) 显示进度条
tar -cf - a.csv | pv -s $(du -sb a.csv | awk '{print \$1}') | gzip > a.tgz
#在Linux环境下,可以使用pv命令来显示tar命令的压缩和解压进度。pv命令用于监视数据通过pipe的进度,能够显示耗时、完成率(进度条)、当前吞吐率、总传输字节等信息。使用方式是在两个程序之间,以合适的参数插入
pv question.tar.gz | tar -zxf - #解压
- 显示进程信息(cpu内存)
- ps命令和grep命令来实时监控特定进程
while true; dops aux | grep '7z' | grep -v 'grep'sleep 1
done
#这个脚本会无限循环,每秒更新一次7z进程的信息。ps aux会显示所有进程的详细信息,包括CPU和内存使用情况。然后,grep '7z'会从这些信息中筛选出7z进程的信息,最后,grep -v 'grep'会排除掉包含'grep'的行,因为我们不需要显示搜索进程自身。#USER:运行进程的用户名称
#PID:进程ID
#%CPU:进程使用的CPU百分比
#%MEM:进程使用的内存百分比
#VSZ:进程使用的虚拟内存量(KB)
#RSS:进程使用的未交换物理内存量(KB)
#START:进程启动时的时间
#TIME:CPU时间,即进程启动后占用CPU的总时间
#COMMAND:启动进程的命令行命令#awk可以选择只想显示的信息
while true; dops aux | grep '7z' | grep -v 'grep' | awk '{print \$3,\$4}'sleep 1
done
—004 .desktop文件&&桌面图标
- 文件基本格式
[Desktop Entry]
Name=<应用程序名>
Type=Application
Exec=<应用程序完整路径>
Icon=<应用程序图标的完整路径>
# Name: desktop 文件最终显示的名称(一定要注意和 desktop 文件名的区别)
#Type: 用于指定 desktop 文件的类型(包括 3 种类型:Application、Link、Directory)
#Exec: 用于指定二进制可执行程序的完整路径
#Icon: 指定应用程序图标的完整路径(可以省略后缀名)。图标支持 png 格式、svg 格式等,图标的推荐尺寸为 128x128。
- eg
sudo vi clion.desktop
[Desktop Entry]
Name=CLion
Type=Application
Exec=/opt/clion-2018.3.3/bin/clion.sh
Icon=/opt/clion-2018.3.3/bin/clion
Categories=Development#启动器本质是一个位于 /usr/share/applications/路径下的目录
sudo cp ~/Desktop/clion.desktop /usr/share/applications # 把 clion.desktop 复制一份到启动器目录下
- eg2
- firedev for desk
[Desktop Entry]Name=Firefox Developer EditionGenericName=Web BrowserExec=/usr/bin/firefox-developer-edition-en-us-kbx %uIcon=firefox-developer-editionTerminal=falseType=ApplicationMimeType=text/html;text/xml;application/xhtml+xml;application/vnd.mozilla.xul+xml;text/mml;x-scheme-handler/http;x-scheme-handler/https;StartupNotify=trueCategories=Network;WebBrowser;Keywords=web;browser;internet;Actions=new-window;new-private-window;StartupWMClass=Firefox Developer Edition[Desktop Action new-window]Name=Open a New WindowExec=/usr/bin/firefox-developer-edition-en-us-kbx %u[Desktop Action new-private-window]Name=Open a New Private WindowExec=/usr/bin/firefox-developer-edition-en-us-kbx --private-window %u
—005u盘/硬盘挂载与bug处理
- linux无法查看 识别硬盘
lsblk
#查看 ->发现没有看到那块硬盘
ls /sys/class/scsi_host/ -l
# 查看当前系统有多少个host目录#有多少个host就往多少个host目录里面文件scan追加"- - -"
vi disk_cat.sh#!/bin/bash
scsisum=`ls -l /sys/class/scsi_host/host*|wc -l`
for ((i=0;i<${scsisum};i++))
doecho "- - -" > /sys/class/scsi_host/host${i}/scan
done#创建分区
fdisk -l
fdisk /dev/sda
#n表示new,p表示主分区,1是分区号,指定开始扇区,回车使用默认,即扇区开始位置,指定结束分区,同样回车使用默认,即扇区结束位置,w保存
# 格式化挂载
```shell
mkfs -t xfs /dev/sda1
#刚才选择了 分区号1 变成了 sda1
# 格式化分区,指定格式为xfsmount /dev/sda1 /data
#选择路径挂载



linux—006忘记密码怎么办
- 当你拿到物理机的时候 你实际上已经拿到了最高权限
- 因为你可以进入系统编辑模式去修改root密码
所以今天学完之后 你有没有考虑去偷公司服务器 扛着服务器一边跑路一边改密码 - centos7
未没进去前秒接e取消前摇
方向键控制向下滑

将ro改成 rw init=/sysroot/bin/sh

ctrl+x centos7之后没有十年前那么多bug以及需要挂载的问题了 直接输入passwd修改密码就好
passwd
如果是中文安装这边会乱码的
- kali
- 同理 也是在刚刚出现系统的时候点e进入编辑模式

下滑到这一行

- 同理 也是在刚刚出现系统的时候点e进入编辑模式
- 这边也是把ro改成rw,删掉quiet splash,在后面加上init=/bin/bash ,ctrl+x退出当前界面,到下图的界面

—007kali/debain 包管理
- apt
高级包装工具(Advanced Packaging Tools,简称APT)是Debian及其衍生发行版(如Ubuntu)的软件包管理器。APT可以自动下载,配置,安装二进制或者源代码格式的软件包。
- 安装卸载
# 搜索查看sudo apt-cache search
#搜索软件
sudo apt-cache show
#查看包的相关信息、大小、版本等
sudo apt-cache stats
#显示当前系统所有使用的Debain数据源的统计信息
sudo apt-cache depends
#查找软件包的依赖关系# 安装sudo apt-get install
#普通安装
sudo apt-get -f install
# 修复安装
sudo apt-get -reinstall install
#重新安装 #更新sudo apt-get update
# 刷新软件源
sudo apt-get list --uygradable
# 查看可更新软件
sudo apt-get upgrade
#更新所有包
sudo apt-get dist-upgrade
#连带内核一起更新
sudo apt autoremove
#更新完成之后清除不需要的旧组件#卸载软件sudo apt-get remove
#移除式卸载,只是删掉数据和可执行文件sudo apt-get --purge remove
#清除式卸载,完全卸载同时清除配置文件
sudo apt-get autoremove --purge
#删除包及其依赖的软件包+配置文件等 ==最彻底的方法
- dpkg----大多非内置包处理工具
- 安装卸载
# 安装
sudo dpkg -i package-name.deb# 卸载sudo dpkg -r #移除一个已安装的包。
sudo dpkg --remove
#删掉数据和可执行文件
dpkg -P
#完全清除一个已安装的包。和 remove 不同的是,remove 只是删掉数据和可执行文件,purge 另外还删除所有的配制文件 ==最彻底的方法
- dpkg参数
| 说明 | 命令 | 示例 |
|---|---|---|
| 安装软件 | dpkg -i <.deb file name> | dpkg -i avg71flm_r28-1_i386.deb |
| 安装一个目录下面所有的软件包 | dpkg -R | dpkg -R /usr/local/src |
| 释放软件包,但是不进行配置 | dpkg –unpack package_file 如果和-R一起使用,参数可以是一个目录 | dpkg –unpack avg71flm_r28-1_i386.deb |
| 重新配置和释放软件包 | dpkg –configure package_file 如果和-a一起使用,将配置所有没有配置的软件包 | dpkg –configure avg71flm_r28-1_i386.deb |
| 删除软件包(保留其配置信息) | dpkg -r dpkg -r avg71flm | |
| 替代软件包的信息 | dpkg –update-avail | |
| 合并软件包信息 | dpkg –merge-avail | |
| 从软件包里面读取软件的信息 | dpkg -A package_file | |
| 删除一个包(包括配置信息) dpkg -P | ||
| 丢失所有的Uninstall的软件包信息 | dpkg –forget-old-unavail | |
| 删除软件包的Avaliable信息 | dpkg –clear-avail | |
| 查找只有部分安装的软件包信息 | dpkg -C | |
| 比较同一个包的不同版本之间的差别 | dpkg –compare-versions ver1 op ver2 | |
| 显示帮助信息 | dpkg –help | |
| 显示dpkg的Licence | dpkg –licence (or) dpkg –license | |
| 显示dpkg的版本号 | dpkg –version | |
| 建立一个deb文件 | dpkg -b direc×y [filename] | |
| 显示一个Deb文件的目录 | dpkg -c filename | |
| 显示一个Deb的说明 | dpkg -I filename [control-file] | |
| 搜索Deb包 | dpkg -l package-name-pattern dpkg -I vim | |
| 显示所有已经安装的Deb包,同时显示版本号以及简短说明 | dpkg -l | |
| 报告指定包的状态信息 | dpkg -s package-name dpkg -s ssh | |
| 显示一个包安装到系统里面的文件目录信息 | dpkg -L package-Name | dpkg -L apache2 |
| 搜索指定包里面的文件(模糊查询) | dpkg -S filename-search-pattern | |
| 显示包的具体信息 | dpkg -p package-name | dpkg -p cacti |
—008 ssh安全使用
- 配置文件
- /etc/ssh/ssh_config
- 重要参数
- Compression yes # 是否可以使用压缩指令?
# Host * # Host指令是ssh_config中最重要的指令,只有ssh连接的目标主机名能匹配此处给定模式时,才允许连接# 下面一系列配置项直到出现下一个Host指令才对此次连接生效
# ForwardAgent no #设置连接是否经过验证代理(如果存在)转发给远程计算机
# ForwardX11 no #设置X11连接是否被自动重定向到安全的通道和显示集(DISPLAY set)
# RhostsRSAAuthentication no #设置是否使用基于rhosts的安全验证。
# RSAAuthentication yes #设置是否使用用RSA算法的基于rhosts的安全验证。
# PasswordAuthentication yes # 是否启用基于密码的身份认证机制
# HostbasedAuthentication no # 是否启用基于主机的身份认证机制
# GSSAPIAuthentication no # 是否启用基于GSSAPI的身份认证机制
# GSSAPIDelegateCredentials no
# GSSAPIKeyExchange no
# GSSAPITrustDNS no
# BatchMode no # 如果设置为"yes",将禁止passphrase/password询问。比较适用于在那些不需要询问提供密# 码的脚本或批处理任务任务中。默认为"no"。
# CheckHostIP yes
# AddressFamily any
# ConnectTimeout 0
# StrictHostKeyChecking ask # 设置为"yes",ssh将从不自动添加host key到~/.ssh/known_hosts文件,且拒绝连接那些未知的主机(即未保存host key的主机或host key已改变的主机)。# 它将强制用户手动添加host key到~/.ssh/known_hosts中。# 设置为ask将询问是否保存到~/.ssh/known_hosts文件。# 设置为no将自动添加到~/.ssh/known_hosts文件。
# IdentityFile ~/.ssh/identity # ssh v1版使用的私钥文件
# IdentityFile ~/.ssh/id_rsa # ssh v2使用的rsa算法的私钥文件
# IdentityFile ~/.ssh/id_dsa # ssh v2使用的dsa算法的私钥文件
# Port 22 # 当命令行中不指定端口时,默认连接的远程主机上的端口
# Protocol 2,1
# Cipher 3des # 指定ssh v1版本中加密会话时使用的加密协议
# Ciphers aes128-ctr,aes192-ctr,aes256-ctr,arcfour256,arcfour128,aes128-cbc,3des-cbc # 指定ssh v1版本中加密会话时使用的加密协议
# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160
# EscapeChar ~
# Tunnel no
# TunnelDevice any:any
# PermitLocalCommand no # 功能等价于~/.ssh/rc,表示是否允许ssh连接成功后在本地执行LocalCommand指令指定的命令。
# LocalCommand # 指定连接成功后要在本地执行的命令列表,当PermitLocalCommand设置为no时将自动忽略该配置# %d表本地用户家目录,%h表示远程主机名,%l表示本地主机名,%n表示命令行上提供的主机名,# p%表示远程ssh端口,r%表示远程用户名,u%表示本地用户名。
# VisualHostKey no # 是否开启主机验证阶段时host key的图形化指纹
Host *GSSAPIAuthentication yes
- 配置文件
- /etc/ssh/sshd_config
- 重要参数
- UseDNS no
-UseDNS 选项打开状态下,当客户端试图登录SSH服务器时,服务器端先根据客户端的IP地址进行DNS PTR反向查询出客户端的主机名,然后根据查询出的客户端主机名进行DNS正向A记录查询,验证与其原始IP地址是否一致,这是防止客户端欺骗的一种措施 - AddressFamily inet
- SyslogFacility AUTHPRIV
- PermitRootLogin yes
- PasswordAuthentication yes
/etc/ssh/sshd_config#配置文件概要
[root@localhost ~]# cat /etc/ssh/sshd_config#Port 22 # 服务端SSH端口,可以指定多条表示监听在多个端口上
#ListenAddress 0.0.0.0 # 监听的IP地址。0.0.0.0表示监听所有IP,指定IP只监听指定的IP
Protocol 2 # 使用SSH 2版本, 如果要同时支持两者,就必须要使用 2,1 这个分隔了#####################################
# 私钥保存位置 #
#####################################
# HostKey for protocol version 1
#HostKey /etc/ssh/ssh_host_key # SSH 1保存位置/etc/ssh/ssh_host_key
# HostKeys for protocol version 2
#HostKey /etc/ssh/ssh_host_rsa_key # SSH 2保存RSA位置/etc/ssh/ssh_host_rsa _key
#HostKey /etc/ssh/ssh_host_dsa_key # SSH 2保存DSA位置/etc/ssh/ssh_host_dsa _key###################################
# 杂项配置 #
###################################
#PidFile /var/run/sshd.pid # 服务程序sshd的PID的文件路径
#ServerKeyBits 1024 # 服务器生成的密钥长度
#SyslogFacility AUTH # 使用哪个syslog设施记录ssh日志。日志路径默认为/var/log/secure
#LogLevel INFO # 记录SSH的日志级别为INFO
#LoginGraceTime 2m # 身份验证阶段的超时时间,若在此超时期间内未完成身份验证将自动断开###################################
# 以下项影响认证速度 #
###################################
#UseDNS yes # 指定是否将客户端主机名解析为IP,以检查此主机名是否与其IP地址真实对应。默认yes。
# 由此可知该项影响的是主机验证阶段。建议在未配置DNS解析时,将其设置为no,否则主机验证阶段会很慢###################################
# 以下是和安全有关的配置 #
###################################
#PermitRootLogin yes # 是否允许root用户登录
#MaxSessions 10 # 最大客户端连接数量
#GSSAPIAuthentication no # 是否开启GSSAPI身份认证机制,默认为yes
#PubkeyAuthentication yes # 是否开启基于公钥认证机制
#AuthorizedKeysFile .ssh/authorized_keys # 基于公钥认证机制时,来自客户端的公钥的存放位置
PasswordAuthentication yes # 是否使用密码验证,如果使用密钥对验证可以关了它
#PermitEmptyPasswords no # 是否允许空密码,如果上面的那项是yes,这里最好设置no
StrictModes yes # 当使用者的 host key 改变之后,Server 就不接受联机,可以抵挡部分的木马程序!
#RSAAuthentication yes # 是否使用纯的 RSA 认证!?仅针对 version 1 !
###################################
# 以下可以自行添加到配置文件 #
###################################
DenyGroups hellogroup testgroup # 表示hellogroup和testgroup组中的成员不允许使用sshd服务,即拒绝这些用户连接
DenyUsers hello test # 表示用户hello和test不能使用sshd服务,即拒绝这些用户连接###################################
# 以下一项和远程端口转发有关 #
###################################
#GatewayPorts no # 设置为yes表示sshd允许被远程主机所设置的本地转发端口绑定在非环回地址上
# 默认值为no,表示远程主机设置的本地转发端口只能绑定在环回地址上
linux–009(centos srream9 )搭建基础网络服务dnsmasq,LAMP,DVWA
- dnsmasq
# 安装 dnsmasq 软件包
sudo dnf install -y dnsmasq
# 主配置文件
sudo vim /etc/dnsmasq.conf#设置监听接口
interface=eth0
#设置上游 DNS 服务器
server=8.8.8.8
server=8.8.4.4
# 配置本地域名解析: 查看虚拟机网络配置或者本地ip信息 内网环境
address=/example.local/192.168.0.1# 配置DHCP
dhcp-range=192.168.0.100,192.168.0.200,12h
dhcp-option=option:router,192.168.0.1# 启动并启用 dnsmasq 服务
sudo systemctl start dnsmasq
sudo systemctl enable dnsmasq# 配置防火墙以允许 DNS 和 DHCP 通信:
sudo firewall-cmd --permanent --add-service=dns
sudo firewall-cmd --permanent --add-service=dhcp
sudo firewall-cmd --reload# 验证 dnsmasq 配置:
dig @localhost example.local
- 编辑/etc/hosts文件并添加DNS记录
vi /etc/hosts127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4::1 localhost localhost.localdomain localhost6 localhost6.localdomain6# add records10.0.0.30 dlp.srv.world dlp10.0.0.31 www.srv.world www
#启动并使dnsmasq在启动时运行
systemctl enable --now dnsmasq
#配置防火墙以允许DNS服务
firewall-cmd --add-service=dns
firewall-cmd --runtime-to-permanent
- LAMP
# download
## apache
dnf -y install httpd httpd-devel
## 安装mariadb数据库及其扩展包。
dnf -y install mariadb mariadb-server
## 安装php数据库及其扩展包:
dnf -y install php php-mysqlnd php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-mbstring php-bcmath php-mhash# 防火墙/port
# apache
sudo firewall-cmd --add-service=http --permanent
#为 MariaDB 开放端口(默认是 3306):
sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
#重新加载防火墙配置以使更改生效:
sudo firewall-cmd --reload
- 验证apache
vi /var/www/html/info.php
<?php
phpinfo();
?>
- mysql 设置mariadb管理员密码并验证密码
mysqladmin -u root password 123456
mysql -u root -p
- 配置DVWA
git clone https://github.com/digininja/DVWA.git
sudo mv DVWA /var/www/html/dvwa
sudo vi /var/www/html/dvwa/config/config.inc.php
$_DVWA[ 'db_user' ] = 'dvwa';$_DVWA[ 'db_password' ] = 'p@ssw0rd';$_DVWA[ 'db_database' ] = 'dvwa';$_DVWA[ 'db_server' ] = 'localhost';
- 由于MariaDB不支持root用户登录,所以我们需要创建一个新的用户(例如dvwa)。并且,db_server需要改成localhost
mysql -u root -pCREATE DATABASE dvwa;CREATE USER 'dvwa'@'localhost' IDENTIFIED BY 'p@ssw0rd';GRANT ALL PRIVILEGES ON dvwa.* TO 'dvwa'@'localhost';FLUSH PRIVILEGES;EXIT;
- 访问DVWA的安装页面,点击“创建数据库”按钮。然后,你应该能看到DVWA的登录页面。默认的用户名为admin,密码为password。注意,这是DVWA默认的,并未更改
—010自动批量配置n台全分布hadoop负载集群脚本可执行脚本
#!/bin/bash# Define the software versions and installation directory
jdk_version="jdk-11.0.12"
mysql_version="mysql-8.0.26"
hadoop_version="hadoop-3.3.5"
hive_version="hive-3.1.2"
sqoop_version="sqoop-1.4.7"
zookeeper_version="zookeeper-3.7.0"
install_dir="/opt"# Function to install JDK
install_jdk() {wget https://example.com/$jdk_version.tar.gztar -xzvf $jdk_version.tar.gzmv $jdk_version $install_dirln -s $install_dir/$jdk_version /usr/local/$jdk_version
}# Function to install MySQL
install_mysql() {wget https://example.com/$mysql_version.tar.gztar -xzvf $mysql_version.tar.gzmv $mysql_version $install_dirln -s $install_dir/$mysql_version /usr/local/$mysql_version
}# Function to install Hadoop
install_hadoop() {wget https://example.com/$hadoop_version.tar.gztar -xzvf $hadoop_version.tar.gzmv $hadoop_version $install_dirln -s $install_dir/$hadoop_version /usr/local/$hadoop_version
}# Function to install Hive
install_hive() {wget https://example.com/$hive_version.tar.gztar -xzvf $hive_version.tar.gzmv $hive_version $install_dirln -s $install_dir/$hive_version /usr/local/$hive_version
}# Function to install Sqoop
install_sqoop() {wget https://example.com/$sqoop_version.tar.gztar -xzvf $sqoop_version.tar.gzmv $sqoop_version $install_dirln -s $install_dir/$sqoop_version /usr/local/$sqoop_version
}# Function to install Zookeeper
install_zookeeper() {wget https://example.com/$zookeeper_version.tar.gztar -xzvf $zookeeper_version.tar.gzmv $zookeeper_version $install_dirln -s $install_dir/$zookeeper_version /usr/local/$zookeeper_version
}# Call the installation functions
install_jdk
install_mysql
install_hadoop
install_hive
install_sqoop
install_zookeeper# Configuration steps
cd /usr/local/$hadoop_version/etc/hadoop
cp mapred-site.xml.template mapred-site.xml
cp core-site.xml.template core-site.xml
cp hdfs-site.xml.template hdfs-site.xml
cp yarn-site.xml.template yarn-site.xmlcd /usr/local/$hive_version/conf
cp hive-env.sh.template hive-env.sh
cp hive-site.xml.template hive-site.xmlcd /usr/local/$sqoop_version/conf
cp sqoop-env-template.sh sqoop-env.sh
cp sqoop.properties.template sqoop.propertiescd /usr/local/$zookeeper_version/conf
cp zoo_sample.cfg zoo.cfgecho "
<configuration><property><name>fs.defaultFS</name><value>hdfs://localhost:9000</value></property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/core-site.xmlecho "
<configuration><property><name>dfs.replication</name><value>1</value></property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/hdfs-site.xmlecho "
<configuration><property><name>mapreduce.framework.name</name><value>yarn</value></property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/mapred-site.xml# 配置Hadoop yarn-site.xml
echo "
<configuration><property><name>yarn.nodemanager.aux-services</name><value>mapreduce_shuffle</value></property><property><name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name><value>org.apache.hadoop.mapred.ShuffleHandler</value></property><property><name>yarn.resourcemanager.hostname</name><value>localhost</value></property><property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property><property><name>yarn.nodemanager.resource.cpu-vcores</name><value>2</value></property>
</configuration>
" > /usr/local/$hadoop_version/etc/hadoop/yarn-site.xml# 配置Hive hive-site.xml
echo "
<configuration><property><name>javax.jdo.option.ConnectionURL</name><value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value></property><property><name>javax.jdo.option.ConnectionDriverName</name><value>com.mysql.jdbc.Driver</value></property><property><name>javax.jdo.option.ConnectionUserName</name><value>root</value></property><property><name>javax.jdo.option.ConnectionPassword</name><value>password</value></property><property><name>hive.metastore.warehouse.dir</name><value>/user/hive/warehouse</value></property>
</configuration>
" > /usr/local/$hive_version/conf/hive-site.xml# 配置Sqoop sqoop-env.sh
echo "
export HADOOP_COMMON_HOME=/usr/local/$hadoop_version
export HADOOP_MAPRED_HOME=/usr/local/$hadoop_version
export HIVE_HOME=/usr/local/$hive_version
export ZOOKEEPER_HOME=/usr/local/$zookeeper_version
" > /usr/local/$sqoop_version/conf/sqoop-env.sh# 配置Zookeeper zoo.cfg
echo "
tickTime=2000
dataDir=/var/lib/zookeeper
clientPort=2181
" > /usr/local/$zookeeper_version/conf/zoo.cfg
- 将以上脚本同时分发给n台服务器并运行
#!/bin/bash# Define the script file and IP address file
script_file="install.sh"
ip_file="ip_addresses.txt"# Read the IP addresses from the file and execute the script on each server
while IFS= read -r ip_address
doecho "Running script on $ip_address"scp $script_file $ip_address:~/ # Transfer the script file to the serverssh $ip_address "bash ~/$(basename $script_file)" # Execute the script on the server
done < "$ip_file"
kali scp注意事项
- Kali Linux是一款基于Debian的Linux发行版,专门用于高级渗透测试和安全审核。在Kali Linux中,你可以使用SSH和SCP命令进行远程登录和文件传输操作。以下是常用的SSH和SCP命令演示以及遇到的常见报错和解决方法:
#使用SSH命令登录远程Linux服务器:
ssh -l <用户名> -p <端口号> <主机名或IP>
#例如,登录远程服务器的root用户,端口号为22:
ssh -l root -p 22 192.168.0.1
# SCP命令演示:
## 将本地文件拷贝到远程服务器:
scp -P <端口号> <本地文件路径> <用户名>@<计算机IP或名称>:<远程路径>
#例如,将本地的file.txt文件拷贝到远程服务器的/tmp目录下:
scp -P 22 file.txt username@192.168.0.1:/tmp
## 从远程服务器将文件拷回本地:
scp -P <端口号> <用户名>@<计算机IP或名称>:<文件名> <本地路径>
##从远程服务器将/tmp目录下的file.txt文件拷回本地的/home/user目录下:
scp -P 22 username@192.168.0.1:/tmp/file.txt /home/user
## 将本地目录拷贝到远程服务器:
scp -r -P <端口号> <本地目录路径> <用户名>@<计算机IP或名称>:<远程路径>
## 例如,将本地的dir目录拷贝到远程服务器的/tmp目录下:
scp -r -P 22 dir username@192.168.0.1:/tmp
##从远程服务器将目录拷回本地:
scp -r -P <端口号> <用户名>@<计算机IP或名称>:<目录名> <本地路径>
## 例如,从远程服务器将/tmp目录拷回本地的/home/user目录下:
scp -r -P 22 username@192.168.0.1:/tmp /home/user
-
注意事项和避免报错:
- 若在执行SCP上传文件时报错提示对方没有安装openssh-clients软件包,可以尝试在远程服务器上安装openssh-clients软件包来解决该问题。
- 在使用SCP命令时,需要确保本地文件和目录的路径是正确的,并且远程服务器的用户名、IP地址、端口号和路径也是正确的。
- 在进行SSH和SCP操作时,需要确保远程服务器已经开启了SSH服务,并且相应的端口号没有被防火墙阻止。
- 可能还会遇到其他报错,例如权限问题、网络连接问题等。在遇到报错时,可以根据报错信息进行排查,查看相关日志文件来获取更多详细信息,然后针对具体问题进行解决。
相关文章:
linux入门到地狱
linux—001入门 IT圈必备(前端工作者用的比较少) 老旧电脑跑linux不容易卡 我代码没保存windows闪退,僵停(vs2019卡掉线),重启更新,占用cpu内存服务报错pip各种bug 出来生态环境友好其他的全是bug(bug时间成本超过了windows快捷友好生态) 那就说明wind…...
架构”4+1“视图
1995年Kruchten提出了著名的“41”视图,用来描述软件系统的架构。在“41”视图中,(物理视图 )用来描述系统软硬件之间的映射关系,这个视图往往(系统工程人员)最为关注;(逻…...
『精』Vue 组件如何模块化抽离Props
『精』Vue 组件如何模块化抽离Props 文章目录 『精』Vue 组件如何模块化抽离Props一、为什么要抽离Props二、选项式API方式抽离三、组合式API方式抽离3.1 TypeScript类型方式3.2 文件分离方式3.3 对文件分离方式优化 参考资料💘推荐博文🍗 一、为什么要抽…...
JavaScript字符串字面量详细解析与代码实例
JavaScript字符串字面量是一种表示字符串值的语法结构,通常用双引号或单引号括起来。 var str1 "Hello World!"; var str2 Hello World!;另外,如果需要在字符串中包含双引号或单引号,可以使用转义字符\来实现。 var str3 &quo…...
Android java Handler sendMessage使用Parcelable传递实例化对象,我这里传递Bitmap 图片数据
一、Bundle给我们提供了一个putParcelable(key,value)的方法。专门用于传递实例化对象。 二、我这里传递Bitmap 图片数据,实际使用可以成功传统图像数据。 发送:Bundle bundle new Bundle();bundle.putParcelable("bitmap",bitmap);msg.setD…...
CTF工具PDF隐写神器wbStego4open安装和详细使用方法
wbStego4open安装和详细使用方法 1.wbStego4open介绍:2.wbStego4open下载:3.wbStego4open原理图:4.wbStego4open使用教程:第一步:第二步:第三步:第四步:第五步: 5.wbSteg…...
docker镜像使用
一、查看docker版本 docker version docker默认安装目录 /var/lib/docker 目录文件如下: 二、查看下载的镜像 docker images 三、下载镜像 docker pull [OPTIONS] NAME[:TAG|DIGEST] option作用-a, --all-tags拉取所有 tagged 镜像–disable-content-trust…...
【Git】git的下载安装与使用
目录 目录 一.下载安装 官方下载 淘宝镜像下载 安装 二.创建本地仓库 三.git的基本操作命令 git status git add . git commit -m " " 四.gitee(码云)的使用 配置ssh公钥 编辑 查看公钥 gitee创建仓库 将本地仓库的文件上传到远程仓库…...
R语言中的函数27:polynom::polynomial(), deriv(),integral(),solve()多式处理函数
文章目录 介绍polynomial()用法参数实例多项式的加减乘除等运算实例 deriv()和integral()用法参数实例solve()参数实例 介绍 R语言中的polynom包可以实现对多项式的操作,例如:加、减、乘、除、微分、积分。使用的时候先用polynomial()函数定义一个多项式…...
基于STM32CubeMX和keil采用USART/UART实现非中断以及中断方式数据回环测试借助CH340以及XCOM
文章目录 前言1. 接口概述1.1 USART/UART接口1.2 串口通信参数1.3 波特率计算 2. 传输函数3. 回环测试3.1 上位机环境配置3.2 阻塞模式3.3 中断模式 4. STM32CubeMX配置4.1 时钟配置4.2 调试配置4.3 串口引脚配置4.4 工程配置 5. 测试效果6. 不借助上位机回环测试总结 前言 这…...
Spring cloud负载均衡 @LoadBalanced注解原理
接上一篇文章,案例代码也在上一篇文章的基础上。 在上一篇文章的案例中,我们创建了作为Eureka server的Eureka注册中心服务、作为Eureka client的userservice、orderservice。 orderservice引入RestTemplate,加入了LoadBalanced注解&#x…...
C#when关键字
在C#中,when关键字用于在模式匹配表达式中添加条件。它允许您在模式匹配的过程中指定额外的条件,以进一步过滤匹配的模式。当模式匹配和附加条件都为真时,相关的代码块将被执行。 以下是when关键字的详细解释以及示例说明: 语法…...
华为政企无线局域网产品集
产品类型产品型号产品说明 室内接入点AirEngine 5760-51AirEngine 5760-51是华为发布的支持Wi-Fi 6(802.11ax)标准的新一代室内AP,适合部署在企业办公、零售、制造等场景。 通过软件定义射频,能够在双频、三频模式灵活切换&a…...
解释 RESTful API
RESTful API是一种基于HTTP协议的API设计风格,它的核心思想是将每个资源(如用户、订单等)抽象成一个URI(统一资源标识符),通过HTTP协议定义的方法(如GET、POST、PUT、DELETE等)对资源…...
青翼科技-国产化ARM系列TES720D-KIT
板卡概述 TES720D-KIT是专门针对我司TES720D(基于复旦微FMQL20S400的全国产化ARM核心板)的一套开发套件,它包含1个TES720D核心板,加上一个TES720D-EXT扩展底板。 FMQL20S400是复旦微电子研制的全可编程融合芯片,在单…...
Tomcat为什么支持线程池?
Tomcat作为一个Java Servlet容器,支持线程池是因为它能够处理多个并发请求。这些请求可以是对Web应用程序的HTTP请求、Servlet的请求,或其他支持的协议。 支持线程池的主要原因包括: 并发处理能力: 提高性能: 使用线程…...
Mac安装VMware
去官网下载一下VMware Download VMware Fusion | VMware | SG 下载完成之后,打开直接闪退,参考这篇文章解决 解决macOS13安装Fusion13闪退的问题-CSDN博客 然后即可成功顺行...
项目部署文档
申请SSL证书 先申请,用免费的 下载证书 先将下载下来的保存起来 服务器安装JDK: 创建develop目录 mkdir /usr/local/develop/ 把JDK压缩包上传到/usr/local/develop/目录 解压安装包 并且将安装到指定目录 tar -zxvf /usr/local/develop/jdk-8u191-linux-x64.tar.gz -C /us…...
HTML+CSS阶段知识点梳理
目录 一、简单的网页结构 二、常用标签 三、列表 四、CSS引入方式 五、常用选择器 1、标签(元素)选择器 2、id选择器 3、class选择器 4、通配选择器 5、复合选择器 6、关系选择器 7、属性选择器 8、伪类选择器 9、a元素的伪类 10、伪元素…...
网易按照作者批量采集新闻资讯软件说明文档
大家好,我是淘小白~ 今天给大家介绍的爬虫软件是网易按照作者采集的软件 1、软件语言: Python 2、使用到的工具 Python selenium库、谷歌浏览器、谷歌浏览器驱动 3、文件说明: 4、配置文件说明: 5、环境配置 安装Python&am…...
KubeSphere 容器平台高可用:环境搭建与可视化操作指南
Linux_k8s篇 欢迎来到Linux的世界,看笔记好好学多敲多打,每个人都是大神! 题目:KubeSphere 容器平台高可用:环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...
从零实现富文本编辑器#5-编辑器选区模型的状态结构表达
先前我们总结了浏览器选区模型的交互策略,并且实现了基本的选区操作,还调研了自绘选区的实现。那么相对的,我们还需要设计编辑器的选区表达,也可以称为模型选区。编辑器中应用变更时的操作范围,就是以模型选区为基准来…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...
LLM基础1_语言模型如何处理文本
基于GitHub项目:https://github.com/datawhalechina/llms-from-scratch-cn 工具介绍 tiktoken:OpenAI开发的专业"分词器" torch:Facebook开发的强力计算引擎,相当于超级计算器 理解词嵌入:给词语画"…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...
CMake 从 GitHub 下载第三方库并使用
有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...
mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包
文章目录 现象:mysql已经安装,但是通过rpm -q 没有找mysql相关的已安装包遇到 rpm 命令找不到已经安装的 MySQL 包时,可能是因为以下几个原因:1.MySQL 不是通过 RPM 包安装的2.RPM 数据库损坏3.使用了不同的包名或路径4.使用其他包…...
ip子接口配置及删除
配置永久生效的子接口,2个IP 都可以登录你这一台服务器。重启不失效。 永久的 [应用] vi /etc/sysconfig/network-scripts/ifcfg-eth0修改文件内内容 TYPE"Ethernet" BOOTPROTO"none" NAME"eth0" DEVICE"eth0" ONBOOT&q…...
