【发布时间】:2014-09-17 15:41:57
【问题描述】:
我尝试在我的 .bash_profile 中创建以下内容作为别名。
alias die_memcached_die="ps -ef | awk '/memcached/ && !/awk/ {print $2}' | xargs kill -9"
如果我直接在终端上运行命令就可以了
ps -ef | awk '/memcached/ && !/awk/ {print $2}' | xargs kill -9
或者如果我创建一个 bash 脚本来运行它。
只是好奇为什么这在别名中不起作用?
【问题讨论】:
-
pkill -9 memcached有什么问题? -
顺便说一句,
-9/SIGKILL是一种特别令人不快的杀死进程的方法,它不会给它自己清理的机会。也许你真的需要它,但这只是你友好的 PSA,先试试SIGTERM。 -
一般来说,当某些东西不能以你想要的方式使用别名时,“使用一个函数来代替”是一个很好的答案。
die_memcached_die() { ps -ef | ... | xargs kill; } -
...另外,考虑附议“使用 pkill 代替”建议。此外,您应该首先考虑使用 SIGTERM - 如果您使用的是良好的流程监督系统,其中许多将自动执行使用 SIGTERM 的过程,等待可配置的超时,然后仅在需要时使用 SIGKILL。
-
感谢 pkill 的提醒;不知道那个。至于-9;我知道这不是杀死进程的“好”方法。如果我想让进程清理,我在别名中使用 die_ 来表示我正在使用 -9 或 surr_ 或投降。这也不是我要推广到生产服务器的东西,而只是我在本地使用的方便别名,以便在漫长的一天开发过程中节省一些打字时间:)