Kla*_*aus 5 startup environment-variables busybox timezone busybox-init
我正在研究嵌入式 Linux 系统,并正在寻找一种为所有进程设置时区的方法。
问题是:是否有可能TZ
在启动时设置环境变量(init 脚本),以便所有其他 init 脚本TZ
在启动时设置?
该系统基于 BusyBox 工具。我在/etc/profile.d/
文件夹中尝试了一个脚本。
export TZ="GMT-1"
Run Code Online (Sandbox Code Playgroud)
但是 init 脚本没有设置变量。
我看到的唯一方法是所有启动脚本都自己设置这个变量。这个问题还有其他解决方案吗?
如果您的系统使用 BusyBox init,并且没有/etc/inittab
,那么它会/etc/init.d/rcS
在启动时运行。如果这是一个 shell 脚本,只需在其中添加所需的环境定义即可。如果这不是 shell 脚本,您可以将构建更改为 rename /etc/init.d/rcS.bin
,并创建一个/etc/init.d/rcS
以exec /etc/init.d/rcS.bin
. 当然,如果您更改了/etc/init.d/rcS
构建配置中的路径,请进行调整。那里定义的环境变量将应用于所有守护进程,但不适用于在控制台上启动的 shell。
如果有/etc/inittab
,请检查其中包含的内容。该文档位于示例文件中。somecommand
您可以替换由运行的条目/usr/bin/env TZ=GMT-1 somecommand
。
这是一种快速而肮脏的方法,但在大多数情况下,您希望允许最终用户配置时区,因此应将其存储在单独的文件中。在这种情况下,请通过 shell 包装器(或rcS
脚本)并使用一些代码,例如
export TZ="$(cat /etc/TZ.txt)"
Run Code Online (Sandbox Code Playgroud)
请注意,根据您的 libc,可能有也可能没有更好的设置时区的方法,例如为/etc/TZ
uClibc 编写时区规则。
归档时间: |
|
查看次数: |
7275 次 |
最近记录: |