I think it would continue even after it’s own deletion as the binary is already loaded into memory, so process is not dependent on the file system. Still doubt that it’ll complete successfully. Most likely the system crashes in the middle.
Yes, though you could also do rm -rf /* afaik to not need --no-preserve-root
Edit: I just realized that the * is already in the meme. So this should already work as is. Alternatively you could always use the good old way of “act now and remove all French roots of your system: rm -fr / --no-preserve-root”
In Unix/Linux, a removed file only disappears when the last file descriptor to it is gone. As long as the file /usr/bin/rm is still opened by a process (and it is, because it is running) it will not actually be deleted from disk from the perspective of that process.
This also why removing a log file that’s actively being written to doesn’t clear up filesystem space, and why it’s more effective to truncate it instead. ( e.g. Run > /var/log/myhugeactivelogfile.log instead of rm /var/log/myhugeactivelogfile.log), or why Linux can upgrade a package that’s currently running and the running process will just keep chugging along as the old version, until restarted.
Sometimes you can even use this to recover an accidentally deleted file, if it’s still held open in a process. You can go to /proc/$PID/fd, where $PID is the process ID of the process holding the file open, and find all the file descriptors it has in use, and then copy the lost content from there.
Does this really work? Wouldn’t
rm
remove itself in/bin
early in the process?I think it would continue even after it’s own deletion as the binary is already loaded into memory, so process is not dependent on the file system. Still doubt that it’ll complete successfully. Most likely the system crashes in the middle.
I thought - - no-preserve root also needed to be added as an argument for self destruct to completely work.
Yes, though you could also do
rm -rf /*
afaik to not need--no-preserve-root
Edit: I just realized that the
*
is already in the meme. So this should already work as is. Alternatively you could always use the good old way of “act now and remove all French roots of your system:rm -fr / --no-preserve-root
”i dont get why you can’t just do
sudo rm -fr /
because it won’t let you do that:
That’s not the reason why it continues. It’s because there’s still a file descriptor open to
rm
.In Unix/Linux, a removed file only disappears when the last file descriptor to it is gone. As long as the file
/usr/bin/rm
is still opened by a process (and it is, because it is running) it will not actually be deleted from disk from the perspective of that process.This also why removing a log file that’s actively being written to doesn’t clear up filesystem space, and why it’s more effective to truncate it instead. ( e.g. Run
> /var/log/myhugeactivelogfile.log
instead ofrm /var/log/myhugeactivelogfile.log
), or why Linux can upgrade a package that’s currently running and the running process will just keep chugging along as the old version, until restarted.Sometimes you can even use this to recover an accidentally deleted file, if it’s still held open in a process. You can go to
/proc/$PID/fd
, where$PID
is the process ID of the process holding the file open, and find all the file descriptors it has in use, and then copy the lost content from there.rm doesn’t remove memory in RAM
That’s not the reason why it continues. It’s because there’s still a file descriptor open to
rm
.deleted by creator