【问题标题】:bash script to kill php process older then an hourbash脚本杀死一个小时以上的php进程
【发布时间】:2012-09-27 18:24:03
【问题描述】:

我有以下几点:

kill -9 `ps aux | grep php | awk '$9 !~ /[0-9]:[0-9]/' | awk '{print $2}'`

它所做的是杀死被 fcgid 遗弃的进程并杀死它们以释放 RAM。我想每小时运行一次,但想杀死一个小时之前的进程。我只是不确定如何修改脚本来做到这一点。

【问题讨论】:

  • 你不应该在你的 php.ini 文件中将你的 php 超时时间改成更小的值吗?
  • 不是这样的。我已经在配置文件中对其进行了调整和设置,但有时这些进程会丢失并在那里坐上数天/数周占用内存。这是一个已知的故障。
  • 啊,好吧,是的,我想它可以节省手动操作哈哈:)

标签: linux bash awk grep kill-process


【解决方案1】:

试试下面的 bash 代码:

for i in $(pidof php); do
    pidtime=$(stat -c '%Y' /proc/$i)
    now=$(date +%s)
    ((now - pidtime >= 3600)) && { kill $i; sleep 1; kill &>/dev/null -9 $i; }
done

还有 crontab:

crontab -e
0 * * * * /path/to/the/script.bash

【讨论】:

    【解决方案2】:

    解决方法:

    /bin/ps -Ao"command,pid,ppid"|/bin/grep ' 1$'|/bin/grep /php|/bin/awk '{ print $2; }'|/usr/bin/xargs --no-run-if-empty kill -9
    

    【讨论】:

    • 我是否使用 -15 将 kill 替换为 sigterm?即使进程是孤立的,这会更好吗?
    猜你喜欢
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-05-20
    • 2013-07-24
    • 2018-08-28
    • 2017-08-04
    • 2014-08-09
    • 1970-01-01
    相关资源
    最近更新 更多