如何停止 SRM Linux?

如何停止 SRM Linux?

我正在使用 SRM 删除一个文件。SRM 已经花了 12 个小时删除一个 7GB 的文件,但它只获得了 3 颗星 ***

有什么办法可以停止或暂停它,以便我改日再做这件事。

答案1

终止命令行/文本模式程序的速成课程

详细说明@AFH 的评论,如果“SRM”是一个控制台(命令行界面)程序,并且您已从终端运行它,则只需点击Ctrl-z,因为这会使您的终端向它管理的前台进程发送该SIGSTOP信号并将其发送到后台。然后,您可以通过执行 shell 命令“将其带回” fg- 它是交互式 shell 实现的所谓“作业控制”的一部分,意味着将后台进程带到前台(因此是“fg”),其中包括向进程发送信号SIGCONT等。

当然,要停止进程,只需停止它即可。在 Unix 系统(包括基于 Linux 的操作系统)上,这是通过向进程发送特殊信号之一(通常SIGTERM是 或 )来实现的SIGINTCtrl-c在运行进程的终端中点击 会使 向进程发送信号SIGINT。该kill程序可用于向任意进程发送任意信号。

使用的问题kill在于,对于大多数用途,它要求用户知道要向其发送信号的进程的所谓“PID”。PID 是一个流程IDentifier—一个≥1的整数,在操作系统当前管理的所有进程中都是唯一的。

shell 的作业控制使其更容易,因为它具有某些助记符来引用它管理的进程:如果您通过点击 来将当前活动进程置于后台Ctrl-z,则可以使用该jobs命令查看该 shell 管理的进程列表。例如,我刚刚暂停了一个实例,然后mutt 运行jobs它;这是我看到的:

~$ jobs
[1]+  Stopped                 mutt

注意那位[1]+1是 shell 分配给该进程的作业标识符。 是+用于引用最后一个后台进程的“句柄”。

因此,您现在可以使用%1%+kill命令一起引用该进程,例如

$ kill %1

或者

$ kill %+

...并且它们都将发送SIGTERM到那个单独的后台进程。

这就是你可以终止行为不端的控制台程序的方法。

有关信号的更多信息

请注意,这些SIGINTSIGTERM信号可以由接收其中一个的进程“处理”。这允许进程在退出之前执行某些清理操作。

但有时进程可能会“挂起”——例如由于编程错误导致 CPU 执行无限循环,或者尝试读取/写入某些“死”资源(例如断开连接的网络共享)上的文件时卡住。在这些情况下,交付SIGINTSIGTERM通常无法“解除”进程。

为了处理这种情况,存在一个特殊信号,SIGQUIT它被分配了一个众所周知的数字“9”。向进程发送此信号只会让操作系统强制删除该进程,而它没有机会进行干预。这就是为什么您很可能kill -9 $pid在某些文档中看到这个咒语的原因。

其他选择

当然还有其他选择。

首先,存在“用户友好”的程序,例如,htop它们为您提供可搜索的正在运行的进程列表,并允许您向其中任何一个进程发送选择的信号。

图形桌面环境(例如 GNOME、XFCE、KDE ​​等)通常提供 GUI 应用程序来执行相同操作。

其次,当“任务管理器”不可用或由于某种原因无法满足要求时,存在更多“黑客”方法来处理行为不端的进程。以下是其中一些方法(无特定顺序):

  • xkill实用程序(在 Debian 及其衍生产品中,它位于x11-utils包中)在运行时会显示一个对角十字形光标,您可以通过单击该光标来选择任何窗口,并将xkill强制断开拥有该窗口的进程与 X 服务器(呈现所有 GUI 的程序)的连接。

    此操作的效果在不同进程之间有所不同,但如果您是xkill一个终端窗口,它会SIGHUP向它管理的进程发送信号,这通常会使它们退出。

  • pkill实用程序(在 Debian 及其衍生软件包中procps)可用于向名称与特定字符串匹配的一组进程发送信号。

    因此,如果你想要终止srm系统上运行的进程,你可以运行

     $ pkill -9 srm
    

关闭srm系统上运行的所有名为 的进程。

答案2

真正的答案是这里

TL;DR 使用现代磁盘(包括任何可以容纳 7GB 文件的磁盘),您实际上不需要那么偏执。

因为您只需要用零覆盖您的文件:

shred -n 0 -z trashed.dat
  • 意味着-n 0使用随机数据传递 0 次(如果没有,您将获得使用随机数据的默认 3 次传递,但这仍然是过度的)
  • -z最后用零进行一次传递(唯一需要的一次)

鉴于此,为了有效地完成安全擦除:

  1. 停止当前命令
  2. 运行shred上面的命令

为突然的业力下降做好准备……

相关内容