linux中如何通过进程的pid杀死进程
我是linux新手,我正在构建一个程序,该程序接收进程的名称,获取其PID(我对该部分没有问题),然后将PID传递给kill命令,但它不起作用。事情是这样的:linux中如何通过进程的pid杀死进程,linux,bash,process,command,kill,Linux,Bash,Process,Command,Kill,我是linux新手,我正在构建一个程序,该程序接收进程的名称,获取其PID(我对该部分没有问题),然后将PID传递给kill命令,但它不起作用。事情是这样的: read -p "Process to kill: " proceso proid= pidof $proceso echo "$proid" kill $proid 有人能告诉我为什么它没有杀死它吗?我知道还有其他一些方法可以做到这一点,即使是PID,但它们似乎都不适合我。我相信这是Bash语言(我刚开始学习)的某种问题。您必须在ki
read -p "Process to kill: " proceso
proid= pidof $proceso
echo "$proid"
kill $proid
有人能告诉我为什么它没有杀死它吗?我知道还有其他一些方法可以做到这一点,即使是PID,但它们似乎都不适合我。我相信这是Bash语言(我刚开始学习)的某种问题。您必须在kill语句中发送SIGKILL标志。
kill-9[pid]
如果您不这样做,操作系统将选择在方便时终止进程,SIGKILL(-9)将告诉操作系统立即终止进程,而不忽略该命令,直到稍后 必须将SIGKILL标志与kill语句一起发送。
kill-9[pid]
如果您不这样做,操作系统将选择在方便时终止进程,SIGKILL(-9)将告诉操作系统立即终止进程,而不忽略该命令,直到稍后 而不是这个:
你可能是这个意思:
proid=$(pidof $proceso)
即便如此,
该程序可能不会被终止。
默认情况下,kill PID
向指定的进程发送TERM
信号,
给它一个有序关闭的机会,
例如,清理它正在使用的资源。
使用kill-kill-PID
或kill-9pid
发送进程终止而不进行优雅清理的最强信号是kill
我相信这是bash语言(我刚刚开始学习)的某种问题 您发布的原始行,
proid=pidof$proceso
应引发错误,
Bash会打印一条关于它的错误消息。
调试问题始于阅读和理解软件试图告诉您的错误消息。而不是:
你可能是这个意思:
proid=$(pidof $proceso)
即便如此,
该程序可能不会被终止。
默认情况下,kill PID
向指定的进程发送TERM
信号,
给它一个有序关闭的机会,
例如,清理它正在使用的资源。
使用kill-kill-PID
或kill-9pid
发送进程终止而不进行优雅清理的最强信号是kill
我相信这是bash语言(我刚刚开始学习)的某种问题 您发布的原始行,
proid=pidof$proceso
应引发错误,
Bash会打印一条关于它的错误消息。
调试问题始于阅读和理解软件试图告诉您的错误消息。试试这个
杀死-9
它将使用括号中给出的PID终止任何进程
杀死-9
它将使用括号中给出的PID终止任何进程尝试使用“kill-9$proid”或“kill-SIGKILL$proid”命令。如果您想了解更多信息,请尝试使用“kill-9$proid”或“kill-SIGKILL$proid”命令。如果您需要更多信息,.kill希望您告诉它**如何终止*,因此必须有64种不同的方法终止您的进程:)它们有名称和编号。最致命的是
-9
。一些有趣的例子包括:
- SIGKILL—SIGKILL(也称为
)信号强制进程立即停止执行。程序不能忽略此信号。这个过程也没有得到清理-9
- SIGHUP-SIGHUP信号断开进程与父进程的连接。这也可以用于重新启动进程。例如,“killall-SIGUP compiz”将重新启动compiz。这对于内存泄漏的守护进程很有用
- SIGINT-此信号与按ctrl-c相同。在某些系统上,“删除”+“中断”向进程发送相同的信号。该过程被中断并停止。然而,该过程可以忽略该信号
- SIGQUIT-这类似于SIGINT,具有使进程生成核心转储的能力
-9
。一些有趣的例子包括:
- SIGKILL—SIGKILL(也称为
)信号强制进程立即停止执行。程序不能忽略此信号。这个过程也没有得到清理-9
- SIGHUP-SIGHUP信号断开进程与父进程的连接。这也可以用于重新启动进程。例如,“killall-SIGUP compiz”将重新启动compiz。这对于内存泄漏的守护进程很有用
- SIGINT-此信号与按ctrl-c相同。在某些系统上,“删除”+“中断”向进程发送相同的信号。该过程被中断并停止。然而,该过程可以忽略该信号
- SIGQUIT-这类似于SIGINT,具有使进程生成核心转储的能力
proid
变量中获得实际的PID。如果您想捕获pidof
的输出,您需要将该命令包含在backtics中,用于旧形式的
。。。或者类似于命令替换的新形式
proid=$(pidof $proceso)
根据您所拥有的,您似乎没有在
proid
变量中获得实际的PID。如果您想捕获pidof
的输出,您需要将该命令包含在backtics中,用于旧形式的
。。。或者类似于命令替换的新形式
proid=$(pidof $proceso)
我也有类似的问题,只想每天运行几个小时的监视器(视频监控)。 写了两个sh脚本 cat startmotion.sh
#!/bin/sh
motion -c /home/username/.config/motion/motion.conf
第二个;
cat killmotion.sh
#!/bin/sh
OA=$(cat /var/run/motion/motion.pid)
kill -9 $OA
这些是在预定时间从crontab调用的
ctontab -e
0 15 * * * /home/username/startmotion.sh
0 17 * * * /home/username/killmotion.sh
非常简单,但这就是我所需要的。我有一个类似的问题,只想运行监视器(视频监视)
sudo netstat -plten
kill -9 PID