Windows Powershell 01 后台任务

Windows Powershell 01 后台任务

[!summary]+
有一些希望能在后台运行的任务,例如 nohup,tmux,screen 可实现的一些功能,简单介绍以下 powershell 中的类似用法和功能。

To run a Command Prompt (cmd.exe) command in the background from PowerShell and retrieve it later, similar to sessions in tmux, you can use PowerShell Jobs. PowerShell Jobs allow you to start a command or script in the background and then retrieve the results later. Here’s how you can do it:

从 PowerShell 在后台运行命令提示符 (cmd.exe) 命令并稍后检索它(与 tmux 中的会话类似),可以使用 PowerShell Jobs。 PowerShell Jobs 允许在后台启动命令或脚本,然后稍后检索结果。

具体的一些操作如下:

Start a Job in the background

使用 Start-Job 和 ScriptBlock 参数执行选定的命令

1
$job = Start-Job -ScriptBlock { pwsh.exe /c "your_command_here" }

这里将 your_command_here 改为自己需要执行的命令,例如启动局域网内可访问的 Stable-Diffusion Webui:

1
$job = Start-Job -ScriptBlock { pwsh.exe /c ".\webui.bat --xformers --listen" }

如果需要同时执行多条命令(例如执行 python 命令之前需要切换环境,默认为 base 环境)可以使用 &&

1
$job = Start-Job -ScriptBlock { pwsh.exe /c "conda activate flask && python .\app.py" }

Windows端口异常占用

Windows端口异常占用

Windows11基于 WSL2启动 docker 后报错如下(需要注意有时候使用启动命令会报错,但是 restart 命令 docker 可以运行,对应服务无法访问)

Bind: An attempt was made to access a socket in a way forbidden by its access permissions.

观察错误发现占用的信息为2345,从 windows 和 wsl 中分别查看端口是否被占用:

1
netstat -aon|findstr "2345"
1
netstat -tunlp | grep 2345

均显示没有被占用,这可能是由于协议 tcp 使用的动态端口问题导致,可以使用管理员权限在 powershell 或者 cmd 中执行下列命令查看端口是否在动态范围中:

动态范围可能是由于 hyper-v 的原因修改过起始端口,所以可能会发现关闭 hyper-v 后没有占用的情况的现

1
netsh int ipv4 show dynamicport tcp

如在,修改动态范围,之后使用的时候避开这些端口即可。

1
netsh int ipv4 set dynamicport tcp start=49152 num=16384

重启电脑即可生效。


Docker-App 1 Backup Photos by Immich

Docker-App 1 Backup Photos by Immich

手机到电脑端的图像备份和预览往往是一个大问题,特别是当多个手机要备份的时候,说难不难,但说简单也确实有很多麻烦的地方,因此我推荐 Immich 的解决方案。

Immich 是一个基于个人开发者开发的开源 Github 项目,immich-app/immich,该解决方案有以下的一些优势:

  • 移动端支持:移动端实现便于手机的随时和自动同步;
  • 多用户支持:多用户的权限管理、分割、以及用户间的相册共享;
  • Live 格式支持:支持各种原生格式存储,

Self-hosted photo and video backup solution directly from your mobile phone.

因此我本人推荐按照以下的方式来使用:针对家庭等环境,多用户部署在 NAS 或者某台 PC 上,可以长期或者定期的启动备份服务,然后就可以将手机中的照片空间释放掉。由此可以实现:

  1. 通过共享文件夹共建家庭相册;
  2. 权限分割个人相册;
  3. 定期/自动备份手机中的照片,并清理对应的存储空间;

Windows App01 Potplayer & Alist

Windows App01 Potplayer & Alist

本篇主要介绍一下播放器 PotPlayer 的设置以及结合 Alist&小雅 alist 的使用,这样就可以直接在播放器访问本地网盘上的内容,便于使用和观看。

Alist Deploy

Alist 作为一个网盘管理中心,可以将各大网盘中的资源进行统一管理,同时支持视频的 webdav 播放,这里推荐的安装方式是使用 Docker-Compose 进行安装,根据自己的情况来选择对应的挂载和安装目录。

由于官方的文档已经事无巨细,这里就不在赘述如何安装和配置 alist 的各个网盘挂载,详情参见:Home | AList Docs (nn.ci)

安装完并启动 Alist 服务即可,记住自己的端口和设置的账号密码

Aria2离线下载支持

该部分介绍如何通过 docker 为 Alist 添加 Aria2 作为离线下载服务,以及一些常见的问题解决方法。

参考资料:aria2-pro | aira2-pro-github | aria2认证失败

这里介绍使用 docker-compose 安装 aria2的方法,并将 docker 版本的 aria2和 alist 结合起来使用,在基于 docker 安装之前,我们先准备几个文件夹:

1
2
cd <your-path-2-aria2> && mkdir aria2-config && chmod 777 aria2-config
mkdir aria2-downloads && chmod 777 aria2-downloads

其中 downloads 目录是我们用来下载文件的目录,我们也可以使用挂载的目录或者共享的目录来存储下载的文件;然后我们准备一下 alist 中用于离线下载的目录,该目录需要在 alist 的 docker 和 aria2的 docker 中都将该 volume 挂载到同一个地方

本文将 aria2的队名目录挂载到 alist 的对应目录中,对应的 alist 的 compose 文件有

image.png

而 aria2的 compose 文件则有:

image.png

再将该目录的权限改成777,chmod 777 <this-dir> 之后即可再 alist 中离线下载成功,而且该下载文件会在指定的网盘中上传,当上传完成时会删除临时文件,不占用本地磁盘空间。

完整的 Compose 文件可以参考 Aria2-Pro-Docker/docker-compose.yml at master · P3TERX/Aria2-Pro-Docker · GitHub 官方的配置进行安装,我个人的 compose 文件则会上传到AikenH/aikenh-DockerComposeYML (github.com)中。

Aria2Ng 界面认证失败的问题,是因为我们再 compose 中设置了密码之后,要在该界面的设置中设置密码后才能正常认证。

image.png

密码需要到如下地方设置:

image.png

设置完成后应该就不会有认证失败的提示了。

alist 设置 Aria2失败,由于使用的 docker 部署的 aria2,这里不能使用 localhost,要使用对应的 ip 来设置该服务,如下图所示

image.png

完成这些设置后应该就可以正常使用了,但是由于现在都是网盘场景更多,所以离线下载的可能使用场景也有限,而且通过测试发现,如果完全装在树莓派上的话,可能会对系统的性能造成一定的负担。

Xiaoya Deploy

Xiaoya 是基于 Alist 做改版的个人资源站,里面涵盖了大量的影视资源,并在不断的更新,通过在本地挂载 xiaoya 我们也可以用来通过 webdav 在播放器中直接选择视频进行播放,大多数情况下都免去了找资源的痛苦。

官方网站:主页 | 小雅的分类 Alist (xiaoya.pro)

拥有了 Docker 环境后,就可以基于 xiaoya 提供的脚本实现一键拉取镜像和启动 Docker,默认的端口是 5678,安装指令如下:

1
sudo bash -c "$(curl -s http://docker.xiaoya.pro/update_new.sh)"

安装过程中会需要填入如下内容:token、open_token、转存目录的 folder id,具体和后续更新参考配置页,(跟随安装引导界面进行安装即可。)


Windows Configuration05 CUDA & Cudnn

Windows Configuration05 CUDA & Cudnn

在 Windows 和 WSL2 中安装 Cuda 和 Cudnn ,是配置 GPU 开发环境中重要的一步,其支撑了 AI 模型进行 Training 和 Interface 。本篇介绍安装 CUDA 和 Cudnn 的步骤和一些踩过的坑。

参考资料如下:版本查看 | Win 安装 Cuda 和cuDNN | WSL 2 安装 CUDA 和cuDNN

Win 11 安装 CUDA 和 cuDNN

CUDA

首先在 Nvidia 的控制面板:帮助-系统信息的如下位置,查看 GPU 最大支持的 CUDA 版本:

image.png

也可以使用 Nvidia-smi 命令在 Powershell 或者 CMD 中查看:

image.png

确定了版本之后到 Nvidia CUDA下载页面 下载指定版本的 CUDA 进行安装(根据安装指引进行)即可,安装位置等默认即可,其中有一些安装选项即是 Nvidia GeForce Experience 安装的内容。

安装完成后在 CMD 或者 PowerShell 确认是否安装完成(需要重启终端):

1
nvcc -V

image.png


内网穿透(NAT穿透)

内网穿透(NAT穿透)

本文简要介绍对内网穿透技术、对内网穿透技术的需求以及介绍一些用于”个人”进行内网穿透的工具和使用。

1. 什么是内网穿透(NAT traversal)

在计算机科学中,NAT穿越(NAT traversal)涉及TCP/IP中的一个常见问题,即在处于使用了NAT设备的私有TCP/IP网络中的主机之间创建连接的问题。

其中 NAT 即网络地址转换(Network Address Translation)在计算机网络中是一种在 IP 数据包通过路由器或防火墙时重写来源 IP 地址或目的 IP 地址的技术。这种技术被普遍使用在有多台主机但只通过一个公有 IP 地址访问互联网的私有网络中。它是一个方便且得到了广泛应用的技术。当然,NAT 也让主机之间的通信变得复杂,导致了通信效率的降低。

NAT 是作为一种解决IPv4地址短缺以避免保留 IP 地址困难的方案而流行起来的。NAT 成了家庭和小型办公室网络连接上的路由器的一个标准特征。

其中最为常见的 NAT 设备就是家家户户都有的路由器,将所有的设备在局域网中统一管理,并基于唯一的公网 ip 对互联网(私有网络)进行访问。

而 NAT 会带来以下的问题,因此会需要内网穿透的技术:

  • 外网主动发起的服务无法准确的定位到内网的指定机器,会被 NAT 设备丢弃,因此链接会变成单项的,无法双向交互。

因此无法在外网访问内网机器提供给局域网的服务,因此我们的机器,我们部署于 NAS、docker 的服务就只能在局域网中访问,在一定程度上就造成不便。


Windows Powershell 00 Install and Config

Windows Powershell 00 Install and Config

Update:@20230214

shift+右键: 在此处打开 powershell.

PowerShell ,这里的 PowerShell 和 windows 的已经不是同一个东西了,可能要更先进一些,通过 msi 进行安装,安装完后重启 terminal 就会自动的添加配置,后续的配置在这个 new shell 中进行会更好一些

Basic Setting

Setting & Cancel Proxy

设置代理如下:

1
2
3
netsh winhttp set proxy 127.0.0.1:8890
# 查看代理设置情况
netsh winhttp show proxy

取消代理设置使用:

1
netsh winhttp reset proxy

Windows Configuration03 LAN sharing
Windows Configuration02 Terminal

Windows Configuration02 Terminal

Config Windows Terminal in Win11

Install 安装

windows terminal 在 win11 已经自带,无需安装,如果需要安装的话在 Microsoft Store 下载即可,默认的 terminal 在中文环境中可能要搜索 windows 终端。

Baisc 基础设置

新版的 Windows Terminal 有了图形化配置界面,因此配置简单和直观了不少,该部分就简要的介绍一下基础的设置。通过 Ctrl+, 或者下拉菜单可以打开设置页面。

完成每一部分的修改后记得保存


Windows Configuration01 WSL2

Windows Configuration01 WSL2

WSL(Windows Subsystem Linux) 将 Linux 环境部署在 Windows 中,Linux 环境在补全了 Windows 开发上的不足之外(Bash 等),还有以下的几个特性极大的便利开发和日常使用,因此强烈推荐启用并安装。

  • win11 中 wsl2 已经支持相应主机的 cuda,便利了机器学习的开发;
  • 子系统中通过/mnt 挂载了 windows 的磁盘,可以通过子系统访问和管理 windows 环境;
  • windows 资源管理器可访问和管理子系统中的文件
  • 支持 windows 打开子系统中的 GUI 应用

无论是将 windows 和 linux 分别作为日常和开发的环境来隔离,还是两个协同去做开发和日常,都是一个比较不错的选择,下面就介绍一下如何安装和使用 WSL2。

  • 开始之前可以参考 windows terminal 安装一下这个官方的终端模拟器,在 windows 上的表现是比较优秀的
  • 如果是考虑在 windows 环境开发的话,也可以参考这个[windows],里面有我个人推荐的一些应用。

启用并安装 WSL2

安装和启用 WSL2 需要在 windows 的服务中勾选 Hyper-V 和 Windows Subsystem Linux 支持两个选项,具体操作如下:

  1. Win + S 搜索 “功能”,打开启用或关闭 windows 功能
  2. 启用对应功能,功能安装完毕后即可
    image.png
    image.png
  3. 安装 linux 发行版可以在 windows store 安装,也可以通过如下的命令进行安装:
1
2
3
4
5
6
7
# 列出对应的发行版
wsl -l -o
# 选择相应的发行版进行安装
wsl --install -d <Distribution Name>
# 如果当前的WSL是1版本,更新到2
wsl -l -v
wsl --set-default-version 2

Windows Configuration00 系统初始配置

Windows Configuration00 系统初始配置

@AikenHong 2020

本文介绍个人的 windows 开发环境搭建(包括一些环境安装、功能启用)以及一些使用的小 tips。

软件推荐

Windows 的账号同步功能善用,减少在环境迁移的时候对浏览器插件和 Vscode 插件的繁琐同步步骤。

同时对 Onedrive 和外接硬盘的应用可以很好的减轻备份的负担,在网络环境对 Onedrive 友好的时候还是推荐使用,在 Mac 和 Windows 上都有一个比较好的体验。

一些基础的软件

Software Type Free? & source
Powertorys system enhance y & github
Translucent beautify y & Microsoft Store
Snipaste system enhance y & offical site
Clash for windows proxy y & github
everything search-file y & offical site
Potplayer Player y & offical site
Twinkle Tray screen control y & offical site
7 zip system enhanc y & offical site
Zerotier NAT y & offical site
Nerd Font Font y & offical site
Wallpaper Engine beautify n & steam
MyDockerFinder beautify n & steam
IDM Download n & offical site

开发工具

Software Type Free? & source
Windows Terminal Terminal Simulator y & Microsoft Store
Powershell 7 Shell y & Github
VsCode Editor y & Offical Site
Visual Studio IDE y & Offical Site
Interllij IDEA IDE n & Offical Site
Git - -
Nodejs - -
Anaconda - -

文档编写

Software Type Free & Source
Obsidian Markdown Editor y & offical-site
Typora Markdown Editor n & offical-site
Picgo Image Upload y & offical-site
CopyTranslate Translate y & offical-site
Mathpix Snipping Tool Latex Formulate - & offical-site

Daily

Software Free & Source
Office n & offical-site
Tim y & offical-site
WeChat y & offical-site
OneDrive y & offical-site
Steam - & offical-site
Epic - & offical-site
yy y & offical-site
uu n & offical-site
网易云 y & offical-site

开发环境配置