Pulihkan skrip yang berjalan dari sesi terminal


35

Jadi saya menggunakan Layar GNU untuk mengelola beberapa skrip / program yang sedang berjalan. Multiplexing & detachability cukup membantu.

Saya menghapus skrip dari disk dan sekarang saya kesulitan menemukan cadangan. Namun, salah satu sesi terminal mengeksekusi skrip sebelum file dihapus dan terus berfungsi dengan baik.

Apakah ada cara untuk membajak sesi terminal yang sedang menjalankan skrip untuk memulihkan konten file ini?


Jawaban:


61

cari pid naskah menggunakan ps

ps -ef|grep script.sh
Fdo  8983  8463  0 12:28 pts/2    00:00:00 /bin/bash ./script.sh

periksa /proc/$PID/fd/; harus ada tautan yang rusak ke file skrip, tetapi cat harus berfungsi (saat skrip berjalan!):

cat /proc/8983/fd/255 
#!/bin/bash
# script contents!

semoga berhasil!


@ MBR Saya pikir itu bekerja, karena isi file, dimuat dalam memori
c4f4t0r

Saran bagus! Ini juga peringatan bahwa @fdo perlu mengatur rutinitas cadangan yang layak, karena lain kali ia mungkin tidak seberuntung itu.
Criggie

12
@ c4f4t0r Tidak ada hubungannya dengan itu dimuat dalam memori atau tidak. Linux secara eksplisit tidak akan menghapus file (inode) ketika ada pegangan terbuka - file tetap ada di disk, mengambil ruang. rmdan alat lainnya memutuskan tautan file, menghapus tautan dari nama file ke data aktual (direferensikan oleh inode), tetapi selama ada referensi (hard link atau open handle) inode tidak dihapus.
Bob

Hanya ingin tahu ... bagaimana Anda tahu memeriksa fd 255? Atau itu hanya contoh?
gardenhead

2
@gardenhead Ini contohnya.
user253751
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.