dav*_*s21 9 linux bash terminal pid
我的系统在 nano 会话中因未保存的更改而崩溃。
当我通过 SSH 重新登录时,当我执行ps
.
davidparks21@devdb1:/opt/frugg_batch$ ps -ef | grep nano
1001 31714 29481 0 18:32 pts/0 00:00:00 nano frugg_batch_processing
1001 31905 31759 0 19:16 pts/1 00:00:00 grep --color=auto nano
davidparks21@devdb1:/opt/frugg_batch$
Run Code Online (Sandbox Code Playgroud)
有没有办法让我在新终端中控制纳米进程?
或者有什么方法可以强制它远程保存(从我的新终端)?
阅读纳米手册页,并进行一些搜索,我发现:
在某些情况下,nano 会尝试将缓冲区转储到紧急文件中。这主要发生在 nano 收到 SIGHUP 或 SIGTERM 或内存不足时。如果缓冲区没有名称,它会将缓冲区写入名为 nano.save 的文件,或者将“.save”后缀添加到当前文件名。如果当前目录中已经存在具有该名称的紧急文件,它将在当前文件名中添加“.save”和一个数字(例如“.save.1”),以使其唯一。在多缓冲区模式下,nano 会将所有打开的缓冲区写入各自的紧急文件。
所以你应该已经有这样一个文件在等你,在你系统的某个地方。
find /likely/path -mtime -1 -print | egrep -i '\.save$|\.save\.[1-90]*$'
(/可能/路径首先是您启动 nano 的地方,然后是其他此类“可能”的地方,然后是最后的手段:(/
当然,以 root 身份启动最后一个 find 命令或期望有很多错误输出,您可以使用 shell 的 STDERR 重定向来重定向)
-mtime -1 表示“最多 1 天”,您可能希望将值更改为 -2 或 -3,具体取决于您编辑文件的时间和阅读此文件的时间。
如果 nano 还没有写这样的文件,你可以尝试向它发送一个 SIGHUP 信号以强制它这样做(参见:http : //en.wikipedia.org/wiki/Unix_signal#POSIX_signals)
然后,再次运行 find 以查找该文件...
最后,最后的手段,您可以通过 /proc/kmem 搜索您正在查找的部分文本,但这需要采取一些预防措施来清理它显示的内容,并且可能不是微不足道的。或先将其 dd 放入(与您的内存一样大)文件中。
它确实像@Oliver Dulac 提到的那样工作,但在某些情况下,nano 只是解释并继续等待用户命令,而不是将缓冲区转储到文件中。
无需重启即可有更多选项:
pkill -SIGHUP -e nano
pkill -SIGTERM -e nano
pkill -SIGILL -e nano
Run Code Online (Sandbox Code Playgroud)
但程序可以选择忽略上面的这 3 个信号,因此按上面的顺序尝试它们,然后检查文件是否已创建,如果不起作用,请尝试 SIGKILL (在 SIGTERM 之后发送):
pkill -SIGKILL -e nano
Run Code Online (Sandbox Code Playgroud)
请记住,SIGHUP、SIGTERM 和 SIGILL 可以被正在运行的程序捕获或忽略,而 SIGKILL 则不能。
归档时间: |
|
查看次数: |
14798 次 |
最近记录: |