我有一个日志文件目录,里面有82000个文件和目录(大约一半).
我需要删除超过3天的所有文件和目录.
在一个包含37000个文件的目录中,我能够通过以下方式执行此操作:
find * -mtime +3 -exec rm {} \;
Run Code Online (Sandbox Code Playgroud)
但是对于82000个文件/目录,我收到错误:
/ usr/bin/find:参数列表太长
如何解决此错误,以便删除超过3天的所有文件/目录?
版本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块的概念.
任何人都有解决这种语言相当恼人的漏洞的经验吗?
我在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是唯一知道什么时候它已经烧毁的对象,所以目前我已将它自行删除.造成火灾的对象可能不再存在或相关.
这是一件明智的事情还是有更好的设计来帮助清理这些物体?
我使用Akka及其Java API UntypedActor实现了一个Actor系统.在其中,一个actor(类型A)使用按需动态启动其他actor(类型B)getContext().actorOf(...);.那些B演员会做一些A不再关心的计算.但我想知道:有没有必要在他们完成后清理那些B型演员?如果是这样,怎么样?
getContext().stop(getSelf())在完成后给他们打电话?getSelf().tell(Actors.poisonPill());在完成后给他们打电话?[这就是我现在正在使用的].文档对此并不清楚,或者我忽略了它.我有一些Scala的基本知识,但Akka的来源并不完全是入门级的东西......
发出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)
哪一个使用?
我在清理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.
如果我使用设置变量CreateObject(),是否需要通过将其设置为Nothing使用后进行清理?
Dim foo
Set foo = CreateObject("SomeAssembly")
foo Bar
Set foo = Nothing
Run Code Online (Sandbox Code Playgroud)
脚本引擎会在超出范围时自动清除这些变量,因此在它们超出范围之前清除它们似乎毫无意义.
该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
我正在开发一个powershell脚本文件,它将执行一些磁盘清理而无需用户干预.用户无法配置任何内容.
当我运行cleanmgr.exe /d c: sageset:1弹出窗口时,出现选择要清理的文件/文件夹(清理选项).
这将创建一个包含清理选项设置的注册表项,然后,您可以运行cleanmgr.exe /sagerun:1实际执行清理的设置.
有没有办法直接用powerhell /命令行指定清理选项(不需要手动选择要删除的东西)?
我有一个包含我需要的文件处理功能的类.另一个类创建了一个实例,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代码移动到调用对象或处理漏洞抽象的问题.
思考?