Рассмотрим ситуацию, когда случайно/специально 😱 удалился исполняющийся bash скрипт.
Чтобы не попадать в такие ситуации, всегда храните исходники в git — это избыточно, но бекапы никто не отменял.
Скрипт удалён с диска, но продолжает работать в фоне, значит его можно как-нибудь восстановить.
Создадим подопытный скрипт: touch /tmp/script.sh:
#!/bin/bash
sleep 1000
exit
Делаем исполняемым chmod +x /tmp/script.sh и запускаем в фоне /tmp/script.sh &
Символ & может служить разделителем между командами command & command, две команды выполнятся параллельно.
Скрипт запустили, он крутится в фоне. Удалим сам файл:
rm -f /tmp/script.sh ключ -f удалит без лишних вопросов.
Восстанавливаем:
lsof -c 'script.sh'
На экран выведется простыня, нам нужна строка где в конце указан путь до скрипта, который был удален:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
script.sh 261899 root 255r REG 8,1 51 130773 /tmp/script.sh
Берем PID = 261899, берем FD = 255 и делаем так:
cat /proc/261899/fd/255
А вот и исходник скрипта:
File: /proc/261899/fd/255
#!/bin/bash
sleep 1000
exit
Вот полезная инфа, которая была использована в гайде:
man 5 proc # /proc/[pid]/fd/
man lsof
👉 DevOps Portal
Post #652
4.8K
- 👍 39
- ❤ 14
- 🔥 1