Файлы действительно удаляются только после того, как они больше не используются.
Таким образом, если вы запустили процесс, такой как less somefile.txt
, а затем rm somefile.txt
, вы все равно можете продолжить прокрутку вниз во время выполнения less
у которого все еще есть дескриптор файла.
Даже если бы это было не так, программа rm
уже была бы полностью в ОЗУ во время работы. Нет ничего, что могло бы проверить, сохранился ли исходный файл или нет.
Для традиционных двоичных файлов это не проблема, для языков сценариев, которые интерпретируются на лету, это может быть другим, поскольку интерпретатор (например, bash
для сценария оболочки) может повторно проверить содержимое файла. .
Pude resolver esto haciendo que el /usr/local/bin/run_on_login.sh
inicial bifurcara otro script que se ejecuta como un proceso en segundo plano, espera unos segundos y luego analiza el 'último' comando.
En el ejemplo, pam _exec ejecuta este script:
#!/bin/bash
# /usr/local/bin/run_on_login.sh
nohup /usr/local/bin/parse_last.sh >/dev/null 2>&1 &
Lo que desencadena estos scripts:
#!/bin/bash
# /usr/local/bin/parse_last.sh
sleep 5
# (truncated for brevity)
last -iF | head -n 50 | awk '{print "something"}'