我是Linux的新手,我正在构建一个接收进程名称的程序,获取其PID(我对该部分没有任何问题),然后将PID传递给kill命令但是它不起作用。它是这样的:
read -p "Process to kill: " proceso
proid= pidof $proceso
echo "$proid"
kill $proid
有人可以告诉我为什么它不会被杀死吗?我知道还有其他一些方法可以做到,即使使用PID,但它们似乎都不适合我。我相信它是Bash语言的一些问题(我刚开始学习)。
答案 0 :(得分:3)
而不是:
echo date('Y-m-d h:i:s', $item->timestamp / 1000); // e.g echo date('Y-m-d h:i:s',1443852054000/1000); // shows 2015-10-03 02:00:54
你可能意味着这个:
proid= pidof $proceso
即便如此,
该计划可能不会被杀死。
默认情况下,proid=$(pidof $proceso)
会将kill PID
信号发送到指定的进程,
让它有机会以有序的方式关闭,
例如,清理它使用的资源。
使用TERM
或KILL
kill -KILL PID
发送一个没有优雅清理的进程的最强信号是kill -9 PID
。
我认为这是bash语言的一些问题(我刚刚开始学习)。
您发布的原始行proid= pidof $proceso
应该引发错误,
和Bash会打印一条关于它的错误消息。
调试问题首先要阅读并理解软件试图告诉您的错误消息。
答案 1 :(得分:2)
kill 希望你告诉它**如何杀死*,所以必须有64种不同的方法来杀死你的进程:)它们有名字和数字。最致命的是-9
。一些有趣的包括:
-9
)信号强制进程立即停止执行。程序不能忽略这个信号。这个过程也无法清理。答案 2 :(得分:0)
您必须使用kill语句发送SIGKILL标志。
kill -9 [pid]
如果你不想操作系统选择在方便的时候终止进程,那么SIGKILL(-9)会告诉操作系统现在终止进程而不会忽略命令直到稍后。
答案 3 :(得分:0)
试试这个 杀了-9 它将使用方括号
中的PID来终止任何进程答案 4 :(得分:0)
尝试“kill -9 $ proid”或“kill -SIGKILL $ proid”命令。如果您需要更多信息,请click。
答案 5 :(得分:0)
根据您所拥有的内容,您似乎没有在proid
变量中获得实际的PID。如果要捕获pidof
的输出,则需要将该命令包含在for command substitution的旧形式的背景中...
proid=`pidof $proceso`
...或者像新的命令替换形式一样。
proid=$(pidof $proceso)
答案 6 :(得分:0)
我遇到了类似的问题,只想每天跑几小时监视器(视频监控)。 写了两个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
很简单,但这就是我所需要的。
答案 7 :(得分:0)