Skip to content

Command line arguments zh CN

ArchiBot edited this page Apr 19, 2024 · 74 revisions

命令行参数

ASF 支持一些能够影响程序运行时行为的命令行参数。 高级用户可使用这些参数以定义程序应以何种方式运行。 与使用 ASF.json 配置文件的默认方式对比,命令行参数可用于核心初始化(如 --path)、平台特定设置(如 --system-required)或敏感数据(如 --cryptkey)。


用法

用法受您的操作系统及 ASF 包版本的影响而有所变化。

Generic:

dotnet ArchiSteamFarm.dll --参数 --另一个参数

Windows:

.\ArchiSteamFarm.exe --参数 --另一个参数

Linux/macOS:

./ArchiSteamFarm --参数 --另一个参数

ArchiSteamFarm.cmdArchiSteamFarm.sh 的这样的助手脚本也可使用命令行参数。 除此之外,您也可以使用 ASF_ARGS 环境变量,如管理Docker 两节所示。

若您参数包括空格,请记得要使用引号将其括住。 下面是两个错误示例:

./ArchiSteamFarm --path /home/archi/My Downloads/ASF # 错!
./ArchiSteamFarm --path=/home/archi/My Downloads/ASF # 错!

而下面两个例子完全正确:

./ArchiSteamFarm --path "/home/archi/My Downloads/ASF" # 正确
./ArchiSteamFarm "--path=/home/archi/My Downloads/ASF" # 正确

参数

--cryptkey <key>--cryptkey=<key>——将以值为 <key> 的自定义密钥启动 ASF。 此参数影响安全性且将导致 ASF 使用您所提供的自定义密钥 <key> 而非硬编码在程序中的默认密钥。 因为此属性会影响默认加密密钥(用于加密目的)和盐(用于加密目的),请记住,使用此密钥加密/哈希的一切都要求 ASF 每次运行时传入相同的值。

<key> 对长度和字符没有要求,但出于安全原因,我们建议选择足够长的口令,例如 32 位随机字符,一种获取方式是在 Linux 上执行 tr -dc A-Za-z0-9 < /dev/urandom | head -c 32; echo 命令。

需要指出,还有其他两种方式提供此信息:--cryptkey-file--input-cryptkey

由于该属性本身的性质,您也可以设置 ASF_CRYPTKEY 环境变量来设置此密钥,这更适合想避免在进程参数中暴露敏感信息的用户。


--cryptkey-file <path>--cryptkey-file=<path>——将从 <path> 文件中读取自定义密钥启动 ASF。 这与上文的 --cryptkey <key> 效果相同,仅有读取方式不同,此属性的 <key> 将会从 <path> 文件中读取 。 如果您将此选项与 --path 一起使用,则需要考虑到相对路径会根据参数出现的顺序变化,即 --path 参数在 --cryptkey-file 前后的行为不同。

由于该属性本身的性质,您也可以设置 ASF_CRYPTKEY_FILE 环境变量来设置此密钥文件,这更适合想避免在进程参数中暴露敏感信息的用户。


--ignore-unsupported-environment——使 ASF 忽略在不支持环境下运行的各种问题,这些环境在正常情况下会导致报错并强制退出。 不支持环境包括在 linux-x64 环境运行 win-x64 操作系统构建等情况。 此选项将允许 ASF 尝试在这些情况下运行,请注意我们并不支持这些操作,完全是您自己决定强制 ASF 这样运行,因而风险由您自己承担。 需要指出,所有在不受支持环境运行的情况都可以被改正。 我们强烈建议从根本上解决问题,而不是使用这参数。


--input-cryptkey——使 ASF 在启动时询问 --cryptkey。 如果您不希望在任何地方保存加密密钥,无论是通过环境变量还是文件,而更愿意每次启动 ASF 时手动输入,则可以使用此选项。


--minimized——使 ASF 在启动后马上最小化控制台窗口。 主要用于自动启动的场景,但也可能在其他场景下有用。 此选项需要适当的环境支持——它可能无法在所有场景下正常运作。


--network-group <group>--network-group=<group>——使 ASF 在自定义网络组 <group> 内初始化限制。 此选项影响多实例运行的 ASF,指定此实例仅与相同网络组的实例共享,与其他实例独立。 通常,只有在您通过自定义机制(例如不同 IP 地址)路由 ASF 请求时才需要使用此选项手动设置网络组,不再依赖 ASF 自动处理(目前仅会考虑 WebProxy)。 请注意,在使用自定义网络组时,这是属于本机的唯一标识符,ASF 将不再考虑其他细节,例如 WebProxy 的值,这使您可以运行两个 WebProxy 不同的实例,但仍然互相影响。

由于该属性本身的性质,您也可以设置 ASF_NETWORK_GROUP 环境变量来设置此值,这更适合想避免在进程参数中暴露敏感信息的用户。


--no-config-migrate——默认情况下,ASF 会自动将您的配置文件迁移到最新语法。 迁移过程包括将已废弃的属性转换成最新版、删除值为默认的属性(因为无需专门定义),以及清理文件格式(修正缩进等等)。 通常这总是最好的做法,但可能您有特殊的情况,需要 ASF 不自动覆盖配置文件。 例如,您可能希望对配置文件 chmod 400(仅所有者可读取)或者 chattr +i,禁止任何人写入,以此作为一项安全措施。 通常我们建议启用配置文件迁移,但如果您有特定的禁用理由,不希望 ASF 迁移配置,就可以用此开关达成目的。 但请记住,为 ASF 提供正确的设置现在成为了您自己的新责任,特别是考虑到未来 ASF 版本中的功能弃用和重构。


--no-config-watch——默认情况下,ASF 会对您的 config 文件夹设置 FileSystemWatcher 以监视与文件变更有关的事件,因此才能动态适应这些变化。 例如,在配置文件被删除后停止机器人、配置文件被修改后重启机器人,或者在您向 config 文件夹添加游戏序列号之后自动加载到后台游戏激活器中。 此开关允许您禁用这个行为,使 ASF 完全忽略 config 文件夹内的任何变化,您必须在需要时手动执行相关操作(通常意味着重启进程)。 我们建议启用配置文件监听,但如果您有特定的禁用理由,不希望 ASF 监视事件,就可以用此开关达成目的。


--no-restart——此开关主要用于 Docker 容器并将 AutoRestart 强制设置为 false。 除非有特殊的需要,否则您应该直接在配置中配置 AutoRestart 属性。 这个开关作用是使 Docker 脚本不需要修改您的全局配置来适应它的环境。 当然,如果是在脚本中运行 ASF,您也可以使用此开关(否则您最好使用全局配置属性)。


--no-steam-parental-generation——ASF 默认会自动尝试生成 Steam 家庭监护 PIN 代码,如 SteamParentalCode 配置属性所述。 然而,因为这可能会需要过多操作系统资源,此开关允许您禁用此行为,这会使 ASF 跳过自动生成,直接向用户询问 PIN 代码,就像正常情况下自动生成失败时一样。 通常我们建议启用自动生成,但如果您有特定的禁用理由,不希望 ASF 自动生成,就可以用此开关达成目的。


--path <path>--path=<path>——ASF 在启动时始终会切换到自身所在的文件夹。 通过指定该参数,ASF 会在初始化完成后切换至给定文件夹,让您可以对应用的各个组件设置自定义路径(包括 configlogspluginswww 文件夹,以及 NLog.config 文件),而无需复制一份相同的二进制文件。 如果您想将二进制文件和实际的配置文件分开,这会非常有用。就像 Linux 打包机制一样——这样您就可以使用一个(最新的)二进制文件搭配多个不同的配置。 此路径既可以是基于 ASF 二进制文件所在位置的相对路径,也可以是绝对路径。 请注意,该命令指向新的“ASF 主文件夹”——与原始的 ASF 具有相同结构的文件夹,其中包含 config 文件夹,请查看下文的示例了解详情。

由于该属性本身的性质,您也可以设置 ASF_PATH 环境变量来设置此路径,这更适合想避免在进程参数中暴露敏感信息的用户。

如果您考虑使用命令行参数以运行多个 ASF 实例,我们推荐您阅读本指南的管理页面。

示例:

dotnet /opt/ASF/ArchiSteamFarm.dll --path /opt/TargetDirectory # 绝对路径
dotnet /opt/ASF/ArchiSteamFarm.dll --path ../TargetDirectory # 也可以使用相对路径
ASF_PATH=/opt/TargetDirectory dotnet /opt/ASF/ArchiSteamFarm.dll # 或者使用环境变量
├── 📁 /opt
│     ├── 📁 ASF
│     │     ├── ArchiSteamFarm.dll
│     │     └── ...
│     └── 📁 TargetDirectory
│           ├── 📁 config
│           ├── 📁 logs(自动生成)
│           ├── 📁 plugins(可选)
│           ├── 📁 www(可选)
│           ├── log.txt(自动生成)
│           └── NLog.config(可选)
└── ...

--service——此开关主要用在我们的 systemd 服务上,它会强制设置 Headlesstrue。 除非有特殊的需要,否则您应该直接在配置中配置 Headless 属性。 这个开关作用是使 systemd 服务不需要修改您的全局配置来适应它的环境。 当然,如果您有类似的需要,也可以使用此开关(否则您最好使用全局配置属性)。


--system-required——声明这个开关将会导致 ASF 尝试通知操作系统“此进程需要在运行过程中保持系统处于启动状态并正常运行”。 目前,此选项仅对 Windows 设备有效,作用是在 ASF 运行期间阻止系统进入睡眠模式。 当您在夜间使用 PC 或者笔记本电脑挂卡时,这一功能是相当实用的,因为 ASF 将会在运行时保持计算机处于唤醒状态。

Clone this wiki locally