![进程暂停,但与本地系统中文件的连接未终止](https://linux22.com/image/983373/%E8%BF%9B%E7%A8%8B%E6%9A%82%E5%81%9C%EF%BC%8C%E4%BD%86%E4%B8%8E%E6%9C%AC%E5%9C%B0%E7%B3%BB%E7%BB%9F%E4%B8%AD%E6%96%87%E4%BB%B6%E7%9A%84%E8%BF%9E%E6%8E%A5%E6%9C%AA%E7%BB%88%E6%AD%A2.png)
我不确定这是否是正确的地方,但是因为这是一个需要解决的问题,所以我在这里发布。
我用过
kill -SIGSTOP 1234
命令暂停名为 as 的进程1234
,然后它暂停,然后我就喜欢
echo "" > mylogfile.log
现在它的大小就像这样1byte
,所以它起作用了。然后我再次启动了暂停的过程
kill -SIGCONT 1234
并给出了ls -sh
但我不知道如何mylogfile.log
显示旧大小而不是新更新的大小为 1 字节。
那么我想要实现什么?
很简单,我不想终止进程以使我的日志文件无效。当我SIGSTOP
运行进程时,我的日志文件去了0 bytes
,当我启动它时SIGCONT
,它的大小又回到了 GB,但我不想要这个 GB 大小。我想让我的日志文件0 byte only
有什么方法可以实现这个目的吗?
请帮忙,我相信这将帮助很多系统管理员。
谢谢。
答案1
SIGSTOP
在没有得到进程的知情或同意的情况下暂停进程。进程知道它要写入其打开的文件之一的下一个字节位于 GB+1。SIGSTOP/SIGCONT
不调整此位置信息。
处理这个问题的通常方法是捕捉SIGHUP
在程序中并重新打开日志,然后继续调整。