我要编写一个脚本来获取文件(/tmp/pidfile.txt
)中的所有文本,这个文件只是一个pid编号,然后将其存储为变量(比如pidvar
)或者其他东西并执行以下内容:
kill -2 pidvar
看起来很简单我只是不知道如何从.txt文件中获取pid。我有python安装,如果这有帮助。为了更容易杀死uWSGI,欢迎任何有关替代方案的建议。
提前感谢您的帮助。
答案 0 :(得分:1)
你的问题的字面答案(使用bash扩展稍微有效)将是
kill -2 "$(</tmp/pidfile.txt)"
...或者,与POSIX sh兼容,但效率稍低......
kill -2 "$(cat /tmp/pidfile.txt)"
......但不要这样做。
runit,daemontools,Upstart,systemd以及许多其他替代品可用,可确保不会有基于以下信息向错误进程发送信号的风险陈旧的数据。 CentOS可能是没有附带其中一个的最后一个主要操作系统(虽然未来的版本几乎肯定会使用systemd),但它们可以作为第三方软件包使用 - 如果你希望您的系统可靠(检测到意外故障并在服务中断时重新启动服务,例如,无需使用您自己的代码),您应该使用其中一个。
例如,使用systemd:
systemctl kill -s SIGINT uwsgi.service
...或者,使用runit:
sv interrupt uwsgi
...对于upstart,您可以配置一个完全随意的重启命令,以便在initctl reload uwsgi
上触发。
有关使用shell脚本进行流程管理的一般最佳实践文档,请参阅the wooledge.org wiki, maintained by irc.freenode.org's #bash channel上的相应页面。
答案 1 :(得分:0)
通常更容易让uwsgi自杀。您可以使用&#34; master-fifo&#34;您的配置中的选项,然后发送&#34; q&#34;到了fifo。这在此处描述:http://uwsgi-docs.readthedocs.org/en/latest/MasterFIFO.html。