Ubuntu上实现ASF服务

今天被别人安利 Steam 挂卡软件 ArchiSteamFarm。 主要的功能就是自动帮忙使用 steam 账号进入游戏并且获取各类收集卡片。

如果你是浅玩家,收集卡片实在没有什么大的用途,但是如果你是高玩(steam游戏>200),那么所有卡片收集下来还是有一定价值的。

环境

  • AWS EC2 Ubuntu 16.04

服务搭建

官方指导

In general, here is what we’ll do in the next few minutes:

  1. Install .NET Core prerequisites.
  2. Download latest ASF release in appropriate OS-specific variant.
  3. Extract the archive into new location (and chmod +x ArchiSteamFarm if you’re on Linux/OS X).
  4. Configure ASF.
  5. Launch ASF and see the magic.

下面一步步来处理。

安装 .NET 框架

直接跑 MS 的安装指导页面,找到 Ubuntu 16.04 / Linux Mint 18 对应的最新版本。

按顺序执行下面的代码就行:

Register Microsoft key and feed

Open a command prompt and run the following commands:

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 .NET SDK

Update the products available for installation, then install the .NET SDK.

In your command prompt, run the following commands:

sudo apt-get install apt-transport-https
sudo apt-get update
sudo apt-get install dotnet-runtime-2.0.7

ASF下载

跑到他们 Github 从找到最近一次 release ,然后复制对应下载链接,使用 wget 下载到服务器,然后解压。

这时候可能要跑一遍 chmod +x ArchiSteamFarm 来确保这个文件有可执行权限

添加配置

可有两种方法修改/添加配置

手动添加配置

进入 /config 文件夹,可以看到几个 json 文件,我们 copy 一个 example.json 并且重命名:

cp example.json xxx.json

然后打开这个新建的 配置文件

vim xxx.json

其他啥都不用改,就只要改这3行就可以:

{
    "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

进去设置一下然后就可以下载一个 json 文件,然后用各种魔法上传到 config 文件夹就行

执行ASF

很多攻略说使用 screen 进行后台执行,其实只要扔到 Grandchild Process 即可解决后台执行的问题。

sh -c './ArchiSteamFarm &'

上面这段语句,开启了一个子进程执行 sh,并且在 sh 里面继续执行了 ./ArchiSteamFarm &

因此,ASF 就跑到了 Grandchild Process 之中, 也就是孙子进程

然后再关闭 Terminal 就不会关闭 ASF,使其可以在后台运行。

关于 Grandchild Process 的保持运行

我真是要恶补一下 OS 相关的知识了

一般情况下:

When a process exits, all its children also die (unless you use NOHUP in which case they get back to init).

但是确实也有一些例外:

  1. NOHUP 的子进程,会忽略父进程的关闭请求,并且继续执行
  2. 使用 disown 强行忽略关闭请求
  3. 当前 Shell 执行一个子进程,并且子进程立刻执行孙子进程(我用的就是这个方法)

在这种情况之下就不会关闭孙子进程

关闭后台执行的进程

使用 ps 查看进程号,然后kill [pid] 即可

参考文献

  • 文章标题: 《Ubuntu上实现Steam挂卡服务-ArchiSteamFarm》
  • 发布日期: 2018-05-26
  • 文章分类: Tech
  • 相关标签: Linux Steam