已输入以下命令:
sleep 12h; nuke-russia
它是在 Debian 的一个tty
终端上输入的。我想取消睡眠而不删除任何东西。我不想让 nuke 命令运行哪怕一刻。我还有其他五个终端可用。我该怎么办?
答案1
将来,尝试使用&&
而不是;
sleep X && echo bla
按 ctrl + C 将停止睡眠并且不会回显 bla
如果可行,您可以重命名负责的二进制文件。这样,bash 将无法执行,nuke-russia
因为它不存在。
其他解决方案是杀死负责的 shell
编辑:
如何找到负责 shell 的 PID(应该是它的父级)
如果 pidsleep 12h
是 1234 ,则使用 kill -9
查找负责的 shellps -o ppid= 1234
答案2
- 寻找
nuke-russia
- 重命名
old-nuke-russia
- 在同一目录中创建一个
ls
名为“嗯哼……”的链接nuke-russia
。
让休眠命令按其意愿运行。您有 12 小时的时间来找到运行该命令的人,并以试图引发世界大战的罪名将其绞死。
答案3
显然
kill -s SIGHUP [pid]
应该彻底终止该终端会话并有效地挂断该会话。
因此,与其他答案一样,命令ps -ef | grep sleep
应该可以让您获得pid
需要发送的信号。
-=编辑=-
该kill
标志-s
告诉命令我想要指定要使用的信号,在我的情况下是SIGHUP。
为了阐明我为什么选择建议使用kill -s SIGHUP [pid]
(或ppid
按照 peth 的建议),我将寻求以下帮助维基百科其中指出:
在 POSIX 兼容平台上,SIGHUP 是当进程的控制终端关闭时发送给进程的信号。(它最初设计用于通知进程串行线路断开)。SIGHUP 是在头文件 signal.h 中定义的符号常量。
...
随着通过串行线路访问的减少,SIGHUP 的含义在现代系统上发生了一定的变化,通常意味着控制伪终端或虚拟终端已关闭。
我发现很多程序在其终端被终止后也会完全终止,我相信 bash shell(运行 sleep 命令)在这种情况下也不会有什么不同。
答案4
在另一个终端上以root用户身份登录。
找到 nuke-russia 脚本(或命令)并将其重命名为其他名称,然后...
[root@mysvr ~]# ps -ef | grep sleep
root 1362 1338 0 17:23 pts/0 00:00:00 sleep 12h
root 1393 1367 0 17:24 pts/1 00:00:00 grep sleep
从列表中选择正确的睡眠命令(如果多于一个)并记下它的 PID 号 - 在我的情况下,它是 1362
输入命令:kill -9 [PID]
例如:kill -9 1362