如何更改bandwidthd的时区?

tsl*_*cum 8 indicator bandwidth

有什么方法可以更改由bandwidthd生成的图表的UTC 偏移量?

Bre*_*bad 5

源代码不使用和存储时戳,其随后被提供给C函数的ctime()本地时间() ,以显示在页面的顶部的日期,并在图的底部。

这些 Unix 时间戳是无时区的,即自 1970-01-01 以来的秒数。
为了获得人类可读的时间,ctime()localtime()会根据您的系统时区(通过调用tzset())自动调整要使用的时区。

强制 TZ 执行命令的时间

无论如何,您都可以将时区强制为给定值,仅在命令执行时或在整个守护进程会话期间,如带宽tzset()TZ读取环境变量以调整时区(如果已设置)。

首先看一下中的时区定义 /usr/share/zoneinfo

然后,例如,cd到终端中的主目录,并执行简单的操作ls -lrt以查看列表底部的最新文件。然后将时区设置为法国巴黎,例如

export TZ="Europe/Paris"
Run Code Online (Sandbox Code Playgroud)

再做一个ls -lrt,时间应该不同(如果你碰巧有一个系统配置的时区设置为法国,你可能想选择另一个 TZ!)。

现在取消设置 TZ 变量,只是为了防止基于终端中显示的时间出现一些错误。

unset TZ
Run Code Online (Sandbox Code Playgroud)


改变带宽的 TZ

我假设你从 Ubuntu安装了bandwidthdapt-get,你应该有一个init 文件让它作为服务启动。在文件的某处复制一份,然后以 root 身份进行编辑(vi或其他编辑器)

sudo cp -p /etc/init.d/bandwidthd ~/bandwidthd.save
sudo vi /etc/init.d/bandwidthd
Run Code Online (Sandbox Code Playgroud)

在顶部附近,您会看到一些变量定义

NAME=bandwidthd
DESC=BandwidthD
...
Run Code Online (Sandbox Code Playgroud)

添加一个(例如,对于巴黎)

MYTZ="Europe/Paris"
Run Code Online (Sandbox Code Playgroud)

然后,在startd()函数的下方,您应该会看到

    cd $WORKDIR && start-stop-daemon --start --quiet \
            --pidfile $PIDFILE \
            --chdir $WORKDIR \
            --exec $DAEMON -- $DAEMON_OPTS
Run Code Online (Sandbox Code Playgroud)

将其更改为

    cd $WORKDIR && start-stop-daemon --start --quiet \
            --pidfile $PIDFILE \
            --chdir $WORKDIR \
            --exec /usr/bin/env TZ="$MYTZ" $DAEMON -- $DAEMON_OPTS
Run Code Online (Sandbox Code Playgroud)

(注意/usr/bin/env TZ="$MYTZ"之间--exec$DAEMON)。


重启进程

sudo service bandwidthd restart
Run Code Online (Sandbox Code Playgroud)

并且,可能需要几秒钟,文件应该更新,在浏览器中打开file:///var/lib/bandwidthd/htdocs/index.html(或写入文件的目录)进行检查。