删除脚本本身

时间:2012-02-22 13:36:38

标签: perl

我希望我的脚本在完成工作后自动删除。我已将下面的行添加到我的脚本末尾:

unlink($0);

由于某些原因,它不起作用。你能告诉我应该怎么做吗?可能还有另一种方法,或者我可以添加一条错误消息,找出它为什么不被删除?

谢谢。

3 个答案:

答案 0 :(得分:4)

我不知道为什么你不能。它适用于我的机器。也许你的文件系统会在文件运行时锁定它。

请你试试这个:

exec "rm -f '$0'";

将当前的Perl进程替换为rm进程。这应该会释放你的脚本并将其删除。

答案 1 :(得分:1)

脚本末尾的

system("sh -c 'sleep 1; rm -f $0' &");

有点hacky,但为什么你需要删除你的脚本?当然这意味着创造了它,为什么不让创作者也删除它呢?

答案 2 :(得分:0)

你做不到。您的脚本仍在运行,因此该文件将被使用,这就是它无法自行删除的原因。

您需要调用外部脚本以在死亡后删除第一个脚本。