标签: resource-cleanup

当"参数列表太长"时,如何删除超过3天的所有文件?

我有一个日志文件目录,里面有82000个文件和目录(大约一半).

我需要删除超过3天的所有文件和目录.

在一个包含37000个文件的目录中,我能够通过以下方式执行此操作:

find * -mtime +3 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)

但是对于82000个文件/目录,我收到错误:

/ usr/bin/find:参数列表太长

如何解决此错误,以便删除超过3天的所有文件/目录?

linux file-io resource-cleanup

88
推荐指数
3
解决办法
18万
查看次数

我怎样才能解决PHP中缺少finally块的问题?

版本5.5之前的PHP没有最终块 - 即,在大多数敏感语言中,您可以执行以下操作:

try {
   //do something
} catch(Exception ex) {
   //handle an error
} finally {
   //clean up after yourself
}
Run Code Online (Sandbox Code Playgroud)

PHP没有finally块的概念.

任何人都有解决这种语言相当恼人的漏洞的经验吗?

php exception resource-cleanup

56
推荐指数
2
解决办法
2万
查看次数

对象是否应该在C++中删除自己?

我在C#度过了最近4年,所以我对C++中当前的最佳实践和常见设计模式感兴趣.考虑以下部分示例:

class World
{
public:
    void Add(Object *object);
    void Remove(Object *object);
    void Update();
}

class Fire : Object
{
public:
    virtual void Update()
    {
        if(age > burnTime)
        {
            world.Remove(this);
            delete this;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在这里,我们有一个负责管理一组对象并定期更新它们的世界.火是一种可能在许多不同情况下被添加到世界中的物体,但通常是世界上已有的另一物体.Fire是唯一知道什么时候它已经烧毁的对象,所以目前我已将它自行删除.造成火灾的对象可能不再存在或相关.

这是一件明智的事情还是有更好的设计来帮助清理这些物体?

c++ oop memory-management self-destruction resource-cleanup

24
推荐指数
6
解决办法
2万
查看次数

Akka:完成后必须清理动态创建的演员吗?

我使用Akka及其Java API UntypedActor实现了一个Actor系统.在其中,一个actor(类型A)使用按需动态启动其他actor(类型B)getContext().actorOf(...);.那些B演员会做一些A不再关心的计算.但我想知道:有没有必要在他们完成后清理那些B型演员?如果是这样,怎么样?

  • 让B演员getContext().stop(getSelf())在完成后给他们打电话?
  • 让B演员getSelf().tell(Actors.poisonPill());在完成后给他们打电话?[这就是我现在正在使用的].
  • 什么都不做?
  • 通过...?

文档对此并不清楚,或者我忽略了它.我有一些Scala的基本知识,但Akka的来源并不完全是入门级的东西......

java resource-cleanup akka

21
推荐指数
1
解决办法
4801
查看次数

多个延迟vs延迟匿名函数

发出defer依赖于顺序的多个语句,或者推迟打包逻辑的匿名函数,是更安全还是更惯用?

例子:

defer os.Remove(tempFile.Name())
defer tempFile.Close()
Run Code Online (Sandbox Code Playgroud)

在上面的情况中,语法是最小的,但是延迟的顺序与要执行的逻辑相反.

在下面的情况下,有更多的行,更多的"语法",但逻辑是一个更自然的顺序:

defer func() {
    tempFile.Close()
    os.Remove(tempFile.Name())
}()
Run Code Online (Sandbox Code Playgroud)

哪一个使用?

go resource-cleanup

21
推荐指数
2
解决办法
9244
查看次数

清理Threejs WebGl上下文

我在清理WebGl-Scenes时遇到了问题.我正在使用带有WebGlRenderer的Three.js.在我的应用程序中,我必须经常更改视图,因此需要始终渲染新场景.现在,我摧毁并重新初始化整个Threejs场景.切换场景约15 - 20次后,我收到以下警告:

WARNING: Too many active WebGL contexts. Oldest context will be lost.

切换几次后,上下文完全丢失,应用程序崩溃.

清理时有没有办法破坏当前的WebGl上下文?或者,WebGlRenderer在实例化时是否始终创建新的WebGl上下文?

我正在使用Three.js R64.

renderer resource-cleanup webgl three.js

19
推荐指数
2
解决办法
1万
查看次数

如果我使用`CreateObject()`设置变量,是否需要在使用后将其设置为"Nothing"来清理它?

如果我使用设置变量CreateObject(),是否需要通过将其设置为Nothing使用后进行清理?

Dim foo
Set foo = CreateObject("SomeAssembly")
foo Bar
Set foo = Nothing
Run Code Online (Sandbox Code Playgroud)

我刚刚发现这个帖子埃里克利珀:

脚本引擎会在超出范围时自动清除这些变量,因此在它们超出范围之前清除它们似乎毫无意义.

vbscript resource-cleanup

18
推荐指数
2
解决办法
2万
查看次数

异步上下文管理器是否需要保护它们的清理代码不被取消?

问题(我认为)

contextlib.asynccontextmanager文档给出了这样的例子:

@asynccontextmanager
async def get_connection():
    conn = await acquire_db_connection()
    try:
        yield conn
    finally:
        await release_db_connection(conn)
Run Code Online (Sandbox Code Playgroud)

在我看来,这可能会泄漏资源。如果此代码的任务在此代码在其行上时被取消await release_db_connection(conn),则发布可能会中断。在asyncio.CancelledError将从某处内向上传播finally块,从而防止随后的清理代码运行。

因此,实际上,如果您正在实现一个处理超时请求的 Web 服务器,则在完全错误的时间触发超时可能会导致数据库连接泄漏。

完整的可运行示例

import asyncio
from contextlib import asynccontextmanager

async def acquire_db_connection():
    await asyncio.sleep(1)
    print("Acquired database connection.")
    return "<fake connection object>"

async def release_db_connection(conn):
    await asyncio.sleep(1)
    print("Released database connection.")

@asynccontextmanager
async def get_connection():
    conn = await acquire_db_connection()
    try:
        yield conn
    finally:
        await release_db_connection(conn)

async def do_stuff_with_connection():
    async with get_connection() as conn:
        await …
Run Code Online (Sandbox Code Playgroud)

python resource-cleanup resource-leak cancellation python-asyncio

13
推荐指数
1
解决办法
231
查看次数

无需用户干预即可自动执行磁盘清理cleanmgr.exe的过程

我正在开发一个powershell脚本文件,它将执行一些磁盘清理而无需用户干预.用户无法配置任何内容.

当我运行cleanmgr.exe /d c: sageset:1弹出窗口时,出现选择要清理的文件/文件夹(清理选项).

这将创建一个包含清理选项设置的注册表项,然后,您可以运行cleanmgr.exe /sagerun:1实际执行清理的设置.

有没有办法直接用powerhell /命令行指定清理选项(不需要手动选择要删除的东西)?

registry powershell resource-cleanup powershell-3.0

11
推荐指数
4
解决办法
5万
查看次数

文件的类包装 - 在不再引用时关闭文件句柄的正确方法

我有一个包含我需要的文件处理功能的类.另一个类创建了一个实例,filehandler并在不确定的时间内使用它.最终,它caller被摧毁了,它摧毁了唯一的引用filehandler.

filehandler关闭文件的最佳方法是什么?

我目前使用__del__(self)但在看到几个 不同的 问题 和文章后,我认为这被认为是一件坏事.

class fileHandler:
    def __init__(self, dbf):
        self.logger = logging.getLogger('fileHandler')
        self.thefile = open(dbf, 'rb')
    def __del__(self):
        self.thefile.close()
Run Code Online (Sandbox Code Playgroud)

这是处理程序的相关部分.该类的重点是抽象出使用底层文件对象的细节,并避免不必要地将整个文件读入内存.但是,处理底层文件的一部分是在对象超出范围时关闭它.

caller不应该知道或关心参与的细节filehandler.filehandler当它超出范围时,释放所涉及的任何必要资源是我们的工作.这是它首先被抽象的原因之一.所以,我似乎面临着将filehandler代码移动到调用对象或处理漏洞抽象的问题.

思考?

python garbage-collection resource-cleanup

10
推荐指数
2
解决办法
2703
查看次数