- Ubuntu 上实现 ASF 服务 (2020.04)
- 环境
- ASF 服务搭建
- 主要步骤
- 安装 `.NET 框架 `
- Add Microsoft repository key and feed
- Install the `.NET` Core SDK
- Troubleshooting: Unable to locate package dotnet-sdk-2. 2
- Install the `ASP.NET` Core runtime
- ASF 下载
- 添加配置
- 使用参考示例来新建配置
- 自动生成配置
- 执行 ASF
- 初步测试
- 后台自动执行
- 关于 `Grandchild Process` 的保持运行
- 关闭后台执行的进程
- Troubleshooting
- ASF process is already running for this working directory, aborting!
- We don't have anything to idle on this account!
- 参考文献
- Ubuntu 上实现 ASF 服务 (2020.04)
- 环境
- ASF 服务搭建
- 主要步骤
- 安装
.NET 框架
- Add Microsoft repository key and feed
- Install the
.NET
Core SDK - Troubleshooting: Unable to locate package dotnet-sdk-2. 2
- Install the
ASP.NET
Core runtime
- ASF 下载
- 添加配置
- 使用参考示例来新建配置
- 自动生成配置
- 执行 ASF
- 初步测试
- 后台自动执行
- 关于
Grandchild Process
的保持运行 - 关闭后台执行的进程
- 关于
- Troubleshooting
- ASF process is already running for this working directory, aborting!
- We don't have anything to idle on this account!
- 参考文献
Ubuntu 上实现 ASF 服务 (2020.04)
你竟然都进来了这篇文章, 那么我默认你知道 ASF 的功能, 知道 ASF 的潜在价值, 也默认你知道需要折腾一番了
环境
- AWS EC2 Ubuntu 16.04
- ASF 4.2
ASF 服务搭建
主要步骤
官方指导
In general, here is what we'll do in the next few minutes:
- Install .NET Core prerequisites.
- Download latest ASF release in appropriate OS-specific variant.
- Extract the archive into new location (and chmod x ArchiSteamFarm if you're on Linux/OS X).
- Configure ASF.
- Launch ASF and see the magic.
安装 .NET 框架
.NET
这版本经常会改变, 所以主要还是要参考 MS 的 安装指导页面, 找到 Ubuntu 16.04 / Linux Mint 18
对应的最新版本.
切记要在查看最新版本的时候选成你自己的环境所需要的版本。
Add Microsoft repository key and feed
代码语言:javascript复制wget -q packages-microsoft-prod.deb https://packages.microsoft.com/config/ubuntu/16.04/packages-microsoft-prod.deb
sudo dpkg -i packages-microsoft-prod.deb
Install the .NET
Core SDK
代码语言:javascript复制sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-sdk-2.2
Troubleshooting: Unable to locate package dotnet-sdk-2. 2
截止 2020. 04,
.net
已经 3.1 版本, 并且 2.2 版本已经不再维护, 但是我们依然要安装 V2.2
If you receive an error message similar to Unable to locate package {the . NET Core package}, run the following commands.
代码语言:javascript复制sudo dpkg --purge packages-microsoft-prod && sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install {the . NET Core package}
If that doesn't work, you can run a manual install with the following commands.
代码语言:javascript复制sudo apt-get install -y gpg
wget -O- https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor -o microsoft.asc.gpg
sudo mv microsoft.asc.gpg /etc/apt/trusted.gpg.d/
wget https://packages.microsoft.com/config/ubuntu/18.04/prod.list
sudo mv prod.list /etc/apt/sources.list.d/microsoft-prod.list
sudo chown root:root /etc/apt/trusted.gpg.d/microsoft.asc.gpg
sudo chown root:root /etc/apt/sources.list.d/microsoft-prod.list
sudo apt-get install -y apt-transport-https
sudo apt-get update
sudo apt-get install {the . NET Core package}
Install the ASP.NET
Core runtime
代码语言:javascript复制sudo add-apt-repository universe
sudo apt-get update
sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install aspnetcore-runtime-3.1
ASF 下载
跑到他们 Github 从找到最近一次 release
, 然后复制对应下载链接, 使用 wget
下载到服务器, 然后解压.
mkdir ASF
wget https://github.com/JustArchiNET/ArchiSteamFarm/releases/download/3.4.1.8/ASF-generic.zip
mv ASF-generic.zip ASF
cd ASF
unzip ASF-generic.zip
这时候可能要跑一遍 chmod x ArchiSteamFarm
来确保这个文件有可执行权限
添加配置
可有两种方法修改 / 添加配置
使用参考示例来新建配置
进入 /config
文件夹, 新建一个配置文件
vim xxx.json
下方有一个我所使用的配置, 需要将下方注释的三行修改掉, 同时记得将下面的注释也一起删掉:
代码语言:javascript复制{
"AcceptGifts": false,
"AutoSteamSaleEvent": false,
"BotBehaviour": 0,
"CustomGamePlayedWhileFarming": null,
"CustomGamePlayedWhileIdle": null,
"DismissInventoryNotifications": false,
"Enabled": false, ##### 本地测试通过后改成 true
"FarmingOrder": 0,
"FarmOffline": false,
"GamesPlayedWhileIdle": [],
"HandleOfflineMessages": false,
"HoursUntilCardDrops": 3,
"IdlePriorityQueueOnly": false,
"IdleRefundableGames": true,
"LootableTypes": [
1,
3,
5
],
"MatchableTypes": [
5
],
"PasswordFormat": 0,
"Paused": false,
"RedeemingPreferences": 0,
"SendOnFarmingFinished": false,
"SendTradePeriod": 0,
"ShutdownOnFarmingFinished": false,
"SteamLogin": null, ##### 改成你的账号
"SteamMasterClanID": 0,
"SteamParentalPIN": "0",
"SteamPassword": null, ##### 改成你的密码
"SteamTradeToken": null,
"SteamUserPermissions": {},
"TradingPreferences": 0,
"UseLoginKeys": true
}
自动生成配置
真是够偷懒的
官方提供了 Config Generator
进去设置一下 bot 然后就可以下载一个 json 文件, 然后用各种魔法上传到 config
文件夹就行
执行 ASF
初步测试
本地先测试一下:
代码语言:javascript复制./ArchiSteamFarm.sh
如果你之前有过邮箱来收取验证码的话,它会要求你输入验证码。
后台自动执行
代码语言:javascript复制chmod x ./ArchiSteamFarm.sh
sh -c './ArchiSteamFarm.sh &'
上面这段语句, 开启了一个子进程执行 sh
, 并且在 sh 里面继续执行了 ./ArchiSteamFarm &
因此, ASF 就跑到了 Grandchild Process
之中, 也就是 ** 孙子进程 **
虽然是在后台执行,但是他依然会在 CLI 里面要求你提供对应的邮箱验证码。
然后再关闭 Terminal 就不会关闭 ASF, 使其可以在后台运行.
关于 Grandchild Process
的保持运行
有几种情况在一个进程关闭的时候令其子进程一同关闭:
- Terminal 消失的时候, 发送一个
SIGHUP
信号给 Controlling Process - Shell 关闭的时候, 发送一个
HUP
信号给所有的 Job
可以用下面几个方法让其保持运行:
NOHUP
的子进程, 会忽略父进程的关闭请求, 并且继续执行, 这个方法阻断的上面第二种Shell 关闭
的HUP
型号- 使用
disown
强行忽略关闭请求, 这个可以将 job 移出 Shell 的 job list, 从而阻断后续的关闭 - Double Forking: 当前 Shell 执行一个子进程, 并且子进程立刻执行孙子进程, 当前进程并不了解孙子进程
在这种情况之下就不会关闭孙子进程
关闭后台执行的进程
使用 ps
查看进程号, 然后 kill [pid]
即可
Troubleshooting
ASF process is already running for this working directory, aborting!
已经有一个进程在跑 ASF 了, 需要重新执行的话, 执行 ps -ef | grep Arch
找一下已经执行的进程,然后 kill {pio}
强行关闭
We don't have anything to idle on this account!
看到这个错误信息代表已经跑成功了
只是这个账号下面已经没有可以挂卡的游戏了, 等下次你买的新游戏他还会帮你挂起来的。
参考文献
- https://github.com/JustArchi/ArchiSteamFarm/wiki
- https://steamcn.com/t324478-1-1
- https://unix.stackexchange.com/questions/158727/is-there-any-unix-variant-on-which-a-child-process-dies-with-its-parent/158736#158736