我在命令行上使用此命令kill -s SIGINT ps并且它可以工作(该过程已被删除),但是当我在SHELL脚本上使用该命令时它不起作用并显示此错误消息kill: SIGNIT:无效的信号规范。我该怎么解决这个问题。谢谢
答案 0 :(得分:3)
存在错误消息,以便在出现问题时为开发人员和用户提供线索。我怀疑你将SIGINT
误导为SIGNIT
。您收到的错误消息与您的陈述中的拼写错误一致。
我觉得这显示了糟糕的研究工作,因为如果您在寻求帮助之前已经阅读过错误消息,那么您可能会想出来。
答案 1 :(得分:3)
我想回答这个问题,因为我最近解决了类似的问题。当您致电kill -s SIGINT
时,您可以使用sh
来运行该脚本。不幸的是,与sh
(linux shell kill signal SIGKILL && KILL)不同的bash
将在compatibility mode中运行,而无法识别SIGINT。
最佳解决方案是明确使用/bin/bash
。顺便说一句,#!/bin/bash
在您sh
脚本时也不起作用。
希望它有所帮助。
答案 2 :(得分:2)
执行脚本的shell可能使用内置的“kill”命令,而命令行shell使用外部二进制文件,反之亦然。明确使用/bin/kill
,看看是否有助于更加一致。我认为,kill -SIGINT
是更常见的做法(而不是“-s SIGINT”)。
此外,kill
通常采用进程标识而不是进程名称。内置vs外部“kill”命令也可以不同地支持(或不支持)。