我有一个要求,必须更改服务器的日期和时间戳频繁地所需值和关联进程(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