This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
api:rc:zh [2023/11/30 07:47] hfsr [RC脚本方法] |
api:rc:zh [2023/11/30 08:02] (current) hfsr [RC API] |
||
---|---|---|---|
Line 51: | Line 51: | ||
==== RC脚本配置 ==== | ==== RC脚本配置 ==== | ||
- | 你可以在`/etc/rc.cfg`文件中自定义脚本配置 (语法必须符合lua可读取的标准)。假设你的RC脚本位置在`/etc/rc.d/foo.lua`,则此模块的名称为`foo`,其在配置文件中的字段名称(键名)也需要为`foo`。OpenOS提供的样例RC脚本`example`也涉及了这一点。此模块的脚本文件为`/etc/rc.d/example.lua`,同时`/etc/rc.cfg`配置文件中有: | + | 你可以在`/etc/rc.cfg`文件中定义自己的脚本配置(语法必须符合lua可读取的标准)。假设你的RC脚本位置在`/etc/rc.d/foo.lua`,则其模块名为`foo`,其在配置文件中的字段名称(键名)也需要为`foo`。OpenOS提供的样例RC脚本`example`也涉及了这一点。此模块的脚本文件为`/etc/rc.d/example.lua`,同时`/etc/rc.cfg`配置文件中有: |
```lua | ```lua | ||
Line 58: | Line 58: | ||
``` | ``` | ||
- | `enabled`列表由[[api:rc:zh#RC控制器|控制器]]维护,但是`example`字段中存储的是`example`RC脚本的配置。字段的值可以是任何lua值,不只是字符串。当然也包含列表。你脚本的配置值会被加载到你的脚本环境中。在你的脚本中你可以通过的全局字段名称`args`来访问你的配置。请再回头查看`example.lua`脚本的代码,注意它对`args`变量的用法。你的脚本和配置只会由控制器加载和缓存一次。 | + | `enabled`列表由[[api:rc:zh#RC控制器|控制器]]维护,但`example`字段中存储的是`example`RC脚本的配置。字段的值可以是任何lua值,不只是字符串。当然也包含表。脚本的配置值会被加载到你的脚本环境中。在脚本中你可以通过名为`args`的全局字段来访问你的配置。请再回头查看`example.lua`脚本的代码,注意它对`args`变量的用法。你的脚本和配置只会由控制器加载和缓存一次。 |
===== RC控制器 ===== | ===== RC控制器 ===== | ||
- | RC控制器提供了一个命令行接口,你可以在shell中通过`rc`指令(`/bin/rc.lua`)访问。还提供了一个运行库,你可以通过`require("rc")`来访问。 | + | RC控制器提供了一个命令行接口,你可以在shell中通过`rc`命令(`/bin/rc.lua`)访问。还提供了一个运行库,你可以通过`require("rc")`来访问。 |
- | RC控制器维护着一份列表,表中记录了配置为开机时启动的rc脚本。RC控制器中还缓存了已加载的RC脚本。 | + | RC控制器维护着一份列表,表中记录了配置为开机时执行的RC脚本。RC控制器中还缓存了已加载的RC脚本。 |
- | 不像其他自启动设置,如autorun和`.shrc`,被启用的RC脚本只会在OpenOS启动时自动执行一次。 | + | 不像其他自启动方案,如autorun和`.shrc`,启用的RC脚本只会在OpenOS启动时自动执行一次。 |
- | ==== 命令行界面 ==== | + | ==== 命令行接口 ==== |
- | + | ||
- | `rc` | + | |
- | + | ||
- | 调用所有被启用的RC脚本的`start`方法 | + | |
- | + | ||
- | `rc <模块名> enable` | + | |
- | + | ||
- | 将名为<模块名>的RC脚本添加到“自启动”RC脚本的列表中。下次开机启动时将会自动调用<模块名>.start()。 | + | |
- | + | ||
- | `rc <模块名> disable` | + | |
- | + | ||
- | 将名为<模块名>的RC脚本从“自启动”RC脚本的列表中移除。下次启动时名为<模块名>的脚本不会自启动。 | + | |
- | + | ||
- | `rc <模块名> restart` | + | |
- | + | ||
- | 如果名为<模块名>的脚本同时定义了`stop()`和`start()`方法,则依次调用它们。 | + | |
- | + | ||
- | `rc <模块名> <方法名> [参数...]` | + | |
+ | `rc` | ||
+ | 调用所有启用的RC脚本的`start`方法。 | ||
+ | \\ | ||
+ | `rc <模块名> enable` | ||
+ | 将名为<模块名>的RC脚本添加到“自启动”RC脚本的列表中。下次开机启动时将会自动调用<模块名>.start()。 | ||
+ | \\ | ||
+ | `rc <模块名> disable` | ||
+ | 将名为<模块名>的RC脚本从“自启动”RC脚本的列表中移除。下次启动时名为<模块名>的脚本不会自启动。 | ||
+ | \\ | ||
+ | `rc <模块名> restart` | ||
+ | 若名为<模块名>的脚本同时定义了`stop()`和`start()`方法,则依次调用它们。 | ||
+ | \\ | ||
+ | `rc <模块名> <方法名> [参数...]` | ||
调用名为<模块名>的RC脚本中定义的<方法名>方法,如果有[参数...],则将它们作为函数参数传递给此方法。 | 调用名为<模块名>的RC脚本中定义的<方法名>方法,如果有[参数...],则将它们作为函数参数传递给此方法。 | ||
==== RC API ==== | ==== RC API ==== | ||
- | - `unload(moduleName: string)` | + | - `unload(moduleName: string)` |
- | + | 你可以卸载RC脚本,以将其从RC缓存中移除。此功能可用于重置配置文件,或是清理脚本的全局定义。在调试时此功能用处极大,你可以在不重启电脑的前提下重新加载脚本代码。 | |
- | 你可以卸载你的RC脚本,以此将其从RC缓存中移除。此功能用于重置配置文件或是清理脚本的全局定义。在调试时此功能用处极大,你可以在不重启电脑的前提下重新加载脚本代码。 | + | |
目录 | 目录 |