简单的使用流程:
首先获取开源的pyinstxtractor.py
开源下载地址:https://github.com/extremecoders-re/pyinstxtractor
先将pyinstxtractor.py
工具与我们要反编译的.exe
文件放入同一个工作目录下。
输入 (xxx.exe为pyinstaller生成exe)
1 | python pyinstxtractor.py xxx.exe |
可以发现工作目录下多了一个名为文件名.exe_extracted
的文件夹:
这就获得了python源码,目录中有带.pyc
后缀的文件,我们要找到那个与你的.exe
文件同名的文件,(pyinstxtractor.py
工具在2.0以前的版本,会生成两个不带后缀的文件,我们仍然是要找到那个与自己的.exe
文件同名的文件,手动为它添加.pyc
后缀)
安装 uncompyle6 依赖库
pip install uncompyle6
把和.exe
文件名相同的 .pyc
文件,复制到指定目录或是原目录,在该目录下:
输入命令uncompyle6 文件名.pyc > 文件名.py
回车执行,就可以看到目录下生成了.py
文件了
相关文章:
制作工具:shields,一种以SVG或光栅格式所提供简洁、一致、清晰的徽章服务,可以轻松地包含在GitHub自述文件或任何其他网页中;该服务支持数十种持续集成服务、软件包注册表、发行版、应用商店、社交网络、代码覆盖率服务和代码分析服务。每个月它提供超过7.7亿张图像,并被一些世界上最受欢迎的开源项目如VS Code、Vue.js和Bootstrap的使用。
制作网页:https://shields.io/#your-badge
格式为:https://img.shields.io/badge/{徽标标题}-{徽标内容}-{徽标颜色}.svg?{参数名1}={参数值1}&{参数名2}={参数值2}
我们填写徽章的标签、消息以及想要的颜色,然后点击Make Badge就会生成我们的徽章,由左和右两半部分组成,左半部分就是我们填写的标签内容,右半部分就是我们填写的消息内容,右半部分的颜色就是我们填写的颜色。
最后生成的徽章有对应的url,格式为https://img.shields.io/badge/<标签>-<消息>-<颜色>,我们也可以直接修改url参数来得到想要的标签。
此外,我们还可以通过在url后面使用?携带一些参数来自己定制,参数间用&隔开:
logo:指定左半部分的logo,例如 https://img.shields.io/badge/zsr-gitee-red?logo=Gitee
更多logo参数可以查看:https://simpleicons.org/
logoWidth:指定左半部分logo的宽度,例如 https://img.shields.io/badge/zsr-gitee-red?logo=Gitee&logoWidth=40
label:用于覆盖左半部分的内容,例如 https://img.shields.io/badge/zsr-gitee-red?logo=Gitee&label=hello
labelColor:用于设置左半部分的颜色,支持十六进制,rgb,rgba,hsl,hsla和css命名颜色。例如 https://img.shields.io/badge/zsr-gitee-red?labelColor=abcdef
color:用户设置右半部分的颜色,支持十六进制,rgb,rgba,hsl,hsla和css命名颜色。例如 https://img.shields.io/badge/zsr-gitee-red?color=fedcba
link=http://left&link=http://right:指定单击徽章左侧/右侧跳转的链接,例如 https://img.shields.io/badge/baidu-tencent-blue?link=http://www.baidu.com&link=http://www.tencent.com
此时我们点击左半部分就会跳转到百度首页,点击右半部分就会跳转到腾讯首页
那么我们如何将该徽章引入呢?我们可以通过 markdown 或者 html 的形式来引入:
1 | // markdown |
本文转自-Baret-H
相关博客:
CSND-1, CSND-2, CSND-3, 图标网站
]]>致谢:在此感谢如下帖子和教程,我也是整合并用更简单规整的方式重新表述。
如果你只需要 ShellClash 的功能,只用看前半部分就 OK ;需要刷 openwrt 可以跳过 ShellClash 的部分。不用担心变砖,刷坏了用官方修复工具即可刷回原厂。
1. 升级开发版固件
登录红米 AX6S 的后台(一般是:192.168.31.1),点击右上角选择-系统升级-选择手动升级,勾选下载好的「内测版」固件,点击开始升级。
⌛️等待系统升级完成重启,重新连接上 Wi-Fi。
2. 在线计算 root 密码
浏览器打开 https://www.oxygen7.cn/miwifi/,输入路由器后台右下角完整的 SN 号,点击 GO。计算出来的结果就是 root 密码,复制保存好。
在线计算密码的网站(视频里的暂时挂了):https://miwifi.dev/ssh 用这个。
3. telnet 连接开启 ssh
打开 Termius,可以选择不登录 Continue Without Account。
点击 New Host 添加
Address 填写:192.168.31.1
SSH:取消勾选
Telnet:勾选
然后点击向右的箭头,最后选择 Hosts 里的「192.168.31.1」开始 telnet 连接。
复制以下命令,回车即可开启 ssh。
1 | nvram set ssh_en=1 & nvram set uart_en=1 & nvram set boot_wait=on & nvram set bootdelay=3 & nvram set flag_try_sys1_failed=0 & nvram set flag_try_sys2_failed=1 |
4. 尝试 ssh 连接路由器
选择 Hosts-点击 New Host 添加
Address 填写:192.168.31.1
SSH 的用户名里填写:root
Password 粘贴之前计算出来的 root 密码
点击右上角箭头,再点击 Hosts 里的 192.168.31.1 就应该能连接上 SSH 了。(注意选择 ssh 不是 telnet)
选择 ADD AND CONTINUE,就会进入 SSH 连接。
安装
在 SSH 里复制此命令开始安装 ShellClash
1 | export url='https://raw.fastgit.org/juewuy/ShellClash/master' && sh -c "$(curl -kfsSl $url/install.sh)" && source /etc/profile &> /dev/null |
选择 2 测试版(AX6S 暂时只支持测试版)
然后 1 确认安装
配置 Clash
输入 Clash 回车进行配置
现在应该就能正常使用了,在浏览器里打开 http://192.168.31.1:9999/ui,就能访问控制后台。可以在手机小米路由器 App 上选择关闭更新,以防止自动更新,麻烦。我的建议:不折腾的就不用固化,喜欢折腾就直接刷下面的 openwrt。
1. 刷入过渡 openwrt 固件
在 SSH 里复制粘贴下面的命令,便可刷入 openwrt 过渡固件。
1 | cd /tmp |
刷入过渡固件后会自动重启,Wi-Fi 名会变为 openwrt-5G。
2. 刷写其它第三方固件:
在路由器后台选择-System-Backup / Flash Firmware
不要勾选 Keep settings,然后 Image 选择文件选择 openwrt 固件,然后点击 Flash image。
最后选择 Proceed 即可。
你可以用同样的方法刷不同版本的 openwrt 固件(不保留配置升级),这里就不过多的介绍,以后应该会有更多不同编译版本的 openwrt 固件让选择。
另外 openwrt 里开启 160Mhz 也是有效的,不过 4*4 mimo 和 160Mhz 得二选一,两者不可兼得。
MTK 7622B 双核 a53,加上有 aes 硬解,能跑这个速度我确实没想到,也太快了吧!这是 MTK7621 的好几十倍了。200多的价格,不错的无线性能,以及丰富的固件,外加上代理性能也不拉胯,解锁刷机还特简单,这不冲一波吗。
本文转自-酱紫表
]]>20220724:更新及增加大量系统镜像,41合1脚本,请注意看说明。
20220703:新增自定义SSH端口(9-16)
20220613:新版自定义密码支持特殊字符.!$@#&%
20220428:修复MoeClub新版DD过程中卡住的BUG,修复Centos7下出现 Error! Not Found grub. 的错误提示,新增支持 xz 压缩格式的 DD 系统镜像包。
20220406:CN系统镜像已失效,国内主机使用一键脚本1-25选项需要较长时间,推荐使用99的自定义系统镜像。
20211120:更新MoeClub新版,依赖更少,支持原版自定义密码安装,体验版可能有Bug.
20210909:支持debian11.
20210511:发现很多人不知道怎么DD甲骨文,使用支持uefi的镜像包即可.脚本已添加3个甲骨文专用选项23-25.
20210509:更新部分windows镜像,修正一处小问题.
20210127:更换部分windows镜像.
20210109:更新支持Ubuntu20.04安装,更新几个windows镜像.
20200708:更新自动为CN主机使用国内镜像源.
Debian/Ubuntu:
1 | apt-get install -y xz-utils openssl gawk file wget screen && screen -S os |
RedHat/CentOS:
1 | yum install -y xz openssl gawk file glibc-common wget screen && screen -S os |
如果出现异常,请刷新Mirrors缓存或更换镜像源。
RedHat/CentOS:
1 | yum makecache && yum update -y |
Debian/Ubuntu:
1 | apt update -y && apt dist-upgrade -y |
1 | wget --no-check-certificate -O NewReinstall.sh https://git.io/newbetags && chmod a+x NewReinstall.sh && bash NewReinstall.sh |
如为CN主机(部分主机商已不能使用),可能出现报错或不能下载脚本的问题,可执行以下命令开始安装.
1 | wget --no-check-certificate -O NewReinstall.sh https://cdn.jsdelivr.net/gh/fcurrk/reinstall@master/NewReinstall.sh && chmod a+x NewR |
输入Y确认DD后主机自动获取IP,N则自行设置IP 输入N后会自动检测出主机现用IP,如果正确可以按Y确认使用,如不正确则按N自行按正确的输入。
输入99则使用自定义镜像。 以上系统密码不为默认密码的均为网络收集,如有疑虑使用自己的自定义镜像。
1、CentOS 7.7 (已关闭防火墙及SELinux,默认密码Pwd@CentOS)
2、CentOS 7 (默认密码cxthhhhh.com)
3、CentOS 7 (支持ARM64、UEFI,默认密码cxthhhhh.com)
4、CentOS 8 (默认密码cxthhhhh.com)
5、Rocky 8 (默认密码cxthhhhh.com)
6、Rocky 8 (支持UEFI,默认密码cxthhhhh.com)
7、Rocky 8 (支持ARM64、UEFI,默认密码cxthhhhh.com)
8、CentOS 9 (默认密码cxthhhhh.com)
9、CentOS 6 (官方源原版,默认密码Minijer.com)
10、Debian 11 (官方源原版,默认密码Minijer.com)
11、Debian 10 (官方源原版,默认密码Minijer.com)
12、Debian 9 (官方源原版,默认密码Minijer.com)
13、Debian 8 (官方源原版,默认密码Minijer.com)
14、Ubuntu 20.04 (官方源原版,默认密码Minijer.com)
15、Ubuntu 18.04 (官方源原版,默认密码Minijer.com)
16、Ubuntu 16.04 (官方源原版,默认密码Minijer.com)
17、Windows Server 2022 (默认密码cxthhhhh.com)
18、Windows Server 2022 (支持UEFI,默认密码cxthhhhh.com)
19、Windows Server 2019 (默认密码cxthhhhh.com)
20、Windows Server 2016 (默认密码cxthhhhh.com)
21、Windows Server 2012 (默认密码cxthhhhh.com)
22、Windows Server 2008 (默认密码cxthhhhh.com)
23、Windows Server 2003 (默认密码cxthhhhh.com)
24、Windows 10 LTSC (默认密码Teddysun.com)
25、Windows 10 LTSC (支持UEFI,默认密码Teddysun.com)
26、Windows 7 x86 Lite (默认密码nat.ee)
27、Windows 7 x86 Lite (阿里云专用,默认密码nat.ee)
28、Windows 7 x64 Lite (默认密码nat.ee)
29、Windows 7 x64 Lite (支持UEFI,默认密码nat.ee)
30、Windows 10 LTSC Lite (默认密码nat.ee)
31、Windows 10 LTSC Lite (阿里云专用,默认密码nat.ee)
32、Windows 10 LTSC Lite (支持UEFI,默认密码nat.ee)
33、Windows Server 2003 Lite (C盘默认10G,默认密码WinSrv2003x86-Chinese)
34、Windows Server 2008 Lite (默认密码nat.ee)
35、Windows Server 2008 Lite (支持UEFI,默认密码nat.ee)
36、Windows Server 2012 Lite (默认密码nat.ee)
37、Windows Server 2012 Lite (支持UEFI,默认密码nat.ee)
38、Windows Server 2016 Lite (默认密码nat.ee)
39、Windows Server 2016 Lite (支持UEFI,默认密码nat.ee)
40、Windows Server 2022 Lite (默认密码nat.ee)
41、Windows Server 2022 Lite (支持UEFI,默认密码nat.ee)
99、自定义镜像
1、系统名称后带Lite的均为精简版,没有的是完整版
2、[X64-Legacy-cxthhhhh]代表系统为AMD64位,支持传统BIOS启动,cxthhhhh定制的系统镜像
3、ARM64代表系统支持ARM64位
4、UEFI代表系统支持最新的UEFI启动,如甲骨文全部都是这种
5、aliyun代表阿里云专用系统镜像
6、cxthhhhh、teddysun、nat.ee均为三位制作系统镜像的大佬代称
7、系统密码会在选择相应序号后提示,请注意记录
8、经测试在谷歌云原版系统基础上DD会出现自动获取的子网掩码为255.255.255.255,如出现这种情况需要手工输入改正为正确的如255.255.255.0,否则会安装完成主机可能会离线
9、阿里云因使用了特殊的驱动,DD安装Windows系统选择阿里云专用版
10、Oracle Cloud(甲骨文云)可选择支持UEFI的镜像,注意基础系统最好选择Ubuntu,如原系统是CentOS可能无法成功,注意如是ARM机器注意选择同时支持ARM64和UEFI的镜像
11、9-16项安装原版系统,可自定义密码,密码要求8-16位,以英文字母或数字开头,可以是大小写英文字母、数字及7个特殊字符.!$@#&%的任意组合
本文引用自:四海部落
]]>新版看起来更加简单明了。当我们进入服务控制台后,点击右上角人头像标识,甲骨文账户的所有管理操作都可以在这里完成:
下面本文就详细讲解一下如何在新版中进行更改密码、变更邮箱、添加用户、变更租户名等操作:
点击进入【我的信息概要】,选择【更改密码】
输入旧密码,然后再输入新密码,点击【保存】
再次登录时,密码就变更为你设置的新密码了。
邮箱主要分两种类型:安全邮箱和通知邮箱:(*新版不再有登录邮箱这一说)
点击进入【我的信息概要】
在这里你会发现有一个【用户名】和【电子邮箱】,在初始注册的时候,这两个是相同的,都是邮箱名称。但是也可以是不同的。这一点我们在后面会详细讲解。
我们继续操作,点击【安全】选项进入到如下页面后,选择【恢复电子邮件】右下角的三个点,然后选择【编辑】:
首先输入登录密码进行验证,完成后输入新的恢复电子邮件,并选择【更改恢复电子邮件】:
这时候你新邮箱将会收到一封带链接的邮件,点击后输入新邮箱跟密码,即可完成更改。
2、变更通知邮箱
还是在【我的信息概要】界面里,选择【更多操作】,在弹出的下拉框内选择【编辑电子邮件】
在新弹出的页面中,选择【更改】,然后输入密码验证完成后,输入新的邮箱,然后点击【更改主电子邮箱】。(如果这里的邮箱更前面通知邮箱是一致的,则立即生效。如果是不一样的,则会出现更上面一样的邮件验证,完成验证即可。)
回到【我的信息概要】,你会发现用户名仍然是原来的邮箱,但是电子邮件已经变为新的了。
因为甲骨文注册时默认使用当时的主电子邮件作为登录方式,所以变更完以上电子邮件后,登录我们仍要输入原电子邮件名称才能登陆。但是这里原来邮箱只是作为登录时候的用户名形式,不再有任何邮箱实质意义。这一点说实话,有点“不完美”。不知道甲骨文后面是否还会调整。
对于一些强强迫症用户,总希望在登录输入用户名时,输入的是自己的邮箱或是喜欢的其他形式。那么我们可以通过添加用户来解决。
主界面里选择【身份域】,进入身份域界面,然后在左侧选择【用户】
选择【创建用户】,填写相关信息,完成后点击【创建】。这里有3点需要注意:
创建完成后,你创建用户的电子邮箱会收到一封邮件。点击链接,输入并确认密码后,将跳转至登录界面
登录界面用户名就是你创建用户的电子邮件,或是当时输入的用户名,输入刚才创建的密码,即可成功登录。
原则上不建议对此进行变更,变更可能会带来风控。是否因此封号,谁也无法保证。但是对于强迫症用户来说,这里还是讲一下:
在主界面选择【租户:XXXXX】
进入到【租户详细信息】界面,选择【重命名租户】,然后输入新的租户名即可。
这里有一点要注意,当你更改完租户名后可能不是即时生效。刷新租户详细信息界面,如果生效了,该处就会显示新的租户名。此时,在下次登录时,你输入新的租户名即可。有些人更改完马上退出重新登陆,输入新租户名会报错,是因为租户命名还未生效导致的。
好了,本教程就先写到这。还是本文开头那句话,甲骨文账户的所有管理操作都是在主界面人头像下的菜单中进行的。对于一些其他需求操作,自己在这里去找。
本文引用自:四海部落
]]>1 | cat /proc/cpuinfo |
1 | uname -a |
1 | ps -ef | grep <进程关键字> |
1 | Centos |
首先执行
1 | hostnamectl set-hostname <newhostname> |
然后执行下面的命令
1 | vi /etc/hosts |
在第二行增加一个 127.0.0.1 <newhostname>
,同时将文件中的原主机名修改为刚设置的新主机名
1 | wget https://www.moerats.com/usr/shell/swap.sh && bash swap.sh |
1 | bash <(wget -qO- --no-check-certificate https://gitlab.com/spiritysdx/za/-/raw/main/ecs.sh) |
1 | bash <(wget -qO- --no-check-certificate https://gitlab.com/spiritysdx/za/-/raw/main/qzcheck.sh) |
1 | wget -qO- bench.sh | bash |
1 | wget -qO- git.io/superbench.sh | bash |
1 | bash <(curl -Lso- https://bench.im/hyperspeed) |
1 | wget -qO- git.io/besttrace | bash |
( * *部分截图* )
1 | curl https://raw.githubusercontent.com/zhanghanyun/backtrace/main/install.sh -sSf | sh |
1 | mkdir /root/besttrace |
1 | wget https://raw.githubusercontent.com/nanqinlang-script/testrace/master/testrace.sh && bash testrace.sh |
( * *部分截图* )
1 | wget --no-check-certificate https://github.com/teddysun/across/raw/master/unixbench.sh && chmod +x unixbench.sh && ./unixbench.sh |
1 | 快速测试: |
1 | wget -qO- yabs.sh | bash |
1 | bash <(curl -L -s check.unlock.media) |
1 | bash <(curl -sSL "https://git.io/JswGm") |
1 | wget -q https://github.com/Aniverse/A/raw/i/a && bash a |
1 | telnet smtp.aol.com 25 |
如果看到类似下面的回显,则说明端口是开放的:
1 | Trying 74.6.141.50… |
如果显示 Connection timed out
,说明25端口不开放。需要注意的是:部分服务商或是系统,需要在控制后台开放25端口,或需要开放系统防火墙端口。
本文引用自:四海部落
]]>这个原理就是在当前Linux 系统 安装一个以内存运行的微型救援系统,而重启进入到这个救援系统,从而可以实现 纯DD命令 DD Win
系统要求:Debian 7 或 Ubuntu 12 以上
注意:VPS需要,默认以DHCP 自动分配IP 的才行,否则那种需要指定IP网关才有网络的,无法使用!
1 | 更新源 |
重新用SSH连接:
SSH端口:22
用户名:root
密码:nat.ee
欢迎信息带有 OpenWrt 则成功进入。假如未能进入到救援系统,需要重新使用:
1 | sed -i ‘s/GRUB_DEFAULT=0/GRUB_DEFAULT=2/g’ /etc/default/grub |
修改 GRUB_DEFAULT=2 为其他引导顺序,请多次尝试修改其他数字(1-9),或者你最好重装系统后,再次使用此教程。
1 | 查看分区信息 |
DD过程,是没有任何信息的。
视你的VPS:CPU/内存/硬盘读写/网速,以及DD包大小而决定DD要花多长时间,一般比较久,几十分钟到几小时或者一整天都有可能。DD完成后会出现这种信息:
1 | 6291457+0 records in |
# 重启
1 | reboot |
重启后,并不是马上就能进入到你DD的Windows系统
还需要让此Windows系统 完成首次安装,一般5-30分钟不等的。
祝你成功!
本文引用自:四海部落
]]>本教程需要你开了两台免费鸡,一台D成 windows,一台保留 linux 系统,用来DD Windows的。
登录进去你的甲骨文云控制台,点击 [左上角]菜单>计算>实例
点击 进去【需要DD成Windows】实例后,点击 停止>勾选(Force stop the instance by immediately powering off)>确定,等待停止成功后。
如果等很久都无法停止,需要自己进入实例机子里通过命令关闭。
Linux 关机命令:poweroff
Windows 关机命令:shutdown -s
再次在【需要DD成Windows】实例里 [左下角] 点击 引导卷>选择 引导卷 点击右边那三点图标 分离>确定。
然后返回到主实例界面
点击 进入到 【linux实例】 [左下角]附加的块储存卷>附加块储存卷 选择半虚拟化 引导卷 选择卷下的方框里,选择到刚刚那个分离出来的,附加>确定。
然后通过SSH进入到【linux实例】里
命令: fdisk -l 查看是否有 /dev/sdb 有的话,开始下载DD包。
为了防止你在SSH连接中断,先安装srceen 后台窗口。
1 | centos 安装 |
下载DD包
1 | wget --no-check-certificate 直链 |
[注意:甲骨文只支持Uefi启动的DD包,不是所有DD包都支持Uefi启动,注意区分查找。]
下载完成后,执行下面命令,此过程比较久,会不动的,因为正在解压包和DD进去硬盘分区里,大概需要30分钟不等。
1 | gunzip -dc ./DD包名称| dd of=/dev/sdb |
DD完成后会显示
1 | 16777217+0 records in |
这种信息。
DD完成,输入命令:exit
退出srceen后台窗口。
再次浏览器进入到 【linux实例】里 左下角 附加的块储存卷>附加块储存卷 选择D成windows的引导卷,点击右边那三点图标,分离>确定。
分离完成后,返回到主实例界面 进入到【需要DD成Windows】实例里。
[左下角]点击 引导卷>选择 引导卷 点击右边那三点图标 附加块储存卷>确定。
添加完成后,点击 实例上方的 启动,等待大概5分钟左右,让系统自动完成安装,你就能通过远程桌面进入了。
本文引用自:四海部落
]]>什么情况下会用到 VNC ?比如服务器无法正常启动,SSH无法正常登陆到服务器,这个时候需要利用VNC上服务器上排查一下问题!
常的场景:1)DD 系统服务器失联。 2)SSH密码忘记。
本文主要分为2部分。第一部分是利用Linux,第二部分是利用Windows 10。其中Linux相对来说简单一些!
这部分操作使用的是利用CentOS 7 + VNCviewer绿色版!
1)VNC链接工具,【VNC Connect】或者【VNCviewer绿色版(解压密码:RUYO.net)】。
2)准备一台Linux服务器。
1)登陆Linux服务器输入命令!
1 | //生成SSH KEY |
2)命令执行效果如下!
1 | [root@localhost ~]# ssh-keygen |
3)获取SSH公钥:cat ~/.ssh/id_rsa.pub
(公钥后面会用到)
SSH私钥位置: ~/.ssh/id_rsa
1)登陆Oracle Cloud控制台,打开实例详细信息 – 控制台连接 – 点击【创建控制台链接】
2)将 SSH公钥 复制到SSH密钥输入框内,保存!
3)等到链接的状态变成【活动】,点击【⋮】 – 【复制Linux/Mac的VNC连接】
1)需要在Linux服务器上将端口开放,默认使用的端口是5900,建议不要使用这个端口,我已经将端口换成 8000!
将上面复制的内容中的 5900 换成 8000 (如果8000被占用,就换其他的)
1 | ssh -o ProxyCommand='ssh -W %h:%p -p 443 ocid1.instanceconsoleconnection.oc1.ap-seoul-1.anuwgljr2ano4pqcwnhqj5tw4wgrxxxo6ba@instance-console.ap-seoul-1.oraclecloud.com' -N -L localhost:**5900**:ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa:5900 ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5xxxkytctumtoa |
2)将命令粘贴到Linux服务器命令行执行。
注意:第一次执行命令有2个位置,需要输入 yes 回车!
使用VNC 客户端链接即可!然后就成功了!!
1 | 服务器IP:8000 |
这部分操作使用的是 Windows 10 + VNCviewer绿色版
1)VNC链接工具,【VNC Connect】或者【VNCviewer绿色版(解压密码:RUYO.net)】。
2)Windows 10 需要安装 Git 和 PuTTY(下载地址参考附录部分)
提醒:PuTTY须安装到 C:\Program Files\
这里严重不建议使用 PuTTY 生成 SSH KEY!
1)利用Git Bash生成!
打开菜单 – Git – Git Bash
2)执行命令生成SSH 密钥!
1 | //生成SSH KEY |
3)密钥默认存放位置:C:\Users\ruyo\.ssh\
目录。(其中ruyo为当前操作系统登陆用户的用户名)
SSH公钥:id_rsa.pub
SSH私钥: `id_rsa```
这里和Linux版的操作基本一样,将SSH公钥复制进去!
等到链接的状态变成【活动】,点击【⋮】 – 【复制Windows的VNC连接】
由于Oracle Cloud VNC 识别不了上面的SSH私钥,需要利用下面的工具转一下!
1)打开菜单 – PuTTY – PuTTYgen
2)打开的界面点击【Load】,选择上面生成的SSH私钥。
如图操作,选择id_rsa
,出现提示框点击确定即可!
3)点击【Save private key】,将转换后的私钥保存到文件目录(记住该文件目录后面要用到!)。
PS:尽量要保存到 .ssh 目录中,命名要ruyo.ppk (后面有一键生成命令必须这样!)
直接复制处理的命令,执行上有一些问题。这里需要将命令修改一下!主要是替换以下内容:
1)替换 plink.exe 文件目录
2)替换PPK文件目录
3)将1条命令 转成 2条命令来执行
原始命令:
1 | Start-Job { Echo N | plink.exe -i $env:homedrive$env:homepath\oci\console.ppk -N -ssh -P 443 -l ocid1.instanceconsoleconnection.oc1.ap-seoul-1.anuwgljr2ano4pqcwnhqj5tw4wgrpmkuib4yah2naclpvcemkr27ajq5o6ba -L 5905:ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa:5905 instance-console.ap-seoul-1.oraclecloud.com }; sleep 5; plink.exe -i $env:homedrive$env:homepath\oci\console.ppk -N -L 5900:localhost:5900 -P 5905 localhost -l ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa |
转换后命令:
第一条命令:
1 | cd 'C:\Program Files\PuTTY\'.\plink.exe -i $env:homedrive$env:homepath\.ssh\ruyo.ppk -N -ssh -P 443 -l ocid1.instanceconsoleconnection.oc1.ap-seoul-1.anuwgljr2ano4pqcwnhqj5tw4wgrpmkuib4yah2naclpvcemkr27ajq5o6ba -L 5905:ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa:5905 instance-console.ap-seoul-1.oraclecloud.com |
第二条命令:
1 | cd 'C:\Program Files\PuTTY\'.\plink.exe -i $env:homedrive$env:homepath\.ssh\ruyo.ppk -N -L 5900:localhost:5900 -P 5905 localhost -l ocid1.instance.oc1.ap-seoul-1.anuwgljr2ano4pqcpkcs63uecyrs5bqmhsblzgtkygtjvhb666kytctumtoa |
1)我们需要启动2个 PowerShell (Win + X 或者 开始菜单鼠标右键)
2)在2个 PowerShell 分别执行 2条VNC命令。
提醒:命令执行后,显示 Access granted. Press Return to begin session. 需要再按一次回车!!
使用VNC 客户端链接即可!然后就成功了!!
1 | localhost:5900 |
这里我们使用默认端口基本上没啥太大问题!
Git下载地址:https://git-scm.com/downloads
PuTTY下载地址:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html
本文有几个疑惑不知道原因,知道的大佬可以留言指导一下!
1)为什么PuTTY 生成的 SHH 密钥 无法识别?(怀疑是密钥类型或者长度)
2)直接复制VNC原始命令不能执行?(原命令有一些错误不显示,命令有2步确认的操作?)
以上博主没有做深入的摸索!
本文引用自:四海部落
]]>该方法也适用于ARM救援AMD,ARM救援ARM,AMD救援AMD。
1、首先将失联的ARM进行关机:甲骨文后台=>计算>>实例,选择ARM实例进入实例详细信息页面。点击停止,弹出框内勾选(Force stop the instance by immediately powering off),然后确定,等待停止成功。
2、分离ARM引导卷:在ARM实例详细信息页面,下拉到下方列表[左下角],选择引导卷,点击引导卷列表右边那三点图标,选择分离,然后确定。
3、新建一台免费AMD。在新建的AMD实例详细信息页面,下拉到下方列表[左下角],选择附加的块储存卷,点击附加块储存卷,在弹出页面的选择卷下的方框里选择刚刚那个分离出来引导卷,挂载方式选择半虚拟化,然后确定。
4、SSH连接刚刚新建的AMD实例。使用 lsblk
或 fdisk -l
命令,你就可以查看到附加的ARM引导卷,一般是 /dev/sdb
(具体盘符请自行查看)。
5、接下来就下载DD救援包。如果自己没有备份救援包的话,这里提供2个ARM救援包和1个AMD救援包供大家使用(大家也可以自行备份自己手上现有的AMD或ARM机型,制作救援包。方法见文末):
1 | ubuntu18.04 ARM 官方原版完整救援包(用户名:root , 密码:CNBoy.org) |
6、恢复镜像到 /dev/sdb
分区(如果你的引导卷加载路径不用,请自行修改路径)
1 | 说明:为了防止你在SSH连接在恢复数据中途中断导致失败,建议使用 srceen 后台窗口运行以下命令 |
7、恢复过程中你可以新开一个SSH窗口,然后运行以下命令后不要关闭,切换回恢复命令的窗口查看进度
1 | watch -n 5 pkill -USR1 ^dd$ |
8、等待镜像恢复完成后,到甲骨文后台,新建的AMD中卸载掉刚刚附加的块储存卷,并至ARM实例中挂载回这个引导卷。然后启动ARM实例。SSH连接ARM,你就会发现你的ARM又复活了!
接下来修改为自己的密码就可以开始使用了。或是对上面提供的救援包不放心的话,再参考《萌咖一键DD纯净系统脚本(2021年8月最新版) CentOS/Debian/Ubuntu》或《全自动一键网络重装脚本(DD脚本)》自行DD为所需系统。
另外,现在不只是ARM,有些地区的AMD资源也出现了紧缺的情况,所以一旦玩儿坏删机就很难开出来了。博主建议大家都自行备份制作一份 AMD / ARM 救援包。
备份步骤前4步与上面一样,挂载好引导卷之后,SSH执行已下命令进行备份制作。待完成后,将 own.img.gz
下载下来自己备存即可。
1 | dd if=/dev/sdb | gzip > /root/own.img.gz |
本文引用自:四海部落
]]>Set cron schedule · Actions · GitHub Marketplace · GitHub
Set the cron schedule for a GitHub Action
https://github.com/marketplace/actions/set-cron-schedule
但由于不支持秒级的定时设定,使得这一cron格式与标准的cron有所不同,在使用过程中需要注意!
Github / Gitlab Actions 中的Cron格式
该cron有五个由空格分隔的字段,每个字段代表一个时间单位。第一个数字代表分钟,第二个数字代表小时,第三个数字代表日,第四个数字代表月,第五个数字代表星期。
此外,该cron指定的是格林尼治时间**(UTC)*,如果需要换算成北京时间*,要在该cron的基础上增加八小时**得到北京时间。
例如 0 1 * * *
表示在每天 格林尼治时间的 1:00 AM,也就是在北京时间的 9:00 AM 自动运行。
1 | on: |
关于每个部分的设定如下表:
*字段* | *允许值* |
---|---|
分 | 0-59 |
小时 | 0-23 |
日期 | 1-31 |
月份 | 1-12 或者 JAN-DEC |
星期 | 0-6 或者 SUN-SAT |
可以在五个字段中的任意一个字段中使用运算符:
符号 | 描述 | 示例 |
---|---|---|
* | 任意数值 | 15 * * * * 在每天的每个小时的15分运行 |
, | 数值列表分隔符 | 2,10 4,5 * * * 在每天的第4和第5个小时的第2和第10分运行 |
- | 数值范文连接 | 30 4-6 * * * 在每天的第4和5和6小时的30分运行 |
/ | 步进数值 | 20/15 * * * * 在每天的每个小时中,从第20分钟到59分钟每隔15分钟运行一次(即20分、35分和50分运行) |
注意:
可以参考官方Doc中的schedule部分:
Events that trigger workflows - GitHub Docs
https://docs.github.com/en/actions/using-workflows/events-that-trigger-workflows
目前注意到了两个区别,第一,是位数区别,不能设置秒;第二,是星期的允许值不同,从0开始而非从1开始。常规的Cron表达式格式如下。
1 | 特殊符号: |
注意:除了{日期}和{星期}可以使用”?”来实现互斥,表达无意义的信息之外,其他占位符都要具有具体的时间含义,且依赖关系为:年->月->日期(星期)->小时->分钟->秒数。
推荐两个好用的表达式生成工具,第二个可以给出运行时间进行人类可读的验证。需要注意将该表达式调整位数和星期的设置,以应用在 Github / Gitlab Actions 中。
Cron - 在线Cron表达式生成器
在线Cron表达式生成器
参考教程:
https://www.jianshu.com/p/e9ce1a7e1ed1
原文链接:
https://blog.csdn.net/Ximerr/article/details/123501772
]]>为了想让更多人看到博客的文章,更好的让百度站点收录,添加了hexo-abbrlink插件实现博客生成永久链接,但安装这个插件之后发现我的博客图片不显示了(gitee加了防盗链。图床出现了问题,我现在用的都是本地图片,文章使用相对路径引用图片)
hexo-asset-image
和hexo-abbrlink
这两个插件出现了冲突。解决方案也有很多,最主要就是更改插件目录下的index.js
文件。但改了之后发现问题并没有解决。最后
使用了网友更改的hexo-asset-image
插件之后,完美解决。
1 | npm install https://github.com/foreveryang321/hexo-asset-image.git --save |
项目地址
hexo-abbrlink
插件_config.yml
博客配置文件中post_asset_folder: true
启用。logo.jpg
:![logo](logo.jpg)
![logo](MacGesture2-Publish/logo.jpg)
![logo](D:/MacGesture2-Publish/logo.jpg)
{% asset_img logo.jpg %}
参考地址 https://jinglong233.gitee.io/archives/bc1f87e
]]>dd系统即重装系统:如下表示将系统重置为 ubuntu20.04
系统,账号/密码:root/12345
注意事项:dd过程一定要耐心等待,不要胡乱操作比如去后台重启,容易失联。耐心等待10-30分钟。
1 | bash <(wget --no-check-certificate -qO- 'https://moeclub.org/attachment/LinuxShell/InstallNET.sh') -u 20.04 -v 64 -a -firmware -p 12345 |
说明:
同账号找一个新的实例;如果没有则创建一个amd免费的
ssh连接,然后执行sudo -i
进入root;
停止失联实例:注意是停止不是终止,一会还得挂载回来
分离引导卷
备用实例 -> 附加的块存储
选择刚刚分离的失联引导卷,类型ISCSI
,访问读写
ISCSI需要在主机上执行挂载分离命令,此处先复制链接命令,过会分离用分离命令
打开备用实例ssh,输入复制的连接命令
注:此系统为原作者简化dabian系统,主要为了快速恢复失联;等待失联恢复后如需要其他系统,可使用一、中脚本重新dd
下载镜像cd /root && wget https://app.isos.cc/dabian.sdb.gz
dd系统gzip -dc /root/dabian.sdb.gz | dd of=/dev/sdb
新打开一个ssh窗口
1 | sudo -i |
然后重新回到此窗口,将发现dd正在进行中,一直等待到进度完成,此dd需要复制3.2G数据。
分离附加盘,3-3步骤的分离命令执行一下,控制台分离
回到失联实例-引导卷,再给附加回去
开机,使用 账号/密码:root/10086.fit
登录实例。
dd if=/dev/sdb | gzip > /root/ubuntu.img.gz
生成的压缩包在/root目录下,时间很长需要等待gzip -dc /root/ubuntu.img.gz | dd of=/dev/sdb
,过程如 二原文链接:小回博客
参考文章:https://10086.fit/1222
]]>开启自定义footer.njk配置
_config.yml
找到footer: source/_data/footer.njk
取消注释。blog\source\_data
新建footer.njk
文件。1 | <!-- 灯笼样式开始 --> |
hexo clean
& hexo g
& hexo s
预览。没问题 hexo d
部署。]]>代码转自:Roaing’s Blog
本站使用 NexT 主题,本文适用于使用NJK模板的主题
其它模板引擎,请相应修改,没试验过仅供参考
首先在Hexo\themes\next\layout\_third-party
目录下新建selectionCopyright.swig
文件
然后在文件里依次添加如下代码:
css:
1 | <style> |
Html:
1 | <button id="selectionCopyright" disabled="disabled">本文发表于[<a href="http://XXXX.com/">XXXX.com</a>]分享请注明来源!</button> |
javascript:
1 | <script> |
接着在\Hexo\themes\next\layout\_layout.swig
文件最后</body>
标签之前添加如下语句:
1 | {%- include '_third-party/selectionCopyright.njk' -%} |
最后在Git Bash
里执行$ hexo clean & hexo g -d (或 $ hexo s)
即可
以上是我用到的细节改变,并不一定适合你,请选择改动!
部分内容来自以下博客:
asifadeaway
% 号格式化字符串沿用的是C语言的方法,python官方也并未弃用%号,但也并不推荐这种格式化方式。
1 | # 1、格式的字符串(即%s)与被格式化的字符串(即传入的值)必须按照位置一一对应 |
该format方法是在Python 2.6中引入的,是字符串类型的内置方法。因为str.format的方式在性能和使用的灵活性上都比%号更胜一筹,所以推荐使用
1 | # 按照位置一一对应 |
1 | # 使用索引取对应位置的值 |
1 | # 可以通过关键字or字典方式的方式格式化,打破了位置带来的限制与困扰 |
1 | # 先取到值,然后在冒号后设定填充格式:[填充字符][对齐方式][宽度] |
1 | print('{salary:.3f}'.format(salary=1232132.12351)) #精确到小数点后3位,四舍五入,结果为:1232132.124 |
str.format() 比 %格式化高级了一些,但是它还是有自己的缺陷。当需要传入的字符串过多时,仍然会显得非常冗长。与在Python 3.6中引入 了f-strings,不仅比str.format更简洁,性能上也更胜一筹
f-string是以f或F开头的字符串, 核心在于字符串中符号{}的使用。
1 | name = 'egon' |
1 | # 可以在{}中放置任意合法的Python表达式,会在运行时计算 |
1 | class Person(object): |
1 | # 当格式化字符串过长时,如下列表info |
1 | # 当字符串嵌套发送冲突时,与正常的字符串处理方式是一样的 |
1 | #1、反斜杠可以用来进行字符转义,但不能用在{}的表达式中 |
基于3.5我们得知,不能在{}内出现反斜杠\,所以,当我们的输出的结果中需要包含{}时,下面的做法就是错误的
1 | print(f'\{天王盖地虎\}') |
类似于输出%号的做法
1 | print('%s%%' %30) |
若想输出{},那么需要在原有的基础上再套一层,如下
1 | print(f'{{天王盖地虎}}') # {天王盖地虎} |
1 | from timeit import timeit |
本文参考:详情地址
]]>拷贝一个 Git 仓库到本地,本地目录名称与Git 仓库同名
拷贝一个 Git 仓库到本地,重新定义本地目录名称
拷贝一个指定分支到本地,本地目录名称与分支同名
拷贝一个指定分支到本地,重新定义本地目录名称
之前了解了下travis-ci部署博客,虽然方便,但是毕竟设置麻烦,需借用第三方网站功能,前些天看到github也有自动化功能了,百度一番,结果倒是挺多,但是基本没有无错或是某些地方详细说明的,踩了无数的坑,尝试了无数次的操作,总结了此文,有些操作或设置会尽量做到无错,使有需要的人能完美使用。
因为我自己使用了Coding Pages和Github Pages两个,所以最终也会通过Workflow脚本部署到这两个仓库。这中间有一些东西要讲清楚。比如,博客部署到用户目录,还是项目目录,Coding Pages和Github Pages有什么区别,有什么改动,博客配置文件如何设置。
所有希望部署Github pages的仓库必须是 公开 仓库,或是升级为GitHub Pro
,官方原话为:Upgrade to GitHub Pro or make this repository public to enable Wikis.
Pages 类型 | Pages 默认分配的 URL | 允许的部署来源 |
---|---|---|
Github用户 Pages | {username}.github.io | master 分支、github-pages 分支、或 master 分支中的 /docs 目录 |
Github项目 Pages | {user_name}.github.io/{project_name} | master 分支、或 master 分支中的 /docs 目录 |
Github项目中的 /docs | {user_name}.github.io/{project_name} | master 分支、或 master 分支中的 /docs 目录 |
2020年以前还分用户和项目pages,在2020年以后,就统一了,URL样式都是统一的 http://XXXX.coding-pages.com
,其中XXXX是随机的数字+字母组合。有兴趣的可以查看官方帮助文档。coding官方搭建指南
本文以github用户Pages为前提。如果只是单独部署在github,随意是用户还是顶目都行,记得在hexo设置文件里设置:
第一个坑_config.yml
的root: /notes-action-pages
字段分两种情况:
root: /
root: /{project_name}
因为coding pages只有一种格式,和github 用户pages的格式相同,不再设置二级项目目录访问,如果在github 项目目录pages生成的静态文件,部署到coding pages时,会目录错误,比如CSS,访问页面找不到,如果有哪个读者知道有更好的解决办法,可以留言告诉我,谢谢。
为了不影响后边设置,请提前准备以下工作。
blog
, 主要存放博客源文源码及日后写作的md文档。{project_name}.github.io
。一个github用户名下,只能有一个仓库能设置为{project_name}.github.io
访问地址,也就是gh-pages
分支部署的结果。主要存放,public 静态页面的,空的新项目,或是已有的都行。具体使用方法,参考官方网站,或自行搜索,本文略过。
为了方便运行 GitHub Actions 时登录 GitHub 账号,我们使用 SSH 方式登录,需设置无密码访问登录。
第二个坑之前查阅网上资料时,没有人说,用以前现有的公私钥对,还是重新生成新的,公钥是配置在github 网站–>Settings–>SSH and GPG keys
还是{project_name}项目–>Settings–>Deploy keys
说明一下,这些设置的区别
以 windows 为例:密钥对文件在 C:\Users\用户名里,其中 Users 可能因为系统原因显示的是用户。这个文件夹里会有一个.ssh 的目录,这个里面就是我们的密钥对。其中 id_rsa 是私钥,id_rsa.pub 是公钥。
配置公钥,也就是 github 网站–>Settings–>SSH and GPG keys
的,如果以前就有可以直接用,不用生成新的,然后把 id_rsa.pub 这个文件用文本文档打开,将内容复制进去,如果没有就需要生成新的密钥对,配置方法一样。
配置私钥,把对应的私钥设置在 放置源码
如:上文提到的blog
仓库的Settings–>Secrets
,点击Add a new secret
创建一个,Name
可以随意,但是下文要用到我设置为:HEXO_DEPLOY_PRIVATE_KEY
,Value
就是与github以前用的公钥对应的私钥或新建对应的私钥内容。
如果没有则需要创建命令为:ssh-keygen -t rsa -C "Github 的邮箱地址"
。使用方法见第二条。
区别: github 网站–>Settings–>SSH and GPG keys
,这个是对{username}
用户名下所有的仓库都有读写权限。{project_name}项目–>Settings–>Deploy keys
,这个只是对本顶目有读写权限,下文部署hexo中用到了在Workflow 脚本clone 另一个不公开的主题仓库,所以本文设置为github 网站–>Settings–>SSH and GPG keys
如果还有不明白的自行找资料,本文不再赘述。
点击私有仓库上方里的 Actions
,点击set up a workflow yourself
创建一个新的 actions。自动命名为main.yml
,也可以自己命名。
然后在内容框填入以下代码:
脚本中用到的字段,需自己在源码仓库
Settings–>Secrets
添加。
HEXO_DEPLOY_PRIVATE_KEY
配置与网站对应的密钥。
GIT_NAME
配置名字,GIT_EMAIL
配置邮箱。
GH_TOKEN
配置。需要自己去 GitHub setting 里申请,方法自行百度。申请后,只显示一次,刷新或重新打开时,不再显示。记得复制保存下。配置时需填入。
CD_TOKEN
配置。需要到仓库的项目设置,然后在开发者选项的项目令牌申请。CDT_TOKEN 的内容为用户名:密码
。
1 | name: Hexo Blog CI # 自动化的名称 |
在本地生成hexo博客后,自建.github -> workflows -> xxx.yml
复制上边样本代码。
上边Actions
脚本中,有几点说明:
runs-on: ubuntu-latest
部署环境,虽然可用选项挺多,但是建议用ubuntu,因为私有仓库每月只有2000分钟,超出时间收费,收费如下:系统 | Linux(2 cores, 7GB) | Windows(2 cores, 7GB) | macOS(2 cores, 7GB) |
---|---|---|---|
收费 | $0.008/每分钟 | $0.016/每分钟 | $0.08/每分钟 |
官方说明文档
主题主题可以用别人的主题,也可以用自己修改或是开发的主题,使用时,可以在插件
部分,clone一下就好。
{GH_REF}
GitHub 仓库 HTTPS地址 不要用SSH地址,否则出错,我试用用SSH的写法,出错。
{GH_REF}
# coding 仓库 HTTPS 地址 不要用SSH地址,否则出错,同上。
git log --pretty=format:":lock: Actions CI: %s Site updated: %cd" --date=format:'%Y-%m-%d %H:%M:%S' > commit-message.log
就是自定义commit 的内容,个性化设置,及时间日期。
安装插件部分,如果是新建的博客,本地没有安装任何插件的,可以使用。如果本地已是完成了所有的插件安装,并已生成了包含所有依赖的
package.json
和package-lock.json
那么,只需要保留以下几个即可:
每个项目的根目录下面,一般都有一个package.json文件,定义了这个项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等元数据)。npm install命令根据这个配置文件,自动下载所需的模块,也就是配置项目所需的运行和开发环境。
1 | - name: 安装插件 # npm ls --depth 0 可查看自己安装了哪些插件 |
在博客设置页面_config.yml
,配置:
1 | skip_render: #跳过渲染文件或文件夹如: - test.html - test/* |
解决方式很简单,在博客根目录的配置文件中找到 skip_render 字段,添加值CNAME
,如果是多个值的配置如下:
1 | skip_render: #跳过渲染文件或文件夹如: - test.html - test/* |
然后在 /source
的目录中创建一个文件,命名为 CNAME
,里边的内容写你的域名。只写域名即可。例如 www.baidu.com
,不需要添加 http(s)://
详细使用方法:
skip_render:跳过指定文档的渲染,您可使用 glob 表达式来匹配路径。
未说明具体该怎么配置
修改的_config.yml配置文档应为站点文档夹下的,而非主题文档夹下的_config.yml配置文档
可以直接 Ctrl + F 查找 skip_render 关键字
如果要跳过source文档夹下的test.html,可以这样配置:
1 | skip_render: test.html |
1 | skip_render: [test.html] |
跳过多文档
如果要忽略source下的test文档夹下所有文档,可以这样配置:
1 | skip_render: test/* |
or
1 | skip_render: [test/*] |
如果要忽略source下的test文档夹下.html文档,可以这样配置:
1 | skip_render: test/*.html |
or
1 | skip_render: [test/*.html] |
如果要忽略source下的test文档夹下所有文档和目录,可以这样配置:
1 | skip_render: test/** |
or
1 | skip_render: [test/**] |
如果要忽略多个路径的文档或目录,可以这样配置:
1 | skip_render: |
or
1 | skip_render: [test.html, '*.html', test/**, test/*] |
参见:如何不处理source目录下某个子目录的所有文档,仅仅是将其copy到public目录中对应目录?
参见:小康博客
参见:eallion
对于如何安装软件到指定目前前,先要知道如何查看已安装软件的目录及位置的方法。在linux中软件一般默认都是安装在到/usr/share
和/usr/local
这两个路径下。但是:如果我们需要查看软件安装路径又怎么办呢?经过查询资料总结了四个办法。
本文包含了:linux查看软件安装路径,编译安装Git,编译安装python3及设置与python2共存的方法。
语法:
1 | find [path...] -options [-print / -ecex / -ok] |
其中:path表示要查找的目录路径~表示home目录
,.表示当前目录
,/表示根目录
等。
_options:有以下几种查找方式,按照名字查找(-name)
,按照文件类型来查找(-type)
等。
示例:找python find / -name python
结果为:
1 | /usr/share/gcc-8/python |
该指令会在特定目录中查找符合条件的文件。这些文件应属于原始代码、二进制文件,或是帮助文件。
语法:
1 | whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...] |
示例:找python whereis python
结果为:
1 | python: /usr/lib/python3.6 /usr/lib64/python3.6 /usr/include/python3.6m /usr/share/man/man1/python.1.gz |
which指令会在环境变量$PATH设置的目录里查找符合条件的文件。
语法:
1 | which [文件...] |
示例:找python which python
结果为:
1 | /usr/bin/which: no python in (/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin) |
其实,我是比较推荐后两种的。好用就是了,别问为什么,问就是简单好用。
以前也不明白,反正就是按教程上一顿复制粘贴,所以软件安装好了,也不知道安装在哪,为什么要这样做,反正就是糊涂的。这次借着安装CentOS8最小化安装后,学习一下软件安装,并记录下详细过程。
这次主要安装了两款软件,第一就是升级了python3 和编译安装了最新版的Git
原版本不记得了,可以用git --version
查看版本。目地卸载以前的版本,安装2.26版。
先卸载老版本
1 | sudo yum remove git |
注意,如果编译环境不完整,先安装一遍:
1 | sudo yum install -y curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc xmlto perl-devel perl-CPAN autoconf* |
因为最小化安装,当时边wget都不能用,顺便也一起安装了 yum -y install wget
进入 cd /usr/local/
下载安装包,一般来说,下载安装包都放这里,自己习惯别的地方也行。
执行下载源文件命令:
1 | sudo wget https://github.com/git/git/archive/v2.26.0.tar.gz |
接下来解压文件,tar命令也不让用,尴尬了,先安装了yum install -y tar
再继续:
1 | sudo tar zxvf v2.26.0.tar.gz |
解压到当前文件夹用 ls
命令可查看到,重点来了,一定要进入刚解压的文件,再操作。cd v2.26.0
,不然当你执行./configure --
命令时,显示-bash: ./configure: 没有那个文件或目录
,我踩过的坑之一。
执行 make configure
为了避免可能遇到的错误:make *** 没有指明目标并且找不到 makefile。
完成后执行-设置编译脚本:
1 | sudo ./configure --prefix=/usr/local/git |
说明:--prefix=
参数
Configure是一个可执行脚本,它有很多选项,在待安装的源码路径下使用命令./configure–help输出详细的选项列表。其中,prefix选项是配源置安装的路径,如果不配置该选项,安装后可执行文件默认放在/usr/local/bin,库文件默认放在/usr/local/lib,配置文件默认放在/usr/local/etc,其它的资源文件放在/usr/local/share,比较凌乱。
如果配置prefix,如:./configure –prefix=/usr/local/test可以把所有资源文件放在/usr/local/test的路径中,不会杂乱。 删起文件夹,删一个就行了,集中了。
接着就简单喽,就还有编译和安装了命令如下:
1 | sudo make |
执行完后,把新安装的git目录加入环境变量,然后加载环境变量使其生效,命令如下:
1 | sudo echo "export PATH=$PATH:/usr/local/git/bin" >> /etc/bashrc |
查看新安装的Git版本号git --version
显示git version2.26.0
就对了
到此为止,Git安装最新版就完成了。
这里做说明,测试环境在CentOS7,原来就有python27,需要安装python3,并使python2和python3共存,使用时输入python2则是进入python2.7,输入python则进入python3,当然pip的版本随python版本变化,下边会讲到。
首先,我自己的应用,因为安装的是CentOS7最小化安装,可能 pip 没安装,git 没安装,wegt没安装,等,所以这些要在安装前先安装到位。本文下方有安装方法。
我用的是 python3.7 版本,如果是 python3.6 以下的版本,可以不一定要下面这个命令安装这么多依赖,但如果是 python3.7 的话,那就要了:
1 | sudo yum install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel |
本次操作的原理
首先输入下面命令看一下当前 python2 的存在路径:
1 | which python |
显示的路径一般都是:/usr/bin/python
再输入下面命令看一下目前 /usr/bin目录下的 python文件有哪些:
1 | cd /usr/bin |
结果一般都是:python python2 python2.7
其实这几个文件是有固定链接关系的:
1 | [bin]$ ls -al python* |
这里的意思就是,系统在找 python时, python指向了 python2,而 python2又指向了 python2.7,所以我们接下来就是让系统在输入 python2时就是找 python2,而输入 python时去找 python3,这无非就是 Linux 的软链接技巧而已,下面我们正式开始干:
1 | sudo mv python python.bak |
其实,如果不备份也是没关系的,只要 python2 还在就行了,因为本来那个 python 就是一个软链接,可以通过下面命令使得 python 还原:
1 | sudo ln -s /usr/bin/python2 /usr/bin/python |
我们在 centos 上的一个目录下下载 python3 的安装包,我这里在 /usr/local下下载
cd /usr/local
1 | sudo wget https://www.python.org/ftp/python/3.8.2/Python-3.8.2.tgz |
如果显示 -bash: wget: 未找到命令
则要安装wget工具:
输入:yum -y install wget
走你。
sudo tar -xvf Python-3.7.3.tgz
sudo mkdir /usr/local/python3
进入解压缩后的文件夹 如:(Python-3.7.3文件夹)并编译
cd /usr/local/Python-3.7.3
sudo ./configure –prefix=/usr/local/python3
sudo make
sudo make install
-bash: ./configure: 没有那个文件或目录
这些命令上边有讲过,还不明白的,看上边Git安装。
注意的东西,再写一次:
1 | sudo ln -s /usr/local/python3/bin/python3 /usr/bin/python |
到此,可以说python3已经安装完成了。
1 | python |
这里有个小知识点:CentOS7 和 CentOS8的小区别,8的包管理由DNF (YUMv4)完成。yum4基于DNF技术,yum4命令提供了与早期版本中使用的Yum v3的向后兼容性。CentOS 8里的 yum 命令只是到dnf的一个符号链接。CentOS 7 yum基于3.0.x版本。
这时,你会发现 yum 用不了了,那是因为本来 yum 是基于 python2 的,我们把 python 改为 python3.7 了,而 yum 还没有自动更改,所以我们要改动一下:
1 | sudo vi /usr/bin/yum |
保存退出,再输入 yum试一下?
那么,我们做了这么多,究竟是做了些什么呢?输入下面代码可以查看:
1 | [bin]$ ls -al python* |
1 | sudo ln -s /usr/local/python3/bin/pip3 /usr/bin/pip |
1 | yum -y install epel-release |
CentOS7 多个python版本共存,解决yum命令安装错误:SyntaxError: invalid syntax
由于用户取消而退出
必须修改的两个yum配置文件
因为yum使用python2,因此替换为python3后可能无法正常工作,继续使用这个python2.7.5,因此需要修改yum相关配置文件。
第一行:#!/usr/bin/python –> #!/usr/bin/python2.7
第一行:#!/usr/bin/python –> #!/usr/bin/python2.7
完成上面两步,现在使用yum命令基本不会出现这样的错误:SyntaxError: invalid syntax
由于用户取消而退出
本文参考了以下两篇博文
博文一
博文二
记录一次hexo博客Next主题,升级失败,重新安装的过程。
注:博客目录为”My_blog”
其它主题配置请参照备份文件
自动备份
自动打开编辑器
npm outdated 查看所有包的版本
如果没有老版本的,就没有任何输出
如果有新版本的,会提示你需要更新到的版本
生成相关帖子和热门帖子的链接列表。另外,此插件可以获取帖子的访问者计数(PV)。
安装方法:博客根目录执行
1 | npm install hexo-related-popular-posts --save |
英文单词前后自动加空格
安装方法:博客根目录执行
1 | $ npm install pangu --save |
通过在空闲时间预取视口内链接来加快后续页面加载速度
安装方法:博客根目录执行
1 | npm install --save quicklink |
符号计数和阅读Hexo文章的时间。
安装方法:博客根目录执行
1 | $ npm install hexo-symbols-count-time |
Hexo_config.yml
(位于博客的根目录中)中设置选项。
1 | # 添加文章标题下字数统计、阅读时间,底部总阅读时间和代码量 |
主题_config.yml
中设置选项。
1 | symbols_count_time: |
一个插件,用于修复NexT主题站点和其他使用类似方式集成了此功能的站点的leancloud访客计数器中的严重安全错误。记录如何设置计数器并以英语或中文安全运行。
安装方法:博客根目录执行
1 | npm install hexo-leancloud-counter-security |
Hexo_config.yml
(位于博客的根目录中)中设置选项。
如果leancloud_counter_security
未指定(或注释),则插件将被完全禁用。
1 | leancloud_counter_security: |
主题_config.yml
中设置选项。
此插件集成在《 NexT》中,并且在主Hexo配置中启用该插件后,需要启用NexT配置中的选项:
1 | leancloud_visitors: |
搜索Hexo的数据生成器插件。
安装方法:博客根目录执行
1 | npm install hexo-generator-searchdb |
Hexo_config.yml
(位于博客的根目录中)中设置选项。
1 | search: |
主题_config.yml
中设置选项。
1 | local_search: |
安装方法:博客 主题 根目录执行
1 | git clone https://github.com/theme-next/theme-next-pace source/lib/pace |
Hexo_config.yml
(位于博客的根目录中)中设置选项。
1 | pace: |
安装方法:博客根目录执行
1 | npm install theme-next/hexo-next-tag |
使用方法:
1 | Example |
这个插件可以预览博客页面中的PDF文件。如果浏览器本身支持嵌入式PDF,则NexT将创建一个标签并将PDF文件包含在您的网站上。否则,它将创建一个标签,并使用@mozilla的PDF.js呈现pdf文件。
安装方法:博客 主题 根目录执行
1 | git clone https://github.com/theme-next/theme-next-pdf source/lib/pdf |
主题_config.yml
中设置选项。
1 | # PDF tag |
用法:
为了在文章中嵌入PDF文件,您只需要使用本地PDF文件的URL创建一个“ pdf”标签,例如
1 | {% pdf /path/to/your/file.pdf %} |
注意:请勿使用跨域PDF文件,因为它可能被CORS策略阻止。
安装方法:博客根目录执行
1 | npm install theme-next/hexo-next-title |
Hexo_config.yml
(位于博客的根目录中)中设置选项。或者
主题_config.yml
中设置选项。
1 | # 动态 Title 标题 |
安装方法:博客根目录执行
1 | npm install theme-next/hexo-next-utteranc |
Hexo_config.yml
(位于博客的根目录中)中设置选项。或者
主题_config.yml
中设置选项。
1 | # utteranc评论 |
安装方法:博客根目录执行
1 | npm install hexo-abbrlink --save |
Hexo_config.yml
(位于博客的根目录中)中设置选项。
1 | # permalink: :year/:month/:day/:title/ # 默认样式 |
问题1:
hexo d后 ERROR Deployer not found: git
解决:
这是因为没安装 hexo-deployer-git 插件,在站点目录下输入下面的插件安装就好了:
npm install hexo-deployer-git –save
报错2:
ERROR Plugin load failed: hexo-next-title
Error: Cannot find module ‘E:\My_blog\node_modules\next-util\index.js’. Please verify that the package.json has a valid “main” entry
解决:next-util插件去下载后,发现没有index.js
复制一个就好