Linux Shell:如何从文件中读取命令参数?

7
我有一个文件"pid"中记录了进程id,我想要杀死它。
类似以下操作:
kill -9 <read pid from file>

我尝试了:

kill -9 `more pid` 

但它没有起作用。我也尝试了 xargs 但是无法理解它。


我认为是 more 部分导致了问题,因为 more 可能需要用户输入。 - BCS
http://www.speculation.org/garrick/kill-9.html - Sinan Ünür
5个回答

13
Does
kill -9 $(cat pid)

适合您吗?


1
我更喜欢使用$()方法而不是反引号,因为你可以嵌套它们。 - paxdiablo

12

让我总结所有答案

kill -9 $(cat pid)
kill -9 `cat pid`
cat pid | xargs kill -9

3

我的偏好是


kill -9 `cat pid`

这对反引号中的任何命令都有效。


2

kill -9 $(cat pid) 或者 cat pid | xargs kill -9 都可以起作用。


2

你应该逐步开始,然后转向重要的内容以结束进程,如果它不想合作。

SIGKILL(-9)信号不能被捕获,这意味着该进程持有的任何资源都不会被清理。

首先尝试使用kill SIGTERM(-15),然后通过执行kill -0 $(cat pid)检查进程是否仍存在。如果它仍在运行,则可以使用-9强制结束。

SIGTERM可以被进程捕获,任何已经正确编写的进程都应该有一个信号处理程序来捕获SIGTERM并在退出之前清理其资源。


请注意,您可以传递 kill -s TERM 而不是 kill -15 - jpaugh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接