如何在不重新启动的情况下更新 Linux 进程的日期和时间?

如何在不重新启动的情况下更新 Linux 进程的日期和时间?

我有一个要求,必须更改服务器的日期和时间戳频繁地所需值和关联进程(Weblogic 服务器/Java 虚拟机进程和脚本)必须具有更新的日期和时间。这样做是为了让 weblogic 服务器和脚本以更新的日期运行,而无需重新启动进程。

一个可行的时间戳更改器是libfaketime但是可以采取任何措施来通过所有进程或 PID 集的偏移量来更改时间。

目标是让进程在运行进程的日期更改一个偏移量(天数)时运行,而不必终止 PID。如果实用程序比手动更改日期和终止进程花费的时间更少,那就没问题。

答案1

我有一个要求,服务器的日期和时间戳必须每天更改

这是有歧义的(并且是一个非常坏的设计,因为您正在滥用系统)。什么实际的文件您需要更改 的元数据吗?在什么文件系统上?与目录有关吗/proc/1234/(如果您的进程有 pid 1234)?看过程(5)

(如果您的服务器位于只读文件系统(例如 CDROM)上怎么办?)

顺便说一句,您没有定义“更新流程”的含义。即使有很多想象力,我也猜不到你想要什么。

还,为什么需要这个?为什么你不能改变一些其他日期和时间戳(某些数据文件,甚至数据库中的一行)并检查?当您的“服务器可执行文件”位于某些奇怪的文件系统上,该文件系统不允许这样做,或者没有有效的 mtime 时,您如何检测这种情况?看起来有些XY问题

目标是让进程运行,同时日期更改正在运行的进程的偏移量(天数)。

然后我会编写一个“类似 shell”的过程(最好用 C 或其他语言 - Go、Ocaml、Rust、C++、Python 等... - 提供对整个 POSIX API 的访问,至少是对所有系统的访问中列出的呼叫系统调用(2), 也可以看看简介(2)至少阅读一些 Unix 编程书籍碱性磷酸酶或者更年轻的东西)。这种“类似外壳”的东西会监视并杀死实际的服务器。

还请注意,大多数 Java 实现都是由 JVM 解释的,从某种意义上说,所有此类 Java 进程都在运行相同的JVM 可执行文件,可能是一些/usr/bin/java

相关内容