原理是系统进程打开的文件在/proc目录下也有一份。
前提是误删除后不要重启动机器或关闭mysql服务,不然。。。就只能哭了
比如不小心误删除了mysql里面 共享空间 (ibdata1)或独立表空间(table_name.idb)

rm -fr /var/lib/mysql/aria_log.00000001
lsof | grep aria_log.00000001

通过lsof查看到pid为2821和fd为13,可以用
ls -alh /proc/2821/fd/13
cp /proc/2821/fd/13 /var/lib/mysql/aria_log.00000001
chown mysql:mysql /var/lib/mysql/aria_log.0000001
进程目录下常用文件介绍
cmdline 与/proc/cmdline相似,保存了当前进程的启动命令,比如cat cmdline可以看到udevd --daemon
cwd 是一个符号连接,指向进程的运行目录;
exe 是一个软连接,指向启动进程的可执行文件,通过/proc/[pid进程号]/exe可以启动当前进程的一个拷贝;
environ 包含与进程相关联的环境变量,变量名用大写字母表示,其值用小写字母表示

fd目录包含了进程打开的每一个文件的文件描述符(file descriptor),这些文件描述符是指向实际文件的一个符号链接;
fd目录下的文件与文件一一对应,我们可以通过fd目录下的文件个数,统计当前进程打开的文件句柄数。
还可以直接读取文件内容,就像读取真实文件一样。

limits 保存了进程使用的资源的限制信息,包括软限制,硬限制以及取值的单位。
task:task目录下包含了当前进程所运行的每一个线程相关信息。
每个线程的相关信息文件均保存在一个由线称号(tid)命名的目录中。

 

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注